From 7cc9639417d9a33ff9b2e0c34737c1cdd9e6908e Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sat, 22 Feb 2020 12:28:15 +0100 Subject: [PATCH 001/780] comment translation --- .../template/core/modules/mymodule/mod_myobject_standard.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php index 71926700aa4..9c1f6ece4d0 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php @@ -116,7 +116,7 @@ class mod_myobject_standard extends ModeleNumRefMyObject { global $db, $conf; - // D'abord on recupere la valeur max + // First we get the max value $posindice = 9; $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql .= " FROM ".MAIN_DB_PREFIX."mymodule_myobject"; From 6e9a07d11951a1759b5be8434f92191b9cfe11be Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 22 Mar 2020 05:33:30 +0100 Subject: [PATCH 002/780] Work on split module fournisseur --- htdocs/comm/action/class/cactioncomm.class.php | 4 ++-- htdocs/comm/index.php | 8 ++++---- htdocs/core/ajax/selectsearchbox.php | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/comm/action/class/cactioncomm.class.php b/htdocs/comm/action/class/cactioncomm.class.php index 7362a82840d..6d92a3e8263 100644 --- a/htdocs/comm/action/class/cactioncomm.class.php +++ b/htdocs/comm/action/class/cactioncomm.class.php @@ -169,8 +169,8 @@ class CActionComm if ($obj->module == 'invoice' && ! $conf->facture->enabled) $qualified=0; if ($obj->module == 'order' && ! $conf->commande->enabled) $qualified=0; if ($obj->module == 'propal' && ! $conf->propal->enabled) $qualified=0; - if ($obj->module == 'invoice_supplier' && ! $conf->fournisseur->enabled) $qualified=0; - if ($obj->module == 'order_supplier' && ! $conf->fournisseur->enabled) $qualified=0; + if ($obj->module == 'invoice_supplier' && (! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD || ! $conf->supplier_invoice->enabled)) $qualified=0; + if ($obj->module == 'order_supplier' && (! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD || ! $conf->supplier_order->enabled)) $qualified=0; if ($obj->module == 'shipping' && ! $conf->expedition->enabled) $qualified=0; } diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index 0bb38aeaa38..b7370bc1ba1 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -35,7 +35,7 @@ if (!empty($conf->contrat->enabled)) require_once DOL_DOCUMENT_ROOT.'/contrat/cl if (!empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; if (!empty($conf->supplier_proposal->enabled)) require_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php'; if (!empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -if (!empty($conf->fournisseur->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; +if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! empty($conf->supplier_order->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; if (!$user->rights->societe->lire) accessforbidden(); @@ -76,7 +76,7 @@ $companystatic = new Societe($db); if (!empty($conf->propal->enabled)) $propalstatic = new Propal($db); if (!empty($conf->supplier_proposal->enabled)) $supplierproposalstatic = new SupplierProposal($db); if (!empty($conf->commande->enabled)) $orderstatic = new Commande($db); -if (!empty($conf->fournisseur->enabled)) $supplierorderstatic = new CommandeFournisseur($db); +if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) $supplierorderstatic = new CommandeFournisseur($db); llxHeader("", $langs->trans("CommercialArea")); @@ -102,7 +102,7 @@ if (!empty($conf->global->MAIN_SEARCH_FORM_ON_HOME_AREAS)) // This is useles $listofsearchfields['search_supplier_proposal'] = array('text'=>'SupplierProposalShort'); } // Search supplier order - if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->commande->lire) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) && $user->rights->fournisseur->commande->lire) { $listofsearchfields['search_supplier_order'] = array('text'=>'SupplierOrder'); } @@ -414,7 +414,7 @@ if (!empty($conf->commande->enabled) && $user->rights->commande->lire) /* * Draft suppliers orders */ -if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->commande->lire) +if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) && $user->rights->fournisseur->commande->lire) { $langs->load("orders"); diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php index b5d9b005cdd..61cf3c074bf 100644 --- a/htdocs/core/ajax/selectsearchbox.php +++ b/htdocs/core/ajax/selectsearchbox.php @@ -105,11 +105,11 @@ if (! empty($conf->supplier_proposal->enabled) && empty($conf->global->MAIN_SEAR { $arrayresult['searchintosupplierpropal']=array('position'=>100, 'img'=>'object_propal', 'label'=>$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'text'=>img_picto('', 'object_propal').' '.$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/supplier_proposal/list.php'.($search_boxvalue?'?sall='.urlencode($search_boxvalue):'')); } -if (! empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_ORDER_DISABLED) && $user->rights->fournisseur->commande->lire) +if ((! empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_ORDER_DISABLED) || ! empty($conf->supplier_order->enabled)) && $user->rights->fournisseur->commande->lire) { $arrayresult['searchintosupplierorder']=array('position'=>110, 'img'=>'object_order', 'label'=>$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'text'=>img_picto('', 'object_order').' '.$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/commande/list.php'.($search_boxvalue?'?search_all='.urlencode($search_boxvalue):'')); } -if (! empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED) && $user->rights->fournisseur->facture->lire) +if ((! empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED) || ! empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire) { $arrayresult['searchintosupplierinvoice']=array('position'=>120, 'img'=>'object_bill', 'label'=>$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'text'=>img_picto('', 'object_bill').' '.$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/facture/list.php'.($search_boxvalue?'?sall='.urlencode($search_boxvalue):'')); } From c05ef16e0bf12a588cc47886a9633094854d1947 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 22 Mar 2020 05:51:14 +0100 Subject: [PATCH 003/780] Work on split module fournisseur --- htdocs/core/lib/company.lib.php | 2 +- htdocs/core/lib/contact.lib.php | 2 +- htdocs/core/lib/product.lib.php | 6 +++--- htdocs/core/lib/project.lib.php | 3 ++- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 700c3f0410f..da141618f00 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -173,7 +173,7 @@ function societe_prepare_head(Societe $object) } // Related items - if ((!empty($conf->commande->enabled) || !empty($conf->propal->enabled) || !empty($conf->facture->enabled) || !empty($conf->ficheinter->enabled) || !empty($conf->fournisseur->enabled)) + if ((!empty($conf->commande->enabled) || !empty($conf->propal->enabled) || !empty($conf->facture->enabled) || !empty($conf->ficheinter->enabled) || !empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && empty($conf->global->THIRPARTIES_DISABLE_RELATED_OBJECT_TAB)) { $head[$h][0] = DOL_URL_ROOT.'/societe/consumption.php?socid='.$object->id; diff --git a/htdocs/core/lib/contact.lib.php b/htdocs/core/lib/contact.lib.php index 0082947d0c1..c1a6620fc4b 100644 --- a/htdocs/core/lib/contact.lib.php +++ b/htdocs/core/lib/contact.lib.php @@ -59,7 +59,7 @@ function contact_prepare_head(Contact $object) $tab++; // Related items - if (! empty($conf->commande->enabled) || ! empty($conf->propal->enabled) || ! empty($conf->facture->enabled) || ! empty($conf->ficheinter->enabled) || ! empty($conf->fournisseur->enabled)) + if (! empty($conf->commande->enabled) || ! empty($conf->propal->enabled) || ! empty($conf->facture->enabled) || ! empty($conf->ficheinter->enabled) || !empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { $head[$tab][0] = DOL_URL_ROOT.'/contact/consumption.php?id='.$object->id; $head[$tab][1] = $langs->trans("Referers"); diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index 79d77e0268f..a6ee33e9a65 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -55,7 +55,7 @@ function product_prepare_head($object) if (!empty($object->status_buy) || (!empty($conf->margin->enabled) && !empty($object->status))) // If margin is on and product on sell, we may need the cost price even if product os not on purchase { - if ((!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire) + if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->lire) || (!empty($conf->margin->enabled) && $user->rights->margin->liretous) ) { @@ -408,7 +408,7 @@ function show_stats_for_company($product, $socid) print ''; } // Supplier orders - if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->commande->lire) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) && $user->rights->fournisseur->commande->lire) { $nblines++; $ret = $product->load_stats_commande_fournisseur($socid); @@ -462,7 +462,7 @@ function show_stats_for_company($product, $socid) print ''; } // Supplier invoices - if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire) { $nblines++; $ret = $product->load_stats_facture_fournisseur($socid); diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index ee80a525f04..ea3ddab9976 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -87,7 +87,8 @@ function project_prepare_head($object) $h++; } - if (!empty($conf->fournisseur->enabled) || !empty($conf->propal->enabled) || !empty($conf->commande->enabled) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->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)) { From b6137696060cfa243acb76e0390c0db67ab15b05 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 22 Mar 2020 06:09:47 +0100 Subject: [PATCH 004/780] Work on split module fournisseur --- htdocs/core/menus/init_menu_auguria.sql | 20 +++++++++---------- htdocs/core/menus/standard/auguria.lib.php | 2 +- htdocs/core/menus/standard/eldy.lib.php | 12 +++++------ htdocs/core/modules/modCategorie.class.php | 6 +++--- .../doc/doc_generic_project_odt.modules.php | 8 ++++---- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 66ed948585f..e8b0eda2e63 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -9,9 +9,9 @@ delete from llx_menu where menu_handler=__HANDLER__ and entity=__ENTITY__; -- table llx_menu -- insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '1', 1__+MAX_llx_menu__, __HANDLER__, 'top', 'home', '', 0, '/index.php?mainmenu=home&leftmenu=', 'Home', -1, '', '', '', 2, 10, __ENTITY__); -insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('societe|fournisseur', '( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)', 2__+MAX_llx_menu__, __HANDLER__, 'top', 'companies', '', 0, '/societe/index.php?mainmenu=companies&leftmenu=', 'ThirdParties', -1, 'companies', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 20, __ENTITY__); +insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('societe|fournisseur|supplier_order|supplier_invoice', '( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', 2__+MAX_llx_menu__, __HANDLER__, 'top', 'companies', '', 0, '/societe/index.php?mainmenu=companies&leftmenu=', 'ThirdParties', -1, 'companies', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 20, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('product|service', '$conf->product->enabled || $conf->service->enabled', 3__+MAX_llx_menu__, __HANDLER__, 'top', 'products', '', 0, '/product/index.php?mainmenu=products&leftmenu=', 'ProductsPipeServices', -1, 'products', '$user->rights->produit->lire||$user->rights->service->lire', '', 0, 30, __ENTITY__); -insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('propal|commande|fournisseur|contrat|ficheinter', '$conf->propal->enabled || $conf->commande->enabled || $conf->supplier_order->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled', 5__+MAX_llx_menu__, __HANDLER__, 'top', 'commercial', '', 0, '/comm/index.php?mainmenu=commercial&leftmenu=', 'Commercial', -1, 'commercial', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 40, __ENTITY__); +insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('propal|commande|fournisseur|supplier_order|supplier_invoice|contrat|ficheinter', '$conf->propal->enabled || $conf->commande->enabled || $conf->supplier_order->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled', 5__+MAX_llx_menu__, __HANDLER__, 'top', 'commercial', '', 0, '/comm/index.php?mainmenu=commercial&leftmenu=', 'Commercial', -1, 'commercial', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 40, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('facture|don|tax|salaries|loan|banque', '$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->supplier_invoice->enabled || $conf->loan->enabled || $conf->banque->enabled', 6__+MAX_llx_menu__, __HANDLER__, 'top', 'billing', '', 0, '/compta/index.php?mainmenu=billing&leftmenu=', 'MenuFinancial', -1, 'compta', '$user->rights->facture->lire|| $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $user->rights->loan->read || $user->rights->banque->lire', '', 2, 50, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('banque|prelevement', '$conf->banque->enabled || $conf->prelevement->enabled', 14__+MAX_llx_menu__, __HANDLER__, 'top', 'bank', '', 0, '/compta/bank/list.php?mainmenu=bank&leftmenu=bank', 'MenuBankCash', -1, 'banks', '$user->rights->banque->lire || $user->rights->prelevement->bons->lire', '', 0, 52, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('comptabilite|accounting|asset', '$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->asset->enabled', 9__+MAX_llx_menu__, __HANDLER__, 'top', 'accountancy', '', 0, '/compta/index.php?mainmenu=accountancy&leftmenu=accountancy', 'MenuAccountancy', -1, 'main', '$user->rights->compta->resultat->lire || $user->rights->accounting->mouvements->lire || $user->rights->asset->read', '', 2, 54, __ENTITY__); @@ -76,8 +76,8 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 500__+MAX_llx_menu__, 'companies', 'thirdparties', 2__+MAX_llx_menu__, '/societe/index.php?mainmenu=companies&leftmenu=thirdparties', 'ThirdParty', 0, 'companies', '$user->rights->societe->lire', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 501__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/card.php?mainmenu=companies&action=create', 'MenuNewThirdParty', 1, 'companies', '$user->rights->societe->lire', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 502__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/list.php?mainmenu=companies&action=create', 'List', 1, 'companies', '$user->rights->societe->lire', '', 2, 0, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && $conf->fournisseur->enabled', __HANDLER__, 'left', 503__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/list.php?mainmenu=companies&type=f&leftmenu=suppliers', 'ListSuppliersShort', 1, 'suppliers', '$user->rights->societe->lire && $user->rights->fournisseur->lire', '', 2, 5, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && $conf->fournisseur->enabled', __HANDLER__, 'left', 504__+MAX_llx_menu__, 'companies', '', 503__+MAX_llx_menu__, '/societe/card.php?mainmenu=companies&leftmenu=supplier&action=create&type=f', 'NewSupplier', 2, 'suppliers', '$user->rights->societe->creer', '', 2, 0, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', __HANDLER__, 'left', 503__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/list.php?mainmenu=companies&type=f&leftmenu=suppliers', 'ListSuppliersShort', 1, 'suppliers', '$user->rights->societe->lire && $user->rights->fournisseur->lire', '', 2, 5, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', __HANDLER__, 'left', 504__+MAX_llx_menu__, 'companies', '', 503__+MAX_llx_menu__, '/societe/card.php?mainmenu=companies&leftmenu=supplier&action=create&type=f', 'NewSupplier', 2, 'suppliers', '$user->rights->societe->creer', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 506__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/list.php?mainmenu=companies&type=p&leftmenu=prospects', 'ListProspectsShort', 1, 'companies', '$user->rights->societe->lire', '', 2, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 507__+MAX_llx_menu__, 'companies', '', 506__+MAX_llx_menu__, '/societe/card.php?mainmenu=companies&leftmenu=prospects&action=create&type=p', 'MenuNewProspect', 2, 'companies', '$user->rights->societe->creer', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 509__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/list.php?mainmenu=companies&type=c&leftmenu=customers', 'ListCustomersShort', 1, 'companies', '$user->rights->societe->lire', '', 2, 4, __ENTITY__); @@ -88,14 +88,14 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 602__+MAX_llx_menu__, 'companies', '', 600__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts', 'List', 1, 'companies', '$user->rights->societe->lire', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 604__+MAX_llx_menu__, 'companies', '', 602__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts&type=p', 'ThirdPartyProspects', 2, 'companies', '$user->rights->societe->contact->lire', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 605__+MAX_llx_menu__, 'companies', '', 602__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts&type=c', 'ThirdPartyCustomers', 2, 'companies', '$user->rights->societe->contact->lire', '', 2, 2, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && $conf->fournisseur->enabled', __HANDLER__, 'left', 606__+MAX_llx_menu__, 'companies', '', 602__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts&type=f', 'ThirdPartySuppliers', 2, 'companies', '$user->rights->societe->contact->lire', '', 2, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', __HANDLER__, 'left', 606__+MAX_llx_menu__, 'companies', '', 602__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts&type=f', 'ThirdPartySuppliers', 2, 'companies', '$user->rights->societe->contact->lire', '', 2, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 607__+MAX_llx_menu__, 'companies', '', 602__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts&type=o', 'Others', 2, 'companies', '$user->rights->societe->contact->lire', '', 2, 4, __ENTITY__); -- Third parties - Category customer insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && $conf->categorie->enabled', __HANDLER__, 'left', 650__+MAX_llx_menu__, 'companies', 'cat', 2__+MAX_llx_menu__, '/categories/index.php?mainmenu=companies&leftmenu=cat&type=1', 'SuppliersCategoriesShort', 0, 'categories', '$user->rights->categorie->lire', '', 2, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && $conf->categorie->enabled', __HANDLER__, 'left', 651__+MAX_llx_menu__, 'companies', '', 650__+MAX_llx_menu__, '/categories/card.php?mainmenu=companies&action=create&type=1', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); -- Third parties - Category supplier -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->fournisseur->enabled && $conf->categorie->enabled', __HANDLER__, 'left', 660__+MAX_llx_menu__, 'companies', 'cat', 2__+MAX_llx_menu__, '/categories/index.php?mainmenu=companies&leftmenu=cat&type=2', 'CustomersProspectsCategoriesShort', 0, 'categories', '$user->rights->categorie->lire', '', 2, 4, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->fournisseur->enabled && $conf->categorie->enabled', __HANDLER__, 'left', 661__+MAX_llx_menu__, 'companies', '', 660__+MAX_llx_menu__, '/categories/card.php?mainmenu=companies&action=create&type=2', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '(!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $conf->categorie->enabled', __HANDLER__, 'left', 660__+MAX_llx_menu__, 'companies', 'cat', 2__+MAX_llx_menu__, '/categories/index.php?mainmenu=companies&leftmenu=cat&type=2', 'CustomersProspectsCategoriesShort', 0, 'categories', '$user->rights->categorie->lire', '', 2, 4, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '(!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $conf->categorie->enabled', __HANDLER__, 'left', 661__+MAX_llx_menu__, 'companies', '', 660__+MAX_llx_menu__, '/categories/card.php?mainmenu=companies&action=create&type=2', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); -- Third parties - Category contact insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && $conf->categorie->enabled', __HANDLER__, 'left', 670__+MAX_llx_menu__, 'companies', 'cat', 2__+MAX_llx_menu__, '/categories/index.php?mainmenu=companies&leftmenu=cat&type=4', 'ContactCategoriesShort', 0, 'categories', '$user->rights->categorie->lire', '', 2, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && $conf->categorie->enabled', __HANDLER__, 'left', 671__+MAX_llx_menu__, 'companies', '', 670__+MAX_llx_menu__, '/categories/card.php?mainmenu=companies&action=create&type=4', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); @@ -264,9 +264,9 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->facture->enabled', __HANDLER__, 'left', 2401__+MAX_llx_menu__, 'accountancy', 'accountancy_dispatch_customer', 2400__+MAX_llx_menu__, '/accountancy/customer/index.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_customer', 'CustomersVentilation', 1, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->facture->enabled && $leftmenu=="accountancy_dispatch_customer"', __HANDLER__, 'left', 2402__+MAX_llx_menu__, 'accountancy', '', 2401__+MAX_llx_menu__, '/accountancy/customer/list.php?mainmenu=accountancy', 'ToDispatch', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->facture->enabled && $leftmenu=="accountancy_dispatch_customer"', __HANDLER__, 'left', 2403__+MAX_llx_menu__, 'accountancy', '', 2401__+MAX_llx_menu__, '/accountancy/customer/lines.php?mainmenu=accountancy', 'Dispatched', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 4, __ENTITY__); - insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->fournisseur->enabled', __HANDLER__, 'left', 2410__+MAX_llx_menu__, 'accountancy', 'accountancy_dispatch_supplier', 2400__+MAX_llx_menu__, '/accountancy/supplier/index.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_supplier', 'SuppliersVentilation', 1, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 5, __ENTITY__); - insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu=="accountancy_dispatch_supplier"', __HANDLER__, 'left', 2411__+MAX_llx_menu__, 'accountancy', '', 2410__+MAX_llx_menu__, '/accountancy/supplier/list.php?mainmenu=accountancy', 'ToDispatch', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 6, __ENTITY__); - insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu=="accountancy_dispatch_supplier"', __HANDLER__, 'left', 2412__+MAX_llx_menu__, 'accountancy', '', 2410__+MAX_llx_menu__, '/accountancy/supplier/lines.php?mainmenu=accountancy', 'Dispatched', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 7, __ENTITY__); + insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled))', __HANDLER__, 'left', 2410__+MAX_llx_menu__, 'accountancy', 'accountancy_dispatch_supplier', 2400__+MAX_llx_menu__, '/accountancy/supplier/index.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_supplier', 'SuppliersVentilation', 1, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 5, __ENTITY__); + insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $leftmenu=="accountancy_dispatch_supplier"', __HANDLER__, 'left', 2411__+MAX_llx_menu__, 'accountancy', '', 2410__+MAX_llx_menu__, '/accountancy/supplier/list.php?mainmenu=accountancy', 'ToDispatch', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 6, __ENTITY__); + insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $leftmenu=="accountancy_dispatch_supplier"', __HANDLER__, 'left', 2412__+MAX_llx_menu__, 'accountancy', '', 2410__+MAX_llx_menu__, '/accountancy/supplier/lines.php?mainmenu=accountancy', 'Dispatched', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 7, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->expensereport->enabled', __HANDLER__, 'left', 2420__+MAX_llx_menu__, 'accountancy', 'accountancy_dispatch_expensereport', 2400__+MAX_llx_menu__, '/accountancy/expensereport/index.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_expensereport', 'ExpenseReportsVentilation', 1, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 5, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->expensereport->enabled && $leftmenu=="accountancy_dispatch_expensereport"', __HANDLER__, 'left', 2421__+MAX_llx_menu__, 'accountancy', '', 2420__+MAX_llx_menu__, '/accountancy/expensereport/list.php?mainmenu=accountancy', 'ToDispatch', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 6, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->expensereport->enabled && $leftmenu=="accountancy_dispatch_expensereport"', __HANDLER__, 'left', 2422__+MAX_llx_menu__, 'accountancy', '', 2420__+MAX_llx_menu__, '/accountancy/expensereport/lines.php?mainmenu=accountancy', 'Dispatched', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 7, __ENTITY__); diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index 390c50aa748..360a173dcee 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -381,7 +381,7 @@ function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$t // Must match array $sourceList defined into journals_list.php if ($objp->nature == 2 && ! empty($conf->facture->enabled)) $nature="sells"; - if ($objp->nature == 3 && ! empty($conf->fournisseur->enabled)) $nature="purchases"; + if ($objp->nature == 3 && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled))) $nature="purchases"; if ($objp->nature == 4 && ! empty($conf->banque->enabled)) $nature="bank"; if ($objp->nature == 5 && ! empty($conf->expensereport->enabled)) $nature="expensereports"; if ($objp->nature == 1) $nature="various"; diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index eafbdaf5ddd..7d5cb8d8ff3 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -120,7 +120,7 @@ function print_eldy_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout = 'enabled'=> ((!empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) ) - || !empty($conf->fournisseur->enabled) + || (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) ), 'perms'=> (!empty($user->rights->societe->lire) || !empty($user->rights->fournisseur->lire)), 'module'=>'societe|fournisseur' @@ -848,7 +848,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM } // Suppliers - if (!empty($conf->societe->enabled) && (!empty($conf->fournisseur->enabled) || !empty($conf->supplier_proposal->enabled))) + if (!empty($conf->societe->enabled) && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) || !empty($conf->supplier_proposal->enabled))) { $langs->load("suppliers"); $newmenu->add("/societe/list.php?type=f&leftmenu=suppliers", $langs->trans("ListSuppliersShort"), 1, ($user->rights->fournisseur->lire || $user->rights->supplier_proposal->lire), '', $mainmenu, 'suppliers'); @@ -868,7 +868,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM $newmenu->add("/categories/index.php?leftmenu=cat&type=2", $menutoshow, 1, $user->rights->categorie->lire, '', $mainmenu, 'cat'); } // Categories suppliers - if (!empty($conf->fournisseur->enabled)) + if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { $newmenu->add("/categories/index.php?leftmenu=catfournish&type=1", $langs->trans("SuppliersCategoriesShort"), 1, $user->rights->categorie->lire); } @@ -880,7 +880,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM $newmenu->add("/contact/list.php?leftmenu=contacts", $langs->trans("List"), 1, $user->rights->societe->contact->lire); if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) $newmenu->add("/contact/list.php?leftmenu=contacts&type=p", $langs->trans("Prospects"), 2, $user->rights->societe->contact->lire); if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $newmenu->add("/contact/list.php?leftmenu=contacts&type=c", $langs->trans("Customers"), 2, $user->rights->societe->contact->lire); - if (!empty($conf->fournisseur->enabled)) $newmenu->add("/contact/list.php?leftmenu=contacts&type=f", $langs->trans("Suppliers"), 2, $user->rights->societe->contact->lire); + if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) $newmenu->add("/contact/list.php?leftmenu=contacts&type=f", $langs->trans("Suppliers"), 2, $user->rights->societe->contact->lire); $newmenu->add("/contact/list.php?leftmenu=contacts&type=o", $langs->trans("ContactOthers"), 2, $user->rights->societe->contact->lire); //$newmenu->add("/contact/list.php?userid=$user->id", $langs->trans("MyContacts"), 1, $user->rights->societe->contact->lire); @@ -1201,7 +1201,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM if (!empty($conf->banque->enabled)) { $newmenu->add("/compta/bank/list.php?mainmenu=accountancy&leftmenu=accountancy_admin&search_status=-1", $langs->trans("MenuBankAccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_bank', 70); } - if (!empty($conf->facture->enabled) || !empty($conf->fournisseur->enabled)) { + if (!empty($conf->facture->enabled) || (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled))) { $newmenu->add("/admin/dict.php?id=10&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuVatAccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 80); } if (!empty($conf->tax->enabled)) { @@ -1275,7 +1275,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM // Must match array $sourceList defined into journals_list.php if ($objp->nature == 2 && !empty($conf->facture->enabled)) $nature = "sells"; - if ($objp->nature == 3 && !empty($conf->fournisseur->enabled)) $nature = "purchases"; + if ($objp->nature == 3 && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled))) $nature = "purchases"; if ($objp->nature == 4 && !empty($conf->banque->enabled)) $nature = "bank"; if ($objp->nature == 5 && !empty($conf->expensereport->enabled)) $nature = "expensereports"; if ($objp->nature == 1) $nature = "various"; diff --git a/htdocs/core/modules/modCategorie.class.php b/htdocs/core/modules/modCategorie.class.php index 61a4dd67d5c..4f0c1e04307 100644 --- a/htdocs/core/modules/modCategorie.class.php +++ b/htdocs/core/modules/modCategorie.class.php @@ -120,7 +120,7 @@ class modCategorie extends DolibarrModules $this->export_code[$r] = 'category_'.$r; $this->export_label[$r] = 'CatSupList'; $this->export_icon[$r] = 'category'; - $this->export_enabled[$r] = '$conf->fournisseur->enabled'; + $this->export_enabled[$r] = '!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)'; $this->export_permission[$r] = array(array("categorie", "lire"), array("fournisseur", "lire")); $this->export_fields_array[$r] = array( 'u.rowid'=>"CategId", 'u.label'=>"Label", 'u.description'=>"Description", 's.rowid'=>'IdThirdParty', 's.nom'=>'Name', 's.prefix_comm'=>"Prefix", @@ -423,7 +423,7 @@ class modCategorie extends DolibarrModules ); $typeexample = ""; if ($conf->product->enabled) { $typeexample .= ($typeexample ? "/" : "")."0=Product"; } - if ($conf->fournisseur->enabled) { $typeexample .= ($typeexample ? "/" : "")."1=Supplier"; } + if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { $typeexample .= ($typeexample ? "/" : "")."1=Supplier"; } if ($conf->societe->enabled) { $typeexample .= ($typeexample ? "/" : "")."2=Customer-Prospect"; } if ($conf->adherent->enabled) { $typeexample .= ($typeexample ? "/" : "")."3=Member"; } $this->import_examplevalues_array[$r] = array( @@ -491,7 +491,7 @@ class modCategorie extends DolibarrModules $this->import_examplevalues_array[$r] = array('cs.fk_categorie'=>"Imported category", 'cs.fk_socpeople'=>"123"); } - if (!empty($conf->fournisseur->enabled)) + if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { // Suppliers $r++; diff --git a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php index 488938a725b..a7e543d2d35 100644 --- a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php +++ b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php @@ -41,8 +41,8 @@ if (!empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/p if (!empty($conf->facture->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; if (!empty($conf->facture->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture-rec.class.php'; if (!empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -if (!empty($conf->fournisseur->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; -if (!empty($conf->fournisseur->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; +if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; +if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; if (!empty($conf->contrat->enabled)) require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; if (!empty($conf->ficheinter->enabled)) require_once DOL_DOCUMENT_ROOT.'/fichinter/class/fichinter.class.php'; if (!empty($conf->deplacement->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/deplacement/class/deplacement.class.php'; @@ -1008,13 +1008,13 @@ class doc_generic_project_odt extends ModelePDFProjects 'title' => "ListSupplierOrdersAssociatedProject", 'table' => 'commande_fournisseur', 'class' => 'CommandeFournisseur', - 'test' => $conf->fournisseur->enabled && $user->rights->fournisseur->commande->lire + 'test' => (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) && $user->rights->fournisseur->commande->lire ), 'invoice_supplier' => array( 'title' => "ListSupplierInvoicesAssociatedProject", 'table' => 'facture_fourn', 'class' => 'FactureFournisseur', - 'test' => $conf->fournisseur->enabled && $user->rights->fournisseur->facture->lire + 'test' => (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire ), 'contract' => array( 'title' => "ListContractAssociatedProject", From e6a59dcdbb7407fe7953355d0079b024adf4aca7 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Mon, 23 Mar 2020 05:43:41 +0100 Subject: [PATCH 005/780] Work on split module fournisseur --- htdocs/comm/action/class/cactioncomm.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/action/class/cactioncomm.class.php b/htdocs/comm/action/class/cactioncomm.class.php index 6d92a3e8263..62051a45134 100644 --- a/htdocs/comm/action/class/cactioncomm.class.php +++ b/htdocs/comm/action/class/cactioncomm.class.php @@ -169,8 +169,8 @@ class CActionComm if ($obj->module == 'invoice' && ! $conf->facture->enabled) $qualified=0; if ($obj->module == 'order' && ! $conf->commande->enabled) $qualified=0; if ($obj->module == 'propal' && ! $conf->propal->enabled) $qualified=0; - if ($obj->module == 'invoice_supplier' && (! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD || ! $conf->supplier_invoice->enabled)) $qualified=0; - if ($obj->module == 'order_supplier' && (! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD || ! $conf->supplier_order->enabled)) $qualified=0; + if ($obj->module == 'invoice_supplier' && (! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! $conf->supplier_invoice->enabled) $qualified=0; + if ($obj->module == 'order_supplier' && (! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! $conf->supplier_order->enabled) $qualified=0; if ($obj->module == 'shipping' && ! $conf->expedition->enabled) $qualified=0; } From d5729e6dcc90484e33d60593edddc420fdb6e81f Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Mon, 23 Mar 2020 05:53:33 +0100 Subject: [PATCH 006/780] Work on split module fournisseur --- htdocs/comm/action/class/cactioncomm.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/action/class/cactioncomm.class.php b/htdocs/comm/action/class/cactioncomm.class.php index 62051a45134..df65dd724da 100644 --- a/htdocs/comm/action/class/cactioncomm.class.php +++ b/htdocs/comm/action/class/cactioncomm.class.php @@ -169,8 +169,8 @@ class CActionComm if ($obj->module == 'invoice' && ! $conf->facture->enabled) $qualified=0; if ($obj->module == 'order' && ! $conf->commande->enabled) $qualified=0; if ($obj->module == 'propal' && ! $conf->propal->enabled) $qualified=0; - if ($obj->module == 'invoice_supplier' && (! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! $conf->supplier_invoice->enabled) $qualified=0; - if ($obj->module == 'order_supplier' && (! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! $conf->supplier_order->enabled) $qualified=0; + if ($obj->module == 'invoice_supplier' && ((! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! $conf->supplier_invoice->enabled)) $qualified=0; + if ($obj->module == 'order_supplier' && ((! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! $conf->supplier_order->enabled)) $qualified=0; if ($obj->module == 'shipping' && ! $conf->expedition->enabled) $qualified=0; } From e6d9f7885c07a774d14bb86072b87bfe96c6eba4 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Tue, 24 Mar 2020 21:22:20 +0100 Subject: [PATCH 007/780] Work on split module fournisseur --- htdocs/comm/action/class/cactioncomm.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/action/class/cactioncomm.class.php b/htdocs/comm/action/class/cactioncomm.class.php index df65dd724da..cf60911555d 100644 --- a/htdocs/comm/action/class/cactioncomm.class.php +++ b/htdocs/comm/action/class/cactioncomm.class.php @@ -169,8 +169,8 @@ class CActionComm if ($obj->module == 'invoice' && ! $conf->facture->enabled) $qualified=0; if ($obj->module == 'order' && ! $conf->commande->enabled) $qualified=0; if ($obj->module == 'propal' && ! $conf->propal->enabled) $qualified=0; - if ($obj->module == 'invoice_supplier' && ((! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! $conf->supplier_invoice->enabled)) $qualified=0; - if ($obj->module == 'order_supplier' && ((! $conf->fournisseur->enabled && $conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! $conf->supplier_order->enabled)) $qualified=0; + if ($obj->module == 'invoice_supplier' && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || ! $conf->supplier_invoice->enabled)) $qualified=0; + if ($obj->module == 'order_supplier' && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || ! $conf->supplier_order->enabled)) $qualified=0; if ($obj->module == 'shipping' && ! $conf->expedition->enabled) $qualified=0; } From 5528e9ef3860891e4fb11f32e52b1bd9094115f3 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Tue, 24 Mar 2020 22:02:58 +0100 Subject: [PATCH 008/780] Work on split module fournisseur --- htdocs/core/modules/project/doc/pdf_beluga.modules.php | 4 ++-- htdocs/fourn/card.php | 6 +++--- htdocs/fourn/class/fournisseur.commande.class.php | 2 +- htdocs/fourn/index.php | 4 ++-- htdocs/fourn/recap-fourn.php | 4 ++-- htdocs/margin/tabs/thirdpartyMargins.php | 2 +- htdocs/product/admin/product.php | 4 ++-- htdocs/product/class/product.class.php | 6 +++--- htdocs/product/stock/product.php | 5 +++-- htdocs/societe/index.php | 4 ++-- htdocs/societe/list.php | 6 +++--- 11 files changed, 24 insertions(+), 23 deletions(-) diff --git a/htdocs/core/modules/project/doc/pdf_beluga.modules.php b/htdocs/core/modules/project/doc/pdf_beluga.modules.php index 4072f22bf58..23a2a515873 100644 --- a/htdocs/core/modules/project/doc/pdf_beluga.modules.php +++ b/htdocs/core/modules/project/doc/pdf_beluga.modules.php @@ -38,8 +38,8 @@ if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/com if (! empty($conf->facture->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; if (! empty($conf->facture->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture-rec.class.php'; if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -if (! empty($conf->fournisseur->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; -if (! empty($conf->fournisseur->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; +if (! empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! empty($conf->supplier_invoice->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; +if (! empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! empty($conf->supplier_order->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; if (! empty($conf->contrat->enabled)) require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; if (! empty($conf->ficheinter->enabled)) require_once DOL_DOCUMENT_ROOT.'/fichinter/class/fichinter.class.php'; if (! empty($conf->deplacement->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/deplacement/class/deplacement.class.php'; diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 8051b9684f9..f905c1b3f29 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -295,7 +295,7 @@ if ($object->id > 0) print ''; print ''; - if (!empty($conf->fournisseur->enabled) && !empty($conf->global->ORDER_MANAGE_MIN_AMOUNT)) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) && !empty($conf->global->ORDER_MANAGE_MIN_AMOUNT)) { print ''; print ''; @@ -378,7 +378,7 @@ if ($object->id > 0) if ($link) $boxstat .= ''; } - if ($conf->fournisseur->enabled) + if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { // Box proposals $tmp = $object->getOutstandingOrders('supplier'); @@ -396,7 +396,7 @@ if ($object->id > 0) if ($link) $boxstat .= ''; } - if ($conf->fournisseur->enabled) + if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { $tmp = $object->getOutstandingBills('supplier'); $outstandingOpened = $tmp['opened']; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 797e3693614..0913f5ba43b 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -3185,7 +3185,7 @@ class CommandeFournisseur extends CommonOrder { global $conf, $langs; - if (!empty($conf->fournisseur->enabled)) + if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.dispatch.class.php'; diff --git a/htdocs/fourn/index.php b/htdocs/fourn/index.php index 207133d9cfa..f9650941555 100644 --- a/htdocs/fourn/index.php +++ b/htdocs/fourn/index.php @@ -97,7 +97,7 @@ else // Draft orders -if (!empty($conf->fournisseur->enabled)) +if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) { $langs->load("orders"); @@ -154,7 +154,7 @@ if (!empty($conf->fournisseur->enabled)) } // Draft invoices -if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire) +if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire) { $sql = "SELECT ff.ref_supplier, ff.rowid, ff.total_ttc, ff.type"; $sql .= ", s.nom as name, s.rowid as socid"; diff --git a/htdocs/fourn/recap-fourn.php b/htdocs/fourn/recap-fourn.php index 2cd52bfeb77..8cda5a20d98 100644 --- a/htdocs/fourn/recap-fourn.php +++ b/htdocs/fourn/recap-fourn.php @@ -65,7 +65,7 @@ if ($socid > 0) dol_banner_tab($societe, 'socid', '', ($user->socid ? 0 : 1), 'rowid', 'nom'); dol_fiche_end(); - if (!empty($conf->fournisseur->enabled) && $user->rights->facture->lire) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $user->rights->facture->lire) { // Invoice list print load_fiche_titre($langs->trans("SupplierPreview")); @@ -77,7 +77,7 @@ if ($socid > 0) $sql .= " u.login, u.rowid as userid"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture_fourn as f,".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE f.fk_soc = s.rowid AND s.rowid = ".$societe->id; - $sql .= " AND f.entity IN (".getEntity("facture_fourn").")"; // Reconaissance de l'entité attribuée à cette facture pour Multicompany + $sql .= " AND f.entity IN (".getEntity("facture_fourn").")"; // Recognition of the entity attributed to this invoice for Multicompany $sql .= " AND f.fk_user_valid = u.rowid"; $sql .= " ORDER BY f.datef DESC"; diff --git a/htdocs/margin/tabs/thirdpartyMargins.php b/htdocs/margin/tabs/thirdpartyMargins.php index 5d7d0039b7a..a31803d2d72 100644 --- a/htdocs/margin/tabs/thirdpartyMargins.php +++ b/htdocs/margin/tabs/thirdpartyMargins.php @@ -106,7 +106,7 @@ if ($socid > 0) print ''; } - if (!empty($conf->fournisseur->enabled) && $object->fournisseur && !empty($user->rights->fournisseur->lire)) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! empty($conf->supplier_order->enabled) || ! empty($conf->supplier_invoice->enabled)) && $object->fournisseur && !empty($user->rights->fournisseur->lire)) { print ''; print $langs->trans('SupplierCode').''; diff --git a/htdocs/product/admin/product.php b/htdocs/product/admin/product.php index f3ef5441144..e1fe84600d1 100644 --- a/htdocs/product/admin/product.php +++ b/htdocs/product/admin/product.php @@ -564,7 +564,7 @@ $rowspan = 4; if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES)) $rowspan++; if (empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)) $rowspan++; if (!empty($conf->global->MAIN_MULTILANGS)) $rowspan++; -if (!empty($conf->fournisseur->enabled)) $rowspan++; +if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! empty($conf->supplier_order->enabled) || ! empty($conf->supplier_invoice->enabled)) $rowspan++; print ''; @@ -680,7 +680,7 @@ if (!empty($conf->global->MAIN_MULTILANGS)) print ''; } -if (!empty($conf->fournisseur->enabled)) +if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! empty($conf->supplier_order->enabled) || ! empty($conf->supplier_invoice->enabled)) { print ''; print ''.$langs->trans("UseProductFournDesc").''; diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 96b2165c65a..7e29180a6e7 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4872,19 +4872,19 @@ class Product extends CommonObject if ($result < 0) dol_print_error($this->db, $this->error); $stock_sending_client = $this->stats_expedition['qty']; } - if (!empty($conf->fournisseur->enabled)) + if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || ! empty($conf->supplier_order->enabled)) { $result = $this->load_stats_commande_fournisseur(0, '1,2,3,4', 1); if ($result < 0) dol_print_error($this->db, $this->error); $stock_commande_fournisseur = $this->stats_commande_fournisseur['qty']; } - if (!empty($conf->fournisseur->enabled) && empty($conf->reception->enabled)) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && empty($conf->reception->enabled)) { $result = $this->load_stats_reception(0, '4', 1); if ($result < 0) dol_print_error($this->db, $this->error); $stock_reception_fournisseur = $this->stats_reception['qty']; } - if (!empty($conf->fournisseur->enabled) && !empty($conf->reception->enabled)) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && empty($conf->reception->enabled)) { $result = $this->load_stats_reception(0, '4', 1); // Use same tables than when module reception is not used. if ($result < 0) dol_print_error($this->db, $this->error); diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index af12804aac5..1fa7dfb12a3 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -674,7 +674,8 @@ if ($id > 0 || $ref) } // Number of supplier order running - if (!empty($conf->fournisseur->enabled)) { + if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) + { if ($found) $helpondiff .= '
'; else $found = 1; $result = $object->load_stats_commande_fournisseur(0, '3,4', 1); $helpondiff .= $langs->trans("ProductQtyInSuppliersOrdersRunning").': '.$object->stats_commande_fournisseur['qty']; @@ -684,7 +685,7 @@ if ($id > 0 || $ref) } // Number of product from supplier order already received (partial receipt) - if (!empty($conf->fournisseur->enabled)) { + if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { if ($found) $helpondiff .= '
'; else $found = 1; $helpondiff .= $langs->trans("ProductQtyInSuppliersShipmentAlreadyRecevied").': '.$object->stats_reception['qty']; } diff --git a/htdocs/societe/index.php b/htdocs/societe/index.php index 5b89c086c1f..f96082db62c 100644 --- a/htdocs/societe/index.php +++ b/htdocs/societe/index.php @@ -134,7 +134,7 @@ else $statstring .= ''.$langs->trans("Customers").''.round($third['customer']).''; $statstring .= ""; } - if (!empty($conf->fournisseur->enabled) && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS) && $user->rights->fournisseur->lire) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS) && $user->rights->fournisseur->lire) { $statstring2 = ""; $statstring2 .= ''.$langs->trans("Suppliers").''.round($third['supplier']).''; @@ -310,7 +310,7 @@ if ($result) $thirdparty_static->name = $langs->trans("Prospect"); print $thirdparty_static->getNomUrl(0, 'prospect', 0, 1); } - if (!empty($conf->fournisseur->enabled) && $thirdparty_static->fournisseur) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $thirdparty_static->fournisseur) { if ($thirdparty_static->client) print " / "; $thirdparty_static->name = $langs->trans("Supplier"); diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 63641f27625..253de10fc58 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -178,9 +178,9 @@ $arrayfields = array( 's.name_alias'=>array('label'=>"AliasNameShort", 'position'=>3, 'checked'=>1), 's.barcode'=>array('label'=>"Gencod", 'position'=>5, 'checked'=>1, 'enabled'=>(!empty($conf->barcode->enabled))), 's.code_client'=>array('label'=>"CustomerCodeShort", 'position'=>10, 'checked'=>$checkedcustomercode), - 's.code_fournisseur'=>array('label'=>"SupplierCodeShort", 'position'=>11, 'checked'=>$checkedsuppliercode, 'enabled'=>(!empty($conf->fournisseur->enabled))), + 's.code_fournisseur'=>array('label'=>"SupplierCodeShort", 'position'=>11, 'checked'=>$checkedsuppliercode, 'enabled'=>(!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))), 's.code_compta'=>array('label'=>"CustomerAccountancyCodeShort", 'position'=>13, 'checked'=>$checkedcustomeraccountcode), - 's.code_compta_fournisseur'=>array('label'=>"SupplierAccountancyCodeShort", 'position'=>14, 'checked'=>$checkedsupplieraccountcode, 'enabled'=>(!empty($conf->fournisseur->enabled))), + 's.code_compta_fournisseur'=>array('label'=>"SupplierAccountancyCodeShort", 'position'=>14, 'checked'=>$checkedsupplieraccountcode, 'enabled'=>(!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))), 's.town'=>array('label'=>"Town", 'position'=>20, 'checked'=>1), 's.zip'=>array('label'=>"Zip", 'position'=>21, 'checked'=>1), 'state.nom'=>array('label'=>"State", 'position'=>22, 'checked'=>0), @@ -1226,7 +1226,7 @@ while ($i < min($num, $limit)) $companystatic->name_alias = ''; $s .= $companystatic->getNomUrl(0, 'prospect', 0, 1); } - if ((!empty($conf->fournisseur->enabled) || !empty($conf->supplier_proposal->enabled)) && $obj->fournisseur) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $obj->fournisseur) { if ($s) $s .= ", "; $companystatic->name = $langs->trans("Supplier"); From c3e5cf901d7c92983797de13786567fe403874dc Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Tue, 24 Mar 2020 22:20:25 +0100 Subject: [PATCH 009/780] Work on split module fournisseur --- htdocs/admin/workflow.php | 6 +++--- htdocs/comm/index.php | 2 +- htdocs/compta/index.php | 8 ++++---- htdocs/contact/consumption.php | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/htdocs/admin/workflow.php b/htdocs/admin/workflow.php index 02abcf59660..99185cce733 100644 --- a/htdocs/admin/workflow.php +++ b/htdocs/admin/workflow.php @@ -85,11 +85,11 @@ $workflowcodes = array( 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER'=>array('family'=>'classify_order', 'position'=>41, 'enabled'=>'! empty($conf->facture->enabled) && ! empty($conf->commande->enabled)', 'picto'=>'order', 'warning'=>''), // For this option, if module invoice is disabled, it does not exists, so "Classify billed" for order must be done manually from order card. 'separator2'=>array('family'=>'separator', 'position'=>50), // Automatic classification supplier proposal - 'WORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL'=>array('family'=>'classify_supplier_proposal', 'position'=>60, 'enabled'=>'! empty($conf->supplier_proposal->enabled) && ! empty($conf->fournisseur->enabled)', 'picto'=>'propal', 'warning'=>''), + 'WORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL'=>array('family'=>'classify_supplier_proposal', 'position'=>60, 'enabled'=>'! empty($conf->supplier_proposal->enabled) && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', 'picto'=>'propal', 'warning'=>''), // Automatic classification supplier order - 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER'=>array('family'=>'classify_supplier_order', 'position'=>62, 'enabled'=>'! empty($conf->fournisseur->enabled)', 'picto'=>'order', 'warning'=>''), + 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER'=>array('family'=>'classify_supplier_order', 'position'=>62, 'enabled'=>'!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)', 'picto'=>'order', 'warning'=>''), //Automatic classification reception - 'WORKFLOW_BILL_ON_RECEPTION'=>array('family'=>'classify_reception', 'position'=>64, 'enabled'=>'! empty($conf->reception->enabled) && ! empty($conf->fournisseur->enabled)', 'picto'=>'bill'), + 'WORKFLOW_BILL_ON_RECEPTION'=>array('family'=>'classify_reception', 'position'=>64, 'enabled'=>'! empty($conf->reception->enabled) && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', 'picto'=>'bill'), ); if (!empty($conf->modules_parts['workflow']) && is_array($conf->modules_parts['workflow'])) diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index b7370bc1ba1..295562236b2 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -581,7 +581,7 @@ if (!empty($conf->societe->enabled) && $user->rights->societe->lire) } // Last suppliers -if (!empty($conf->fournisseur->enabled) && $user->rights->societe->lire) +if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $user->rights->societe->lire) { $langs->load("boxes"); diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index c9a77e5cc26..bbbb9912bd1 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -101,7 +101,7 @@ if (!empty($conf->global->MAIN_SEARCH_FORM_ON_HOME_AREAS)) // This is useles $listofsearchfields['search_invoice'] = array('text'=>'CustomerInvoice'); } // Search supplier invoices - if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire) + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->lire) { $listofsearchfields['search_supplier_invoice'] = array('text'=>'SupplierInvoice'); } @@ -231,7 +231,7 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) /** * Draft suppliers invoices */ -if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire) +if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire) { $sql = "SELECT f.ref, f.rowid, f.total_ht, f.total_tva, f.total_ttc, f.type, f.ref_supplier"; $sql .= ", s.nom as name"; @@ -447,7 +447,7 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) // Last modified supplier invoices -if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire) +if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire) { $langs->load("boxes"); $facstatic = new FactureFournisseur($db); @@ -958,7 +958,7 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) /* * Unpayed supplier invoices */ -if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire) +if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire) { $facstatic = new FactureFournisseur($db); diff --git a/htdocs/contact/consumption.php b/htdocs/contact/consumption.php index f27903f559e..e5150c7d81f 100644 --- a/htdocs/contact/consumption.php +++ b/htdocs/contact/consumption.php @@ -147,11 +147,11 @@ if ($conf->ficheinter->enabled && $user->rights->ficheinter->lire) $elementTypeA if ($object->thirdparty->fournisseur) { $thirdTypeArray['supplier']=$langs->trans("supplier"); - if ($conf->fournisseur->enabled && $user->rights->fournisseur->facture->lire) $elementTypeArray['supplier_invoice']=$langs->transnoentitiesnoconv('SuppliersInvoices'); - if ($conf->fournisseur->enabled && $user->rights->fournisseur->commande->lire) $elementTypeArray['supplier_order']=$langs->transnoentitiesnoconv('SuppliersOrders'); + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire) $elementTypeArray['supplier_invoice']=$langs->transnoentitiesnoconv('SuppliersInvoices'); + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) && $user->rights->fournisseur->commande->lire) $elementTypeArray['supplier_order']=$langs->transnoentitiesnoconv('SuppliersOrders'); // There no contact type for supplier proposals - // if ($conf->fournisseur->enabled && $user->rights->supplier_proposal->lire) $elementTypeArray['supplier_proposal']=$langs->transnoentitiesnoconv('SupplierProposals'); + // if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $user->rights->supplier_proposal->lire) $elementTypeArray['supplier_proposal']=$langs->transnoentitiesnoconv('SupplierProposals'); } print ''; From 6a53e02c3c1d2c5216cf68aa9788756feb223abf Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Sun, 5 Apr 2020 14:02:51 +0200 Subject: [PATCH 010/780] FIX better url for get conf with REST API need to be more userfriendly and similar to other api (without a variable with GET varible in URL "?confname=" --- htdocs/api/class/api_setup.class.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 7b47c59dbb7..05d9214389f 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -1409,15 +1409,15 @@ class Setup extends DolibarrApi * * Note that conf variables that stores security key or password hashes can't be loaded with API. * - * @url GET /conf - * - * @param string $confname Name of conf variable to get + * @param string $constante Name of conf variable to get * @return array|mixed Data without useless information * + * @url GET conf/{constante} + * * @throws RestException 403 Forbidden - * @throws RestException 500 Error Bad or unknown value for constname + * @throws RestException 500 Error Bad or unknown value for constname */ - public function getConf($confname) + public function getConf($constante) { global $conf; @@ -1426,14 +1426,14 @@ class Setup extends DolibarrApi throw new RestException(403, 'Error API open to admin users only or to the login user defined with constant API_LOGIN_ALLOWED_FOR_ADMIN_CHECK'); } - if (! preg_match('/^[a-zA-Z0-9_]+$/', $confname) || ! isset($conf->global->$confname)) { + if (! preg_match('/^[a-zA-Z0-9_]+$/', $constante) || ! isset($conf->global->$constante)) { throw new RestException(500, 'Error Bad or unknown value for constname'); } - if (preg_match('/(_pass|password|secret|_key|key$)/i', $confname)) { + if (preg_match('/(_pass|password|secret|_key|key$)/i', $constante)) { throw new RestException(403, 'Forbidden'); } - return $conf->global->$confname; + return $conf->global->$constante; } /** From 1827541f88dab73951f49371d0f4c19d8a0205fa Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Sun, 5 Apr 2020 12:04:25 +0000 Subject: [PATCH 011/780] Fixing style errors. --- htdocs/api/class/api_setup.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 05d9214389f..d6ee0f1a79e 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -1413,7 +1413,7 @@ class Setup extends DolibarrApi * @return array|mixed Data without useless information * * @url GET conf/{constante} - * + * * @throws RestException 403 Forbidden * @throws RestException 500 Error Bad or unknown value for constname */ From 26bc5381e47e2757d4bae54a977c301813216f5c Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Wed, 8 Apr 2020 14:57:34 +0200 Subject: [PATCH 012/780] Update api_setup.class.php --- htdocs/api/class/api_setup.class.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index d6ee0f1a79e..5f867c066c7 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -1409,15 +1409,15 @@ class Setup extends DolibarrApi * * Note that conf variables that stores security key or password hashes can't be loaded with API. * - * @param string $constante Name of conf variable to get + * @param string $constantname Name of conf variable to get * @return array|mixed Data without useless information * - * @url GET conf/{constante} + * @url GET conf/{constantname} * * @throws RestException 403 Forbidden * @throws RestException 500 Error Bad or unknown value for constname */ - public function getConf($constante) + public function getConf($constantname) { global $conf; @@ -1426,14 +1426,14 @@ class Setup extends DolibarrApi throw new RestException(403, 'Error API open to admin users only or to the login user defined with constant API_LOGIN_ALLOWED_FOR_ADMIN_CHECK'); } - if (! preg_match('/^[a-zA-Z0-9_]+$/', $constante) || ! isset($conf->global->$constante)) { + if (! preg_match('/^[a-zA-Z0-9_]+$/', $constantname) || ! isset($conf->global->$constantname)) { throw new RestException(500, 'Error Bad or unknown value for constname'); } - if (preg_match('/(_pass|password|secret|_key|key$)/i', $constante)) { + if (preg_match('/(_pass|password|secret|_key|key$)/i', $constantname)) { throw new RestException(403, 'Forbidden'); } - return $conf->global->$constante; + return $conf->global->$constantname; } /** From 3e7f0b364e97995dcf82e5e548da48c737a9f6f1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Apr 2020 10:22:08 +0200 Subject: [PATCH 013/780] FIX #13611 --- htdocs/core/modules/expensereport/doc/pdf_standard.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index 7bef90f514e..32a8714cf12 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -745,7 +745,7 @@ class pdf_standard extends ModeleExpenseReport $pdf->SetXY($posx, $posy); $pdf->SetFont('', 'B', $default_font_size + 2); $pdf->SetTextColor(111, 81, 124); - $pdf->MultiCell($this->page_largeur - $this->marge_droite - $posx, 3, $object->getLibStatut(0), '', 'R'); + $pdf->MultiCell($this->page_largeur - $this->marge_droite - $posx, 3, $outputlangs->transnoentities($object->statuts_short[$object->status]), '', 'R'); if ($showaddress) { // Sender properties From ea60d0be635138ce6e90a4807e1bc0636c77d5d0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Apr 2020 10:27:38 +0200 Subject: [PATCH 014/780] FIX #13618 --- htdocs/compta/facture/class/api_invoices.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/facture/class/api_invoices.class.php b/htdocs/compta/facture/class/api_invoices.class.php index 7c7437bfb8e..a178e5bba82 100644 --- a/htdocs/compta/facture/class/api_invoices.class.php +++ b/htdocs/compta/facture/class/api_invoices.class.php @@ -445,8 +445,7 @@ class Invoices extends DolibarrApi } $result = $this->invoice->delete_contact($rowid); - - if (!$result) { + if ($result < 0) { throw new RestException(500, 'Error when deleted the contact'); } @@ -543,7 +542,7 @@ class Invoices extends DolibarrApi /** * Delete invoice * - * @param int $id Invoice ID + * @param int $id Invoice ID * @return array */ public function delete($id) @@ -560,7 +559,8 @@ class Invoices extends DolibarrApi throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - if ($this->invoice->delete($id) < 0) + $result = $this->invoice->delete(DolibarrApiAccess::$user); + if ($result < 0) { throw new RestException(500); } From e915552ae18882a1c39d9a3252ba77e9d9c688f3 Mon Sep 17 00:00:00 2001 From: ATM john Date: Sat, 18 Apr 2020 11:39:33 +0200 Subject: [PATCH 015/780] New class tool for converting units --- htdocs/core/class/unitsTools.class.php | 119 +++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 htdocs/core/class/unitsTools.class.php diff --git a/htdocs/core/class/unitsTools.class.php b/htdocs/core/class/unitsTools.class.php new file mode 100644 index 00000000000..79ffdb82338 --- /dev/null +++ b/htdocs/core/class/unitsTools.class.php @@ -0,0 +1,119 @@ +unit_type == 'time'){ + return doubleval($unit->scale); + } + + return pow($base, doubleval($unit->scale)); + } + + return 0; + } + + /** + * return first result from query + * @param string $sql the sql query string + * @return bool| var + */ + static public function dbGetvalue($sql) + { + global $db; + $sql .= ' LIMIT 1;'; + + $res = $db->query($sql); + if ($res) + { + $Tresult = $db->fetch_row($res); + return $Tresult[0]; + } + + return false; + } + + /** + * return first result from query + * @param string $sql the sql query string + * @return bool| var + */ + static public function dbGetRow($sql) + { + global $db; + $sql .= ' LIMIT 1;'; + + $res = $db->query($sql); + if ($res) + { + return $db->fetch_object($res); + } + + return false; + } +} From 09591d75f6bfd848363cddd4a4dbf0888bf5ddb9 Mon Sep 17 00:00:00 2001 From: ATM john Date: Sat, 18 Apr 2020 13:20:08 +0200 Subject: [PATCH 016/780] Sql write less do more... --- htdocs/core/class/unitsTools.class.php | 42 ++------------------------ htdocs/core/db/DoliDB.class.php | 38 +++++++++++++++++++++++ 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/htdocs/core/class/unitsTools.class.php b/htdocs/core/class/unitsTools.class.php index 79ffdb82338..a5bc839da0c 100644 --- a/htdocs/core/class/unitsTools.class.php +++ b/htdocs/core/class/unitsTools.class.php @@ -63,9 +63,10 @@ class UnitsTools */ static public function scaleOfUnitPow($id) { + global $db; $base = 10; // TODO : add base col into unit dictionary table - $unit = self::dbGetRow('SELECT scale, unit_type from '.MAIN_DB_PREFIX.'c_units WHERE rowid = '.intval($id)); + $unit = $db->getRow('SELECT scale, unit_type from '.MAIN_DB_PREFIX.'c_units WHERE rowid = '.intval($id)); if($unit){ // TODO : if base exist in unit dictionary table remove this convertion exception and update convertion infos in database exemple time hour currently scale 3600 will become scale 2 base 60 if($unit->unit_type == 'time'){ @@ -77,43 +78,4 @@ class UnitsTools return 0; } - - /** - * return first result from query - * @param string $sql the sql query string - * @return bool| var - */ - static public function dbGetvalue($sql) - { - global $db; - $sql .= ' LIMIT 1;'; - - $res = $db->query($sql); - if ($res) - { - $Tresult = $db->fetch_row($res); - return $Tresult[0]; - } - - return false; - } - - /** - * return first result from query - * @param string $sql the sql query string - * @return bool| var - */ - static public function dbGetRow($sql) - { - global $db; - $sql .= ' LIMIT 1;'; - - $res = $db->query($sql); - if ($res) - { - return $db->fetch_object($res); - } - - return false; - } } diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index 96e76097877..c38db8f9c99 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -297,4 +297,42 @@ abstract class DoliDB implements Database { return $this->lastqueryerror; } + + + /** + * return first result value from query + * @param string $sql the sql query string + * @return bool| var + */ + public function getvalue($sql) + { + $sql .= ' LIMIT 1;'; + + $res = $this->query($sql); + if ($res) + { + $Tresult = $this->fetch_row($res); + return $Tresult[0]; + } + + return false; + } + + /** + * return first result from query as object + * @param string $sql the sql query string + * @return bool| var + */ + public function getRow($sql) + { + $sql .= ' LIMIT 1;'; + + $res = $this->query($sql); + if ($res) + { + return $this->fetch_object($res); + } + + return false; + } } From 395446a924f6a5ed7d3f3851f6906b40dfe35180 Mon Sep 17 00:00:00 2001 From: ATM john Date: Sat, 18 Apr 2020 13:44:13 +0200 Subject: [PATCH 017/780] Add getRows method and comments --- htdocs/core/db/DoliDB.class.php | 36 +++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index c38db8f9c99..e3e0491b298 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -300,11 +300,13 @@ abstract class DoliDB implements Database /** - * return first result value from query + * Return first result value from query + * Note : This method executes a given SQL query and retrieves the first value of the first row of results. It should only be used with SELECT queries. + * Dont add LIMIT to your query, it will be added by this method * @param string $sql the sql query string * @return bool| var */ - public function getvalue($sql) + public function getValue($sql) { $sql .= ' LIMIT 1;'; @@ -319,9 +321,11 @@ abstract class DoliDB implements Database } /** - * return first result from query as object + * Return first result from query as object + * Note : This method executes a given SQL query and retrieves the first row of results as an object. It should only be used with SELECT queries + * Dont add LIMIT to your query, it will be added by this method * @param string $sql the sql query string - * @return bool| var + * @return bool| object */ public function getRow($sql) { @@ -335,4 +339,28 @@ abstract class DoliDB implements Database return false; } + + /** + * return all results from query as an array of objects + * Note : This method executes a given SQL query and retrieves all row of results as an array of objects. It should only be used with SELECT queries + * be carefull with this method use it only with some limit of results to avoid performences loss + * @param string $sql the sql query string + * @return bool| array + */ + public function getRows($sql) + { + $res = $this->query($sql); + if ($res) + { + $results = array(); + if($this->num_rows($res) > 0){ + while ($obj = $this->fetch_object($res)){ + $results[] = $obj; + } + } + return $results; + } + + return false; + } } From f2435f6247adb16374ff732dd8797e81a335c720 Mon Sep 17 00:00:00 2001 From: ATM john Date: Sat, 18 Apr 2020 16:08:26 +0200 Subject: [PATCH 018/780] Move methods to cunits class --- htdocs/core/class/cunits.class.php | 73 +++++++++++++++++++++++ htdocs/core/class/unitsTools.class.php | 81 -------------------------- 2 files changed, 73 insertions(+), 81 deletions(-) delete mode 100644 htdocs/core/class/unitsTools.class.php diff --git a/htdocs/core/class/cunits.class.php b/htdocs/core/class/cunits.class.php index 65baf0056e9..6de3af70416 100644 --- a/htdocs/core/class/cunits.class.php +++ b/htdocs/core/class/cunits.class.php @@ -386,4 +386,77 @@ class CUnits // extends CommonObject return 1; } } + + + /** + * Get unit from code + * @param string $code code of unit + * @param string $mode 0= id , short_label=Use short label as value, code=use code + * @return int <0 if KO, Id of code if OK + */ + public function getUnitFromCode($code, $mode = 'code') + { + + if($mode == 'short_label'){ + return dol_getIdFromCode($this->db, $code, 'c_units', 'short_label', 'rowid'); + } + elseif($mode == 'code'){ + return dol_getIdFromCode($this->db, $code, 'c_units', 'code', 'rowid'); + } + + return $code; + } + + /** + * Unit converter + * @param double $value value to convert + * @param int $fk_unit current unit id of value + * @param int $fk_new_unit the id of unit to convert in + * @return double + */ + public function unitConverter($value, $fk_unit, $fk_new_unit = 0) + { + $value = doubleval(price2num($value)); + $fk_unit = intval($fk_unit); + + // Calcul en unité de base + $scaleUnitPow = $this->scaleOfUnitPow($fk_unit); + + // convert to standard unit + $value = $value * $scaleUnitPow; + if($fk_new_unit !=0 ){ + // Calcul en unité de base + $scaleUnitPow = $this->scaleOfUnitPow($fk_new_unit); + if(!empty($scaleUnitPow)) + { + // convert to new unit + $value = $value / $scaleUnitPow; + } + } + return round($value, 2); + } + + + + /** + * get scale of unit factor + * @param $id int id of unit in dictionary + * @return float|int + */ + public function scaleOfUnitPow($id) + { + $base = 10; + // TODO : add base col into unit dictionary table + $unit = $this->db->getRow('SELECT scale, unit_type from '.MAIN_DB_PREFIX.'c_units WHERE rowid = '.intval($id)); + if($unit){ + // TODO : if base exist in unit dictionary table remove this convertion exception and update convertion infos in database exemple time hour currently scale 3600 will become scale 2 base 60 + if($unit->unit_type == 'time'){ + return doubleval($unit->scale); + } + + return pow($base, doubleval($unit->scale)); + } + + return 0; + } } diff --git a/htdocs/core/class/unitsTools.class.php b/htdocs/core/class/unitsTools.class.php deleted file mode 100644 index a5bc839da0c..00000000000 --- a/htdocs/core/class/unitsTools.class.php +++ /dev/null @@ -1,81 +0,0 @@ -getRow('SELECT scale, unit_type from '.MAIN_DB_PREFIX.'c_units WHERE rowid = '.intval($id)); - if($unit){ - // TODO : if base exist in unit dictionary table remove this convertion exception and update convertion infos in database exemple time hour currently scale 3600 will become scale 2 base 60 - if($unit->unit_type == 'time'){ - return doubleval($unit->scale); - } - - return pow($base, doubleval($unit->scale)); - } - - return 0; - } -} From e230a3a264ce7e81b0ea61111ebc72161f406a82 Mon Sep 17 00:00:00 2001 From: ATM john Date: Sat, 18 Apr 2020 16:24:12 +0200 Subject: [PATCH 019/780] add num row test --- htdocs/core/db/DoliDB.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index e3e0491b298..3bb5e025c34 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -313,8 +313,10 @@ abstract class DoliDB implements Database $res = $this->query($sql); if ($res) { - $Tresult = $this->fetch_row($res); - return $Tresult[0]; + if($this->num_rows($res) > 0) { + $Tresult = $this->fetch_row($res); + return reset($Tresult); + } } return false; From 817e16d6527308fb3d7e29638dd0187dd479f387 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 18 Apr 2020 20:01:18 +0200 Subject: [PATCH 020/780] Fix birthdays boxes and filter on month --- htdocs/core/boxes/box_birthdays.php | 2 +- htdocs/core/boxes/box_birthdays_members.php | 2 +- htdocs/core/lib/date.lib.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/boxes/box_birthdays.php b/htdocs/core/boxes/box_birthdays.php index 05d4e1d3ac0..2df1f0d331e 100644 --- a/htdocs/core/boxes/box_birthdays.php +++ b/htdocs/core/boxes/box_birthdays.php @@ -89,7 +89,7 @@ class box_birthdays extends ModeleBoxes $sql = "SELECT u.rowid, u.firstname, u.lastname, u.birth"; $sql.= " FROM ".MAIN_DB_PREFIX."user as u"; $sql.= " WHERE u.entity IN (".getEntity('user').")"; - $sql.= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], $tmparray['year']); + $sql.= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], 0); $sql.= " ORDER BY u.birth ASC"; $sql.= $this->db->plimit($max, 0); diff --git a/htdocs/core/boxes/box_birthdays_members.php b/htdocs/core/boxes/box_birthdays_members.php index e48271c4d84..bb8f0b94904 100644 --- a/htdocs/core/boxes/box_birthdays_members.php +++ b/htdocs/core/boxes/box_birthdays_members.php @@ -90,7 +90,7 @@ class box_birthdays_members extends ModeleBoxes $sql.= " FROM ".MAIN_DB_PREFIX."adherent as u"; $sql.= " WHERE u.entity IN (".getEntity('adherent').")"; $sql.= " AND u.statut = 1"; - $sql.= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], $tmparray['year']); + $sql.= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], 0); $sql.= " ORDER BY u.birth ASC"; $sql.= $this->db->plimit($max, 0); diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 8fb32bb2f37..123e3297f11 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -301,7 +301,7 @@ function dolSqlDateFilter($datefield, $day_date, $month_date, $year_date, $exclu $sqldate.= ($excludefirstand ? "" : " AND ").$datefield." BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_date, $day_date, $year_date)); $sqldate.= "' AND '".$db->idate(dol_mktime(23, 59, 59, $month_date, $day_date, $year_date))."'"; } else - $sqldate.= ($excludefirstand ? "" : " AND ")." date_format( ".$datefield.", '%m') = '".$db->escape($month_date)."'"; + $sqldate.= ($excludefirstand ? "" : " AND ")." date_format( ".$datefield.", '%c') = '".$db->escape($month_date)."'"; } elseif ($year_date > 0){ $sqldate.= ($excludefirstand ? "" : " AND ").$datefield." BETWEEN '".$db->idate(dol_get_first_day($year_date, 1, false)); $sqldate.= "' AND '".$db->idate(dol_get_last_day($year_date, 12, false))."'"; From ca3402c4cfd06e8921436f8fa508e99e3746a52e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 19 Apr 2020 21:33:31 +0200 Subject: [PATCH 021/780] Update interface_80_modStripe_Stripe.class.php --- .../interface_80_modStripe_Stripe.class.php | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php b/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php index af2ed9cc96b..f1f0a9530af 100644 --- a/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php +++ b/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php @@ -53,7 +53,7 @@ class InterfaceStripe $this->family = 'stripe'; $this->description = "Triggers of the module Stripe"; $this->version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' or version - $this->picto = 'stripe@stripe'; + $this->picto = 'stripe'; } /** @@ -85,19 +85,7 @@ class InterfaceStripe public function getVersion() { global $langs; - $langs->load("admin"); - - if ($this->version == 'development') { - return $langs->trans("Development"); - } elseif ($this->version == 'experimental') { - return $langs->trans("Experimental"); - } elseif ($this->version == 'dolibarr') { - return DOL_VERSION; - } elseif ($this->version) { - return $this->version; - } else { - return $langs->trans("Unknown"); - } + return DOL_VERSION; } /** From 61e76ef25e330b703abe19b167921acc2ee0a73d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 19 Apr 2020 21:47:30 +0200 Subject: [PATCH 022/780] Update api_bankaccounts.class.php --- htdocs/compta/bank/class/api_bankaccounts.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/bank/class/api_bankaccounts.class.php b/htdocs/compta/bank/class/api_bankaccounts.class.php index bc5b9d46be1..d947d169695 100644 --- a/htdocs/compta/bank/class/api_bankaccounts.class.php +++ b/htdocs/compta/bank/class/api_bankaccounts.class.php @@ -73,12 +73,12 @@ class BankAccounts extends DolibarrApi $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."bank_account as t"; if ($category > 0) { - $sql .= ", ".MAIN_DB_PREFIX."categorie_account as c"; + $sql .= ", ".MAIN_DB_PREFIX."categorie_account as c"; } $sql .= ' WHERE t.entity IN ('.getEntity('bank_account').')'; // Select accounts of given category if ($category > 0) { - $sql .= " AND c.fk_categorie = ".$db->escape($category)." AND c.fk_account = t.rowid "; + $sql .= " AND c.fk_categorie = ".$db->escape($category)." AND c.fk_account = t.rowid "; } // Add sql filters if ($sqlfilters) From 5992318af7f282ed10d7ed0d485ac53b39c61723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 19 Apr 2020 21:49:37 +0200 Subject: [PATCH 023/780] Update card.php --- htdocs/compta/facture/card.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 5e280535c27..da22eaf872e 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -4357,16 +4357,13 @@ elseif ($id > 0 || !empty($ref)) - if(!empty($object->retained_warranty) || !empty($conf->global->INVOICE_USE_RETAINED_WARRANTY)) { - + if (!empty($object->retained_warranty) || !empty($conf->global->INVOICE_USE_RETAINED_WARRANTY)) { $displayWarranty = true; - if(!in_array($object->type, $retainedWarrantyInvoiceAvailableType) && empty($object->retained_warranty)){ + if (!in_array($object->type, $retainedWarrantyInvoiceAvailableType) && empty($object->retained_warranty)) { $displayWarranty = false; } - if($displayWarranty) - { - + if($displayWarranty) { // Retained Warranty print ''; print '\n"; From 98f370034a6d0c7fd10b3130e52a409b62fce57e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 20 Apr 2020 14:53:17 +0200 Subject: [PATCH 034/780] Look and feel v12 --- htdocs/compta/bank/various_payment/list.php | 5 ++--- htdocs/salaries/list.php | 12 ++++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/htdocs/compta/bank/various_payment/list.php b/htdocs/compta/bank/various_payment/list.php index e2aa6517417..b8581151599 100644 --- a/htdocs/compta/bank/various_payment/list.php +++ b/htdocs/compta/bank/various_payment/list.php @@ -58,7 +58,7 @@ $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortfield) $sortfield = "v.datep,v.rowid"; @@ -178,9 +178,8 @@ if ($result) print ''; print ''; print ''; - print ''; - print_barre_liste($langs->trans("VariousPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'invoicing', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("VariousPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'invoicing', 0, $newcardbutton, '', $limit, 0, 0, 1); print '
'; print '
'; From 7b68a2a60e4f80319934bb5cfdc7e9b259a028d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 19 Apr 2020 21:50:52 +0200 Subject: [PATCH 024/780] Update pdf_crabe.modules.php --- htdocs/core/modules/facture/doc/pdf_crabe.modules.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index cc26c4ba13b..4d9df1c662a 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -1419,7 +1419,6 @@ class pdf_crabe extends ModelePDFFactures $pdf->MultiCell($col2x - $col1x, $tab2_hl, $retainedWarrantyToPayOn, $useborder, 'L', 1); $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($retainedWarranty), $useborder, 'R', 1); - } } } From 350e75f2839f7b182733fc01756085909dce9e75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 19 Apr 2020 22:05:47 +0200 Subject: [PATCH 025/780] make dolistore happy again --- htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php b/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php index 7b1f49601c3..dcdf94c8666 100644 --- a/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php +++ b/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php @@ -1,6 +1,6 @@ - * Copyright (C) 2018-2019 Frédéric France + * Copyright (C) 2018-2020 Frédéric France * Copyright (C) ---Put here your own copyright and developer email--- * * This program is free software: you can redistribute it and/or modify @@ -112,7 +112,7 @@ class mymodulewidget1 extends ModeleBoxes // Use configuration value for max lines count $this->max = $max; - //include_once DOL_DOCUMENT_ROOT . "/mymodule/class/mymodule.class.php"; + //dol_include_once("/mymodule/class/mymodule.class.php"); // Populate the head at runtime $text = $langs->trans("MyModuleBoxDescription", $max); From 68702f8053479d364848b1aeb85de81a1eee10f0 Mon Sep 17 00:00:00 2001 From: Adrien Jacob Date: Mon, 20 Apr 2020 14:12:08 +0200 Subject: [PATCH 026/780] [BUGFIX] Allow update of extra fields This is to make supplier invoices consistent with other similar classes --- htdocs/fourn/class/fournisseur.facture.class.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 916ef2f001d..28d9310a01f 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -976,6 +976,15 @@ class FactureFournisseur extends CommonInvoice $this->errors[] = "Error ".$this->db->lasterror(); } } + + if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0) + { + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } if (!$error) { From 36385e3b880e2c5740385a13fa0bd2d3b2f0d5a5 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Mon, 20 Apr 2020 12:16:34 +0000 Subject: [PATCH 027/780] Fixing style errors. --- 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 28d9310a01f..a9448c7c925 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -976,7 +976,7 @@ class FactureFournisseur extends CommonInvoice $this->errors[] = "Error ".$this->db->lasterror(); } } - + if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0) { $result=$this->insertExtraFields(); From 924b8fd1386b4556f260b3b1894050f3cb1237ef Mon Sep 17 00:00:00 2001 From: jribal Date: Mon, 20 Apr 2020 13:21:12 +0100 Subject: [PATCH 028/780] add project object dependency Dependency was missing. Webapp seems fine but api fails. --- htdocs/projet/class/task.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 6136198fd5e..f3f75b716c1 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -26,6 +26,7 @@ */ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; +require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; /** From dfd1711f539cc7618a8df692796f9c96a9927456 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 20 Apr 2020 14:35:11 +0200 Subject: [PATCH 029/780] Update interface_80_modStripe_Stripe.class.php --- .../triggers/interface_80_modStripe_Stripe.class.php | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php b/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php index f1f0a9530af..27138e6099f 100644 --- a/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php +++ b/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php @@ -77,17 +77,6 @@ class InterfaceStripe return $this->description; } - /** - * Trigger version - * - * @return string Version of trigger file - */ - public function getVersion() - { - global $langs; - return DOL_VERSION; - } - /** * Function called when a Dolibarrr business event is done. * All functions "runTrigger" are triggered if file From f546103c015dad59328cd646ed25834258def42c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 19 Apr 2020 22:05:47 +0200 Subject: [PATCH 030/780] make dolistore happy again --- htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php b/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php index 2b32594e6eb..9402c8eb5fc 100644 --- a/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php +++ b/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php @@ -1,6 +1,6 @@ - * Copyright (C) 2018-2019 Frédéric France + * Copyright (C) 2018-2020 Frédéric France * Copyright (C) ---Put here your own copyright and developer email--- * * This program is free software: you can redistribute it and/or modify @@ -112,7 +112,7 @@ class mymodulewidget1 extends ModeleBoxes // Use configuration value for max lines count $this->max = $max; - //include_once DOL_DOCUMENT_ROOT . "/mymodule/class/mymodule.class.php"; + //dol_include_once("/mymodule/class/mymodule.class.php"); // Populate the head at runtime $text = $langs->trans("MyModuleBoxDescription", $max); From 91fbccb59447a048e8ec4010ca74982702197188 Mon Sep 17 00:00:00 2001 From: Adrien Jacob Date: Mon, 20 Apr 2020 14:12:08 +0200 Subject: [PATCH 031/780] [BUGFIX] Allow update of extra fields This is to make supplier invoices consistent with other similar classes --- htdocs/fourn/class/fournisseur.facture.class.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index bdfdbb360d8..bdeedf44091 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -976,6 +976,15 @@ class FactureFournisseur extends CommonInvoice $this->errors[] = "Error ".$this->db->lasterror(); } } + + if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0) + { + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } if (!$error) { From 27aeaaecb5f75a4386abcaf4fc4e3b672a43eece Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Mon, 20 Apr 2020 12:16:34 +0000 Subject: [PATCH 032/780] Fixing style errors. --- 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 bdeedf44091..48ca9ca81f2 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -976,7 +976,7 @@ class FactureFournisseur extends CommonInvoice $this->errors[] = "Error ".$this->db->lasterror(); } } - + if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0) { $result=$this->insertExtraFields(); From 2922d16ca2750b7581735bb88a55f701aefa6663 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 20 Apr 2020 14:46:02 +0200 Subject: [PATCH 033/780] Look and feel v12 --- htdocs/admin/const.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/const.php b/htdocs/admin/const.php index 59ac87a2c56..9f3accfe549 100644 --- a/htdocs/admin/const.php +++ b/htdocs/admin/const.php @@ -208,7 +208,7 @@ if (!empty($conf->multicompany->enabled) && !$user->entity) { print getTitleFieldOfList('Entity', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ')."\n"; } -print getTitleFieldOfList("Action", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'center '); +print getTitleFieldOfList("", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'center '); print "
'."\n"; diff --git a/htdocs/salaries/list.php b/htdocs/salaries/list.php index 259547ae8ff..c92ee53fd38 100644 --- a/htdocs/salaries/list.php +++ b/htdocs/salaries/list.php @@ -49,16 +49,16 @@ $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortfield) $sortfield = "s.datep,s.rowid"; if (!$sortorder) $sortorder = "DESC,DESC"; $optioncss = GETPOST('optioncss', 'alpha'); -$filtre = $_GET["filtre"]; +$filtre = GETPOST("filtre", 'none'); -if (empty($_REQUEST['typeid'])) +if (! GETPOST('typeid', 'int')) { $newfiltre = str_replace('filtre=', '', $filtre); $filterarray = explode('-', $newfiltre); @@ -70,7 +70,7 @@ if (empty($_REQUEST['typeid'])) } else { - $typeid = $_REQUEST['typeid']; + $typeid = GETPOST('typeid', 'int'); } @@ -141,6 +141,7 @@ if ($result) } $sql .= $db->plimit($limit + 1, $offset); + $result = $db->query($sql); if ($result) { @@ -167,9 +168,8 @@ if ($result) print ''; print ''; print ''; - print ''; - print_barre_liste($langs->trans("SalariesPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'title_accountancy.png', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("SalariesPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'title_accountancy.png', 0, $newcardbutton, '', $limit, 0, 0, 1); print '
'; print '
'."\n"; From 16e46c672ccb475569634013e17aaf1ced60214e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 20 Apr 2020 15:06:27 +0200 Subject: [PATCH 035/780] Clean code --- htdocs/adherents/document.php | 3 ++- htdocs/admin/tools/listsessions.php | 3 ++- htdocs/asset/document.php | 3 ++- htdocs/bom/bom_document.php | 3 ++- htdocs/comm/action/document.php | 3 ++- htdocs/comm/card.php | 3 ++- htdocs/comm/propal/document.php | 3 ++- htdocs/commande/document.php | 3 ++- .../bank/account_statement_document.php | 3 ++- htdocs/compta/bank/document.php | 3 ++- .../compta/bank/various_payment/document.php | 3 ++- htdocs/compta/clients.php | 3 ++- htdocs/compta/deplacement/document.php | 3 ++- htdocs/compta/deplacement/index.php | 3 ++- htdocs/compta/facture/document.php | 3 ++- htdocs/compta/prelevement/line.php | 26 ++++++++++--------- htdocs/compta/prelevement/rejets.php | 11 ++++---- htdocs/compta/sociales/document.php | 3 ++- htdocs/compta/tva/document.php | 4 +-- htdocs/contact/document.php | 3 ++- htdocs/contrat/document.php | 3 ++- htdocs/core/ajax/ajaxdirpreview.php | 3 ++- htdocs/don/document.php | 3 ++- htdocs/ecm/dir_add_card.php | 3 ++- htdocs/ecm/dir_card.php | 3 ++- htdocs/ecm/file_card.php | 3 ++- htdocs/ecm/index.php | 3 ++- htdocs/ecm/index_auto.php | 3 ++- htdocs/ecm/search.php | 3 ++- htdocs/expedition/document.php | 3 ++- htdocs/expensereport/document.php | 3 ++- htdocs/expensereport/index.php | 3 ++- htdocs/fichinter/document.php | 3 ++- htdocs/fourn/commande/document.php | 3 ++- htdocs/fourn/contact.php | 3 ++- htdocs/fourn/facture/document.php | 3 ++- htdocs/fourn/facture/impayees.php | 3 ++- htdocs/ftp/index.php | 3 ++- htdocs/holiday/document.php | 3 ++- htdocs/hrm/admin/admin_establishment.php | 7 ++++- htdocs/loan/document.php | 3 ++- htdocs/margin/tabs/productMargins.php | 5 ++-- htdocs/margin/tabs/thirdpartyMargins.php | 5 ++-- .../template/myobject_document.php | 3 ++- htdocs/mrp/mo_document.php | 3 ++- htdocs/product/document.php | 3 ++- htdocs/product/price.php | 3 ++- htdocs/product/stock/productlot_document.php | 3 ++- htdocs/projet/document.php | 3 ++- htdocs/projet/tasks/document.php | 3 ++- htdocs/resource/document.php | 3 ++- htdocs/salaries/document.php | 3 ++- htdocs/societe/document.php | 3 ++- htdocs/stripe/charge.php | 4 +-- htdocs/stripe/payout.php | 4 +-- htdocs/stripe/transaction.php | 4 +-- htdocs/supplier_proposal/document.php | 3 ++- htdocs/ticket/document.php | 3 ++- htdocs/user/document.php | 3 ++- htdocs/zapier/hook_document.php | 3 ++- 60 files changed, 139 insertions(+), 84 deletions(-) diff --git a/htdocs/adherents/document.php b/htdocs/adherents/document.php index cc3e06207be..05ccf20169c 100644 --- a/htdocs/adherents/document.php +++ b/htdocs/adherents/document.php @@ -45,11 +45,12 @@ $confirm = GETPOST('confirm', 'alpha'); $result = restrictedArea($user, 'adherent', $id); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/admin/tools/listsessions.php b/htdocs/admin/tools/listsessions.php index eb4caa4bf3d..253f4919092 100644 --- a/htdocs/admin/tools/listsessions.php +++ b/htdocs/admin/tools/listsessions.php @@ -41,11 +41,12 @@ if ($user->socid > 0) $socid = $user->socid; } +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "DESC"; diff --git a/htdocs/asset/document.php b/htdocs/asset/document.php index c6762c5c946..4724173cd19 100644 --- a/htdocs/asset/document.php +++ b/htdocs/asset/document.php @@ -45,11 +45,12 @@ $ref = GETPOST('ref', 'alpha'); //$result = restrictedArea($user, 'asset', $id); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/bom/bom_document.php b/htdocs/bom/bom_document.php index 0fc68ed276e..a7dca41fff6 100644 --- a/htdocs/bom/bom_document.php +++ b/htdocs/bom/bom_document.php @@ -46,11 +46,12 @@ $ref = GETPOST('ref', 'alpha'); //$result = restrictedArea($user, 'bom', $id); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/comm/action/document.php b/htdocs/comm/action/document.php index 20e76b6e7d5..9e770f70a93 100644 --- a/htdocs/comm/action/document.php +++ b/htdocs/comm/action/document.php @@ -62,11 +62,12 @@ if ($id > 0) } // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index f1ea3c0923d..7c6335d146b 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -65,11 +65,12 @@ $result = restrictedArea($user, 'societe', $id, '&societe'); $action = GETPOST('action', 'aZ09'); $mode = GETPOST("mode"); +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/comm/propal/document.php b/htdocs/comm/propal/document.php index 02d801860a5..d9d12c5efb4 100644 --- a/htdocs/comm/propal/document.php +++ b/htdocs/comm/propal/document.php @@ -53,11 +53,12 @@ if (!empty($user->socid)) $result = restrictedArea($user, 'propal', $id); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; diff --git a/htdocs/commande/document.php b/htdocs/commande/document.php index 4fa1095998a..9d188cda104 100644 --- a/htdocs/commande/document.php +++ b/htdocs/commande/document.php @@ -52,11 +52,12 @@ if ($user->socid) $result = restrictedArea($user, 'commande', $id, ''); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; diff --git a/htdocs/compta/bank/account_statement_document.php b/htdocs/compta/bank/account_statement_document.php index 1df1f000a61..05f89e1bc6f 100644 --- a/htdocs/compta/bank/account_statement_document.php +++ b/htdocs/compta/bank/account_statement_document.php @@ -57,11 +57,12 @@ if ($user->socid) $socid = $user->socid; // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) diff --git a/htdocs/compta/bank/document.php b/htdocs/compta/bank/document.php index 9fd2207f3ec..d003463e5af 100644 --- a/htdocs/compta/bank/document.php +++ b/htdocs/compta/bank/document.php @@ -54,11 +54,12 @@ if ($user->socid) $socid = $user->socid; // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) diff --git a/htdocs/compta/bank/various_payment/document.php b/htdocs/compta/bank/various_payment/document.php index 618cc6006a5..d81b9bdd41a 100644 --- a/htdocs/compta/bank/various_payment/document.php +++ b/htdocs/compta/bank/various_payment/document.php @@ -43,11 +43,12 @@ if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'banque', '', '', ''); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/compta/clients.php b/htdocs/compta/clients.php index 1dc13c0580f..6c1439d5466 100644 --- a/htdocs/compta/clients.php +++ b/htdocs/compta/clients.php @@ -44,11 +44,12 @@ $langs->load("companies"); $mode = GETPOST("mode"); +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/compta/deplacement/document.php b/htdocs/compta/deplacement/document.php index 4f42ae2292b..2cef0b3e6cd 100644 --- a/htdocs/compta/deplacement/document.php +++ b/htdocs/compta/deplacement/document.php @@ -48,11 +48,12 @@ $result = restrictedArea($user, 'deplacement', $id, ''); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/compta/deplacement/index.php b/htdocs/compta/deplacement/index.php index e95d7f95732..9d45bafd20f 100644 --- a/htdocs/compta/deplacement/index.php +++ b/htdocs/compta/deplacement/index.php @@ -35,11 +35,12 @@ $socid = GETPOST('socid', 'int'); if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'deplacement', '', ''); +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "DESC"; diff --git a/htdocs/compta/facture/document.php b/htdocs/compta/facture/document.php index e09c8aee11c..a901b985342 100644 --- a/htdocs/compta/facture/document.php +++ b/htdocs/compta/facture/document.php @@ -56,11 +56,12 @@ if ($user->socid) $result = restrictedArea($user, 'facture', $id, ''); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/compta/prelevement/line.php b/htdocs/compta/prelevement/line.php index 19ba5892474..6eef29d1e3e 100644 --- a/htdocs/compta/prelevement/line.php +++ b/htdocs/compta/prelevement/line.php @@ -43,9 +43,22 @@ $action = GETPOST('action', 'alpha'); $id = GETPOST('id', 'int'); $socid = GETPOST('socid', 'int'); -$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortorder = GETPOST('sortorder', 'alpha'); $sortfield = GETPOST('sortfield', 'alpha'); +$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); +if ($page == -1 || $page == null) { $page = 0; } +$offset = $limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; + +if ($sortorder == "") $sortorder = "DESC"; +if ($sortfield == "") $sortfield = "pl.fk_soc"; + + +/* + * Actions + */ if ($action == 'confirm_rejet') { @@ -246,17 +259,6 @@ if ($id) print ""; - - - if ($page == -1 || $page == null) { $page = 0; } - - $offset = $conf->liste_limit * $page; - $pageprev = $page - 1; - $pagenext = $page + 1; - - if ($sortorder == "") $sortorder = "DESC"; - if ($sortfield == "") $sortfield = "pl.fk_soc"; - /* * List of invoices */ diff --git a/htdocs/compta/prelevement/rejets.php b/htdocs/compta/prelevement/rejets.php index 1bc2a1844e2..602c57b5ad4 100644 --- a/htdocs/compta/prelevement/rejets.php +++ b/htdocs/compta/prelevement/rejets.php @@ -39,20 +39,19 @@ if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'prelevement', '', '', 'bons'); // Get supervariables -$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortorder = GETPOST('sortorder', 'alpha'); $sortfield = GETPOST('sortfield', 'alpha'); - +$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); +$offset = $limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; /* * View */ llxHeader('', $langs->trans("WithdrawsRefused")); -$offset = $conf->liste_limit * $page; -$pageprev = $page - 1; -$pagenext = $page + 1; - if ($sortorder == "") $sortorder = "DESC"; if ($sortfield == "") $sortfield = "p.datec"; diff --git a/htdocs/compta/sociales/document.php b/htdocs/compta/sociales/document.php index a64c0432be9..3c73c8e6614 100644 --- a/htdocs/compta/sociales/document.php +++ b/htdocs/compta/sociales/document.php @@ -52,13 +52,14 @@ $result = restrictedArea($user, 'tax', $id, 'chargesociales', 'charges'); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/compta/tva/document.php b/htdocs/compta/tva/document.php index 037e6baa5c3..fabaf1ee705 100644 --- a/htdocs/compta/tva/document.php +++ b/htdocs/compta/tva/document.php @@ -53,14 +53,14 @@ $result = restrictedArea($user, 'tax', '', 'vat', 'charges'); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } - -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/contact/document.php b/htdocs/contact/document.php index 28d8ac42f6b..e21ee3e492b 100644 --- a/htdocs/contact/document.php +++ b/htdocs/contact/document.php @@ -55,11 +55,12 @@ if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'contact', $id, 'socpeople&societe', '', '', 'rowid', $objcanvas); // If we create a contact with no company (shared contacts), no check on write permission // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; diff --git a/htdocs/contrat/document.php b/htdocs/contrat/document.php index c104d210617..330db63e30c 100644 --- a/htdocs/contrat/document.php +++ b/htdocs/contrat/document.php @@ -55,11 +55,12 @@ if ($user->socid > 0) $result = restrictedArea($user, 'contrat', $id); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/core/ajax/ajaxdirpreview.php b/htdocs/core/ajax/ajaxdirpreview.php index 31d0b449d5b..bb6a8de30d4 100644 --- a/htdocs/core/ajax/ajaxdirpreview.php +++ b/htdocs/core/ajax/ajaxdirpreview.php @@ -46,11 +46,12 @@ if (!isset($mode) || $mode != 'noajax') // For ajax call $urlsource = GETPOST("urlsource", 'alpha'); $search_doc_ref = GETPOST('search_doc_ref', 'alpha'); + $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 - $offset = $conf->liste_limit * $page; + $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/don/document.php b/htdocs/don/document.php index 8dbb6f99fda..dcb245e3e85 100644 --- a/htdocs/don/document.php +++ b/htdocs/don/document.php @@ -55,11 +55,12 @@ $result = restrictedArea($user, 'don', $id, ''); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/ecm/dir_add_card.php b/htdocs/ecm/dir_add_card.php index 0c9190b9a4c..4d6f2bdce5a 100644 --- a/htdocs/ecm/dir_add_card.php +++ b/htdocs/ecm/dir_add_card.php @@ -62,11 +62,12 @@ else // For example $module == 'medias' $upload_dir = $conf->medias->multidir_output[$conf->entity]; } +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/ecm/dir_card.php b/htdocs/ecm/dir_card.php index 42c6b140f3c..9b3da9d8aae 100644 --- a/htdocs/ecm/dir_card.php +++ b/htdocs/ecm/dir_card.php @@ -42,11 +42,12 @@ $pageid = GETPOST('pageid', 'int'); if (empty($module)) $module = 'ecm'; // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/ecm/file_card.php b/htdocs/ecm/file_card.php index 4b2d6006c5c..1c94fd1700b 100644 --- a/htdocs/ecm/file_card.php +++ b/htdocs/ecm/file_card.php @@ -46,11 +46,12 @@ if ($user->socid > 0) $socid = $user->socid; } +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php index 9e51da09899..43b9ca6dcce 100644 --- a/htdocs/ecm/index.php +++ b/htdocs/ecm/index.php @@ -45,11 +45,12 @@ $section = GETPOST('section', 'int') ?GETPOST('section', 'int') : GETPOST('secti if (!$section) $section = 0; $section_dir = GETPOST('section_dir', 'alpha'); +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/ecm/index_auto.php b/htdocs/ecm/index_auto.php index 6c245e3ad1c..39bdc9a1612 100644 --- a/htdocs/ecm/index_auto.php +++ b/htdocs/ecm/index_auto.php @@ -47,11 +47,12 @@ $section_dir = GETPOST('section_dir', 'alpha'); $search_doc_ref = GETPOST('search_doc_ref', 'alpha'); +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/ecm/search.php b/htdocs/ecm/search.php index 1b90ae77411..e125824a8c8 100644 --- a/htdocs/ecm/search.php +++ b/htdocs/ecm/search.php @@ -52,11 +52,12 @@ if (empty($module)) $module = 'ecm'; $upload_dir = $conf->ecm->dir_output.'/'.$section; +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/expedition/document.php b/htdocs/expedition/document.php index 65786dfbdae..6047be5fe0e 100644 --- a/htdocs/expedition/document.php +++ b/htdocs/expedition/document.php @@ -53,11 +53,12 @@ if ($user->socid) $result = restrictedArea($user, 'expedition', $id, ''); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/expensereport/document.php b/htdocs/expensereport/document.php index 0c974ef450a..17b7eb57619 100644 --- a/htdocs/expensereport/document.php +++ b/htdocs/expensereport/document.php @@ -48,11 +48,12 @@ $result = restrictedArea($user, 'expensereport', $id, 'expensereport'); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/expensereport/index.php b/htdocs/expensereport/index.php index accea8f8251..0597d1b29a2 100644 --- a/htdocs/expensereport/index.php +++ b/htdocs/expensereport/index.php @@ -45,11 +45,12 @@ $socid = GETPOST('socid', 'int'); if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'expensereport', '', ''); +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "DESC"; diff --git a/htdocs/fichinter/document.php b/htdocs/fichinter/document.php index 925ad7be709..a6b4c88ed09 100644 --- a/htdocs/fichinter/document.php +++ b/htdocs/fichinter/document.php @@ -52,11 +52,12 @@ $result = restrictedArea($user, 'ficheinter', $id, 'fichinter'); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/fourn/commande/document.php b/htdocs/fourn/commande/document.php index 2292f335c40..7db240abf94 100644 --- a/htdocs/fourn/commande/document.php +++ b/htdocs/fourn/commande/document.php @@ -51,11 +51,12 @@ if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'fournisseur', $id, 'commande_fournisseur', 'commande'); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/fourn/contact.php b/htdocs/fourn/contact.php index 06e7f09edd7..40773f0eca6 100644 --- a/htdocs/fourn/contact.php +++ b/htdocs/fourn/contact.php @@ -41,11 +41,12 @@ if ($user->socid > 0) $socid = $user->socid; } +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/fourn/facture/document.php b/htdocs/fourn/facture/document.php index 287a85bc7cc..022028bb483 100644 --- a/htdocs/fourn/facture/document.php +++ b/htdocs/fourn/facture/document.php @@ -50,11 +50,12 @@ if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'fournisseur', $id, 'facture_fourn', 'facture'); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/fourn/facture/impayees.php b/htdocs/fourn/facture/impayees.php index 4e5ed4dbae2..5368b491728 100644 --- a/htdocs/fourn/facture/impayees.php +++ b/htdocs/fourn/facture/impayees.php @@ -54,9 +54,10 @@ $search_company = GETPOST('search_company', 'alpha'); $search_amount_no_tax = GETPOST('search_amount_no_tax', 'alpha'); $search_amount_all_tax = GETPOST('search_amount_all_tax', 'alpha'); +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortfield) $sortfield = "f.date_lim_reglement"; diff --git a/htdocs/ftp/index.php b/htdocs/ftp/index.php index eedfa9c3c73..0c7f8409992 100644 --- a/htdocs/ftp/index.php +++ b/htdocs/ftp/index.php @@ -47,11 +47,12 @@ $confirm = GETPOST('confirm'); $upload_dir = $conf->ftp->dir_temp; $download_dir = $conf->ftp->dir_temp; +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/holiday/document.php b/htdocs/holiday/document.php index 5df844175d4..a0f8723b92d 100644 --- a/htdocs/holiday/document.php +++ b/htdocs/holiday/document.php @@ -49,11 +49,12 @@ if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'holiday', $id, 'holiday'); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/hrm/admin/admin_establishment.php b/htdocs/hrm/admin/admin_establishment.php index c0d7885850b..ba98812f1b2 100644 --- a/htdocs/hrm/admin/admin_establishment.php +++ b/htdocs/hrm/admin/admin_establishment.php @@ -44,11 +44,16 @@ foreach ($tmpstatus2label as $key => $val) $status2label[$key] = $langs->trans($ * Actions */ +// None + + /* * View */ + llxHeader('', $langs->trans("Establishments")); +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortorder = GETPOST("sortorder"); $sortfield = GETPOST("sortfield"); if (!$sortorder) $sortorder = "DESC"; @@ -58,7 +63,7 @@ if (empty($page) || $page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; diff --git a/htdocs/loan/document.php b/htdocs/loan/document.php index a68ec64f7b1..6ae646a93a1 100644 --- a/htdocs/loan/document.php +++ b/htdocs/loan/document.php @@ -44,13 +44,14 @@ if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'loan', $id, '', ''); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/margin/tabs/productMargins.php b/htdocs/margin/tabs/productMargins.php index d166b990d9b..e68a042ace2 100644 --- a/htdocs/margin/tabs/productMargins.php +++ b/htdocs/margin/tabs/productMargins.php @@ -42,13 +42,12 @@ if (empty($user->rights->margins->liretous)) accessforbidden(); $object = new Product($db); -$mesg = ''; - +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "DESC"; diff --git a/htdocs/margin/tabs/thirdpartyMargins.php b/htdocs/margin/tabs/thirdpartyMargins.php index 5d7d0039b7a..547c3595383 100644 --- a/htdocs/margin/tabs/thirdpartyMargins.php +++ b/htdocs/margin/tabs/thirdpartyMargins.php @@ -34,13 +34,12 @@ if (!empty($user->socid)) $socid = $user->socid; $result = restrictedArea($user, 'societe', '', ''); -$mesg = ''; - +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "DESC"; diff --git a/htdocs/modulebuilder/template/myobject_document.php b/htdocs/modulebuilder/template/myobject_document.php index 231b8bfa3cc..658bed118bd 100644 --- a/htdocs/modulebuilder/template/myobject_document.php +++ b/htdocs/modulebuilder/template/myobject_document.php @@ -54,11 +54,12 @@ $id = (GETPOST('socid', 'int') ? GETPOST('socid', 'int') : GETPOST('id', 'int')) $ref = GETPOST('ref', 'alpha'); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/mrp/mo_document.php b/htdocs/mrp/mo_document.php index ea01b4316a9..a7baa2d9144 100644 --- a/htdocs/mrp/mo_document.php +++ b/htdocs/mrp/mo_document.php @@ -48,11 +48,12 @@ $ref = GETPOST('ref', 'alpha'); //$result = restrictedArea($user, 'mrp', $id); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/product/document.php b/htdocs/product/document.php index 723f3b9fbd5..e5702078dd2 100644 --- a/htdocs/product/document.php +++ b/htdocs/product/document.php @@ -55,11 +55,12 @@ $result = restrictedArea($user, 'produit|service', $fieldvalue, 'product&product $hookmanager->initHooks(array('productdocuments')); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/product/price.php b/htdocs/product/price.php index 3f6a89cbddb..a4e9f46fa0a 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -1633,11 +1633,12 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { $prodcustprice = new Productcustomerprice($db); + $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = (GETPOST("page", 'int') ?GETPOST("page", 'int') : 0); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 - $offset = $conf->liste_limit * $page; + $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) diff --git a/htdocs/product/stock/productlot_document.php b/htdocs/product/stock/productlot_document.php index 222ba204bac..1dbb8a900e6 100644 --- a/htdocs/product/stock/productlot_document.php +++ b/htdocs/product/stock/productlot_document.php @@ -55,11 +55,12 @@ $result = restrictedArea($user, 'produit|service'); $hookmanager->initHooks(array('productlotdocuments')); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/projet/document.php b/htdocs/projet/document.php index e3dafef1246..9b4c852100d 100644 --- a/htdocs/projet/document.php +++ b/htdocs/projet/document.php @@ -55,11 +55,12 @@ if ($id > 0 || !empty($ref)) { } // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; diff --git a/htdocs/projet/tasks/document.php b/htdocs/projet/tasks/document.php index 8febad854b7..bd4335f747f 100644 --- a/htdocs/projet/tasks/document.php +++ b/htdocs/projet/tasks/document.php @@ -51,11 +51,12 @@ $socid = 0; if (!$user->rights->projet->lire) accessforbidden(); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/resource/document.php b/htdocs/resource/document.php index 5f053be4321..d0d4e2300d8 100644 --- a/htdocs/resource/document.php +++ b/htdocs/resource/document.php @@ -49,11 +49,12 @@ $result = restrictedArea($user, 'resource', $id, 'resource'); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/salaries/document.php b/htdocs/salaries/document.php index c8de93c0786..ff709816d18 100644 --- a/htdocs/salaries/document.php +++ b/htdocs/salaries/document.php @@ -50,11 +50,12 @@ $result = restrictedArea($user, 'salaries', '', '', ''); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/societe/document.php b/htdocs/societe/document.php index f22fb1ec5b6..d082ae6baa5 100644 --- a/htdocs/societe/document.php +++ b/htdocs/societe/document.php @@ -48,11 +48,12 @@ if ($user->socid > 0) $result = restrictedArea($user, 'societe', $id, '&societe'); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; diff --git a/htdocs/stripe/charge.php b/htdocs/stripe/charge.php index f765a2a3ec1..44c7db306a2 100644 --- a/htdocs/stripe/charge.php +++ b/htdocs/stripe/charge.php @@ -36,13 +36,13 @@ $socid = GETPOST("socid", "int"); if ($user->socid) $socid = $user->socid; //$result = restrictedArea($user, 'salaries', '', '', ''); -$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $rowid = GETPOST("rowid", 'alpha'); $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; diff --git a/htdocs/stripe/payout.php b/htdocs/stripe/payout.php index 10316ec2ece..17f2423327f 100644 --- a/htdocs/stripe/payout.php +++ b/htdocs/stripe/payout.php @@ -36,13 +36,13 @@ $socid = GETPOST("socid", "int"); if ($user->socid) $socid = $user->socid; //$result = restrictedArea($user, 'salaries', '', '', ''); -$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $rowid = GETPOST("rowid", 'alpha'); $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; diff --git a/htdocs/stripe/transaction.php b/htdocs/stripe/transaction.php index 59858a69262..3829eba4d0d 100644 --- a/htdocs/stripe/transaction.php +++ b/htdocs/stripe/transaction.php @@ -36,13 +36,13 @@ $socid = GETPOST("socid", "int"); if ($user->socid) $socid = $user->socid; //$result = restrictedArea($user, 'salaries', '', '', ''); -$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $rowid = GETPOST("rowid", 'alpha'); $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; diff --git a/htdocs/supplier_proposal/document.php b/htdocs/supplier_proposal/document.php index 8a6ec8f1bab..3f471e28b3f 100644 --- a/htdocs/supplier_proposal/document.php +++ b/htdocs/supplier_proposal/document.php @@ -52,11 +52,12 @@ if (!empty($user->socid)) $result = restrictedArea($user, 'supplier_proposal', $id); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/ticket/document.php b/htdocs/ticket/document.php index ce5326b81e5..d48001a680e 100644 --- a/htdocs/ticket/document.php +++ b/htdocs/ticket/document.php @@ -48,11 +48,12 @@ if (!$user->rights->ticket->read) { } // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/user/document.php b/htdocs/user/document.php index 905eca0e4cf..2b8c67d7ae6 100644 --- a/htdocs/user/document.php +++ b/htdocs/user/document.php @@ -72,11 +72,12 @@ $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); if ($user->id <> $id && !$canreaduser) accessforbidden(); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; diff --git a/htdocs/zapier/hook_document.php b/htdocs/zapier/hook_document.php index a5610543eac..cdc5f8c7ddf 100644 --- a/htdocs/zapier/hook_document.php +++ b/htdocs/zapier/hook_document.php @@ -46,11 +46,12 @@ $ref = GETPOST('ref', 'alpha'); //$result = restrictedArea($user, 'mymodule', $id); // Get parameters +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) $sortorder = "ASC"; From 9697085f123c0f9c47d387af2ae24730f6731d4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 20 Apr 2020 15:36:08 +0200 Subject: [PATCH 036/780] remove debug --- htdocs/core/class/doleditor.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/doleditor.class.php b/htdocs/core/class/doleditor.class.php index 8c7a88e925a..d4ee7ccaced 100644 --- a/htdocs/core/class/doleditor.class.php +++ b/htdocs/core/class/doleditor.class.php @@ -259,7 +259,7 @@ class DolEditor })'; $out .= ''."\n"; } -var_dump($this->height); + $out .= '
Date: Mon, 20 Apr 2020 15:57:15 +0200
Subject: [PATCH 037/780] Look and feel v12

---
 htdocs/adherents/subscription/list.php         |  3 +--
 htdocs/adherents/type.php                      |  5 +++--
 htdocs/compta/facture/invoicetemplate_list.php |  3 +--
 htdocs/compta/paiement/list.php                |  3 +--
 htdocs/compta/sociales/list.php                |  9 +++------
 htdocs/compta/tva/list.php                     |  5 ++---
 htdocs/core/lib/functions.lib.php              | 13 ++++++-------
 htdocs/don/list.php                            |  8 ++++++--
 htdocs/expedition/card.php                     |  8 +++++---
 htdocs/expedition/class/expedition.class.php   |  9 +++++----
 htdocs/expedition/index.php                    |  2 +-
 htdocs/expedition/list.php                     |  3 +--
 htdocs/expedition/stats/index.php              |  2 +-
 htdocs/fourn/facture/paiement.php              |  7 +++----
 htdocs/product/reassortlot.php                 |  6 ++----
 htdocs/product/stock/list.php                  |  6 +-----
 htdocs/product/stock/productlot_list.php       | 10 ++--------
 htdocs/product/stock/replenish.php             |  2 +-
 htdocs/product/stock/replenishorders.php       | 11 +++++------
 htdocs/reception/card.php                      | 11 +++++------
 htdocs/reception/class/reception.class.php     | 13 ++++++-------
 htdocs/reception/contact.php                   |  2 +-
 htdocs/reception/index.php                     |  2 +-
 htdocs/reception/list.php                      |  3 +--
 htdocs/reception/note.php                      |  2 +-
 htdocs/reception/stats/index.php               |  4 ++--
 htdocs/theme/eldy/global.inc.php               |  3 +++
 27 files changed, 70 insertions(+), 85 deletions(-)

diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php
index b9f5611f7e8..faba2c50ac2 100644
--- a/htdocs/adherents/subscription/list.php
+++ b/htdocs/adherents/subscription/list.php
@@ -259,10 +259,9 @@ print '';
 print '';
 print '';
-print '';
 print '';
 
-print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'members', 0, $newcardbutton, '', $limit);
+print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'members', 0, $newcardbutton, '', $limit, 0, 0, 1);
 
 $topicmail = "Information";
 $modelmail = "subscription";
diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php
index 969117c4bdc..cfac2313fba 100644
--- a/htdocs/adherents/type.php
+++ b/htdocs/adherents/type.php
@@ -239,6 +239,8 @@ if (!$rowid && $action != 'create' && $action != 'edit')
 		$i = 0;
 
 		$param = '';
+		if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.$contextpage;
+		if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.$limit;
 
 		$newcardbutton = '';
 		if ($user->rights->adherent->configurer)
@@ -252,10 +254,9 @@ if (!$rowid && $action != 'create' && $action != 'edit')
 		print '';
 		print '';
 		print '';
-		print '';
 		print '';
 
-		print_barre_liste($langs->trans("MembersTypes"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'members', 0, $newcardbutton, '', $limit);
+		print_barre_liste($langs->trans("MembersTypes"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'members', 0, $newcardbutton, '', $limit, 0, 0, 1);
 
 		$moreforfilter = '';
 
diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php
index 759e9cc3944..8faa0de3de5 100644
--- a/htdocs/compta/facture/invoicetemplate_list.php
+++ b/htdocs/compta/facture/invoicetemplate_list.php
@@ -328,13 +328,12 @@ if ($resql)
 	print '';
 	print '';
 	print '';
-	print '';
 	print '';
 	print '';
 
 	$title = $langs->trans("RepeatableInvoices");
 
-	print_barre_liste($title, $page, $_SERVER['PHP_SELF'], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit);
+	print_barre_liste($title, $page, $_SERVER['PHP_SELF'], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit, 0, 0, 1);
 
 	print ''.$langs->trans("ToCreateAPredefinedInvoice", $langs->transnoentitiesnoconv("ChangeIntoRepeatableInvoice")).'

'; diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index 3cb06396c80..87bdaa9641d 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -215,10 +215,9 @@ if ($resql) print ''; print ''; print ''; - print ''; print ''; - print_barre_liste($langs->trans("ReceivedCustomersPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit); + print_barre_liste($langs->trans("ReceivedCustomersPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit, 0, 0, 1); print '
'; print '
'."\n"; diff --git a/htdocs/compta/sociales/list.php b/htdocs/compta/sociales/list.php index 9cfec1868fa..ef39d559ca0 100644 --- a/htdocs/compta/sociales/list.php +++ b/htdocs/compta/sociales/list.php @@ -191,19 +191,16 @@ if ($resql) print ''; print ''; print ''; - print ''; print ''; + $center = ''; if ($year) { $center = ($year ? "".img_previous()." ".$langs->trans("Year")." $year ".img_next()."" : ""); - print_barre_liste($langs->trans("SocialContributions"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'invoicing', 0, $newcardbutton, '', $limit); - } - else - { - print_barre_liste($langs->trans("SocialContributions"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'invoicing', 0, $newcardbutton, '', $limit); } + print_barre_liste($langs->trans("SocialContributions"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'invoicing', 0, $newcardbutton, '', $limit, 0, 0, 1); + if (empty($mysoc->country_id) && empty($mysoc->country_code)) { print '
'; diff --git a/htdocs/compta/tva/list.php b/htdocs/compta/tva/list.php index 35c5dc2c052..003a7eabcad 100644 --- a/htdocs/compta/tva/list.php +++ b/htdocs/compta/tva/list.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2018 Laurent Destailleur + * Copyright (C) 2004-2020 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2011-2019 Alexandre Spangaro * @@ -160,9 +160,8 @@ if ($result) print ''; print ''; print ''; - print ''; - print_barre_liste($langs->trans("VATPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'title_accountancy', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("VATPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'title_accountancy', 0, $newcardbutton, '', $limit, 0, 0, 1); print '
'; print '
'."\n"; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index f6584a49c77..37dcf0c693e 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3142,10 +3142,10 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (empty($srconly) && in_array($pictowithouttext, array( '1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected', 'address', 'bank_account', 'barcode', 'bank', 'bookmark', 'bom', 'building', 'cash-register', 'check', 'close_title', 'company', 'contact', 'cubes', - 'delete', 'dolly', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', + 'delete', 'dolly', 'dollyrevert', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'grip', 'grip_title', 'help', 'language', 'list', 'listlight', 'lot', 'mrp', 'note', 'stock', 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bom', - 'object_category', 'object_bookmark', 'object_bug', 'object_generic', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', + 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_dynamicprice', 'object_holiday', 'object_hrm', 'object_intervention', 'object_multicurrency', 'object_order', 'object_payment', 'object_lot', 'object_mrp', 'object_product', 'object_propal', 'object_supplier_proposal', 'object_service', 'object_stock', @@ -3178,7 +3178,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'account'=>'university', 'action'=>'calendar-alt', 'address'=> 'address-book', 'bank_account'=>'university', 'bom'=>'cubes', 'company'=>'building', 'contact'=>'address-book', 'contract'=>'suitcase', 'dynamicprice'=>'hand-holding-usd', 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accountancy'=>'money-check-alt', - 'accounting'=>'chart-line', 'category'=>'tag', + 'accounting'=>'chart-line', 'category'=>'tag', 'dollyrevert'=>'dolly', 'hrm'=>'umbrella-beach', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode', 'email'=>'at', 'edit'=>'pencil-alt', 'grip_title'=>'arrows-alt', 'grip'=>'arrows-alt', 'help'=>'info-circle', @@ -3247,10 +3247,9 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ // Add CSS $arrayconvpictotomorcess = array( 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', 'cash-register'=>'bg-infobox-bank_account', - 'contract'=>'bg-infobox-contrat', - 'multicurrency'=>'bg-infobox-bank_account', - 'check'=>'font-status4', + 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'dollyrevert'=>'flip', 'hrm'=>'bg-infobox-adherent', 'group'=>'bg-infobox-adherent', 'intervention'=>'bg-infobox-contrat', + 'multicurrency'=>'bg-infobox-bank_account', 'members'=>'bg-infobox-adherent', 'member'=>'bg-infobox-adherent', 'order'=>'bg-infobox-commande', 'user'=>'bg-infobox-adherent', 'users'=>'bg-infobox-adherent', 'error'=>'pictoerror', 'warning'=>'pictowarning', 'switch_on'=>'font-status4', @@ -3269,7 +3268,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'address'=>'#37a', 'building'=>'#37a', 'bom'=>'#a69944', 'companies'=>'#37a', 'company'=>'#37a', 'contact'=>'#37a', 'dynamicprice'=>'#a69944', 'edit'=>'#444', 'note'=>'#999', 'error'=>'', 'listlight'=>'#999', - 'lot'=>'#a69944', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944', + 'dolly'=>'#a69944', 'dollyrevert'=>'#a69944', 'lot'=>'#a69944', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944', 'other'=>'#ddd', 'playdisabled'=>'#ccc', 'printer'=>'#444', 'projectpub'=>'#986c6a', 'resize'=>'#444', 'rss'=>'#cba', 'stats'=>'#444', 'switch_off'=>'#999', 'uparrow'=>'#555', 'warning'=>'' diff --git a/htdocs/don/list.php b/htdocs/don/list.php index a61a97f7c78..cd0d0539f8f 100644 --- a/htdocs/don/list.php +++ b/htdocs/don/list.php @@ -32,10 +32,12 @@ if (!empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/clas // Load translation files required by the page $langs->loadLangs(array("companies", "donations")); +$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'sclist'; + +$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); -$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 $offset = $limit * $page; $pageprev = $page - 1; @@ -137,6 +139,8 @@ if ($resql) $i = 0; $param = ''; + if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss); if ($search_status && $search_status != -1) $param .= '&search_status='.urlencode($search_status); if ($search_ref) $param .= '&search_ref='.urlencode($search_ref); @@ -159,7 +163,7 @@ if ($resql) print ''; print ''; - print_barre_liste($langs->trans("Donations"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, $newcardbutton); + print_barre_liste($langs->trans("Donations"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, $newcardbutton, '', $limit, 0, 0, 1); if ($search_all) { diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index e4fc2868b99..655ba8f060f 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -874,8 +874,9 @@ $warehousestatic = new Entrepot($db); if ($action == 'create2') { - print load_fiche_titre($langs->trans("CreateShipment")).'
'; - print $langs->trans("ShipmentCreationIsDoneFromOrder"); + print load_fiche_titre($langs->trans("CreateShipment"), '', 'dolly'); + + print '
'.$langs->trans("ShipmentCreationIsDoneFromOrder"); $action = ''; $id = ''; $ref = ''; } @@ -884,7 +885,8 @@ if ($action == 'create') { $expe = new Expedition($db); - print load_fiche_titre($langs->trans("CreateShipment")); + print load_fiche_titre($langs->trans("CreateShipment"), '', 'dolly'); + if (!$origin) { setEventMessages($langs->trans("ErrorBadParameters"), null, 'errors'); diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 7cce1c282da..624add5c075 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -74,7 +74,7 @@ class Expedition extends CommonObject /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png */ - public $picto = 'sending'; + public $picto = 'dolly'; public $socid; @@ -1626,7 +1626,7 @@ class Expedition extends CommonObject global $langs, $conf; $result = ''; - $label = ''.$langs->trans("ShowSending").''; + $label = ''.$langs->trans("Shipment").''; $label .= '
'.$langs->trans('Ref').': '.$this->ref; $label .= '
'.$langs->trans('RefCustomer').': '.($this->ref_customer ? $this->ref_customer : $this->ref_client); @@ -1647,14 +1647,15 @@ class Expedition extends CommonObject { if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label = $langs->trans("ShowSending"); + $label = $langs->trans("Shipment"); $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip"'; } - $linkstart = ''; + $linkstart = ''; $linkend = ''; $result .= $linkstart; diff --git a/htdocs/expedition/index.php b/htdocs/expedition/index.php index a930fed21b0..d3fec260d95 100644 --- a/htdocs/expedition/index.php +++ b/htdocs/expedition/index.php @@ -47,7 +47,7 @@ $shipment = new Expedition($db); $helpurl = 'EN:Module_Shipments|FR:Module_Expéditions|ES:Módulo_Expediciones'; llxHeader('', $langs->trans("Shipment"), $helpurl); -print load_fiche_titre($langs->trans("SendingsArea")); +print load_fiche_titre($langs->trans("SendingsArea"), '', 'dolly'); print '
'; diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 6f33c41c9dc..52c69f960cc 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -365,11 +365,10 @@ if ($resql) print ''; print ''; print ''; - print ''; print ''; print ''; - print_barre_liste($langs->trans('ListOfSendings'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans('ListOfSendings'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'dolly', 0, $newcardbutton, '', $limit, 0, 0, 1); $topicmail = "SendShippingRef"; $modelmail = "shipping_send"; diff --git a/htdocs/expedition/stats/index.php b/htdocs/expedition/stats/index.php index 5d3c8038bc2..db28b094e65 100644 --- a/htdocs/expedition/stats/index.php +++ b/htdocs/expedition/stats/index.php @@ -58,7 +58,7 @@ $form = new Form($db); llxHeader(); -print load_fiche_titre($langs->trans("StatisticsOfSendings"), $mesg); +print load_fiche_titre($langs->trans("StatisticsOfSendings"), '', 'dolly'); dol_mkdir($dir); diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index a907bcd6bb0..45d9c8ef967 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -1,7 +1,7 @@ * Copyright (C) 2004 Eric Seigne - * Copyright (C) 2004-2016 Laurent Destailleur + * Copyright (C) 2004-2020 Laurent Destailleur * Copyright (C) 2004 Christophe Combelles * Copyright (C) 2005 Marc Barilley / Ocebo * Copyright (C) 2005-2012 Regis Houssin @@ -889,8 +889,6 @@ if (empty($action) || $action == 'list') $massactionbutton = $form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"))); - print_barre_liste($langs->trans('SupplierPayments'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit); - print '
'; if ($optioncss != '') print ''; print ''; @@ -898,7 +896,8 @@ if (empty($action) || $action == 'list') print ''; print ''; print ''; - print ''; + + print_barre_liste($langs->trans('SupplierPayments'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit, 0, 0, 1); $moreforfilter = ''; diff --git a/htdocs/product/reassortlot.php b/htdocs/product/reassortlot.php index 83bad5c43ad..0fec39d1708 100644 --- a/htdocs/product/reassortlot.php +++ b/htdocs/product/reassortlot.php @@ -109,11 +109,10 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' * View */ -$helpurl = 'EN:Module_Stocks_En|FR:Module_Stock|ES:Módulo_Stocks'; - $form = new Form($db); $htmlother = new FormOther($db); +$helpurl = 'EN:Module_Stocks_En|FR:Module_Stock|ES:Módulo_Stocks'; $title = $langs->trans("ProductsAndServices"); $sql = 'SELECT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type, p.entity,'; @@ -230,10 +229,9 @@ if ($resql) print ''; print ''; print ''; - print ''; print ''; - print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'product', 0, '', '', $limit); + print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'product', 0, '', '', $limit, 0, 0, 1); if (!empty($catid)) diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index b3ed7e39663..06d3e46728f 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -72,9 +72,6 @@ if (!$sortorder) $sortorder = "ASC"; // Security check $result = restrictedArea($user, 'stock'); - -$year = strftime("%Y", time()); - // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $object = new Entrepot($db); $extrafields = new ExtraFields($db); @@ -355,12 +352,11 @@ print ''; print ''; print ''; -print ''; print ''; $newcardbutton = dolGetButtonTitle($langs->trans('MenuNewWarehouse'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/product/stock/card.php?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $user->rights->stock->creer); -print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'stock', 0, $newcardbutton, '', $limit); +print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'stock', 0, $newcardbutton, '', $limit, 0, 0, 1); // Add code for pre mass action (confirmation or email presend form) $topicmail = "Information"; diff --git a/htdocs/product/stock/productlot_list.php b/htdocs/product/stock/productlot_list.php index f87a772ef56..c03030fb7f3 100644 --- a/htdocs/product/stock/productlot_list.php +++ b/htdocs/product/stock/productlot_list.php @@ -38,9 +38,8 @@ $langs->loadLangs(array('stocks', 'productbatch', 'other', 'users')); $id = GETPOST('id', 'int'); $action = GETPOST('action', 'alpha'); $backtopage = GETPOST('backtopage', 'alpha'); -$myparam = GETPOST('myparam', 'alpha'); $toselect = GETPOST('toselect', 'array'); - +$optioncss = GETPOST('optioncss', 'alpha'); $search_entity = GETPOST('search_entity', 'int'); $search_product = GETPOST('search_product', 'alpha'); @@ -49,10 +48,6 @@ $search_fk_user_creat = GETPOST('search_fk_user_creat', 'int'); $search_fk_user_modif = GETPOST('search_fk_user_modif', 'int'); $search_import_key = GETPOST('search_import_key', 'int'); - -$search_myfield = GETPOST('search_myfield'); -$optioncss = GETPOST('optioncss', 'alpha'); - // Load variable for pagination $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); @@ -300,9 +295,8 @@ if ($resql) print ''; print ''; print ''; - print ''; - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'lot', 0, '', '', $limit); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'lot', 0, '', '', $limit, 0, 0, 1); $topicmail = "Information"; $modelmail = "productlot"; diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index 220f35659f3..ed83034bb6c 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -490,7 +490,7 @@ print load_fiche_titre($langs->trans('Replenishment'), '', 'stock'); dol_fiche_head($head, 'replenish', '', -1, ''); -print $langs->trans("ReplenishmentStatusDesc").'
'."\n"; +print ''.$langs->trans("ReplenishmentStatusDesc").'
'."\n"; if ($usevirtualstock == 1) { print $langs->trans("CurentSelectionMode").': '; diff --git a/htdocs/product/stock/replenishorders.php b/htdocs/product/stock/replenishorders.php index c1e1e157f79..9ed74d112eb 100644 --- a/htdocs/product/stock/replenishorders.php +++ b/htdocs/product/stock/replenishorders.php @@ -94,7 +94,7 @@ $texte = $langs->trans('ReplenishmentOrders'); llxHeader('', $texte, $helpurl, ''); -print load_fiche_titre($langs->trans('Replenishment'), '', 'generic'); +print load_fiche_titre($langs->trans('Replenishment'), '', 'stock'); $head = array(); $head[0][0] = DOL_URL_ROOT.'/product/stock/replenish.php'; @@ -151,9 +151,11 @@ if ($resql) $num = $db->num_rows($resql); $i = 0; - print $langs->trans("ReplenishmentOrdersDesc").'

'; + print ''.$langs->trans("ReplenishmentOrdersDesc").'

'; - print_barre_liste('', $page, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', $num, 0, ''); + print ''; + + print_barre_liste('', $page, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', $num, 0, ''); $param = ''; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); @@ -167,9 +169,6 @@ if ($resql) if ($search_dateday) $param .= '&search_dateday='.urlencode($search_dateday); if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss); - - print ''; - print '
'; print ''; diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index 85ff3715b73..1269a99d1ea 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -307,7 +307,7 @@ if (empty($reshook)) { $lineToTest = ''; foreach ($objectsrc->lines as $linesrc) { - if ($linesrc->id == GETPOST($idl, 'int'))$lineToTest = $linesrc; + if ($linesrc->id == GETPOST($idl, 'int')) $lineToTest = $linesrc; } $qty = "qtyl".$i; $comment = "comment".$i; @@ -315,8 +315,6 @@ if (empty($reshook)) $sellby = "dluo".$i; $batch = "batch".$i; - - $timeFormat = '%d/%m/%Y'; if (GETPOST($qty, 'int') > 0 || (GETPOST($qty, 'int') == 0 && $conf->global->RECEPTION_GETS_ALL_ORDER_PRODUCTS)) @@ -713,8 +711,9 @@ $warehousestatic = new Entrepot($db); if ($action == 'create2') { - print load_fiche_titre($langs->trans("CreateReception")).'
'; - print $langs->trans("ReceptionCreationIsDoneFromOrder"); + print load_fiche_titre($langs->trans("CreateReception"), '', 'dollyrevert'); + + print '
'.$langs->trans("ReceptionCreationIsDoneFromOrder"); $action = ''; $id = ''; $ref = ''; } @@ -1235,7 +1234,7 @@ elseif ($id || $ref) $res = $object->fetch_optionals(); $head = reception_prepare_head($object); - dol_fiche_head($head, 'reception', $langs->trans("Reception"), -1, 'reception'); + dol_fiche_head($head, 'reception', $langs->trans("Reception"), -1, 'dollyrevert'); $formconfirm = ''; diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 81c4854a4bf..1679f186a72 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -52,7 +52,7 @@ class Reception extends CommonObject /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png */ - public $picto = 'reception'; + public $picto = 'dollyrevert'; public $socid; public $ref_supplier; @@ -1116,7 +1116,7 @@ class Reception extends CommonObject { global $conf, $langs; $result = ''; - $label = ''.$langs->trans("ShowReception").''; + $label = ''.$langs->trans("Reception").''; $label .= '
'.$langs->trans('Ref').': '.$this->ref; $label .= '
'.$langs->trans('RefSupplier').': '.($this->ref_supplier ? $this->ref_supplier : $this->ref_client); @@ -1129,19 +1129,18 @@ class Reception extends CommonObject { if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label = $langs->trans("ShowReception"); + $label = $langs->trans("Reception"); $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip"'; } - $linkstart = ''; + $linkstart = ''; $linkend = ''; - $picto = 'sending'; - - if ($withpicto) $result .= ($linkstart.img_object(($notooltip ? '' : $label), $picto, ($notooltip ? '' : 'class="classfortooltip"'), 0, 0, $notooltip ? 0 : 1).$linkend); + if ($withpicto) $result .= ($linkstart.img_object(($notooltip ? '' : $label), $this->picto, ($notooltip ? '' : 'class="classfortooltip"'), 0, 0, $notooltip ? 0 : 1).$linkend); if ($withpicto && $withpicto != 2) $result .= ' '; $result .= $linkstart.$this->ref.$linkend; return $result; diff --git a/htdocs/reception/contact.php b/htdocs/reception/contact.php index 7dd0bec2b38..b2d30bf7c7f 100644 --- a/htdocs/reception/contact.php +++ b/htdocs/reception/contact.php @@ -158,7 +158,7 @@ if ($id > 0 || !empty($ref)) $langs->trans("OrderCard"); $head = reception_prepare_head($object); - dol_fiche_head($head, 'contact', $langs->trans("Reception"), -1, 'sending'); + dol_fiche_head($head, 'contact', $langs->trans("Reception"), -1, 'dollyrevert'); // Reception card diff --git a/htdocs/reception/index.php b/htdocs/reception/index.php index c615017ad37..b9786229468 100644 --- a/htdocs/reception/index.php +++ b/htdocs/reception/index.php @@ -47,7 +47,7 @@ $reception = new Reception($db); $helpurl = 'EN:Module_Receptions|FR:Module_Receptions|ES:Módulo_Receptiones'; llxHeader('', $langs->trans("Reception"), $helpurl); -print load_fiche_titre($langs->trans("ReceptionsArea")); +print load_fiche_titre($langs->trans("ReceptionsArea"), '', 'dollyrevert'); print '
'; diff --git a/htdocs/reception/list.php b/htdocs/reception/list.php index f370c9ed9cf..4bb80f34753 100644 --- a/htdocs/reception/list.php +++ b/htdocs/reception/list.php @@ -547,11 +547,10 @@ if ($resql) print ''; print ''; print ''; - print ''; print ''; print ''; - print_barre_liste($langs->trans('ListOfReceptions'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, '', '', $limit); + print_barre_liste($langs->trans('ListOfReceptions'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'dollyrevert', 0, '', '', $limit, 0, 0, 1); if ($massaction == 'createbills') diff --git a/htdocs/reception/note.php b/htdocs/reception/note.php index 0bec9f8c9e2..9e9b6c20f92 100644 --- a/htdocs/reception/note.php +++ b/htdocs/reception/note.php @@ -98,7 +98,7 @@ $form = new Form($db); if ($id > 0 || !empty($ref)) { $head = reception_prepare_head($object); - dol_fiche_head($head, 'note', $langs->trans("Reception"), -1, 'sending'); + dol_fiche_head($head, 'note', $langs->trans("Reception"), -1, 'dollyrevert'); // Reception card diff --git a/htdocs/reception/stats/index.php b/htdocs/reception/stats/index.php index a93003b0ef9..e7e8ef7e090 100644 --- a/htdocs/reception/stats/index.php +++ b/htdocs/reception/stats/index.php @@ -61,7 +61,7 @@ $form = new Form($db); llxHeader(); -print load_fiche_titre($langs->trans("StatisticsOfReceptions"), $mesg); +print load_fiche_titre($langs->trans("StatisticsOfReceptions"), '', 'dollyrevert'); dol_mkdir($dir); @@ -200,7 +200,7 @@ if (!count($arrayyears)) $arrayyears[$nowyear] = $nowyear; $h = 0; $head = array(); -$head[$h][0] = DOL_URL_ROOT.'/commande/stats/index.php'; +$head[$h][0] = DOL_URL_ROOT.'/reception/stats/index.php'; $head[$h][1] = $langs->trans("ByMonthYear"); $head[$h][2] = 'byyear'; $h++; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index d46bd839958..e56cd8ee36a 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -536,6 +536,9 @@ textarea.centpercent { color: #777; } +.flip { + transform: scaleX(-1); +} .center { text-align: center; margin: 0px auto; From b72651fdfdae61724fcb8832979a12ead6264f1f Mon Sep 17 00:00:00 2001 From: gauthier Date: Mon, 20 Apr 2020 15:59:44 +0200 Subject: [PATCH 038/780] FIX : we must export company mail address on contact vcard only if contact email address is empty --- htdocs/contact/vcard.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/contact/vcard.php b/htdocs/contact/vcard.php index ebfdfecd6a7..8536c4ebe33 100644 --- a/htdocs/contact/vcard.php +++ b/htdocs/contact/vcard.php @@ -79,7 +79,7 @@ if ($company->id) if (! $contact->phone_pro) $v->setPhoneNumber($company->phone, "TYPE=WORK;VOICE"); if (! $contact->fax) $v->setPhoneNumber($company->fax, "TYPE=WORK;FAX"); if (! $contact->zip) $v->setAddress("", "", $company->address, $company->town, "", $company->zip, $company->country, "TYPE=WORK;POSTAL"); - if ($company->email != $contact->email) $v->setEmail($company->email, 'TYPE=PREF,INTERNET'); + if (empty($contact->email)) $v->setEmail($company->email, 'TYPE=PREF,INTERNET'); // Si contact lie a un tiers non de type "particulier" if ($contact->typent_code != 'TE_PRIVATE') $v->setOrg($company->name); } From 66ad197fc5230383c42609ced6540119f16c26b6 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" Date: Mon, 20 Apr 2020 15:49:31 +0200 Subject: [PATCH 039/780] NEW possibility to show society info when print page If global config key SHOW_SOCINFO_ON_PRINT is set, this add a block in top of page which display basic society information when the layout for printing is activated (print button in top bar is cliqued). --- htdocs/main.inc.php | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 400ad73fad2..10db0b954ae 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -11,6 +11,7 @@ * Copyright (C) 2012 Christophe Battarel * Copyright (C) 2014-2015 Marcos García * Copyright (C) 2015 Raphaël Doursenaud + * Copyright (C) 2020 Demarest Maxime * * 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 @@ -2364,6 +2365,36 @@ function main_area($title = '') print ''."\n".'
'."\n"; if (!empty($conf->global->MAIN_ONLY_LOGIN_ALLOWED)) print info_admin($langs->trans("WarningYouAreInMaintenanceMode", $conf->global->MAIN_ONLY_LOGIN_ALLOWED)); + + // Permit to add user company information on each printed document by set SHOW_SOCINFO_ON_PRINT + if ($conf->global->SHOW_SOCINFO_ON_PRINT && GETPOST('optioncss', 'aZ09') == 'print' && empty(GETPOST('disable_show_socinfo_on_print', 'az09'))) + { + global $hookmanager; + $hookmanager->initHooks(array('showsocinfoonprint')); + $parameters = array(); + $reshook = $hookmanager->executeHooks('showSocinfoOnPrint', $parameters); + if (empty($reshook)) + { + print ''."\n"; + print '
'."\n"; + print '
'."\n"; + print ''; + print ''."\n"; + print ''."\n"; + print ''."\n"; + if (!empty($conf->global->MAIN_INFO_SOCIETE_TEL)) print ''; + if (!empty($conf->global->MAIN_INFO_SOCIETE_MAIL)) print ''; + if (!empty($conf->global->MAIN_INFO_SOCIETE_WEB)) print ''; + print ''; + print '
'; + if ($conf->global->MAIN_SHOW_LOGO && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) && !empty($conf->global->MAIN_INFO_SOCIETE_LOGO)) + print ''; + print '
'.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_NOM).'
'.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_ADDRESS).'
'.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_ZIP).' '.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_TOWN).'
'.$langs->trans("Phone").' : '.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_TEL).'
'.$langs->trans("Email").' : '.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_MAIL).'
'.$langs->trans("Web").' : '.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_WEB).'
'."\n"; + print ''."\n"; + print ''."\n"; + } + } + } From f4d1ca94b34bbbd65e395c05b9fdac6455073e3c Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Mon, 20 Apr 2020 14:49:18 +0000 Subject: [PATCH 040/780] Fixing style errors. --- htdocs/main.inc.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 10db0b954ae..73c21459b5c 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -2394,7 +2394,6 @@ function main_area($title = '') print ''."\n"; } } - } From e1f1e2bf9782957f9eac5257ff6c5b04762887ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josep=20Llu=C3=ADs?= Date: Mon, 20 Apr 2020 17:50:19 +0200 Subject: [PATCH 041/780] FIX type member extrafields are duplicated on edit type member extrafields are duplicated on edit, and old usage on create (without tpl) --- htdocs/adherents/type.php | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index cfac2313fba..c190398c1db 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -6,6 +6,7 @@ * Copyright (C) 2013 Florian Henry * Copyright (C) 2015 Alexandre Spangaro * Copyright (C) 2019 Thibault Foucart + * Copyright (C) 2020 Josep Lluís Amador * * 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 @@ -376,13 +377,8 @@ if ($action == 'create') print ''; // Other attributes - $parameters = array(); - $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - if (empty($reshook)) - { - print $object->showOptionals($extrafields, 'edit', $parameters); - } + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; + print ''; print "\n"; @@ -823,15 +819,6 @@ if ($rowid > 0) // Other attributes include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php'; - // Other attributes - $parameters = array(); - $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - if (empty($reshook)) - { - print $object->showOptionals($extrafields, 'edit', $parameters); - } - print ''; dol_fiche_end(); From 230fe26b589a7aea0e2e0cefcd4375f9f245f306 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 20 Apr 2020 18:38:25 +0200 Subject: [PATCH 042/780] Look and feel v12 --- htdocs/core/lib/functions.lib.php | 19 +++++++++++-------- htdocs/core/modules/modExpedition.class.php | 2 +- htdocs/core/modules/modLoan.class.php | 2 +- htdocs/core/modules/modOpenSurvey.class.php | 2 +- htdocs/core/modules/modReception.class.php | 2 +- htdocs/loan/card.php | 2 +- htdocs/loan/class/loan.class.php | 2 +- htdocs/loan/list.php | 4 ++-- .../class/opensurveysondage.class.php | 8 ++++++-- htdocs/opensurvey/index.php | 2 +- htdocs/opensurvey/list.php | 2 +- htdocs/opensurvey/wizard/index.php | 3 ++- htdocs/theme/eldy/info-box.inc.php | 2 +- 13 files changed, 30 insertions(+), 22 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 37dcf0c693e..8d61b192bb4 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3143,17 +3143,18 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ '1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected', 'address', 'bank_account', 'barcode', 'bank', 'bookmark', 'bom', 'building', 'cash-register', 'check', 'close_title', 'company', 'contact', 'cubes', 'delete', 'dolly', 'dollyrevert', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', - 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'grip', 'grip_title', 'help', 'language', 'list', 'listlight', 'lot', 'mrp', 'note', 'stock', + 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'grip', 'grip_title', 'help', 'language', 'list', 'listlight', 'lot', + 'money-bill-alt', 'mrp', 'note', 'stock', 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bom', 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_dynamicprice', - 'object_holiday', 'object_hrm', 'object_intervention', 'object_multicurrency', 'object_order', 'object_payment', + 'object_holiday', 'object_hrm', 'object_intervention', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', 'object_lot', 'object_mrp', 'object_product', 'object_propal', 'object_supplier_proposal', 'object_service', 'object_stock', - 'object_paragraph', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', + 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', 'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member', 'object_other', 'object_phoning', 'object_phoning_fax', 'object_email', 'off', 'on', - 'paiment', 'play', 'playdisabled', 'printer', 'product', 'propal', 'resize', 'service', 'stats', 'trip', + 'paiment', 'play', 'playdisabled', 'poll', 'printer', 'product', 'propal', 'resize', 'service', 'stats', 'trip', 'note', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', 'globe', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', 'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', @@ -3190,7 +3191,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'intervention'=>'ambulance', 'multicurrency'=>'dollar-sign', 'order'=>'file-invoice', 'error'=>'exclamation-triangle', 'warning'=>'exclamation-triangle', 'other'=>'square', - 'playdisabled'=>'play', 'preview'=>'binoculars', 'project'=>'sitemap', 'projectpub'=>'sitemap', 'projecttask'=>'tasks', 'propal'=>'file-signature', + 'playdisabled'=>'play', 'poll'=>'check-double', 'preview'=>'binoculars', 'project'=>'sitemap', 'projectpub'=>'sitemap', 'projecttask'=>'tasks', 'propal'=>'file-signature', 'resize'=>'crop', 'supplier_proposal'=>'file-signature', 'payment'=>'money-bill-alt', 'phoning'=>'phone', 'phoning_fax'=>'fax', 'printer'=>'print', 'product'=>'cube', 'service'=>'concierge-bell', 'resource'=>'laptop-house', @@ -3250,11 +3251,12 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'dollyrevert'=>'flip', 'hrm'=>'bg-infobox-adherent', 'group'=>'bg-infobox-adherent', 'intervention'=>'bg-infobox-contrat', 'multicurrency'=>'bg-infobox-bank_account', - 'members'=>'bg-infobox-adherent', 'member'=>'bg-infobox-adherent', 'order'=>'bg-infobox-commande', + 'members'=>'bg-infobox-adherent', 'member'=>'bg-infobox-adherent', 'money-bill-alt'=>'bg-infobox-bank_account', + 'order'=>'bg-infobox-commande', 'user'=>'bg-infobox-adherent', 'users'=>'bg-infobox-adherent', 'error'=>'pictoerror', 'warning'=>'pictowarning', 'switch_on'=>'font-status4', 'holiday'=>'bg-infobox-holiday', - 'payment'=>'bg-infobox-bank_account', 'project'=>'bg-infobox-project', 'projecttask'=>'bg-infobox-project', 'propal'=>'bg-infobox-propal', + 'payment'=>'bg-infobox-bank_account', 'poll'=>'bg-infobox-adherent', 'project'=>'bg-infobox-project', 'projecttask'=>'bg-infobox-project', 'propal'=>'bg-infobox-propal', 'resource'=>'bg-infobox-action', 'supplier_proposal'=>'bg-infobox-supplier_proposal', 'ticket'=>'bg-infobox-contrat', 'title_hrm'=>'bg-infobox-holiday', 'trip'=>'bg-infobox-expensereport', 'title_agenda'=>'bg-infobox-action', 'list-alt'=>'imgforviewmode', 'calendar'=>'imgforviewmode', 'calendarweek'=>'imgforviewmode', 'calendarmonth'=>'imgforviewmode', 'calendarday'=>'imgforviewmode', 'calendarperuser'=>'imgforviewmode' @@ -3360,7 +3362,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ */ function img_object($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $srconly = 0, $notitle = 0) { - return img_picto($titlealt, 'object_'.$picto, $moreatt, $pictoisfullpath, $srconly, $notitle); + if (strpos($picto, '^') === 0) return img_picto($titlealt, str_replace('^', '', $picto), $moreatt, $pictoisfullpath, $srconly, $notitle); + else return img_picto($titlealt, 'object_'.$picto, $moreatt, $pictoisfullpath, $srconly, $notitle); } /** diff --git a/htdocs/core/modules/modExpedition.class.php b/htdocs/core/modules/modExpedition.class.php index 93cd08c7001..19e22497a7a 100644 --- a/htdocs/core/modules/modExpedition.class.php +++ b/htdocs/core/modules/modExpedition.class.php @@ -57,7 +57,7 @@ class modExpedition extends DolibarrModules $this->version = 'dolibarr'; $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); - $this->picto = "sending"; + $this->picto = "dolly"; // Data directories to create when module is enabled $this->dirs = array("/expedition/temp", diff --git a/htdocs/core/modules/modLoan.class.php b/htdocs/core/modules/modLoan.class.php index e4e93e495a0..b1adf99940b 100644 --- a/htdocs/core/modules/modLoan.class.php +++ b/htdocs/core/modules/modLoan.class.php @@ -54,7 +54,7 @@ class modLoan extends DolibarrModules $this->version = 'dolibarr'; $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); - $this->picto = 'bill'; + $this->picto = 'money-bill-alt'; // Data directories to create when module is enabled $this->dirs = array("/loan/temp"); diff --git a/htdocs/core/modules/modOpenSurvey.class.php b/htdocs/core/modules/modOpenSurvey.class.php index 3e5f3d8d62e..165cb9d5858 100644 --- a/htdocs/core/modules/modOpenSurvey.class.php +++ b/htdocs/core/modules/modOpenSurvey.class.php @@ -64,7 +64,7 @@ class modOpenSurvey extends DolibarrModules // Name of image file used for this module. // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' - $this->picto = 'opensurvey.png@opensurvey'; + $this->picto = '^date@opensurvey'; // Data directories to create when module is enabled $this->dirs = array(); diff --git a/htdocs/core/modules/modReception.class.php b/htdocs/core/modules/modReception.class.php index 0a03515b246..637afae049d 100644 --- a/htdocs/core/modules/modReception.class.php +++ b/htdocs/core/modules/modReception.class.php @@ -53,7 +53,7 @@ class modReception extends DolibarrModules $this->version = 'experimental'; $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); - $this->picto = "sending"; + $this->picto = "dollyrevert"; // Data directories to create when module is enabled $this->dirs = array("/reception/receipt", diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 47ddfd2b109..81a8d5e9df7 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -253,7 +253,7 @@ if ($action == 'create') //WYSIWYG Editor require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - print load_fiche_titre($langs->trans("NewLoan"), '', 'title_accountancy.png'); + print load_fiche_titre($langs->trans("NewLoan"), '', 'money-bill-alt'); $datec = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int')); diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index 340d9dea02a..1a24eb6be11 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -44,7 +44,7 @@ class Loan extends CommonObject /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png */ - public $picto = 'bill'; + public $picto = 'money-bill-alt'; /** * @var int ID diff --git a/htdocs/loan/list.php b/htdocs/loan/list.php index 380d475398e..3f87f322ccb 100644 --- a/htdocs/loan/list.php +++ b/htdocs/loan/list.php @@ -35,7 +35,7 @@ $socid = GETPOST('socid', 'int'); if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'loan', '', '', ''); -$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); @@ -167,7 +167,7 @@ if ($resql) print ''; print ''; - print_barre_liste($langs->trans("Loans"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy.png', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($langs->trans("Loans"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'money-bill-alt', 0, $newcardbutton, '', $limit, 0, 0, 1); $moreforfilter = ''; diff --git a/htdocs/opensurvey/class/opensurveysondage.class.php b/htdocs/opensurvey/class/opensurveysondage.class.php index 7c1263904fc..d9af22ed78e 100644 --- a/htdocs/opensurvey/class/opensurveysondage.class.php +++ b/htdocs/opensurvey/class/opensurveysondage.class.php @@ -47,8 +47,12 @@ class Opensurveysondage extends CommonObject /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png */ - public $picto = 'opensurvey'; + public $picto = 'poll'; + + /** + * @var string ID survey + */ public $id_sondage; /** * @deprecated @@ -462,7 +466,7 @@ class Opensurveysondage extends CommonObject $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) $result .= img_object(($notooltip ? '' : $label), $this->picto, ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); if ($withpicto != 2) $result .= $this->ref; $result .= $linkend; diff --git a/htdocs/opensurvey/index.php b/htdocs/opensurvey/index.php index 44ce6b3168b..20609602ad2 100644 --- a/htdocs/opensurvey/index.php +++ b/htdocs/opensurvey/index.php @@ -59,7 +59,7 @@ else dol_print_error($db, ''); $title = $langs->trans("OpenSurveyArea"); llxHeader('', $title); -print load_fiche_titre($title, '', 'generic'); +print load_fiche_titre($title, '', 'poll'); print '
'; diff --git a/htdocs/opensurvey/list.php b/htdocs/opensurvey/list.php index 990f9a30e73..442fc1b539b 100644 --- a/htdocs/opensurvey/list.php +++ b/htdocs/opensurvey/list.php @@ -254,7 +254,7 @@ print ''; $newcardbutton = dolGetButtonTitle($langs->trans('NewSurvey'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/opensurvey/wizard/index.php', '', $user->rights->opensurvey->write); -print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'generic', 0, $newcardbutton, '', $limit, 0, 0, 1); +print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'poll', 0, $newcardbutton, '', $limit, 0, 0, 1); // Add code for pre mass action (confirmation or email presend form) $topicmail = "SendOpenSurveyRef"; diff --git a/htdocs/opensurvey/wizard/index.php b/htdocs/opensurvey/wizard/index.php index 1fa07eeb4e9..68d660dff3d 100644 --- a/htdocs/opensurvey/wizard/index.php +++ b/htdocs/opensurvey/wizard/index.php @@ -31,6 +31,7 @@ if (!$user->rights->opensurvey->write) accessforbidden(); $langs->load("opensurvey"); + /* * View */ @@ -39,7 +40,7 @@ $arrayofjs = array(); $arrayofcss = array('/opensurvey/css/style.css'); llxHeader('', $langs->trans("Survey"), '', "", 0, 0, $arrayofjs, $arrayofcss); -print load_fiche_titre($langs->trans("CreatePoll")); +print load_fiche_titre($langs->trans("CreatePoll"), '', 'poll'); print ''; print ''; diff --git a/htdocs/theme/eldy/info-box.inc.php b/htdocs/theme/eldy/info-box.inc.php index 0473cb15584..028039f6c8b 100644 --- a/htdocs/theme/eldy/info-box.inc.php +++ b/htdocs/theme/eldy/info-box.inc.php @@ -77,7 +77,7 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> max-width: 100%; } .info-box-module .info-box-icon > img { - max-width: 55%; + max-width: 60%; } .info-box-icon-text{ From f09fa5226a30e6846cdadf27f75894912afbc64e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 20 Apr 2020 18:43:05 +0200 Subject: [PATCH 043/780] Rename llx_c_shipment_package_type to llx_c_shipment_package_type.sql --- ...lx_c_shipment_package_type => llx_c_shipment_package_type.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename htdocs/install/mysql/tables/{llx_c_shipment_package_type => llx_c_shipment_package_type.sql} (100%) diff --git a/htdocs/install/mysql/tables/llx_c_shipment_package_type b/htdocs/install/mysql/tables/llx_c_shipment_package_type.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_c_shipment_package_type rename to htdocs/install/mysql/tables/llx_c_shipment_package_type.sql From b0069f4fed626406109c6e425316c103d021b2d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 20 Apr 2020 18:46:11 +0200 Subject: [PATCH 044/780] Update 11.0.0-12.0.0.sql --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 681731e27a5..0e7433677ed 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -250,3 +250,13 @@ ALTER TABLE llx_categorie ADD COLUMN fk_user_creat integer; ALTER TABLE llx_categorie ADD COLUMN fk_user_modif integer; ALTER TABLE llx_commandedet ADD CONSTRAINT fk_commandedet_fk_commandefourndet FOREIGN KEY (fk_commandefourndet) REFERENCES llx_commande_fournisseurdet (rowid); + +--Dictionary of package type because filename in V11 was incomplete +create table llx_c_shipment_package_type +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + label varchar(50) NOT NULL, -- Short name + description varchar(255), -- Description + active integer DEFAULT 1 NOT NULL, -- Active or not + entity integer DEFAULT 1 NOT NULL -- Multi company id +)ENGINE=innodb; From cadb52c5b3fd1e4f14be6140ad4f73e0fb2e49d0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 20 Apr 2020 19:39:34 +0200 Subject: [PATCH 045/780] Look and feel v12 --- htdocs/compta/bank/various_payment/card.php | 2 +- htdocs/compta/bank/various_payment/list.php | 3 ++- htdocs/compta/charges/index.php | 4 ++-- htdocs/core/lib/functions.lib.php | 9 +++++---- htdocs/core/modules/modECM.class.php | 2 +- htdocs/core/modules/modGeoIPMaxmind.class.php | 2 +- htdocs/salaries/card.php | 2 +- htdocs/salaries/list.php | 2 +- htdocs/salaries/stats/index.php | 2 +- htdocs/theme/eldy/img/object_geoip.png | Bin 0 -> 4896 bytes htdocs/theme/md/img/object_geoip.png | Bin 0 -> 4896 bytes 11 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 htdocs/theme/eldy/img/object_geoip.png create mode 100644 htdocs/theme/md/img/object_geoip.png diff --git a/htdocs/compta/bank/various_payment/card.php b/htdocs/compta/bank/various_payment/card.php index ccd6b24c6b9..c4fdc3be56a 100644 --- a/htdocs/compta/bank/various_payment/card.php +++ b/htdocs/compta/bank/various_payment/card.php @@ -277,7 +277,7 @@ if ($action == 'create') print ''; print ''; - print load_fiche_titre($langs->trans("NewVariousPayment"), '', 'invoicing'); + print load_fiche_titre($langs->trans("NewVariousPayment"), '', 'object_payment'); dol_fiche_head('', ''); diff --git a/htdocs/compta/bank/various_payment/list.php b/htdocs/compta/bank/various_payment/list.php index b8581151599..5f68440809c 100644 --- a/htdocs/compta/bank/various_payment/list.php +++ b/htdocs/compta/bank/various_payment/list.php @@ -95,6 +95,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' $typeid = ""; } + /* * View */ @@ -179,7 +180,7 @@ if ($result) print ''; print ''; - print_barre_liste($langs->trans("VariousPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'invoicing', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($langs->trans("VariousPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'object_payment', 0, $newcardbutton, '', $limit, 0, 0, 1); print '
'; print ''."\n"; diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index e9aa35d80b3..93065219248 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -102,11 +102,11 @@ print ''; if ($mode != 'sconly') { $center = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'title_accountancy', 0, '', '', $limit, 1); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 1); } else { - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'title_accountancy', 0, '', '', $limit); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 0); } if ($year) $param .= '&year='.$year; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 8d61b192bb4..da1b7ac632e 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3146,10 +3146,11 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'grip', 'grip_title', 'help', 'language', 'list', 'listlight', 'lot', 'money-bill-alt', 'mrp', 'note', 'stock', 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bom', - 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', + 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', + 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_dynamicprice', 'object_holiday', 'object_hrm', 'object_intervention', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', - 'object_lot', 'object_mrp', 'object_product', 'object_propal', 'object_supplier_proposal', 'object_service', 'object_stock', + 'object_lot', 'object_mrp', 'object_payment', 'object_product', 'object_propal', 'object_supplier_proposal', 'object_service', 'object_stock', 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', 'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member', 'object_other', 'object_phoning', 'object_phoning_fax', 'object_email', @@ -3193,7 +3194,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'other'=>'square', 'playdisabled'=>'play', 'poll'=>'check-double', 'preview'=>'binoculars', 'project'=>'sitemap', 'projectpub'=>'sitemap', 'projecttask'=>'tasks', 'propal'=>'file-signature', 'resize'=>'crop', 'supplier_proposal'=>'file-signature', - 'payment'=>'money-bill-alt', 'phoning'=>'phone', 'phoning_fax'=>'fax', 'printer'=>'print', 'product'=>'cube', 'service'=>'concierge-bell', + 'payment'=>'money-check-alt', 'phoning'=>'phone', 'phoning_fax'=>'fax', 'printer'=>'print', 'product'=>'cube', 'service'=>'concierge-bell', 'resource'=>'laptop-house', 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'technic'=>'cogs', 'ticket'=>'ticket-alt', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach', @@ -3248,7 +3249,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ // Add CSS $arrayconvpictotomorcess = array( 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', 'cash-register'=>'bg-infobox-bank_account', - 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'dollyrevert'=>'flip', + 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'dollyrevert'=>'flip', 'folder'=>'bg-infobox-action', 'hrm'=>'bg-infobox-adherent', 'group'=>'bg-infobox-adherent', 'intervention'=>'bg-infobox-contrat', 'multicurrency'=>'bg-infobox-bank_account', 'members'=>'bg-infobox-adherent', 'member'=>'bg-infobox-adherent', 'money-bill-alt'=>'bg-infobox-bank_account', diff --git a/htdocs/core/modules/modECM.class.php b/htdocs/core/modules/modECM.class.php index b6efd6a05f1..4d314644fb4 100644 --- a/htdocs/core/modules/modECM.class.php +++ b/htdocs/core/modules/modECM.class.php @@ -58,7 +58,7 @@ class modECM extends DolibarrModules // Key used in llx_const table to save module status enabled/disabled (XXX is id value) $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); // Name of png file (without png) used for this module - $this->picto = 'dir'; + $this->picto = 'folder'; // Data directories to create when module is enabled $this->dirs = array("/ecm/temp"); diff --git a/htdocs/core/modules/modGeoIPMaxmind.class.php b/htdocs/core/modules/modGeoIPMaxmind.class.php index c3fe9b3a18d..10515a78449 100644 --- a/htdocs/core/modules/modGeoIPMaxmind.class.php +++ b/htdocs/core/modules/modGeoIPMaxmind.class.php @@ -56,7 +56,7 @@ class modGeoIPMaxmind extends DolibarrModules // Name of image file used for this module. // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' // If file is in module/images directory, use this->picto=DOL_URL_ROOT.'/module/images/file.png' - $this->picto = 'globe'; + $this->picto = 'geoip'; // Data directories to create when module is enabled $this->dirs = array("/geoipmaxmind"); diff --git a/htdocs/salaries/card.php b/htdocs/salaries/card.php index ac1c08f2948..ade8924b0d0 100644 --- a/htdocs/salaries/card.php +++ b/htdocs/salaries/card.php @@ -264,7 +264,7 @@ if ($action == 'create') print ''; print ''; - print load_fiche_titre($langs->trans("NewSalaryPayment"), '', 'title_accountancy.png'); + print load_fiche_titre($langs->trans("NewSalaryPayment"), '', 'object_payment'); dol_fiche_head('', ''); diff --git a/htdocs/salaries/list.php b/htdocs/salaries/list.php index c92ee53fd38..fd89ba5dd2d 100644 --- a/htdocs/salaries/list.php +++ b/htdocs/salaries/list.php @@ -169,7 +169,7 @@ if ($result) print ''; print ''; - print_barre_liste($langs->trans("SalariesPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'title_accountancy.png', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($langs->trans("SalariesPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'object_payment', 0, $newcardbutton, '', $limit, 0, 0, 1); print '
'; print '
'."\n"; diff --git a/htdocs/salaries/stats/index.php b/htdocs/salaries/stats/index.php index 33082a4ad91..b0023de8b64 100644 --- a/htdocs/salaries/stats/index.php +++ b/htdocs/salaries/stats/index.php @@ -60,7 +60,7 @@ llxHeader(); $title = $langs->trans("SalariesStatistics"); $dir = $conf->salaries->dir_temp; -print load_fiche_titre($title, $mesg); +print load_fiche_titre($title, '', 'object_payment'); dol_mkdir($dir); diff --git a/htdocs/theme/eldy/img/object_geoip.png b/htdocs/theme/eldy/img/object_geoip.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf80a67e657d3029455dd089b409dd4208c629f GIT binary patch literal 4896 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 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/object_geoip.png b/htdocs/theme/md/img/object_geoip.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf80a67e657d3029455dd089b409dd4208c629f GIT binary patch literal 4896 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 literal 0 HcmV?d00001 From ea9f0097a284277122ca71715e02187a9e6f03b5 Mon Sep 17 00:00:00 2001 From: Matt Sidnell <54064522+pstructures@users.noreply.github.com> Date: Mon, 20 Apr 2020 22:42:13 +0100 Subject: [PATCH 046/780] Add default values for Create Added default extrafield values for html and text fields to prepopulate data on record create only. --- htdocs/core/class/commonobject.class.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 4b94f87c65f..f881a89c204 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -7117,6 +7117,14 @@ abstract class CommonObject { $value = GETPOSTISSET($keyprefix.'options_'.$key.$keysuffix) ?price2num(GETPOST($keyprefix.'options_'.$key.$keysuffix, 'alpha', 3)) : $this->array_options['options_'.$key]; } + + // HTML and text add default value + if (in_array($extrafields->attributes[$this->table_element]['type'][$key], array('html', 'text'))) + { + if($action=='create') $value = $extrafields->attributes[$this->table_element]['default'][$key]; + else $value = $this->array_options['options_'.$key]; + } + $labeltoshow = $langs->trans($label); $helptoshow = $langs->trans($extrafields->attributes[$this->table_element]['help'][$key]); From 59b574742b1f18ab6159e96eff8a06cd4d8a8d06 Mon Sep 17 00:00:00 2001 From: Matt Sidnell <54064522+pstructures@users.noreply.github.com> Date: Mon, 20 Apr 2020 22:52:36 +0100 Subject: [PATCH 047/780] Update commonobject.class.php --- htdocs/core/class/commonobject.class.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index f881a89c204..83de743931c 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -7124,7 +7124,14 @@ abstract class CommonObject if($action=='create') $value = $extrafields->attributes[$this->table_element]['default'][$key]; else $value = $this->array_options['options_'.$key]; } - + + // select fields use default value + if (in_array($extrafields->attributes[$this->table_element]['type'][$key], array('select'))) + { + if($action=='create') $value = $extrafields->attributes[$this->table_element]['default'][$key]; + else $value = $this->array_options['options_'.$key]; + } + $labeltoshow = $langs->trans($label); $helptoshow = $langs->trans($extrafields->attributes[$this->table_element]['help'][$key]); From 3f42bfb40f614d1e69454226502947ee6bf3045d Mon Sep 17 00:00:00 2001 From: mattsidnell Date: Mon, 20 Apr 2020 23:42:12 +0100 Subject: [PATCH 048/780] change --- htdocs/core/class/commonobject.class.php | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 83de743931c..02445a218c1 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -7117,16 +7117,9 @@ abstract class CommonObject { $value = GETPOSTISSET($keyprefix.'options_'.$key.$keysuffix) ?price2num(GETPOST($keyprefix.'options_'.$key.$keysuffix, 'alpha', 3)) : $this->array_options['options_'.$key]; } - - // HTML and text add default value - if (in_array($extrafields->attributes[$this->table_element]['type'][$key], array('html', 'text'))) - { - if($action=='create') $value = $extrafields->attributes[$this->table_element]['default'][$key]; - else $value = $this->array_options['options_'.$key]; - } - - // select fields use default value - if (in_array($extrafields->attributes[$this->table_element]['type'][$key], array('select'))) + + // HTML, select, integer and text add default value + if (in_array($extrafields->attributes[$this->table_element]['type'][$key], array('html', 'text', 'select', 'int'))) { if($action=='create') $value = $extrafields->attributes[$this->table_element]['default'][$key]; else $value = $this->array_options['options_'.$key]; From 9040c9680db3b4216f1a29b46b153f6812d2b7b2 Mon Sep 17 00:00:00 2001 From: mattsidnell Date: Mon, 20 Apr 2020 23:44:23 +0100 Subject: [PATCH 049/780] Removed whitespace --- htdocs/core/class/commonobject.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 02445a218c1..b091caa548a 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -7117,7 +7117,6 @@ abstract class CommonObject { $value = GETPOSTISSET($keyprefix.'options_'.$key.$keysuffix) ?price2num(GETPOST($keyprefix.'options_'.$key.$keysuffix, 'alpha', 3)) : $this->array_options['options_'.$key]; } - // HTML, select, integer and text add default value if (in_array($extrafields->attributes[$this->table_element]['type'][$key], array('html', 'text', 'select', 'int'))) { From f3ebc33d1e22f78d335021874fd9805ec341d157 Mon Sep 17 00:00:00 2001 From: Lenin Rivas <53640168+leninrivas@users.noreply.github.com> Date: Tue, 21 Apr 2020 01:14:02 -0500 Subject: [PATCH 050/780] Fix calculator to consume with to produce i.e. to produce 100 then Order can be produce 135. --- htdocs/mrp/class/mo.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 84bf44c84fe..76bbe7ef26f 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -1,6 +1,6 @@ - * Copyright (C) ---Put here your own copyright and developer email--- + * Copyright (C) 2020 Lenin Rivas * * 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 @@ -648,7 +648,7 @@ class Mo extends CommonObject if ($line->qty_frozen) { $moline->qty = $line->qty; // Qty to consume does not depends on quantity to produce } else { - $moline->qty = round($line->qty * $this->qty / $line->efficiency, 2); + $moline->qty = round($line->qty * ($this->qty / $bom->qty) / $line->efficiency, 4); // Calculate with Qty to produce and more presition } if ($moline->qty <= 0) { $error++; From b469775718e9b429628a23a825031442d55c4749 Mon Sep 17 00:00:00 2001 From: Lenin Rivas <53640168+leninrivas@users.noreply.github.com> Date: Tue, 21 Apr 2020 01:21:08 -0500 Subject: [PATCH 051/780] More Presition to 8 decimals --- htdocs/mrp/class/mo.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 76bbe7ef26f..570281ac294 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -1,6 +1,7 @@ * Copyright (C) 2020 Lenin Rivas + * 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 @@ -648,7 +649,7 @@ class Mo extends CommonObject if ($line->qty_frozen) { $moline->qty = $line->qty; // Qty to consume does not depends on quantity to produce } else { - $moline->qty = round($line->qty * ($this->qty / $bom->qty) / $line->efficiency, 4); // Calculate with Qty to produce and more presition + $moline->qty = round($line->qty * ($this->qty / $bom->qty) / $line->efficiency, 8); // Calculate with Qty to produce and more presition } if ($moline->qty <= 0) { $error++; From 53530821545eb3a9eeda13ab00bce1dce4d04c49 Mon Sep 17 00:00:00 2001 From: Adrien Jacob Date: Tue, 21 Apr 2020 09:57:45 +0200 Subject: [PATCH 052/780] FIX Delete extra fields for supplier invoice line --- htdocs/fourn/class/fournisseur.facture.class.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index a9448c7c925..a79209d8e05 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -3155,6 +3155,17 @@ class SupplierInvoiceLine extends CommonObjectLine $this->error = $this->db->lasterror(); } } + + // Remove extrafields + if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + { + $result=$this->deleteExtraFields(); + if ($result < 0) + { + $error++; + dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); + } + } if (!$error) { From d4a8718e6ca17cda3dcce6d8b3a824245e23a651 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 21 Apr 2020 08:00:14 +0000 Subject: [PATCH 053/780] Fixing style errors. --- 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 a79209d8e05..c886588ee9b 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -3155,7 +3155,7 @@ class SupplierInvoiceLine extends CommonObjectLine $this->error = $this->db->lasterror(); } } - + // Remove extrafields if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used { From ff5bf040e8594485be07690eda2192d4d9206d8b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 21 Apr 2020 11:19:27 +0200 Subject: [PATCH 054/780] FIX text version of html emailing (removed the body style) --- htdocs/core/class/smtps.class.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php index f80d2f1547a..df7647b330c 100644 --- a/htdocs/core/class/smtps.class.php +++ b/htdocs/core/class/smtps.class.php @@ -1379,9 +1379,10 @@ class SMTPs $strContentAltText = ''; if ($strType == 'html') { - // Similar code to forge a text from html is also in CMailFile.class.php - $strContentAltText = preg_replace("/]*>/", " ", $strContent); - $strContentAltText = html_entity_decode(strip_tags($strContentAltText)); + // Similar code to forge a text from html is also in CMailFile.class.php + $strContentAltText = preg_replace('/.*<\/style><\/head>/', '', $strContent); + $strContentAltText = preg_replace("/<br\s*[^>]*>/", " ", $strContentAltText); + $strContentAltText = html_entity_decode(strip_tags($strContentAltText)); $strContentAltText = trim(wordwrap($strContentAltText, 75, "\r\n")); } From f8ae5d9972b1aa1119eaadb377b908d02a54ad31 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 21 Apr 2020 12:00:14 +0200 Subject: [PATCH 055/780] Fix Do not show value if null --- htdocs/accountancy/bookkeeping/list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index d5a24a0e2e5..d8fe9975da5 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -933,7 +933,7 @@ while ($i < min($num, $limit)) // Amount debit if (!empty($arrayfields['t.debit']['checked'])) { - print '<td class="nowrap right">'.($line->debit ? price($line->debit) : '').'</td>'; + print '<td class="nowrap right">'.($line->debit != 0 ? price($line->debit) : '').'</td>'; if (!$i) $totalarray['nbfield']++; if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'totaldebit'; $totalarray['val']['totaldebit'] += $line->debit; @@ -942,7 +942,7 @@ while ($i < min($num, $limit)) // Amount credit if (!empty($arrayfields['t.credit']['checked'])) { - print '<td class="nowrap right">'.($line->credit ? price($line->credit) : '').'</td>'; + print '<td class="nowrap right">'.($line->credit != 0 ? price($line->credit) : '').'</td>'; if (!$i) $totalarray['nbfield']++; if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'totalcredit'; $totalarray['val']['totalcredit'] += $line->credit; From 536ab9520745218532e7bdb901750a1eb3c26a17 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 5 Apr 2020 00:29:34 +0200 Subject: [PATCH 056/780] FIX: The "test smtp connectivity" failed on page to setup mass emailing Conflicts: htdocs/admin/mails.php --- htdocs/admin/mails.php | 5 +++-- htdocs/admin/mails_emailing.php | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php index dd67b138da5..d41cb687446 100644 --- a/htdocs/admin/mails.php +++ b/htdocs/admin/mails.php @@ -99,6 +99,7 @@ $trigger_name=''; // Disable triggers $paramname='id'; $mode='emailfortest'; $trackid=(($action == 'testhtml')?"testhtml":"test"); +$sendcontext=''; include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php'; if ($action == 'presend' && GETPOST('trackid', 'alphanohtml') == 'test') $action='test'; @@ -791,8 +792,8 @@ else print load_fiche_titre($langs->trans("DoTestServerAvailability")); include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; - $mail = new CMailFile('', '', '', ''); - $result=$mail->check_server_port($server, $port); + $mail = new CMailFile('', '', '', '', array(), array(), array(), '', '', 0, '', '', '', '', $trackid, $sendcontext); + $result = $mail->check_server_port($server, $port); if ($result) print '<div class="ok">'.$langs->trans("ServerAvailableOnIPOrPort", $server, $port).'</div>'; else { diff --git a/htdocs/admin/mails_emailing.php b/htdocs/admin/mails_emailing.php index 12076a00579..5a15be94bc4 100644 --- a/htdocs/admin/mails_emailing.php +++ b/htdocs/admin/mails_emailing.php @@ -536,8 +536,9 @@ else print load_fiche_titre($langs->trans("DoTestServerAvailability")); include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; - $mail = new CMailFile('', '', '', ''); - $result=$mail->check_server_port($server, $port); + $mail = new CMailFile('', '', '', '', array(), array(), array(), '', '', 0, '', '', '', '', $trackid, $sendcontext); + + $result = $mail->check_server_port($server, $port); if ($result) print '<div class="ok">'.$langs->trans("ServerAvailableOnIPOrPort", $server, $port).'</div>'; else { From 1ef89eb1a131fa50a97a5eefac33270d4fab4459 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 21 Apr 2020 14:14:49 +0200 Subject: [PATCH 057/780] Fix $mysoc global not loaded. --- htdocs/compta/facture/card.php | 3 ++- htdocs/core/tpl/objectline_view.tpl.php | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index da22eaf872e..4f111c26f39 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -5046,8 +5046,9 @@ elseif ($id > 0 || !empty($ref)) print '<table id="tablelines" class="noborder noshadow" width="100%">'; // Show object lines - if (!empty($object->lines)) + if (!empty($object->lines)) { $ret = $object->printObjectLines($action, $mysoc, $soc, $lineid, 1); + } // Form to add new line if ($object->statut == 0 && $usercancreate && $action != 'valid' && $action != 'editline') diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index d61810c5178..57e4c14e5d5 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -45,7 +45,7 @@ if (empty($object) || !is_object($object)) exit; } - +global $mysoc; global $forceall, $senderissupplier, $inputalsopricewithtax, $outputalsopricetotalwithtax; $usemargins = 0; @@ -282,13 +282,13 @@ if ($line->special_code == 3) { ?> $coldisplay++; if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - print '<span class="classfortooltip" title="'; - print $langs->transcountry("TotalHT", $mysoc->country_code).'='.price($line->total_ht); - print '<br>'.$langs->transcountry("TotalVAT", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_tva); - if (price2num($line->total_localtax1)) print '<br>'.$langs->transcountry("TotalLT1", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_localtax1); - if (price2num($line->total_localtax2)) print '<br>'.$langs->transcountry("TotalLT2", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_localtax2); - print '<br>'.$langs->transcountry("TotalTTC", $mysoc->country_code).'='.price($line->total_ttc); - print '">'; + $tooltiponprice = $langs->transcountry("TotalHT", $mysoc->country_code).'='.price($line->total_ht); + $tooltiponprice .= '<br>'.$langs->transcountry("TotalVAT", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_tva); + if (price2num($line->total_localtax1)) $tooltiponprice .= '<br>'.$langs->transcountry("TotalLT1", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_localtax1); + if (price2num($line->total_localtax2)) $tooltiponprice .= '<br>'.$langs->transcountry("TotalLT2", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_localtax2); + $tooltiponprice .= '<br>'.$langs->transcountry("TotalTTC", $mysoc->country_code).'='.price($line->total_ttc); + + print '<span class="classfortooltip" title="'.$tooltiponprice.'">'; } print price($line->total_ht); if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) From f6735ce8f20577241ba6f64065d506e0398fb9c1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 21 Apr 2020 14:28:52 +0200 Subject: [PATCH 058/780] Update repair.sql script --- htdocs/install/mysql/migration/repair.sql | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index 73cb1e6592d..64e81e30329 100755 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -337,9 +337,14 @@ UPDATE llx_c_lead_status set code = 'WON' where code = 'WIN'; -- To replace amount on all invoice and lines when forgetting to apply a 20% vat -- update llx_facturedet set tva_tx = 20 where tva_tx = 0; -- update llx_facturedet set total_ht = round(total_ttc / 1.2, 5) where total_ht = total_ttc; --- update llx_facturedet set total_tva = total_ttc - total_ht where total_vat = 0; -- update llx_facture set total = round(total_ttc / 1.2, 5) where total_ht = total_ttc; --- update llx_facture set tva = total_ttc - total where tva = 0; + +-- To fix bad total of price excluding tax, vat and price tax including tax. +-- select * from llx_facture where tva <> (total_ttc - total - localtax1 - localtax2 - revenuestamp); +-- update llx_facture set tva = (total_ttc - total - localtax1 - localtax2 - revenuestamp) where tva <> (total_ttc - total - localtax1 - localtax2 - revenuestamp); +-- select * from llx_facturedet where total_tva <> (total_ttc - total_ht - total_localtax1 - total_localtax2); +-- update llx_facturedet set total_tva = (total_ttc - total_ht - total_localtax1 - total_localtax2) where total_tva <> (total_ttc - total_ht - total_localtax1 - total_localtax2); + -- To insert elements into a category -- Search idcategory: select rowid from llx_categorie where type=0 and ref like '%xxx%' From 7b99ebfca5a44e7bd5bd3fa2101eeec5c926142b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 21 Apr 2020 14:54:30 +0200 Subject: [PATCH 059/780] Debug generic translation of fields --- htdocs/core/class/html.form.class.php | 10 ++++++++-- htdocs/langs/en_US/main.lang | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 9a8ade00367..63500b156a8 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -348,6 +348,7 @@ class Form return ''; // No extralang field to show } + $result .= '<!-- Widget for translation -->'."\n"; $result .= '<div class="inline-block paddingleft image-'.$object->element.'-'.$fieldname.'">'; $s = img_picto($langs->trans("ShowOtherLanguages"), 'language', '', false, 0, 0, '', 'fa-15 editfieldlang'); $result .= $s; @@ -7408,9 +7409,14 @@ class Form $htmltext = ''; // If there is extra languages foreach ($arrayoflangcode as $extralangcode) { - $s = picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"'); - $htmltext .= $s.$object->array_languages['name'][$extralangcode]; + $htmltext .= picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"'); + if ($object->array_languages['name'][$extralangcode]) { + $htmltext .= $object->array_languages['name'][$extralangcode]; + } else { + $htmltext .= '<span class="opacitymedium">'.$langs->trans("SwitchInEditModeToAddTranslation").'</span>'; + } } + $ret .= '<!-- Show translations of name -->'."\n"; $ret .= $this->textwithpicto('', $htmltext, -1, 'language', 'opacitymedium paddingleft'); } } diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 2082506c405..c34ea6a9e96 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -1028,3 +1028,5 @@ YAxis=Y-Axis StatusOfRefMustBe=Status of %s must be %s DeleteFileHeader=Confirm file delete DeleteFileText=Do you really want delete this file? +ShowOtherLanguages=Show other languages +SwitchInEditModeToAddTranslation=Switch in edit mode to add translations for this language From 23c2335396c5485931534ac21a68c41ed89f11f6 Mon Sep 17 00:00:00 2001 From: Adrien Jacob <adrien.jacob@gmail.com> Date: Tue, 21 Apr 2020 16:07:49 +0200 Subject: [PATCH 060/780] Add API endpoints for supplier invoice lines --- .../class/api_supplier_invoices.class.php | 197 ++++++++++++++++++ 1 file changed, 197 insertions(+) diff --git a/htdocs/fourn/class/api_supplier_invoices.class.php b/htdocs/fourn/class/api_supplier_invoices.class.php index 179b9f158bc..ceaf01fd338 100644 --- a/htdocs/fourn/class/api_supplier_invoices.class.php +++ b/htdocs/fourn/class/api_supplier_invoices.class.php @@ -479,6 +479,203 @@ class SupplierInvoices extends DolibarrApi return $paiement_id; } + /** + * Get lines of a supplier invoice + * + * @param int $id Id of supplier invoice + * + * @url GET {id}/lines + * + * @return array + */ + public function getLines($id) + { + if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { + throw new RestException(401); + } + + $result = $this->invoice->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Supplier invoice not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $this->invoice->fetch_lines(); + $result = array(); + foreach ($this->invoice->lines as $line) { + array_push($result, $this->_cleanObjectDatas($line)); + } + return $result; + } + + /** + * Add a line to given supplier invoice + * + * @param int $id Id of supplier invoice to update + * @param array $request_data supplier invoice line data + * + * @url POST {id}/lines + * + * @return int|bool + */ + public function postLine($id, $request_data = null) + { + if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { + throw new RestException(401); + } + + $result = $this->invoice->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Supplier invoice not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $request_data = (object) $request_data; + + $updateRes = $this->invoice->addline( + $request_data->description, + $request_data->pu_ht, + $request_data->tva_tx, + $request_data->localtax1_tx, + $request_data->localtax2_tx, + $request_data->qty, + $request_data->fk_product, + $request_data->remise_percent, + $request_data->date_start, + $request_data->date_end, + $request_data->ventil, + $request_data->info_bits, + 'HT', + $request_data->product_type, + $request_data->rang, + false, + $request_data->array_options, + $request_data->fk_unit, + $request_data->origin_id, + $request_data->multicurrency_subprice, + $request_data->ref_supplier, + $request_data->special_code + ); + + if ($updateRes < 0) { + throw new RestException(400, 'Unable to insert the new line. Check your inputs. '.$this->invoice->error); + } + + return $updateRes; + } + + /** + * Update a line to a given supplier invoice + * + * @param int $id Id of supplier invoice to update + * @param int $lineid Id of line to update + * @param array $request_data InvoiceLine data + * + * @url PUT {id}/lines/{lineid} + * + * @return object + * + * @throws 200 + * @throws 304 + * @throws 401 + * @throws 404 + */ + public function putLine($id, $lineid, $request_data = null) + { + if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { + throw new RestException(401); + } + + $result = $this->invoice->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Supplier invoice not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $request_data = (object) $request_data; + $updateRes = $this->invoice->updateline( + $lineid, + $request_data->description, + $request_data->pu_ht, + $request_data->tva_tx, + $request_data->localtax1_tx, + $request_data->localtax2_tx, + $request_data->qty, + $request_data->fk_product, + 'HT', + $request_data->info_bits, + $request_data->product_type, + $request_data->remise_percent, + false, + $request_data->date_start, + $request_data->date_end, + $request_data->array_options, + $request_data->fk_unit, + $request_data->multicurrency_subprice, + $request_data->ref_supplier + ); + + if ($updateRes > 0) { + $result = $this->get($id); + unset($result->line); + return $this->_cleanObjectDatas($result); + } else { + throw new RestException(304, $this->invoice->error); + } + } + + /** + * Deletes a line of a given supplier invoice + * + * @param int $id Id of supplier invoice + * @param int $lineid Id of the line to delete + * + * @url DELETE {id}/lines/{lineid} + * + * @return array + * + * @throws 400 + * @throws 401 + * @throws 404 + * @throws 405 + */ + public function deleteLine($id, $lineid) + { + if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { + throw new RestException(401); + } + + $result = $this->invoice->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Supplier invoice not found'); + } + + if(empty($lineid)) { + throw new RestException(400, 'Line ID is mandatory'); + } + + if( ! DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + // TODO Check the lineid $lineid is a line of ojbect + + $updateRes = $this->invoice->deleteline($lineid); + if ($updateRes > 0) { + return $this->get($id); + } + else + { + throw new RestException(405, $this->invoice->error); + } + } + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore /** * Clean sensible object datas From 9f4d2ee8817bb4281ca59c1cefaac994440531ac Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Tue, 21 Apr 2020 14:11:33 +0000 Subject: [PATCH 061/780] Fixing style errors. --- htdocs/fourn/class/api_supplier_invoices.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/class/api_supplier_invoices.class.php b/htdocs/fourn/class/api_supplier_invoices.class.php index ceaf01fd338..139d87162c6 100644 --- a/htdocs/fourn/class/api_supplier_invoices.class.php +++ b/htdocs/fourn/class/api_supplier_invoices.class.php @@ -650,12 +650,12 @@ class SupplierInvoices extends DolibarrApi if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { throw new RestException(401); } - + $result = $this->invoice->fetch($id); if( ! $result ) { throw new RestException(404, 'Supplier invoice not found'); } - + if(empty($lineid)) { throw new RestException(400, 'Line ID is mandatory'); } From d3c5173c5bea774c25444a0c1031ef80710ef0c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Tue, 21 Apr 2020 16:14:38 +0200 Subject: [PATCH 062/780] Update usergroup.class.php --- htdocs/user/class/usergroup.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/user/class/usergroup.class.php b/htdocs/user/class/usergroup.class.php index c897db44412..2cf11c3851f 100644 --- a/htdocs/user/class/usergroup.class.php +++ b/htdocs/user/class/usergroup.class.php @@ -654,6 +654,9 @@ class UserGroup extends CommonObject global $user, $conf; $this->datec = dol_now(); + if (empty($this->nom) && !empty($this->name)) { + $this->nom = $this->name; + } if (!isset($this->entity)) $this->entity = $conf->entity; // If not defined, we use default value $entity = $this->entity; From 86e571323355b8aae91407e4521a1c6b5005398a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Tue, 21 Apr 2020 16:26:02 +0200 Subject: [PATCH 063/780] Update card.php --- htdocs/user/group/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/user/group/card.php b/htdocs/user/group/card.php index 618f569c1e3..1cd3b3edc37 100644 --- a/htdocs/user/group/card.php +++ b/htdocs/user/group/card.php @@ -132,7 +132,7 @@ if (empty($reshook)) { $action = "create"; // Go back to create page } else { $object->name = trim(GETPOST("nom", 'nohtml')); - $object->nom = $object->name; // For backward compatibility + //$object->nom = $object->name; // For backward compatibility $object->note = dol_htmlcleanlastbr(trim(GETPOST("note", 'none'))); // Fill array 'array_options' with data from add form @@ -215,7 +215,7 @@ if (empty($reshook)) { $object->oldcopy = clone $object; $object->name = trim(GETPOST("nom", 'nohtml')); - $object->nom = $object->name; // For backward compatibility + //$object->nom = $object->name; // For backward compatibility $object->note = dol_htmlcleanlastbr(trim(GETPOST("note", 'none'))); // Fill array 'array_options' with data from add form From 0b790ef3275ecbbc3fb4907285742205569110df Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 21 Apr 2020 18:18:07 +0200 Subject: [PATCH 064/780] Sync lang files --- htdocs/langs/ar_SA/admin.lang | 38 +- htdocs/langs/ar_SA/bills.lang | 16 +- htdocs/langs/ar_SA/blockedlog.lang | 2 +- htdocs/langs/ar_SA/cashdesk.lang | 21 +- htdocs/langs/ar_SA/companies.lang | 2 +- htdocs/langs/ar_SA/compta.lang | 11 +- htdocs/langs/ar_SA/errors.lang | 4 +- htdocs/langs/ar_SA/install.lang | 4 + htdocs/langs/ar_SA/link.lang | 3 +- htdocs/langs/ar_SA/mails.lang | 2 +- htdocs/langs/ar_SA/main.lang | 6 + htdocs/langs/ar_SA/other.lang | 4 +- htdocs/langs/ar_SA/products.lang | 4 +- htdocs/langs/ar_SA/projects.lang | 6 +- htdocs/langs/ar_SA/receiptprinter.lang | 32 ++ htdocs/langs/ar_SA/stripe.lang | 3 +- htdocs/langs/ar_SA/users.lang | 7 +- htdocs/langs/ar_SA/website.lang | 8 +- htdocs/langs/bg_BG/admin.lang | 76 +-- htdocs/langs/bg_BG/bills.lang | 22 +- htdocs/langs/bg_BG/blockedlog.lang | 2 +- htdocs/langs/bg_BG/cashdesk.lang | 27 +- htdocs/langs/bg_BG/companies.lang | 2 +- htdocs/langs/bg_BG/compta.lang | 29 +- htdocs/langs/bg_BG/errors.lang | 14 +- htdocs/langs/bg_BG/install.lang | 8 +- htdocs/langs/bg_BG/link.lang | 1 + htdocs/langs/bg_BG/mails.lang | 2 +- htdocs/langs/bg_BG/main.lang | 34 +- htdocs/langs/bg_BG/orders.lang | 2 +- htdocs/langs/bg_BG/other.lang | 12 +- htdocs/langs/bg_BG/products.lang | 6 +- htdocs/langs/bg_BG/projects.lang | 32 +- htdocs/langs/bg_BG/propal.lang | 2 +- htdocs/langs/bg_BG/receiptprinter.lang | 32 ++ htdocs/langs/bg_BG/stripe.lang | 3 +- htdocs/langs/bg_BG/users.lang | 4 +- htdocs/langs/bg_BG/website.lang | 8 +- htdocs/langs/bn_BD/admin.lang | 38 +- htdocs/langs/bn_BD/bills.lang | 16 +- htdocs/langs/bn_BD/blockedlog.lang | 2 +- htdocs/langs/bn_BD/cashdesk.lang | 21 +- htdocs/langs/bn_BD/companies.lang | 2 +- htdocs/langs/bn_BD/compta.lang | 11 +- htdocs/langs/bn_BD/errors.lang | 4 +- htdocs/langs/bn_BD/install.lang | 4 + htdocs/langs/bn_BD/link.lang | 1 + htdocs/langs/bn_BD/mails.lang | 2 +- htdocs/langs/bn_BD/main.lang | 6 + htdocs/langs/bn_BD/other.lang | 4 +- htdocs/langs/bn_BD/products.lang | 4 +- htdocs/langs/bn_BD/projects.lang | 6 +- htdocs/langs/bn_BD/receiptprinter.lang | 32 ++ htdocs/langs/bn_BD/stripe.lang | 3 +- htdocs/langs/bn_BD/users.lang | 7 +- htdocs/langs/bn_BD/website.lang | 8 +- htdocs/langs/bs_BA/admin.lang | 38 +- htdocs/langs/bs_BA/bills.lang | 16 +- htdocs/langs/bs_BA/blockedlog.lang | 2 +- htdocs/langs/bs_BA/cashdesk.lang | 21 +- htdocs/langs/bs_BA/companies.lang | 2 +- htdocs/langs/bs_BA/compta.lang | 11 +- htdocs/langs/bs_BA/errors.lang | 4 +- htdocs/langs/bs_BA/install.lang | 4 + htdocs/langs/bs_BA/link.lang | 1 + htdocs/langs/bs_BA/mails.lang | 2 +- htdocs/langs/bs_BA/main.lang | 6 + htdocs/langs/bs_BA/other.lang | 4 +- htdocs/langs/bs_BA/products.lang | 4 +- htdocs/langs/bs_BA/projects.lang | 6 +- htdocs/langs/bs_BA/receiptprinter.lang | 32 ++ htdocs/langs/bs_BA/stripe.lang | 3 +- htdocs/langs/bs_BA/users.lang | 7 +- htdocs/langs/bs_BA/website.lang | 8 +- htdocs/langs/ca_ES/admin.lang | 38 +- htdocs/langs/ca_ES/bills.lang | 16 +- htdocs/langs/ca_ES/blockedlog.lang | 2 +- htdocs/langs/ca_ES/cashdesk.lang | 23 +- htdocs/langs/ca_ES/companies.lang | 2 +- htdocs/langs/ca_ES/compta.lang | 11 +- htdocs/langs/ca_ES/errors.lang | 4 +- htdocs/langs/ca_ES/install.lang | 4 + htdocs/langs/ca_ES/link.lang | 1 + htdocs/langs/ca_ES/mails.lang | 2 +- htdocs/langs/ca_ES/main.lang | 6 + htdocs/langs/ca_ES/mrp.lang | 2 + htdocs/langs/ca_ES/orders.lang | 2 +- htdocs/langs/ca_ES/other.lang | 4 +- htdocs/langs/ca_ES/products.lang | 4 +- htdocs/langs/ca_ES/projects.lang | 6 +- htdocs/langs/ca_ES/propal.lang | 2 +- htdocs/langs/ca_ES/receiptprinter.lang | 32 ++ htdocs/langs/ca_ES/stripe.lang | 3 +- htdocs/langs/ca_ES/ticket.lang | 2 +- htdocs/langs/ca_ES/users.lang | 4 +- htdocs/langs/ca_ES/website.lang | 8 +- htdocs/langs/cs_CZ/admin.lang | 106 ++-- htdocs/langs/cs_CZ/bills.lang | 16 +- htdocs/langs/cs_CZ/blockedlog.lang | 2 +- htdocs/langs/cs_CZ/cashdesk.lang | 21 +- htdocs/langs/cs_CZ/companies.lang | 2 +- htdocs/langs/cs_CZ/compta.lang | 11 +- htdocs/langs/cs_CZ/errors.lang | 4 +- htdocs/langs/cs_CZ/install.lang | 4 + htdocs/langs/cs_CZ/link.lang | 13 +- htdocs/langs/cs_CZ/mails.lang | 2 +- htdocs/langs/cs_CZ/main.lang | 6 + htdocs/langs/cs_CZ/other.lang | 4 +- htdocs/langs/cs_CZ/products.lang | 4 +- htdocs/langs/cs_CZ/projects.lang | 6 +- htdocs/langs/cs_CZ/receiptprinter.lang | 32 ++ htdocs/langs/cs_CZ/stripe.lang | 3 +- htdocs/langs/cs_CZ/users.lang | 4 +- htdocs/langs/cs_CZ/website.lang | 8 +- htdocs/langs/da_DK/admin.lang | 38 +- htdocs/langs/da_DK/bills.lang | 12 +- htdocs/langs/da_DK/blockedlog.lang | 2 +- htdocs/langs/da_DK/cashdesk.lang | 21 +- htdocs/langs/da_DK/companies.lang | 2 +- htdocs/langs/da_DK/compta.lang | 11 +- htdocs/langs/da_DK/errors.lang | 4 +- htdocs/langs/da_DK/install.lang | 4 + htdocs/langs/da_DK/link.lang | 19 +- htdocs/langs/da_DK/mails.lang | 2 +- htdocs/langs/da_DK/main.lang | 6 + htdocs/langs/da_DK/other.lang | 4 +- htdocs/langs/da_DK/products.lang | 128 ++--- htdocs/langs/da_DK/projects.lang | 6 +- htdocs/langs/da_DK/receiptprinter.lang | 32 ++ htdocs/langs/da_DK/stripe.lang | 3 +- htdocs/langs/da_DK/users.lang | 7 +- htdocs/langs/da_DK/website.lang | 8 +- htdocs/langs/de_AT/admin.lang | 2 - htdocs/langs/de_AT/bills.lang | 4 +- htdocs/langs/de_AT/other.lang | 1 - htdocs/langs/de_CH/admin.lang | 5 - htdocs/langs/de_CH/bills.lang | 5 +- htdocs/langs/de_CH/companies.lang | 1 - htdocs/langs/de_CH/compta.lang | 1 - htdocs/langs/de_CH/orders.lang | 2 +- htdocs/langs/de_CH/other.lang | 1 - htdocs/langs/de_CH/products.lang | 1 - htdocs/langs/de_CH/users.lang | 1 - htdocs/langs/de_DE/admin.lang | 40 +- htdocs/langs/de_DE/bills.lang | 16 +- htdocs/langs/de_DE/blockedlog.lang | 2 +- htdocs/langs/de_DE/cashdesk.lang | 21 +- htdocs/langs/de_DE/companies.lang | 2 +- htdocs/langs/de_DE/compta.lang | 11 +- htdocs/langs/de_DE/errors.lang | 4 +- htdocs/langs/de_DE/install.lang | 4 + htdocs/langs/de_DE/link.lang | 1 + htdocs/langs/de_DE/mails.lang | 2 +- htdocs/langs/de_DE/main.lang | 6 + htdocs/langs/de_DE/orders.lang | 2 +- htdocs/langs/de_DE/other.lang | 4 +- htdocs/langs/de_DE/products.lang | 4 +- htdocs/langs/de_DE/projects.lang | 6 +- htdocs/langs/de_DE/propal.lang | 2 +- htdocs/langs/de_DE/receiptprinter.lang | 32 ++ htdocs/langs/de_DE/stripe.lang | 3 +- htdocs/langs/de_DE/users.lang | 4 +- htdocs/langs/de_DE/website.lang | 8 +- htdocs/langs/el_GR/admin.lang | 40 +- htdocs/langs/el_GR/bills.lang | 22 +- htdocs/langs/el_GR/blockedlog.lang | 98 ++-- htdocs/langs/el_GR/cashdesk.lang | 21 +- htdocs/langs/el_GR/companies.lang | 4 +- htdocs/langs/el_GR/compta.lang | 11 +- htdocs/langs/el_GR/errors.lang | 4 +- htdocs/langs/el_GR/install.lang | 4 + htdocs/langs/el_GR/link.lang | 1 + htdocs/langs/el_GR/mails.lang | 82 ++-- htdocs/langs/el_GR/main.lang | 6 + htdocs/langs/el_GR/other.lang | 4 +- htdocs/langs/el_GR/products.lang | 4 +- htdocs/langs/el_GR/projects.lang | 6 +- htdocs/langs/el_GR/receiptprinter.lang | 32 ++ htdocs/langs/el_GR/stripe.lang | 3 +- htdocs/langs/el_GR/users.lang | 4 +- htdocs/langs/el_GR/website.lang | 8 +- htdocs/langs/en_AU/admin.lang | 8 + htdocs/langs/en_AU/bills.lang | 7 +- htdocs/langs/en_AU/cashdesk.lang | 2 + htdocs/langs/en_AU/compta.lang | 1 - htdocs/langs/en_CA/admin.lang | 8 + htdocs/langs/en_GB/admin.lang | 8 + htdocs/langs/en_GB/bills.lang | 7 +- htdocs/langs/en_GB/cashdesk.lang | 2 + htdocs/langs/en_GB/projects.lang | 1 + htdocs/langs/en_GB/users.lang | 1 + htdocs/langs/en_GB/website.lang | 2 + htdocs/langs/en_IN/admin.lang | 8 + htdocs/langs/en_IN/bills.lang | 7 +- htdocs/langs/en_IN/other.lang | 1 - htdocs/langs/en_IN/projects.lang | 1 + htdocs/langs/es_AR/main.lang | 557 +++++++++++++++++++++- htdocs/langs/es_CL/admin.lang | 8 - htdocs/langs/es_CL/bills.lang | 7 +- htdocs/langs/es_CL/compta.lang | 2 - htdocs/langs/es_CL/other.lang | 1 - htdocs/langs/es_CL/products.lang | 1 - htdocs/langs/es_CL/projects.lang | 2 - htdocs/langs/es_CO/admin.lang | 3 - htdocs/langs/es_CO/bills.lang | 7 +- htdocs/langs/es_CO/compta.lang | 1 - htdocs/langs/es_EC/admin.lang | 5 +- htdocs/langs/es_ES/admin.lang | 38 +- htdocs/langs/es_ES/bills.lang | 16 +- htdocs/langs/es_ES/blockedlog.lang | 2 +- htdocs/langs/es_ES/cashdesk.lang | 21 +- htdocs/langs/es_ES/companies.lang | 2 +- htdocs/langs/es_ES/compta.lang | 11 +- htdocs/langs/es_ES/errors.lang | 4 +- htdocs/langs/es_ES/install.lang | 4 + htdocs/langs/es_ES/link.lang | 1 + htdocs/langs/es_ES/mails.lang | 2 +- htdocs/langs/es_ES/main.lang | 6 + htdocs/langs/es_ES/other.lang | 4 +- htdocs/langs/es_ES/products.lang | 4 +- htdocs/langs/es_ES/projects.lang | 6 +- htdocs/langs/es_ES/receiptprinter.lang | 32 ++ htdocs/langs/es_ES/stripe.lang | 3 +- htdocs/langs/es_ES/users.lang | 4 +- htdocs/langs/es_ES/website.lang | 8 +- htdocs/langs/es_MX/admin.lang | 3 - htdocs/langs/es_MX/bills.lang | 4 +- htdocs/langs/es_MX/companies.lang | 47 +- htdocs/langs/es_MX/other.lang | 1 - htdocs/langs/es_PE/admin.lang | 1 - htdocs/langs/es_PE/bills.lang | 4 +- htdocs/langs/es_PE/mrp.lang | 45 +- htdocs/langs/es_VE/bills.lang | 4 +- htdocs/langs/es_VE/other.lang | 1 - htdocs/langs/et_EE/admin.lang | 40 +- htdocs/langs/et_EE/bills.lang | 12 +- htdocs/langs/et_EE/blockedlog.lang | 2 +- htdocs/langs/et_EE/cashdesk.lang | 21 +- htdocs/langs/et_EE/companies.lang | 118 ++--- htdocs/langs/et_EE/compta.lang | 19 +- htdocs/langs/et_EE/errors.lang | 4 +- htdocs/langs/et_EE/install.lang | 4 + htdocs/langs/et_EE/link.lang | 1 + htdocs/langs/et_EE/mails.lang | 2 +- htdocs/langs/et_EE/main.lang | 22 +- htdocs/langs/et_EE/other.lang | 4 +- htdocs/langs/et_EE/products.lang | 4 +- htdocs/langs/et_EE/projects.lang | 6 +- htdocs/langs/et_EE/receiptprinter.lang | 32 ++ htdocs/langs/et_EE/stripe.lang | 3 +- htdocs/langs/et_EE/users.lang | 7 +- htdocs/langs/et_EE/website.lang | 8 +- htdocs/langs/eu_ES/admin.lang | 38 +- htdocs/langs/eu_ES/bills.lang | 16 +- htdocs/langs/eu_ES/blockedlog.lang | 2 +- htdocs/langs/eu_ES/cashdesk.lang | 21 +- htdocs/langs/eu_ES/companies.lang | 2 +- htdocs/langs/eu_ES/compta.lang | 11 +- htdocs/langs/eu_ES/errors.lang | 4 +- htdocs/langs/eu_ES/install.lang | 4 + htdocs/langs/eu_ES/link.lang | 1 + htdocs/langs/eu_ES/mails.lang | 2 +- htdocs/langs/eu_ES/main.lang | 6 + htdocs/langs/eu_ES/other.lang | 4 +- htdocs/langs/eu_ES/products.lang | 4 +- htdocs/langs/eu_ES/projects.lang | 6 +- htdocs/langs/eu_ES/receiptprinter.lang | 32 ++ htdocs/langs/eu_ES/stripe.lang | 3 +- htdocs/langs/eu_ES/users.lang | 7 +- htdocs/langs/eu_ES/website.lang | 8 +- htdocs/langs/fa_IR/admin.lang | 38 +- htdocs/langs/fa_IR/bills.lang | 16 +- htdocs/langs/fa_IR/blockedlog.lang | 2 +- htdocs/langs/fa_IR/cashdesk.lang | 21 +- htdocs/langs/fa_IR/companies.lang | 2 +- htdocs/langs/fa_IR/compta.lang | 11 +- htdocs/langs/fa_IR/errors.lang | 4 +- htdocs/langs/fa_IR/install.lang | 4 + htdocs/langs/fa_IR/link.lang | 1 + htdocs/langs/fa_IR/mails.lang | 2 +- htdocs/langs/fa_IR/main.lang | 6 + htdocs/langs/fa_IR/other.lang | 4 +- htdocs/langs/fa_IR/products.lang | 4 +- htdocs/langs/fa_IR/projects.lang | 6 +- htdocs/langs/fa_IR/receiptprinter.lang | 32 ++ htdocs/langs/fa_IR/stripe.lang | 3 +- htdocs/langs/fa_IR/users.lang | 7 +- htdocs/langs/fa_IR/website.lang | 8 +- htdocs/langs/fi_FI/admin.lang | 40 +- htdocs/langs/fi_FI/bills.lang | 20 +- htdocs/langs/fi_FI/blockedlog.lang | 2 +- htdocs/langs/fi_FI/cashdesk.lang | 21 +- htdocs/langs/fi_FI/companies.lang | 46 +- htdocs/langs/fi_FI/compta.lang | 11 +- htdocs/langs/fi_FI/errors.lang | 4 +- htdocs/langs/fi_FI/install.lang | 4 + htdocs/langs/fi_FI/link.lang | 1 + htdocs/langs/fi_FI/mails.lang | 2 +- htdocs/langs/fi_FI/main.lang | 10 +- htdocs/langs/fi_FI/orders.lang | 2 +- htdocs/langs/fi_FI/other.lang | 4 +- htdocs/langs/fi_FI/products.lang | 4 +- htdocs/langs/fi_FI/projects.lang | 88 ++-- htdocs/langs/fi_FI/receiptprinter.lang | 32 ++ htdocs/langs/fi_FI/stripe.lang | 3 +- htdocs/langs/fi_FI/users.lang | 4 +- htdocs/langs/fi_FI/website.lang | 8 +- htdocs/langs/fr_BE/admin.lang | 8 + htdocs/langs/fr_BE/bills.lang | 6 +- htdocs/langs/fr_CA/admin.lang | 8 + htdocs/langs/fr_CA/bills.lang | 6 +- htdocs/langs/fr_CA/cashdesk.lang | 2 + htdocs/langs/fr_CA/compta.lang | 1 - htdocs/langs/fr_CA/errors.lang | 1 + htdocs/langs/fr_CA/main.lang | 1 + htdocs/langs/fr_CA/other.lang | 1 - htdocs/langs/fr_CA/projects.lang | 1 - htdocs/langs/fr_CA/users.lang | 1 + htdocs/langs/fr_CA/website.lang | 2 + htdocs/langs/fr_FR/admin.lang | 62 ++- htdocs/langs/fr_FR/bills.lang | 12 +- htdocs/langs/fr_FR/blockedlog.lang | 2 +- htdocs/langs/fr_FR/cashdesk.lang | 35 +- htdocs/langs/fr_FR/companies.lang | 2 +- htdocs/langs/fr_FR/compta.lang | 11 +- htdocs/langs/fr_FR/errors.lang | 22 +- htdocs/langs/fr_FR/install.lang | 4 + htdocs/langs/fr_FR/link.lang | 1 + htdocs/langs/fr_FR/mails.lang | 6 +- htdocs/langs/fr_FR/main.lang | 14 +- htdocs/langs/fr_FR/other.lang | 24 +- htdocs/langs/fr_FR/products.lang | 14 +- htdocs/langs/fr_FR/projects.lang | 16 +- htdocs/langs/fr_FR/propal.lang | 2 +- htdocs/langs/fr_FR/receiptprinter.lang | 44 +- htdocs/langs/fr_FR/stripe.lang | 3 +- htdocs/langs/fr_FR/users.lang | 7 +- htdocs/langs/fr_FR/website.lang | 14 +- htdocs/langs/he_IL/admin.lang | 38 +- htdocs/langs/he_IL/bills.lang | 16 +- htdocs/langs/he_IL/blockedlog.lang | 2 +- htdocs/langs/he_IL/cashdesk.lang | 21 +- htdocs/langs/he_IL/companies.lang | 2 +- htdocs/langs/he_IL/compta.lang | 11 +- htdocs/langs/he_IL/errors.lang | 4 +- htdocs/langs/he_IL/install.lang | 4 + htdocs/langs/he_IL/link.lang | 1 + htdocs/langs/he_IL/mails.lang | 2 +- htdocs/langs/he_IL/main.lang | 6 + htdocs/langs/he_IL/other.lang | 4 +- htdocs/langs/he_IL/products.lang | 4 +- htdocs/langs/he_IL/projects.lang | 6 +- htdocs/langs/he_IL/receiptprinter.lang | 32 ++ htdocs/langs/he_IL/stripe.lang | 3 +- htdocs/langs/he_IL/users.lang | 7 +- htdocs/langs/he_IL/website.lang | 8 +- htdocs/langs/hr_HR/admin.lang | 38 +- htdocs/langs/hr_HR/bills.lang | 16 +- htdocs/langs/hr_HR/blockedlog.lang | 2 +- htdocs/langs/hr_HR/cashdesk.lang | 21 +- htdocs/langs/hr_HR/companies.lang | 2 +- htdocs/langs/hr_HR/compta.lang | 11 +- htdocs/langs/hr_HR/errors.lang | 4 +- htdocs/langs/hr_HR/install.lang | 4 + htdocs/langs/hr_HR/link.lang | 1 + htdocs/langs/hr_HR/mails.lang | 28 +- htdocs/langs/hr_HR/main.lang | 6 + htdocs/langs/hr_HR/orders.lang | 2 +- htdocs/langs/hr_HR/other.lang | 4 +- htdocs/langs/hr_HR/products.lang | 4 +- htdocs/langs/hr_HR/projects.lang | 6 +- htdocs/langs/hr_HR/propal.lang | 2 +- htdocs/langs/hr_HR/receiptprinter.lang | 32 ++ htdocs/langs/hr_HR/stripe.lang | 3 +- htdocs/langs/hr_HR/users.lang | 4 +- htdocs/langs/hr_HR/website.lang | 8 +- htdocs/langs/hu_HU/admin.lang | 148 +++--- htdocs/langs/hu_HU/bills.lang | 16 +- htdocs/langs/hu_HU/blockedlog.lang | 2 +- htdocs/langs/hu_HU/cashdesk.lang | 21 +- htdocs/langs/hu_HU/companies.lang | 2 +- htdocs/langs/hu_HU/compta.lang | 11 +- htdocs/langs/hu_HU/errors.lang | 4 +- htdocs/langs/hu_HU/install.lang | 4 + htdocs/langs/hu_HU/link.lang | 1 + htdocs/langs/hu_HU/mails.lang | 2 +- htdocs/langs/hu_HU/main.lang | 6 + htdocs/langs/hu_HU/orders.lang | 2 +- htdocs/langs/hu_HU/other.lang | 4 +- htdocs/langs/hu_HU/products.lang | 4 +- htdocs/langs/hu_HU/projects.lang | 6 +- htdocs/langs/hu_HU/receiptprinter.lang | 32 ++ htdocs/langs/hu_HU/stripe.lang | 3 +- htdocs/langs/hu_HU/users.lang | 4 +- htdocs/langs/hu_HU/website.lang | 8 +- htdocs/langs/id_ID/admin.lang | 38 +- htdocs/langs/id_ID/bills.lang | 16 +- htdocs/langs/id_ID/blockedlog.lang | 2 +- htdocs/langs/id_ID/cashdesk.lang | 21 +- htdocs/langs/id_ID/companies.lang | 2 +- htdocs/langs/id_ID/compta.lang | 11 +- htdocs/langs/id_ID/errors.lang | 4 +- htdocs/langs/id_ID/install.lang | 4 + htdocs/langs/id_ID/link.lang | 1 + htdocs/langs/id_ID/mails.lang | 2 +- htdocs/langs/id_ID/main.lang | 6 + htdocs/langs/id_ID/other.lang | 4 +- htdocs/langs/id_ID/products.lang | 4 +- htdocs/langs/id_ID/projects.lang | 6 +- htdocs/langs/id_ID/receiptprinter.lang | 32 ++ htdocs/langs/id_ID/stripe.lang | 3 +- htdocs/langs/id_ID/users.lang | 7 +- htdocs/langs/id_ID/website.lang | 8 +- htdocs/langs/is_IS/admin.lang | 38 +- htdocs/langs/is_IS/bills.lang | 16 +- htdocs/langs/is_IS/blockedlog.lang | 2 +- htdocs/langs/is_IS/cashdesk.lang | 21 +- htdocs/langs/is_IS/companies.lang | 2 +- htdocs/langs/is_IS/compta.lang | 11 +- htdocs/langs/is_IS/errors.lang | 4 +- htdocs/langs/is_IS/install.lang | 4 + htdocs/langs/is_IS/link.lang | 1 + htdocs/langs/is_IS/mails.lang | 2 +- htdocs/langs/is_IS/main.lang | 6 + htdocs/langs/is_IS/other.lang | 4 +- htdocs/langs/is_IS/products.lang | 4 +- htdocs/langs/is_IS/projects.lang | 6 +- htdocs/langs/is_IS/receiptprinter.lang | 32 ++ htdocs/langs/is_IS/stripe.lang | 3 +- htdocs/langs/is_IS/users.lang | 7 +- htdocs/langs/is_IS/website.lang | 8 +- htdocs/langs/it_IT/accountancy.lang | 22 +- htdocs/langs/it_IT/admin.lang | 452 +++++++++--------- htdocs/langs/it_IT/banks.lang | 6 +- htdocs/langs/it_IT/bills.lang | 38 +- htdocs/langs/it_IT/blockedlog.lang | 2 +- htdocs/langs/it_IT/boxes.lang | 32 +- htdocs/langs/it_IT/cashdesk.lang | 21 +- htdocs/langs/it_IT/categories.lang | 22 +- htdocs/langs/it_IT/companies.lang | 12 +- htdocs/langs/it_IT/compta.lang | 49 +- htdocs/langs/it_IT/ecm.lang | 4 +- htdocs/langs/it_IT/errors.lang | 8 +- htdocs/langs/it_IT/holiday.lang | 14 +- htdocs/langs/it_IT/install.lang | 12 +- htdocs/langs/it_IT/link.lang | 1 + htdocs/langs/it_IT/mails.lang | 10 +- htdocs/langs/it_IT/main.lang | 66 +-- htdocs/langs/it_IT/modulebuilder.lang | 32 +- htdocs/langs/it_IT/mrp.lang | 34 +- htdocs/langs/it_IT/multicurrency.lang | 4 +- htdocs/langs/it_IT/oauth.lang | 2 +- htdocs/langs/it_IT/orders.lang | 19 +- htdocs/langs/it_IT/other.lang | 50 +- htdocs/langs/it_IT/paybox.lang | 2 +- htdocs/langs/it_IT/products.lang | 32 +- htdocs/langs/it_IT/projects.lang | 32 +- htdocs/langs/it_IT/propal.lang | 2 +- htdocs/langs/it_IT/receiptprinter.lang | 38 +- htdocs/langs/it_IT/stocks.lang | 26 +- htdocs/langs/it_IT/stripe.lang | 11 +- htdocs/langs/it_IT/supplier_proposal.lang | 6 +- htdocs/langs/it_IT/suppliers.lang | 2 +- htdocs/langs/it_IT/ticket.lang | 12 +- htdocs/langs/it_IT/trips.lang | 6 +- htdocs/langs/it_IT/users.lang | 8 +- htdocs/langs/it_IT/website.lang | 12 +- htdocs/langs/ja_JP/admin.lang | 38 +- htdocs/langs/ja_JP/bills.lang | 16 +- htdocs/langs/ja_JP/blockedlog.lang | 2 +- htdocs/langs/ja_JP/cashdesk.lang | 21 +- htdocs/langs/ja_JP/companies.lang | 2 +- htdocs/langs/ja_JP/compta.lang | 11 +- htdocs/langs/ja_JP/errors.lang | 4 +- htdocs/langs/ja_JP/install.lang | 4 + htdocs/langs/ja_JP/link.lang | 1 + htdocs/langs/ja_JP/mails.lang | 2 +- htdocs/langs/ja_JP/main.lang | 8 +- htdocs/langs/ja_JP/other.lang | 4 +- htdocs/langs/ja_JP/products.lang | 4 +- htdocs/langs/ja_JP/projects.lang | 6 +- htdocs/langs/ja_JP/receiptprinter.lang | 32 ++ htdocs/langs/ja_JP/stripe.lang | 3 +- htdocs/langs/ja_JP/users.lang | 7 +- htdocs/langs/ja_JP/website.lang | 8 +- htdocs/langs/ka_GE/admin.lang | 38 +- htdocs/langs/ka_GE/bills.lang | 16 +- htdocs/langs/ka_GE/blockedlog.lang | 2 +- htdocs/langs/ka_GE/cashdesk.lang | 21 +- htdocs/langs/ka_GE/companies.lang | 2 +- htdocs/langs/ka_GE/compta.lang | 11 +- htdocs/langs/ka_GE/errors.lang | 4 +- htdocs/langs/ka_GE/install.lang | 4 + htdocs/langs/ka_GE/link.lang | 1 + htdocs/langs/ka_GE/mails.lang | 2 +- htdocs/langs/ka_GE/main.lang | 6 + htdocs/langs/ka_GE/other.lang | 4 +- htdocs/langs/ka_GE/products.lang | 4 +- htdocs/langs/ka_GE/projects.lang | 6 +- htdocs/langs/ka_GE/receiptprinter.lang | 32 ++ htdocs/langs/ka_GE/stripe.lang | 3 +- htdocs/langs/ka_GE/users.lang | 7 +- htdocs/langs/ka_GE/website.lang | 8 +- htdocs/langs/km_KH/blockedlog.lang | 2 +- htdocs/langs/km_KH/main.lang | 6 + htdocs/langs/kn_IN/admin.lang | 38 +- htdocs/langs/kn_IN/bills.lang | 16 +- htdocs/langs/kn_IN/blockedlog.lang | 2 +- htdocs/langs/kn_IN/cashdesk.lang | 21 +- htdocs/langs/kn_IN/companies.lang | 2 +- htdocs/langs/kn_IN/compta.lang | 11 +- htdocs/langs/kn_IN/errors.lang | 4 +- htdocs/langs/kn_IN/install.lang | 4 + htdocs/langs/kn_IN/link.lang | 1 + htdocs/langs/kn_IN/mails.lang | 2 +- htdocs/langs/kn_IN/main.lang | 6 + htdocs/langs/kn_IN/other.lang | 4 +- htdocs/langs/kn_IN/products.lang | 4 +- htdocs/langs/kn_IN/projects.lang | 6 +- htdocs/langs/kn_IN/receiptprinter.lang | 32 ++ htdocs/langs/kn_IN/stripe.lang | 3 +- htdocs/langs/kn_IN/users.lang | 7 +- htdocs/langs/kn_IN/website.lang | 8 +- htdocs/langs/ko_KR/admin.lang | 38 +- htdocs/langs/ko_KR/bills.lang | 16 +- htdocs/langs/ko_KR/blockedlog.lang | 2 +- htdocs/langs/ko_KR/cashdesk.lang | 21 +- htdocs/langs/ko_KR/companies.lang | 2 +- htdocs/langs/ko_KR/compta.lang | 11 +- htdocs/langs/ko_KR/errors.lang | 4 +- htdocs/langs/ko_KR/install.lang | 4 + htdocs/langs/ko_KR/link.lang | 1 + htdocs/langs/ko_KR/mails.lang | 2 +- htdocs/langs/ko_KR/main.lang | 6 + htdocs/langs/ko_KR/other.lang | 4 +- htdocs/langs/ko_KR/products.lang | 4 +- htdocs/langs/ko_KR/projects.lang | 6 +- htdocs/langs/ko_KR/receiptprinter.lang | 32 ++ htdocs/langs/ko_KR/stripe.lang | 3 +- htdocs/langs/ko_KR/users.lang | 7 +- htdocs/langs/ko_KR/website.lang | 8 +- htdocs/langs/lo_LA/admin.lang | 38 +- htdocs/langs/lo_LA/bills.lang | 16 +- htdocs/langs/lo_LA/blockedlog.lang | 2 +- htdocs/langs/lo_LA/cashdesk.lang | 21 +- htdocs/langs/lo_LA/companies.lang | 2 +- htdocs/langs/lo_LA/compta.lang | 11 +- htdocs/langs/lo_LA/errors.lang | 4 +- htdocs/langs/lo_LA/install.lang | 4 + htdocs/langs/lo_LA/link.lang | 1 + htdocs/langs/lo_LA/mails.lang | 2 +- htdocs/langs/lo_LA/main.lang | 6 + htdocs/langs/lo_LA/other.lang | 4 +- htdocs/langs/lo_LA/products.lang | 4 +- htdocs/langs/lo_LA/projects.lang | 6 +- htdocs/langs/lo_LA/receiptprinter.lang | 32 ++ htdocs/langs/lo_LA/stripe.lang | 3 +- htdocs/langs/lo_LA/users.lang | 7 +- htdocs/langs/lo_LA/website.lang | 8 +- htdocs/langs/lt_LT/admin.lang | 38 +- htdocs/langs/lt_LT/bills.lang | 16 +- htdocs/langs/lt_LT/blockedlog.lang | 2 +- htdocs/langs/lt_LT/cashdesk.lang | 21 +- htdocs/langs/lt_LT/companies.lang | 2 +- htdocs/langs/lt_LT/compta.lang | 11 +- htdocs/langs/lt_LT/errors.lang | 4 +- htdocs/langs/lt_LT/install.lang | 4 + htdocs/langs/lt_LT/link.lang | 1 + htdocs/langs/lt_LT/mails.lang | 2 +- htdocs/langs/lt_LT/main.lang | 6 + htdocs/langs/lt_LT/other.lang | 4 +- htdocs/langs/lt_LT/products.lang | 4 +- htdocs/langs/lt_LT/projects.lang | 6 +- htdocs/langs/lt_LT/receiptprinter.lang | 32 ++ htdocs/langs/lt_LT/stripe.lang | 3 +- htdocs/langs/lt_LT/users.lang | 7 +- htdocs/langs/lt_LT/website.lang | 8 +- htdocs/langs/lv_LV/admin.lang | 38 +- htdocs/langs/lv_LV/bills.lang | 14 +- htdocs/langs/lv_LV/blockedlog.lang | 4 +- htdocs/langs/lv_LV/cashdesk.lang | 21 +- htdocs/langs/lv_LV/companies.lang | 2 +- htdocs/langs/lv_LV/compta.lang | 11 +- htdocs/langs/lv_LV/errors.lang | 4 +- htdocs/langs/lv_LV/install.lang | 4 + htdocs/langs/lv_LV/link.lang | 3 +- htdocs/langs/lv_LV/mails.lang | 10 +- htdocs/langs/lv_LV/main.lang | 6 + htdocs/langs/lv_LV/orders.lang | 2 +- htdocs/langs/lv_LV/other.lang | 4 +- htdocs/langs/lv_LV/products.lang | 4 +- htdocs/langs/lv_LV/projects.lang | 6 +- htdocs/langs/lv_LV/receiptprinter.lang | 32 ++ htdocs/langs/lv_LV/stripe.lang | 3 +- htdocs/langs/lv_LV/users.lang | 7 +- htdocs/langs/lv_LV/website.lang | 8 +- htdocs/langs/mk_MK/admin.lang | 38 +- htdocs/langs/mk_MK/bills.lang | 16 +- htdocs/langs/mk_MK/blockedlog.lang | 2 +- htdocs/langs/mk_MK/cashdesk.lang | 21 +- htdocs/langs/mk_MK/companies.lang | 2 +- htdocs/langs/mk_MK/compta.lang | 11 +- htdocs/langs/mk_MK/errors.lang | 4 +- htdocs/langs/mk_MK/install.lang | 4 + htdocs/langs/mk_MK/link.lang | 1 + htdocs/langs/mk_MK/mails.lang | 4 +- htdocs/langs/mk_MK/main.lang | 6 + htdocs/langs/mk_MK/other.lang | 4 +- htdocs/langs/mk_MK/products.lang | 4 +- htdocs/langs/mk_MK/projects.lang | 6 +- htdocs/langs/mk_MK/receiptprinter.lang | 32 ++ htdocs/langs/mk_MK/stripe.lang | 3 +- htdocs/langs/mk_MK/users.lang | 7 +- htdocs/langs/mk_MK/website.lang | 8 +- htdocs/langs/mn_MN/admin.lang | 38 +- htdocs/langs/mn_MN/bills.lang | 16 +- htdocs/langs/mn_MN/blockedlog.lang | 2 +- htdocs/langs/mn_MN/cashdesk.lang | 21 +- htdocs/langs/mn_MN/companies.lang | 2 +- htdocs/langs/mn_MN/compta.lang | 11 +- htdocs/langs/mn_MN/errors.lang | 4 +- htdocs/langs/mn_MN/install.lang | 4 + htdocs/langs/mn_MN/link.lang | 1 + htdocs/langs/mn_MN/mails.lang | 2 +- htdocs/langs/mn_MN/main.lang | 6 + htdocs/langs/mn_MN/other.lang | 4 +- htdocs/langs/mn_MN/products.lang | 4 +- htdocs/langs/mn_MN/projects.lang | 6 +- htdocs/langs/mn_MN/receiptprinter.lang | 32 ++ htdocs/langs/mn_MN/stripe.lang | 3 +- htdocs/langs/mn_MN/users.lang | 7 +- htdocs/langs/mn_MN/website.lang | 8 +- htdocs/langs/nb_NO/admin.lang | 38 +- htdocs/langs/nb_NO/bills.lang | 16 +- htdocs/langs/nb_NO/blockedlog.lang | 2 +- htdocs/langs/nb_NO/cashdesk.lang | 21 +- htdocs/langs/nb_NO/companies.lang | 2 +- htdocs/langs/nb_NO/compta.lang | 11 +- htdocs/langs/nb_NO/errors.lang | 4 +- htdocs/langs/nb_NO/install.lang | 4 + htdocs/langs/nb_NO/link.lang | 1 + htdocs/langs/nb_NO/mails.lang | 2 +- htdocs/langs/nb_NO/main.lang | 6 + htdocs/langs/nb_NO/other.lang | 4 +- htdocs/langs/nb_NO/products.lang | 4 +- htdocs/langs/nb_NO/projects.lang | 6 +- htdocs/langs/nb_NO/receiptprinter.lang | 32 ++ htdocs/langs/nb_NO/stripe.lang | 3 +- htdocs/langs/nb_NO/users.lang | 27 +- htdocs/langs/nb_NO/website.lang | 8 +- htdocs/langs/nl_BE/admin.lang | 3 +- htdocs/langs/nl_BE/bills.lang | 5 + htdocs/langs/nl_BE/compta.lang | 1 - htdocs/langs/nl_BE/other.lang | 1 - htdocs/langs/nl_BE/users.lang | 1 - htdocs/langs/nl_NL/admin.lang | 52 +- htdocs/langs/nl_NL/bills.lang | 12 +- htdocs/langs/nl_NL/blockedlog.lang | 2 +- htdocs/langs/nl_NL/cashdesk.lang | 21 +- htdocs/langs/nl_NL/companies.lang | 2 +- htdocs/langs/nl_NL/compta.lang | 11 +- htdocs/langs/nl_NL/errors.lang | 4 +- htdocs/langs/nl_NL/install.lang | 4 + htdocs/langs/nl_NL/link.lang | 1 + htdocs/langs/nl_NL/mails.lang | 2 +- htdocs/langs/nl_NL/main.lang | 6 + htdocs/langs/nl_NL/other.lang | 4 +- htdocs/langs/nl_NL/products.lang | 4 +- htdocs/langs/nl_NL/projects.lang | 6 +- htdocs/langs/nl_NL/receiptprinter.lang | 32 ++ htdocs/langs/nl_NL/stripe.lang | 3 +- htdocs/langs/nl_NL/users.lang | 4 +- htdocs/langs/nl_NL/website.lang | 8 +- htdocs/langs/pl_PL/admin.lang | 38 +- htdocs/langs/pl_PL/bills.lang | 16 +- htdocs/langs/pl_PL/blockedlog.lang | 2 +- htdocs/langs/pl_PL/cashdesk.lang | 21 +- htdocs/langs/pl_PL/companies.lang | 2 +- htdocs/langs/pl_PL/compta.lang | 11 +- htdocs/langs/pl_PL/errors.lang | 4 +- htdocs/langs/pl_PL/install.lang | 4 + htdocs/langs/pl_PL/link.lang | 1 + htdocs/langs/pl_PL/mails.lang | 2 +- htdocs/langs/pl_PL/main.lang | 6 + htdocs/langs/pl_PL/other.lang | 4 +- htdocs/langs/pl_PL/products.lang | 4 +- htdocs/langs/pl_PL/projects.lang | 6 +- htdocs/langs/pl_PL/receiptprinter.lang | 32 ++ htdocs/langs/pl_PL/stripe.lang | 3 +- htdocs/langs/pl_PL/users.lang | 7 +- htdocs/langs/pl_PL/website.lang | 8 +- htdocs/langs/pt_BR/admin.lang | 16 +- htdocs/langs/pt_BR/bills.lang | 11 +- htdocs/langs/pt_BR/blockedlog.lang | 1 - htdocs/langs/pt_BR/cashdesk.lang | 4 +- htdocs/langs/pt_BR/compta.lang | 2 - htdocs/langs/pt_BR/errors.lang | 1 + htdocs/langs/pt_BR/link.lang | 1 + htdocs/langs/pt_BR/mails.lang | 1 - htdocs/langs/pt_BR/orders.lang | 2 +- htdocs/langs/pt_BR/other.lang | 2 +- htdocs/langs/pt_BR/products.lang | 1 - htdocs/langs/pt_BR/projects.lang | 3 - htdocs/langs/pt_BR/stripe.lang | 1 - htdocs/langs/pt_BR/users.lang | 5 +- htdocs/langs/pt_BR/website.lang | 2 - htdocs/langs/pt_PT/admin.lang | 38 +- htdocs/langs/pt_PT/bills.lang | 16 +- htdocs/langs/pt_PT/blockedlog.lang | 2 +- htdocs/langs/pt_PT/cashdesk.lang | 21 +- htdocs/langs/pt_PT/companies.lang | 2 +- htdocs/langs/pt_PT/compta.lang | 11 +- htdocs/langs/pt_PT/errors.lang | 4 +- htdocs/langs/pt_PT/install.lang | 4 + htdocs/langs/pt_PT/link.lang | 1 + htdocs/langs/pt_PT/mails.lang | 2 +- htdocs/langs/pt_PT/main.lang | 6 + htdocs/langs/pt_PT/other.lang | 4 +- htdocs/langs/pt_PT/products.lang | 4 +- htdocs/langs/pt_PT/projects.lang | 6 +- htdocs/langs/pt_PT/receiptprinter.lang | 32 ++ htdocs/langs/pt_PT/stripe.lang | 3 +- htdocs/langs/pt_PT/users.lang | 7 +- htdocs/langs/pt_PT/website.lang | 8 +- htdocs/langs/ro_RO/admin.lang | 38 +- htdocs/langs/ro_RO/bills.lang | 16 +- htdocs/langs/ro_RO/blockedlog.lang | 2 +- htdocs/langs/ro_RO/cashdesk.lang | 21 +- htdocs/langs/ro_RO/companies.lang | 2 +- htdocs/langs/ro_RO/compta.lang | 11 +- htdocs/langs/ro_RO/errors.lang | 4 +- htdocs/langs/ro_RO/install.lang | 4 + htdocs/langs/ro_RO/link.lang | 1 + htdocs/langs/ro_RO/mails.lang | 2 +- htdocs/langs/ro_RO/main.lang | 6 + htdocs/langs/ro_RO/other.lang | 4 +- htdocs/langs/ro_RO/products.lang | 4 +- htdocs/langs/ro_RO/projects.lang | 6 +- htdocs/langs/ro_RO/receiptprinter.lang | 32 ++ htdocs/langs/ro_RO/stripe.lang | 3 +- htdocs/langs/ro_RO/users.lang | 4 +- htdocs/langs/ro_RO/website.lang | 8 +- htdocs/langs/ru_RU/admin.lang | 38 +- htdocs/langs/ru_RU/bills.lang | 16 +- htdocs/langs/ru_RU/blockedlog.lang | 2 +- htdocs/langs/ru_RU/cashdesk.lang | 21 +- htdocs/langs/ru_RU/companies.lang | 2 +- htdocs/langs/ru_RU/compta.lang | 11 +- htdocs/langs/ru_RU/errors.lang | 4 +- htdocs/langs/ru_RU/install.lang | 4 + htdocs/langs/ru_RU/link.lang | 1 + htdocs/langs/ru_RU/mails.lang | 2 +- htdocs/langs/ru_RU/main.lang | 6 + htdocs/langs/ru_RU/other.lang | 4 +- htdocs/langs/ru_RU/products.lang | 4 +- htdocs/langs/ru_RU/projects.lang | 6 +- htdocs/langs/ru_RU/receiptprinter.lang | 32 ++ htdocs/langs/ru_RU/stripe.lang | 3 +- htdocs/langs/ru_RU/users.lang | 7 +- htdocs/langs/ru_RU/website.lang | 8 +- htdocs/langs/sk_SK/admin.lang | 38 +- htdocs/langs/sk_SK/bills.lang | 16 +- htdocs/langs/sk_SK/blockedlog.lang | 2 +- htdocs/langs/sk_SK/cashdesk.lang | 21 +- htdocs/langs/sk_SK/companies.lang | 2 +- htdocs/langs/sk_SK/compta.lang | 11 +- htdocs/langs/sk_SK/errors.lang | 4 +- htdocs/langs/sk_SK/install.lang | 4 + htdocs/langs/sk_SK/link.lang | 1 + htdocs/langs/sk_SK/mails.lang | 2 +- htdocs/langs/sk_SK/main.lang | 6 + htdocs/langs/sk_SK/other.lang | 4 +- htdocs/langs/sk_SK/products.lang | 4 +- htdocs/langs/sk_SK/projects.lang | 6 +- htdocs/langs/sk_SK/receiptprinter.lang | 32 ++ htdocs/langs/sk_SK/stripe.lang | 3 +- htdocs/langs/sk_SK/users.lang | 7 +- htdocs/langs/sk_SK/website.lang | 8 +- htdocs/langs/sl_SI/admin.lang | 38 +- htdocs/langs/sl_SI/bills.lang | 16 +- htdocs/langs/sl_SI/blockedlog.lang | 2 +- htdocs/langs/sl_SI/cashdesk.lang | 21 +- htdocs/langs/sl_SI/companies.lang | 2 +- htdocs/langs/sl_SI/compta.lang | 11 +- htdocs/langs/sl_SI/errors.lang | 4 +- htdocs/langs/sl_SI/install.lang | 4 + htdocs/langs/sl_SI/link.lang | 1 + htdocs/langs/sl_SI/mails.lang | 2 +- htdocs/langs/sl_SI/main.lang | 6 + htdocs/langs/sl_SI/other.lang | 4 +- htdocs/langs/sl_SI/products.lang | 4 +- htdocs/langs/sl_SI/projects.lang | 6 +- htdocs/langs/sl_SI/receiptprinter.lang | 32 ++ htdocs/langs/sl_SI/stripe.lang | 3 +- htdocs/langs/sl_SI/users.lang | 7 +- htdocs/langs/sl_SI/website.lang | 8 +- htdocs/langs/sq_AL/admin.lang | 38 +- htdocs/langs/sq_AL/bills.lang | 16 +- htdocs/langs/sq_AL/blockedlog.lang | 2 +- htdocs/langs/sq_AL/cashdesk.lang | 21 +- htdocs/langs/sq_AL/companies.lang | 2 +- htdocs/langs/sq_AL/compta.lang | 11 +- htdocs/langs/sq_AL/errors.lang | 4 +- htdocs/langs/sq_AL/install.lang | 4 + htdocs/langs/sq_AL/link.lang | 1 + htdocs/langs/sq_AL/mails.lang | 2 +- htdocs/langs/sq_AL/main.lang | 6 + htdocs/langs/sq_AL/other.lang | 4 +- htdocs/langs/sq_AL/products.lang | 4 +- htdocs/langs/sq_AL/projects.lang | 6 +- htdocs/langs/sq_AL/receiptprinter.lang | 32 ++ htdocs/langs/sq_AL/stripe.lang | 3 +- htdocs/langs/sq_AL/users.lang | 7 +- htdocs/langs/sq_AL/website.lang | 8 +- htdocs/langs/sr_RS/admin.lang | 38 +- htdocs/langs/sr_RS/bills.lang | 16 +- htdocs/langs/sr_RS/cashdesk.lang | 21 +- htdocs/langs/sr_RS/companies.lang | 2 +- htdocs/langs/sr_RS/compta.lang | 11 +- htdocs/langs/sr_RS/errors.lang | 4 +- htdocs/langs/sr_RS/install.lang | 4 + htdocs/langs/sr_RS/link.lang | 1 + htdocs/langs/sr_RS/mails.lang | 2 +- htdocs/langs/sr_RS/main.lang | 6 + htdocs/langs/sr_RS/other.lang | 4 +- htdocs/langs/sr_RS/products.lang | 4 +- htdocs/langs/sr_RS/projects.lang | 6 +- htdocs/langs/sr_RS/users.lang | 7 +- htdocs/langs/sv_SE/admin.lang | 38 +- htdocs/langs/sv_SE/bills.lang | 16 +- htdocs/langs/sv_SE/blockedlog.lang | 2 +- htdocs/langs/sv_SE/cashdesk.lang | 21 +- htdocs/langs/sv_SE/companies.lang | 2 +- htdocs/langs/sv_SE/compta.lang | 11 +- htdocs/langs/sv_SE/errors.lang | 4 +- htdocs/langs/sv_SE/install.lang | 4 + htdocs/langs/sv_SE/link.lang | 1 + htdocs/langs/sv_SE/mails.lang | 2 +- htdocs/langs/sv_SE/main.lang | 6 + htdocs/langs/sv_SE/other.lang | 4 +- htdocs/langs/sv_SE/products.lang | 4 +- htdocs/langs/sv_SE/projects.lang | 6 +- htdocs/langs/sv_SE/receiptprinter.lang | 32 ++ htdocs/langs/sv_SE/stripe.lang | 3 +- htdocs/langs/sv_SE/users.lang | 9 +- htdocs/langs/sv_SE/website.lang | 8 +- htdocs/langs/sw_SW/admin.lang | 38 +- htdocs/langs/sw_SW/bills.lang | 16 +- htdocs/langs/sw_SW/cashdesk.lang | 21 +- htdocs/langs/sw_SW/companies.lang | 2 +- htdocs/langs/sw_SW/compta.lang | 11 +- htdocs/langs/sw_SW/errors.lang | 4 +- htdocs/langs/sw_SW/install.lang | 4 + htdocs/langs/sw_SW/link.lang | 1 + htdocs/langs/sw_SW/mails.lang | 2 +- htdocs/langs/sw_SW/main.lang | 6 + htdocs/langs/sw_SW/other.lang | 4 +- htdocs/langs/sw_SW/products.lang | 4 +- htdocs/langs/sw_SW/projects.lang | 6 +- htdocs/langs/sw_SW/users.lang | 7 +- htdocs/langs/th_TH/admin.lang | 38 +- htdocs/langs/th_TH/bills.lang | 16 +- htdocs/langs/th_TH/blockedlog.lang | 2 +- htdocs/langs/th_TH/cashdesk.lang | 21 +- htdocs/langs/th_TH/companies.lang | 2 +- htdocs/langs/th_TH/compta.lang | 11 +- htdocs/langs/th_TH/errors.lang | 4 +- htdocs/langs/th_TH/install.lang | 4 + htdocs/langs/th_TH/link.lang | 1 + htdocs/langs/th_TH/mails.lang | 2 +- htdocs/langs/th_TH/main.lang | 6 + htdocs/langs/th_TH/other.lang | 4 +- htdocs/langs/th_TH/products.lang | 4 +- htdocs/langs/th_TH/projects.lang | 6 +- htdocs/langs/th_TH/receiptprinter.lang | 32 ++ htdocs/langs/th_TH/stripe.lang | 3 +- htdocs/langs/th_TH/users.lang | 7 +- htdocs/langs/th_TH/website.lang | 8 +- htdocs/langs/tr_TR/admin.lang | 72 +-- htdocs/langs/tr_TR/bills.lang | 16 +- htdocs/langs/tr_TR/blockedlog.lang | 2 +- htdocs/langs/tr_TR/cashdesk.lang | 21 +- htdocs/langs/tr_TR/companies.lang | 2 +- htdocs/langs/tr_TR/compta.lang | 11 +- htdocs/langs/tr_TR/errors.lang | 4 +- htdocs/langs/tr_TR/install.lang | 4 + htdocs/langs/tr_TR/link.lang | 1 + htdocs/langs/tr_TR/mails.lang | 2 +- htdocs/langs/tr_TR/main.lang | 16 +- htdocs/langs/tr_TR/other.lang | 4 +- htdocs/langs/tr_TR/products.lang | 26 +- htdocs/langs/tr_TR/projects.lang | 6 +- htdocs/langs/tr_TR/receiptprinter.lang | 32 ++ htdocs/langs/tr_TR/stripe.lang | 3 +- htdocs/langs/tr_TR/users.lang | 11 +- htdocs/langs/tr_TR/website.lang | 8 +- htdocs/langs/uk_UA/admin.lang | 38 +- htdocs/langs/uk_UA/bills.lang | 16 +- htdocs/langs/uk_UA/blockedlog.lang | 2 +- htdocs/langs/uk_UA/cashdesk.lang | 21 +- htdocs/langs/uk_UA/companies.lang | 2 +- htdocs/langs/uk_UA/compta.lang | 11 +- htdocs/langs/uk_UA/errors.lang | 4 +- htdocs/langs/uk_UA/install.lang | 4 + htdocs/langs/uk_UA/link.lang | 1 + htdocs/langs/uk_UA/mails.lang | 2 +- htdocs/langs/uk_UA/main.lang | 6 + htdocs/langs/uk_UA/other.lang | 4 +- htdocs/langs/uk_UA/products.lang | 4 +- htdocs/langs/uk_UA/projects.lang | 6 +- htdocs/langs/uk_UA/receiptprinter.lang | 32 ++ htdocs/langs/uk_UA/stripe.lang | 3 +- htdocs/langs/uk_UA/users.lang | 7 +- htdocs/langs/uk_UA/website.lang | 8 +- htdocs/langs/uz_UZ/admin.lang | 38 +- htdocs/langs/uz_UZ/bills.lang | 16 +- htdocs/langs/uz_UZ/cashdesk.lang | 21 +- htdocs/langs/uz_UZ/companies.lang | 2 +- htdocs/langs/uz_UZ/compta.lang | 11 +- htdocs/langs/uz_UZ/errors.lang | 4 +- htdocs/langs/uz_UZ/install.lang | 4 + htdocs/langs/uz_UZ/link.lang | 1 + htdocs/langs/uz_UZ/mails.lang | 2 +- htdocs/langs/uz_UZ/main.lang | 6 + htdocs/langs/uz_UZ/other.lang | 4 +- htdocs/langs/uz_UZ/products.lang | 4 +- htdocs/langs/uz_UZ/projects.lang | 6 +- htdocs/langs/uz_UZ/users.lang | 7 +- htdocs/langs/vi_VN/admin.lang | 38 +- htdocs/langs/vi_VN/bills.lang | 16 +- htdocs/langs/vi_VN/blockedlog.lang | 2 +- htdocs/langs/vi_VN/cashdesk.lang | 21 +- htdocs/langs/vi_VN/companies.lang | 2 +- htdocs/langs/vi_VN/compta.lang | 11 +- htdocs/langs/vi_VN/errors.lang | 4 +- htdocs/langs/vi_VN/install.lang | 4 + htdocs/langs/vi_VN/link.lang | 1 + htdocs/langs/vi_VN/mails.lang | 2 +- htdocs/langs/vi_VN/main.lang | 6 + htdocs/langs/vi_VN/other.lang | 4 +- htdocs/langs/vi_VN/products.lang | 4 +- htdocs/langs/vi_VN/projects.lang | 6 +- htdocs/langs/vi_VN/receiptprinter.lang | 32 ++ htdocs/langs/vi_VN/stripe.lang | 3 +- htdocs/langs/vi_VN/users.lang | 4 +- htdocs/langs/vi_VN/website.lang | 8 +- htdocs/langs/zh_CN/admin.lang | 38 +- htdocs/langs/zh_CN/bills.lang | 16 +- htdocs/langs/zh_CN/blockedlog.lang | 2 +- htdocs/langs/zh_CN/cashdesk.lang | 21 +- htdocs/langs/zh_CN/companies.lang | 2 +- htdocs/langs/zh_CN/compta.lang | 11 +- htdocs/langs/zh_CN/errors.lang | 4 +- htdocs/langs/zh_CN/install.lang | 4 + htdocs/langs/zh_CN/link.lang | 1 + htdocs/langs/zh_CN/mails.lang | 2 +- htdocs/langs/zh_CN/main.lang | 6 + htdocs/langs/zh_CN/other.lang | 4 +- htdocs/langs/zh_CN/products.lang | 4 +- htdocs/langs/zh_CN/projects.lang | 6 +- htdocs/langs/zh_CN/receiptprinter.lang | 32 ++ htdocs/langs/zh_CN/stripe.lang | 3 +- htdocs/langs/zh_CN/users.lang | 7 +- htdocs/langs/zh_CN/website.lang | 8 +- htdocs/langs/zh_TW/admin.lang | 44 +- htdocs/langs/zh_TW/bills.lang | 14 +- htdocs/langs/zh_TW/blockedlog.lang | 2 +- htdocs/langs/zh_TW/cashdesk.lang | 63 ++- htdocs/langs/zh_TW/companies.lang | 2 +- htdocs/langs/zh_TW/compta.lang | 11 +- htdocs/langs/zh_TW/errors.lang | 20 +- htdocs/langs/zh_TW/install.lang | 4 + htdocs/langs/zh_TW/link.lang | 1 + htdocs/langs/zh_TW/mails.lang | 246 +++++----- htdocs/langs/zh_TW/main.lang | 6 + htdocs/langs/zh_TW/other.lang | 6 +- htdocs/langs/zh_TW/products.lang | 4 +- htdocs/langs/zh_TW/projects.lang | 8 +- htdocs/langs/zh_TW/receiptprinter.lang | 32 ++ htdocs/langs/zh_TW/stripe.lang | 3 +- htdocs/langs/zh_TW/users.lang | 4 +- htdocs/langs/zh_TW/website.lang | 8 +- 982 files changed, 8440 insertions(+), 3139 deletions(-) diff --git a/htdocs/langs/ar_SA/admin.lang b/htdocs/langs/ar_SA/admin.lang index 1627eeacfd9..c316fb0b4a3 100644 --- a/htdocs/langs/ar_SA/admin.lang +++ b/htdocs/langs/ar_SA/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=ملاحظة : لم يتم وضح حد في إعدادات الـ PHP الخاص بك MaxSizeForUploadedFiles=الحجم الأقصى لتحميل الملفات (0 لمنع أي تحميل) UseCaptchaCode=إستخدم الرسوم كرمز (كابتشا) في صفحة الدخول -AntiVirusCommand= المسار الكامل لبرنامج مكافحة الفيروسات -AntiVirusCommandExample= مثل ل ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe +AntiVirusCommand=المسار الكامل لبرنامج مكافحة الفيروسات +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= المزيد من الصلاحيات بإستخدام command line -AntiVirusParamExample= مثال على ClamWin:--database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=نموذج وحدة المحاسبة UserSetup=إعداد مستخدم الإدارة MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=الميزة معلطة في العرض التجريبي 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. OnlyActiveElementsAreShown=فقط العناصر من <a href="%s">النماذج المفعلة </a> سوف تظهر. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=انظر إعداد وحدة٪ الصورة Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=العنوان +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=على تفعيل @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=الوحدة الخارجية - المثبتة في الدليل %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=الحرف الأول الباركود الشامل أو إعادة للمنتجات أو الخدمات CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=المناطق DictionaryCountry=الدول DictionaryCurrency=العملات -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=أسعار الضريبة على القيمة المضافة أو ضريبة المبيعات الاسعار @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=معدل LocalTax1IsNotUsed=لا تستخدم الضريبة الثانية LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=افتراضيا IRPF المقترحة هي 0. نهاية الحكم. LocalTax2IsUsedExampleES=في اسبانيا ، لحسابهم الخاص والمهنيين المستقلين الذين يقدمون الخدمات والشركات الذين اختاروا النظام الضريبي من وحدات. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=تقارير عن الضرائب المحلية CalcLocaltax1=مبيعات - مشتريات CalcLocaltax1Desc=وتحسب تقارير الضرائب المحلية مع الفرق بين localtaxes المبيعات والمشتريات localtaxes @@ -1018,6 +1025,7 @@ CalcLocaltax2=مشتريات CalcLocaltax2Desc=تقارير الضرائب المحلية هي مجموعه localtaxes المشتريات CalcLocaltax3=مبيعات CalcLocaltax3Desc=تقارير الضرائب المحلية هي مجموعه localtaxes المبيعات +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=العلامة التي يستخدمها التقصير إذا لم يمكن العثور على ترجمة للقانون LabelOnDocuments=علامة على وثائق LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=مراجعة الحسابات الأحداث الأمنية Audit=المراجعة @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=نظام المعلومات المتنوعة المعلومات التقنية تحصل في قراءة فقط وواضحة للمشرفين فقط. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=شاهد الإعداد وحدة UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM وحدة الإعداد ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=فاتورة نماذج الوثائق BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=قوة تاريخ الفاتورة تاريخ المصادقة على -SuggestedPaymentModesIfNotDefinedInInvoice=واقترح على طريقة دفع الفواتير تلقائيا اذا لم تعرف للفاتورة +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=نص حر على الفواتير @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=وحدة إعداد مقترحات تجارية ProposalsNumberingModules=اقتراح نماذج تجارية الترقيم ProposalsPDFModules=اقتراح نماذج الوثائق التجارية -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=نص تجارية حرة على مقترحات WatermarkOnDraftProposal=العلامة المائية على مشاريع المقترحات التجارية (أي إذا فارغ) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=اسأل عن وجهة الحساب المصرفي للاقتراح @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=طلب مستودع المصدر لأمر ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=أوامر الترقيم نمائط OrdersModelModule=وثائق من أجل النماذج @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/ar_SA/bills.lang b/htdocs/langs/ar_SA/bills.lang index 5060a169ae7..9625e9a54b6 100644 --- a/htdocs/langs/ar_SA/bills.lang +++ b/htdocs/langs/ar_SA/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=فواتير الموردين Payment=دفعة -PaymentBack=الدفع مرة أخرى -CustomerInvoicePaymentBack=دفع العودة +PaymentBack=رد +CustomerInvoicePaymentBack=رد Payments=المدفوعات PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=تسديدها DeletePayment=حذف الدفعة ConfirmDeletePayment=هل انت متأكد انك ترغب في حذف هذه الدفعة؟ -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=المدفوعات المستلمة @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=دفع ToMakePaymentBack=تسديد ListOfYourUnpaidInvoices=قائمة الفواتير غير المسددة NoteListOfYourUnpaidInvoices=ملاحظة: تحتوي هذه القائمة على الفواتير الوحيدة لأطراف ثالثة ترتبط لك كممثل بيع. -RevenueStamp=طوابع الواردات +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=عودة عدد مع الشكل syymm NNNN عن الفواتير القياسية و٪ syymm-NNNN لتلاحظ الائتمان حيث هو YY العام٪، مم هو الشهر وnnnn هو تسلسل مع أي انقطاع وعدم العودة إلى 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=تم حذف الفاتورة +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/ar_SA/blockedlog.lang b/htdocs/langs/ar_SA/blockedlog.lang index 89228fd0f71..5f6dd79f6f5 100644 --- a/htdocs/langs/ar_SA/blockedlog.lang +++ b/htdocs/langs/ar_SA/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/ar_SA/cashdesk.lang b/htdocs/langs/ar_SA/cashdesk.lang index dd6f62c3c21..d8014d393ab 100644 --- a/htdocs/langs/ar_SA/cashdesk.lang +++ b/htdocs/langs/ar_SA/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=إضافة هذا العنصر RestartSelling=التراجع عن بيع SellFinished=اكتمل البيع PrintTicket=طباعة التذكرة +SendTicket=Send ticket NoProductFound=لم يتم العثور على عناصر ProductFound=تم العثور على المنتج NoArticle=لا يوجد عناصر @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=ملاحظة : من الفواتير Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=المتصفح BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/ar_SA/companies.lang b/htdocs/langs/ar_SA/companies.lang index 53e87a2729f..ad09ad636f5 100644 --- a/htdocs/langs/ar_SA/companies.lang +++ b/htdocs/langs/ar_SA/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=شركة "٪ ل" حذفها من قاعدة البيانات. ListOfContacts=قائمة الاتصالات ListOfContactsAddresses=قائمة الاتصالات ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=وتظهر الاتصال ContactsAllShort=جميع (بدون فلتر) ContactType=نوع الاتصال @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/ar_SA/compta.lang b/htdocs/langs/ar_SA/compta.lang index 49d7e5054c9..7eb313a3d83 100644 --- a/htdocs/langs/ar_SA/compta.lang +++ b/htdocs/langs/ar_SA/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- المبالغ المبينة لمع جميع الضرائب المدرجة -RulesResultDue=- وتتضمن الفواتير غير المسددة، والنفقات، ضريبة القيمة المضافة، والتبرعات سواء كانت بأجر أو لا. هو أيضا يتضمن الرواتب المدفوعة. <br> - وهو يستند إلى تاريخ المصادقة على الفواتير وضريبة القيمة المضافة وعلى الموعد المحدد للنفقات. لرواتب محددة مع وحدة الراتب، يتم استخدام قيمة تاريخ الدفع. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- ويشمل المدفوعات الحقيقية المحرز في الفواتير والمصاريف والضريبة على القيمة المضافة والرواتب. <br> - لأنه يقوم على مواعيد دفع الفواتير والمصاريف والضريبة على القيمة المضافة والرواتب. تاريخ التبرع للتبرع. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=التسمية قصيرة +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/ar_SA/errors.lang b/htdocs/langs/ar_SA/errors.lang index 6810547c909..c1cfd43814f 100644 --- a/htdocs/langs/ar_SA/errors.lang +++ b/htdocs/langs/ar_SA/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=الملف لم تتلق تماما بواسطة الخادم. ErrorNoTmpDir=%s directy مؤقتة لا وجود. ErrorUploadBlockedByAddon=حظر حمل من قبل البرنامج المساعد بى اباتشي /. ErrorFileSizeTooLarge=حجم الملف كبير جدا. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=طويل جدا بالنسبة نوع INT (%s أرقام كحد أقصى) حجم ErrorSizeTooLongForVarcharType=وقتا طويلا لنوع السلسلة (%s حرف كحد أقصى) حجم ErrorNoValueForSelectType=يرجى ملء قيمة لقائمة مختارة @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=تم تعيين كلمة مرور لهذا العضو. ومع ذلك، تم إنشاء أي حساب المستخدم. لذلك يتم تخزين كلمة المرور هذه ولكن لا يمكن استخدامها للدخول إلى Dolibarr. ويمكن استخدامه من قبل وحدة / واجهة خارجية ولكن إذا كنت لا تحتاج إلى تعريف أي تسجيل دخول أو كلمة المرور لأحد أفراد، يمكنك تعطيل خيار "إدارة تسجيل دخول لكل عضو" من إعداد وحدة الأعضاء. إذا كنت بحاجة إلى إدارة تسجيل الدخول ولكن لا تحتاج إلى أي كلمة المرور، يمكنك الحفاظ على هذا الحقل فارغا لتجنب هذا التحذير. ملاحظة: يمكن أيضا أن تستخدم البريد الإلكتروني لتسجيل الدخول إذا تم ربط عضو إلى المستخدم. diff --git a/htdocs/langs/ar_SA/install.lang b/htdocs/langs/ar_SA/install.lang index 57d86ff2a83..60fe91b918f 100644 --- a/htdocs/langs/ar_SA/install.lang +++ b/htdocs/langs/ar_SA/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=تم إعداد الجلسة الزمنية للذاكرة في PHP الى <b>%s</b> . من المفترض ان تكون كافية. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=دليل ٪ ق لا يوجد. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/ar_SA/link.lang b/htdocs/langs/ar_SA/link.lang index dd19eb683a0..18b8a80fecb 100644 --- a/htdocs/langs/ar_SA/link.lang +++ b/htdocs/langs/ar_SA/link.lang @@ -7,4 +7,5 @@ ErrorFileNotLinked=لا يمكن ربط الملف LinkRemoved= الرابط%sتم إزالتة ErrorFailedToDeleteLink= فشل في إزالة الرابط '<b> %s </b>' ErrorFailedToUpdateLink= فشل تحديث الرابط '<b> %s </b>' -URLToLink=الرابط لربطه +URLToLink=عنوان URL للربط +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/ar_SA/mails.lang b/htdocs/langs/ar_SA/mails.lang index 66d53f91fb3..0f3ece4cca0 100644 --- a/htdocs/langs/ar_SA/mails.lang +++ b/htdocs/langs/ar_SA/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=معلومات ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/ar_SA/main.lang b/htdocs/langs/ar_SA/main.lang index acdedfeb1e0..b0df25d3f55 100644 --- a/htdocs/langs/ar_SA/main.lang +++ b/htdocs/langs/ar_SA/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=اختبار الاتصال ToClone=استنساخ +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=لا توجد بيانات لاستنساخ محددة. Of=من @@ -829,6 +830,8 @@ Gender=جنس Genderman=رجل Genderwoman=امرأة ViewList=عرض القائمة +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=إلزامي Hello=أهلا GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/ar_SA/other.lang b/htdocs/langs/ar_SA/other.lang index b266e30cab7..50522e619b0 100644 --- a/htdocs/langs/ar_SA/other.lang +++ b/htdocs/langs/ar_SA/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=العنوان WEBSITE_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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/ar_SA/products.lang b/htdocs/langs/ar_SA/products.lang index e35fb90932a..84088913fff 100644 --- a/htdocs/langs/ar_SA/products.lang +++ b/htdocs/langs/ar_SA/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=الحرف الأول الباركود الشامل MassBarcodeInitDesc=هذه الصفحة يمكن استخدامها لتهيئة الباركود على الكائنات التي لا يكون الباركود تعريف. تحقق قبل أن الإعداد وحدة الباركود كاملة. ProductAccountancyBuyCode=كود المحاسبة (شراء) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=كود المحاسبة (بيع) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=بلد المنشأ -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=التسمية قصيرة Unit=وحدة p=ش. diff --git a/htdocs/langs/ar_SA/projects.lang b/htdocs/langs/ar_SA/projects.lang index 1705bce206c..e92384e6dc2 100644 --- a/htdocs/langs/ar_SA/projects.lang +++ b/htdocs/langs/ar_SA/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=وقت ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=عبء العمل المخطط لها PlannedWorkloadShort=عبء العمل ProjectReferers=Related items ProjectMustBeValidatedFirst=يجب التحقق من صحة المشروع أولا -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=إدخال يوميا InputPerWeek=مساهمة في الأسبوع InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=فاتورة جديدة OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/ar_SA/receiptprinter.lang b/htdocs/langs/ar_SA/receiptprinter.lang index 5fec542953f..ddc0c867bbb 100644 --- a/htdocs/langs/ar_SA/receiptprinter.lang +++ b/htdocs/langs/ar_SA/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=طابعة وهمية CONNECTOR_NETWORK_PRINT=طابعة الشبكة CONNECTOR_FILE_PRINT=الطابعة المحلية CONNECTOR_WINDOWS_PRINT=طابعة ويندوز المحلية +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=طابعة وهمية لاختبار، لا يفعل شيئا CONNECTOR_NETWORK_PRINT_HELP=10.xxx:9100 CONNECTOR_FILE_PRINT_HELP=/ ديف / USB / lp0، / ديف / USB / LP1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1، COM1، فلان: // FooUser: السر @ الكمبيوتر / مجموعة العمل / استلام الطابعة +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=ملف التعريف الافتراضي PROFILE_SIMPLE=ملف التعريف بسيط PROFILE_EPOSTEP=ملحمة تيب الملف الشخصي @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=فاتورة المرجع +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=عاصمة +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/ar_SA/stripe.lang b/htdocs/langs/ar_SA/stripe.lang index 421ef62e1f8..0fac9d2d553 100644 --- a/htdocs/langs/ar_SA/stripe.lang +++ b/htdocs/langs/ar_SA/stripe.lang @@ -32,6 +32,7 @@ VendorName=اسم البائع CSSUrlForPaymentForm=عزيزي ورقة النمط المغلق للنموذج الدفع NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/ar_SA/users.lang b/htdocs/langs/ar_SA/users.lang index 6b8ad486f97..2d79e755885 100644 --- a/htdocs/langs/ar_SA/users.lang +++ b/htdocs/langs/ar_SA/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=النطاق المستخدم ق ٪ Reactivate=تنشيط CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=منح إذن لأن الموروث من واحد من المستخدم. Inherited=موروث UserWillBeInternalUser=وسوف يكون المستخدم إنشاء مستخدم داخلية (لأنه لا يرتبط طرف ثالث خاص) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/ar_SA/website.lang b/htdocs/langs/ar_SA/website.lang index 07bfd981cf9..4def736100c 100644 --- a/htdocs/langs/ar_SA/website.lang +++ b/htdocs/langs/ar_SA/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/bg_BG/admin.lang b/htdocs/langs/bg_BG/admin.lang index dfa35253ad2..aff61d22ae5 100644 --- a/htdocs/langs/bg_BG/admin.lang +++ b/htdocs/langs/bg_BG/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Забележка: <b> Вашата </b> PHP конфи NoMaxSizeByPHPLimit=Забележка: Не е зададено ограничение във вашата PHP конфигурация MaxSizeForUploadedFiles=Максимален размер за качени файлове (0 за забрана на качването) UseCaptchaCode=Използване на графичен код (CAPTCHA) на страницата за вход -AntiVirusCommand= Пълен път към антивирусна команда -AntiVirusCommandExample= Пример за ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe <br> Пример за ClamAv: /usr/bin/clamscan +AntiVirusCommand=Пълен път към антивирусна команда +AntiVirusCommandExample=Пример за ClamAv Daemon (изисква clamav-daemon): /usr/bin/clamdscan<br>Пример за ClamWin (много забавящ): C:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Още параметри в командния ред -AntiVirusParamExample= Пример за ClamWin: --database="C:\\Programm Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Пример за ClamAv Daemon: --fdpass<br>Пример за ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Настройка на модул Счетоводство UserSetup=Настройка за управление на потребители MultiCurrencySetup=Настройки на различни валути @@ -136,7 +136,7 @@ Boxes=Джаджи MaxNbOfLinesForBoxes=Максимален брой редове за джаджи AllWidgetsWereEnabled=Всички налични джаджи са активирани PositionByDefault=Позиция по подразбиране -Position=Длъжност +Position=Позиция MenusDesc=Меню мениджърите определят съдържанието на двете ленти с менюта (хоризонтална и вертикална). MenusEditorDesc=Редакторът на менюто ви позволява да дефинирате потребителски менюта. Използвайте го внимателно, за да избегнете нестабилност и трайно недостъпни менюта.<br>Някои модули добавят менюта (най-вече в менюто <b>Всички</b>). Ако премахнете някои от тези менюта по погрешка, можете да ги възстановите като деактивирате и да активирате отново модула. MenuForUsers=Меню за потребители @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Функцията е деактивирана в демо FeatureAvailableOnlyOnStable=Функцията се предлага само в официални стабилни версии BoxesDesc=Джаджите са компоненти, показващи информация, които може да добавите, за да персонализирате някои страници. Можете да избирате между показване на джаджата или не, като изберете целевата страница и кликнете върху 'Активиране', или като кликнете върху кошчето, за да я деактивирате. OnlyActiveElementsAreShown=Показани са само елементи от <a href="%s">активни модули</a>. -ModulesDesc=Модулите / приложенията определят кои функции са налични в системата. Някои модули изискват да се предоставят съответните разрешения на потребителите след активиране на модула. Кликнете върху бутона за включване / изключване (в края на реда с името на модула), за да активирате / деактивирате модул / приложение. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Може да намерите още модули за изтегляне от външни уеб сайтове в интернет... ModulesDeployDesc=Ако разрешенията във вашата файлова система го позволяват, можете да използвате този инструмент за инсталиране на външен модул. След това модулът ще се вижда в раздела <strong>%s</strong>. ModulesMarketPlaces=Намиране на външно приложение / модул @@ -212,15 +212,17 @@ CompatibleUpTo=Съвместим с версия %s NotCompatible=Този модул не изглежда съвместим с Dolibarr %s (Мин. %s - Макс. %s). CompatibleAfterUpdate=Този модул изисква актуализация на вашия Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Вижте в онлайн магазина +SeeSetupOfModule=Вижте настройка на модул %s Updated=Актуализиран Nouveauté=Новост AchatTelechargement=Купуване / Изтегляне GoModuleSetupArea=За да разположите / инсталирате нов модул, отидете в секцията за настройка на модул: <a href="%s">%s</a>. DoliStoreDesc=DoliStore, официалният пазар за Dolibarr ERP / CRM външни модули DoliPartnersDesc=Списък на компаниите, които предоставят разработване по поръчка модули или функции. <br> Забележка: тъй като Dolibarr е приложение с отворен код, <i> всеки </i>, който има опит в програмирането на PHP, може да разработи модул. -WebSiteDesc=Външни уебсайтове за повече модули за добавки (които не са основни)... +WebSiteDesc=Външни уебсайтове с повече модули (които не са част от ядрото) DevelopYourModuleDesc=Някои решения за разработване на ваш собствен модул... URL=URL адрес +RelativeURL=Относителен URL адрес BoxesAvailable=Налични джаджи BoxesActivated=Активирани джаджи ActivateOn=Активирай на @@ -252,8 +254,8 @@ ExternalResources=Външни ресурси SocialNetworks=Социални мрежи ForDocumentationSeeWiki=За потребителска документация и такава за разработчици (документи, често задавани въпроси,...), <br> погледнете в Dolibarr Wiki: <br> <b><a href="%s" target="_blank">%s</a></b> ForAnswersSeeForum=За всякакви други въпроси / помощ може да използвате Dolibarr форума: <br> <b><a href="%s" target="_blank">%s</a></b> -HelpCenterDesc1=Ето някои ресурси за получаване на помощ и подкрепа с Dolibarr. -HelpCenterDesc2=Някои от тези ресурси са налице само на <b> английски </b>. +HelpCenterDesc1=Ресурси за получаване на помощ и поддръжка относно Dolibarr +HelpCenterDesc2=Някои от тези ресурси са достъпни само на <b>английски език</b> CurrentMenuHandler=Текущ манипулатор на менюто MeasuringUnit=Мерна единица LeftMargin=Лява граница @@ -425,7 +427,7 @@ ExtrafieldCheckBox=Полета за отметка ExtrafieldCheckBoxFromList=Отметки от таблица ExtrafieldLink=Връзка към обект ComputedFormula=Изчислено поле -ComputedFormulaDesc=Тук можете да въведете формула, използвайки други свойства на обекта или PHP код, за да получите динамична изчислена стойност. Можете да използвате всички съвместими с PHP формули, включително "?" условен оператор и следния глобален обект: <strong>$db, $conf, $langs, $mysoc, $user, $object</strong>. <br> <strong>ВНИМАНИЕ</strong>: Може да са налице само някои свойства на $object. Ако ви трябват свойства, които не са заредени, просто вземете сами обекта във вашата формула като във втория пример. <br> Използването на изчислено поле означава, че не можете да въведете никаква стойност от интерфейса. Също така, ако има синтактична грешка, формулата може да не върне нищо. <br><br> Пример за формула: <br> $object->id<10 ? round($object>id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($ mysoc->zip, 1, 2) <br><br> Пример за презареждане на обект <br>(($reloadedobj = new Societe ($db)) && ($reloadedobj->fetch ($obj->id ? $obj->id:($ obj->rowid ? $obj->rowid: $object->id )) > 0)) ? $reloadedobj->array_options ['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1' <br><br> Друг пример за формула за натоварване на обекта и неговия главен обект: <br> (($reloadedobj = new Task ($db)) && ($reloadedobj->fetch ($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch ($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' +ComputedFormulaDesc=Тук можете да въведете формула, използвайки други свойства на обекта или PHP код, за да получите изчислена динамична стойност. Може да използвате всички съвместими с PHP формули, включително "?" условен оператор и следния глобален обект: <strong>$db, $conf, $langs, $mysoc, $user, $object</strong>.<br><strong>Внимание</strong>: Може да са налице само някои свойства на $object. Ако ви трябват свойства, които не са заредени, просто присвоете обекта във вашата формула като във втория пример.<br>Използването на изчислено поле означава, че не може да въведете никаква стойност от интерфейса. Също така, ако има синтактична грешка, формулата може да не върне нищо.<br><br>Пример за формула:<br>$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)<br><br>Пример за презареждане на обект:<br>(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($obj->id ? $obj->id:($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'<br><br>Друг пример с формула за принудително зареждане на обект и негов главен обект:<br>(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Запазване на изчисленото поле ComputedpersistentDesc=Изчислените допълнителни полета ще бъдат съхранени в базата данни, но стойността ще бъде преизчислена само когато обектът на това поле бъде променен. Ако изчисленото поле зависи от други обекти или глобални данни, тази стойност може да е грешна!! ExtrafieldParamHelpPassword=Оставяйки това поле празно означава, че тази стойност ще бъде съхранена без криптиране (полето трябва да бъде скрито само със звезда на екрана).<br>Посочете 'auto', за да използвате правилото за криптиране по подразбиране и за да запазите паролата в базата данни (тогава четимата стойност ще бъде само хеш код и няма да има начин да извлечете реалната стойност). @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Оставете празно, за да използва DefaultLink=Връзка по подразбиране SetAsDefault=Посочете по подразбиране ValueOverwrittenByUserSetup=Внимание, тази стойност може да бъде презаписана от специфична за потребителя настройка (всеки потребител може да зададе свой собствен URL адрес) -ExternalModule=Външен модул - инсталиран в директория %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Масова баркод инициализация за контрагенти BarcodeInitForProductsOrServices=Масово въвеждане на баркод или зануляване за продукти или услуги CurrentlyNWithoutBarCode=В момента имате <strong>%s</strong> записа на <strong>%s</strong> %s без дефиниран баркод. @@ -868,8 +871,8 @@ Permission1186=Поръчка на поръчки за покупка Permission1187=Потвърждаване на получаването на поръчка за покупка Permission1188=Изтриване на поръчки за покупка Permission1190=Одобряване (второ одобрение) на поръчки за покупка -Permission1201=Получава на резултат от експортиране -Permission1202=Създаване / променяне на експорт на данни +Permission1201=Получаване на резултат с експортирани данни +Permission1202=Създаване / променяне на експортирани данни Permission1231=Преглед на фактури за доставка Permission1232=Създаване / променяне на фактури за доставка Permission1233=Валидиране на фактури за доставка @@ -947,7 +950,7 @@ DictionaryCanton=Области / Региони DictionaryRegion=Региони DictionaryCountry=Държави DictionaryCurrency=Валути -DictionaryCivility=Обръщения +DictionaryCivility=Honorific titles DictionaryActions=Видове събития в календара DictionarySocialContributions=Видове социални или фискални данъци DictionaryVAT=Ставки на ДДС или Данък върху продажби @@ -988,6 +991,7 @@ VATIsNotUsedDesc=По подразбиране предложената став VATIsUsedExampleFR=Във Франция това означава дружества или организации, които имат реална фискална система (опростена реална или нормална реална). Система, в която е деклариран ДДС. VATIsNotUsedExampleFR=Във Франция това означава асоциации, които не декларират данък върху продажбите или компании, организации, или свободни професии, които са избрали фискалната система за микропредприятия (данък върху продажбите във франчайз) и са платили франчайз данък върху продажбите без декларация за данък върху продажбите. Този избор ще покаже информация за "Неприложим данък върху продажбите - art-293B от CGI" във фактурите. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Ставка LocalTax1IsNotUsed=Да не се използва втори данък LocalTax1IsUsedDesc=Използване на втори тип данък (различен от първия) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=Ставката на IRPF по подразбиране LocalTax2IsNotUsedDescES=По подразбиране предложената IRPF е 0. Край на правилото. LocalTax2IsUsedExampleES=В Испания, професионалистите на свободна практика и независимите професионалисти, които предоставят услуги и фирми, които са избрали данъчната система от модули. LocalTax2IsNotUsedExampleES=В Испания те са предприятия, които не подлежат на данъчна система от модули. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Справки за местни данъци CalcLocaltax1=Продажби - Покупки CalcLocaltax1Desc=Справките за местни данъци се изчисляват с разликата между размера местни данъци от продажби и размера местни данъци от покупки. @@ -1018,6 +1025,7 @@ CalcLocaltax2=Покупки CalcLocaltax2Desc=Справки за местни данъци се определят, чрез размера на местни данъци от общи покупки CalcLocaltax3=Продажби CalcLocaltax3Desc=Справки за местни данъци се определят, чрез размера на местни данъци от общи продажби +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Име, използвано по подразбиране, ако не може да бъде намерен превод за кода LabelOnDocuments=Текст в документи LabelOrTranslationKey=Име или ключ за превод @@ -1091,11 +1099,11 @@ Alerts=Сигнали DelaysOfToleranceBeforeWarning=Закъснение преди показване на предупредителен сигнал за: DelaysOfToleranceDesc=Задаване на закъснение, преди на екрана да се покаже иконата за предупреждение %s за закъснелия елемент. Delays_MAIN_DELAY_ACTIONS_TODO=Планирани събития (събития в календара), които не са завършени -Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Проект, който не е затворен навреме +Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Проект, който не е приключен навреме Delays_MAIN_DELAY_TASKS_TODO=Планирана задача (задача от проект), която не е завършена Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Поръчка, която не е обработена Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Поръчка за покупка, която не е обработена -Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Предложение, което не е затворено +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Предложение, което не е приключено Delays_MAIN_DELAY_PROPALS_TO_BILL=Предложение, което не е фактурирано Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Услуга, която не е активирана Delays_MAIN_DELAY_RUNNING_SERVICES=Услуга, която е изтекла @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Разходен отчет, който не е Delays_MAIN_DELAY_HOLIDAYS=Молби за отпуск за одобрение SetupDescription1=Преди да започнете да използвате Dolibarr трябва да се дефинират някои първоначални параметри и да се активират / конфигурират някои модули. SetupDescription2=Следните две секции са задължителни (първите две подменюта в менюто Настройка): -SetupDescription3=<a href="%s">%s ->%s</a> <br> Основни параметри, използвани за персонализиране на поведението по подразбиране на вашето приложение (например за функции, свързани със държавата). -SetupDescription4=<a href="%s">%s ->%s</a> <br> Този софтуер е пакет от много модули / приложения, всички повече или по-малко независими. Модулите, съответстващи на вашите нужди, трябва да бъдат активирани и конфигурирани. В менютата се добавят нови елементи / опции с активирането на модул. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Основни параметри, използвани за персонализиране на поведението по подразбиране на вашата система (например за функции, свързани с държавата). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>Този софтуер е пакет от много модули / приложения. Модулите, свързани с вашите нужди, трябва да бъдат активирани и конфигурирани. С активирането на тези модули ще се появят нови менюта. SetupDescription5=Менюто "Други настройки" управлява допълнителни параметри. LogEvents=Събития за проверка на сигурността Audit=Проверка @@ -1128,7 +1136,7 @@ LogEventDesc=Активиране на регистрирането за кон AreaForAdminOnly=Параметрите за настройка могат да се задават само от <b>Администратори</b>. SystemInfoDesc=Системната информация е различна техническа информация, която получавате в режим само за четене и е видима само за администратори. SystemAreaForAdminOnly=Тази секция е достъпна само за администратори. Потребителските права в Dolibarr не могат да променят това ограничение. -CompanyFundationDesc=Редактирайте информацията за фирмата / обекта. Кликнете върху бутона '%s' в долната част на страницата. +CompanyFundationDesc=Редактирайте информацията за вашата фирма / организация. Кликнете върху бутона '%s' в долната част на страницата, когато сте готови. AccountantDesc=Ако имате външен счетоводител, тук може да редактирате неговата информация. AccountantFileNumber=Счетоводен код DisplayDesc=Тук могат да се променят параметрите, които влияят на външния вид и поведението на Dolibarr. @@ -1197,7 +1205,7 @@ MAIN_PROXY_PASS=Прокси сървър: Парола DefineHereComplementaryAttributes=Определете тук всички допълнителни / персонализирани атрибути, които искате да бъдат включени за: %s ExtraFields=Допълнителни атрибути ExtraFieldsLines=Допълнителни атрибути (редове) -ExtraFieldsLinesRec=Допълнителни атрибути (шаблонни редове на фактури) +ExtraFieldsLinesRec=Допълнителни атрибути (редове в шаблонни фактури) ExtraFieldsSupplierOrdersLines=Допълнителни атрибути (редове в поръчки за покупка) ExtraFieldsSupplierInvoicesLines=Допълнителни атрибути (редове във фактури за покупка) ExtraFieldsThirdParties=Допълнителни атрибути (контрагенти) @@ -1205,7 +1213,7 @@ ExtraFieldsContacts=Допълнителни атрибути (контакти ExtraFieldsMember=Допълнителни атрибути (член) ExtraFieldsMemberType=Допълнителни атрибути (тип член) ExtraFieldsCustomerInvoices=Допълнителни атрибути (фактури за продажба) -ExtraFieldsCustomerInvoicesRec=Допълнителни атрибути (шаблони на фактури) +ExtraFieldsCustomerInvoicesRec=Допълнителни атрибути (шаблонни фактури) ExtraFieldsSupplierOrders=Допълнителни атрибути (поръчки за покупка) ExtraFieldsSupplierInvoices=Допълнителни атрибути (фактури за покупка) ExtraFieldsProject=Допълнителни атрибути (проекти) @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Правила за генериране и валид DisableForgetPasswordLinkOnLogonPage=Да не се показва връзката "Забравена парола" на страницата за вход UsersSetup=Настройка на модула за потребители UserMailRequired=Необходим е имейл при създаване на нов потребител +UsersDocModules=Шаблони на документи за потребителски профил +GroupsDocModules=Шаблони на документи за групов профил ##### HRM setup ##### HRMSetup=Настройка на модула ЧР ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Шаблони на документи за фактури BillsPDFModulesAccordindToInvoiceType=Модели на фактури в зависимост от вида на фактурата PaymentsPDFModules=Шаблони на платежни документи ForceInvoiceDate=Принуждаване на датата на фактурата да се синхронизира с датата на валидиране -SuggestedPaymentModesIfNotDefinedInInvoice=Предлагане на плащания по подразбиране, ако не са определени такива във фактурата +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Да се предлага плащане по сметка SuggestPaymentByChequeToAddress=Да се предлага плащане с чек FreeLegalTextOnInvoices=Свободен текст във фактури @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Настройка на плащания към доста PropalSetup=Настройка на модула за търговски предложения ProposalsNumberingModules=Модели за номериране на търговски предложения ProposalsPDFModules=Шаблони на документи за търговски предложения -SuggestedPaymentModesIfNotDefinedInProposal=Препоръчителен начин на плащане по подразбиране за търговско предложение, ако не е посочен +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Свободен текст в търговски предложения WatermarkOnDraftProposal=Воден знак върху чернови търговски предложения (няма, ако е празно) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Питане за данни на банкова сметка в търговски предложения @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Питане за изходен склад ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Да се пита за детайли на банковата сметка в поръчките за покупка ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Настройка на модул Поръчки за продажба OrdersNumberingModules=Модели за номериране на поръчки OrdersModelModule=Шаблони на документи за поръчки @@ -1618,7 +1629,7 @@ HideUnauthorizedMenu= Скриване на неоторизирани (сиви DetailId=Идентификатор на меню DetailMenuHandler=Манипулатор на меню, в който да се покаже новото меню DetailMenuModule=Име на модула, ако входните данни на менюто идват от модул -DetailType=Тип меню (горе или вляво) +DetailType=Тип меню (горно или ляво) DetailTitre=Име на меню или име на код за превод DetailUrl=URL адрес, където менюто ви изпратя (Absolute на URL линк или външна връзка с http://) DetailEnabled=Условие за показване или не на вписване @@ -1720,7 +1731,7 @@ MultiCompanySetup=Настройка на модула за няколко фи ##### Suppliers ##### SuppliersSetup=Настройка на модул Доставчици SuppliersCommandModel=Пълен шаблон на поръчка за покупка -SuppliersCommandModelMuscadet=Пълен шаблон на поръчка за покупка (стара реализация на шаблона Cornas) +SuppliersCommandModelMuscadet=Пълен шаблон на поръчка за покупка SuppliersInvoiceModel=Пълен шаблон на фактура за доставка SuppliersInvoiceNumberingModel=Модели за номериране на фактури за доставка IfSetToYesDontForgetPermission=Ако е настроена различна от нула стойност, не забравяйте да предоставите права на групите или потребителите за второ одобрение @@ -1834,8 +1845,8 @@ ByDefaultInList=Показване по подразбиране в списъч YouUseLastStableVersion=Използвате последната стабилна версия TitleExampleForMajorRelease=Пример за съобщение, което може да използвате, за да обявите това главно издание (не се колебайте да го използвате на уебсайтовете си) TitleExampleForMaintenanceRelease=Пример за съобщение, което може да използвате, за да обявите това издание за поддръжка (не се колебайте да го използвате на уебсайтовете си) -ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s е наличен. Версия %s е главна версия с много нови функции както за потребители, така и за разработчици. Може да го изтеглите от раздела за изтегляне на портала https://www.dolibarr.org (поддиректория Стабилни версии). Може да прочетете <a href="https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog">ChangeLog</a> за пълен списък с промените. -ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s е наличен. Версията %s е поддържаща версия, така че съдържа само корекции на грешки. Препоръчваме на всички потребители да актуализират до тази версия. Изданието за поддръжка не въвежда нови функции или промени в базата данни. Може да го изтеглите от раздела за изтегляне на портала https://www.dolibarr.org (поддиректория Стабилни версии). Може да прочетете <a href="https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog">ChangeLog</a> за пълен списък с промените. +ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s е наличен. Версия %s е главна версия с много нови функции както за потребители, така и за разработчици. Може да се изтегли от раздела за изтегляне в портала https://www.dolibarr.org (подраздел Стабилни версии). Прочетете <a href="https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog">ChangeLog</a> за пълен списък с промените. +ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s е наличен. Версия %s е поддържаща версия, така че съдържа само корекции на грешки. Препоръчваме на всички потребители да актуализират до тази версия. Изданието за поддръжка не въвежда нови функции или промени в базата данни. Може да се изтегли от раздела за изтегляне в портала https://www.dolibarr.org (подраздел Стабилни версии). Прочетете <a href="https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog">ChangeLog</a> за пълен списък с промените. MultiPriceRuleDesc=Когато опцията "Няколко нива на цени за продукт / услуга" е активирана може да определите различни цени (по едно за ниво цена) за всеки продукт. За да спестите време тук може да въведете правило за автоматично изчисляване на цена за всяко ниво на базата на цената от първото ниво, така че ще трябва да въведете само цена за първото ниво за всеки продукт. Тази страница е предназначена да ви спести време, но е полезна само ако цените за всяко ниво са относителни към първо ниво. В повечето случаи може да игнорирате тази страница. ModelModulesProduct=Шаблони за продуктови документи ToGenerateCodeDefineAutomaticRuleFirst=За да можете автоматично да генерирате кодове, първо трябва да определите мениджър, за да дефинирате автоматично номера на баркода. @@ -1884,9 +1895,9 @@ RemoveSpecialChars=Премахване на специални символи COMPANY_AQUARIUM_CLEAN_REGEX=Regex филтър за изчистване на стойността (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex филтър за чиста стойност (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Дублирането не е позволено -GDPRContact=Длъжностно лице по защита на данните (DPO, Защита на лични данни или GDPR контакт) +GDPRContact=Длъжностно лице по защита на данните (DPO, защита на лични данни или GDPR контакт) GDPRContactDesc=Ако съхранявате данни за европейски компании / граждани, тук може да посочите контакт, който е отговорен за Общия регламент за защита на данните /GDPR/ -HelpOnTooltip=Помощен текст, който да се показва в подсказка +HelpOnTooltip=Подсказка HelpOnTooltipDesc=Поставете тук текст или ключ за превод, който да се покаже в подсказка, когато това поле се появи във формуляр YouCanDeleteFileOnServerWith=Може да изтриете този файл от сървъра с команда в терминала: <br> %s ChartLoaded=Сметкопланът е зареден @@ -1923,7 +1934,7 @@ LoadThirdPartyFromNameOrCreate=Зареждане на името на конт WithDolTrackingID=Намерена е Dolibarr референция в идентификационния номер на съобщението WithoutDolTrackingID=Не е намерена Dolibarr референция в идентификационния номер на съобщението FormatZip=Zip -MainMenuCode=Код на менюто (главно меню) +MainMenuCode=Код на меню (главно меню) ECMAutoTree=Показване на автоматично ECM дърво OperationParamDesc=Определете стойности, които да използвате за действие или как да извличате стойности. Например: <br> objproperty1=SET:abc <br> objproperty1=SET:value with replacement of __objproperty1__ <br> objproperty3=SETIFEMPTY:abc <br> objproperty4=EXTRACT:HEADER:X-Myheaderkey.*[^\\s]+(*). <br> options_myextrafield=EXTRACT:SUBJECT:([^\\s]*) <br> object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*) <br><br> Използвайте символа ; като разделител за извличане или задаване на няколко свойства. OpeningHours=Работно време @@ -1958,7 +1969,8 @@ DEBUGBAR_LOGS_LINES_NUMBER=Брой последни редове на журн WarningValueHigherSlowsDramaticalyOutput=Внимание, по-високите стойности забавят драматично производителността ModuleActivated=Модул %s е активиран и забавя интерфейса EXPORTS_SHARE_MODELS=Моделите за експортиране се споделят с всички -ExportSetup=Настройка на модула Експортиране на данни +ExportSetup=Настройка на модула за експортиране на данни +ImportSetup=Настройка на модула за импортиране на данни InstanceUniqueID=Уникален идентификатор на инстанцията SmallerThan=По-малък от LargerThan=По-голям от @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Направете анонимен Ping '+1' до сървъ FeatureNotAvailableWithReceptionModule=Функцията не е налична, когато е активиран модул Приемане EmailTemplate=Шаблон за имейл EMailsWillHaveMessageID=Имейлите ще имат етикет „Референции“, отговарящ на този синтаксис -PDF_USE_ALSO_LANGUAGE_CODE=Ако искате да имате някакво текстово заглавие във вашия PDF файл, дублиран на 2 различни езика в един и същ генериран PDF файл, трябва да зададете тук този втори език, така генерираният PDF файл ще съдържа 2 различни езика на една и съща страница, избраният при генериране на PDF и този (само няколко PDF шаблона поддържат това). Запазете празно за един език в PDF. +PDF_USE_ALSO_LANGUAGE_CODE=Ако искате да имате някои текстове във вашия PDF файл, дублирани на 2 различни езика в един и същ генериран PDF файл, трябва да посочите тук този втори език, така че генерираният PDF файл да съдържа 2 различни езика на една и съща страница, избраният при генериране на PDF и този (само няколко PDF шаблона поддържат това). Запазете празно за един език в PDF файла. FafaIconSocialNetworksDesc=Въведете тук кода за FontAwesome икона. Ако не знаете какво е FontAwesome, може да използвате стандартната стойност fa-address book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/bg_BG/bills.lang b/htdocs/langs/bg_BG/bills.lang index 1d906bde056..6b3ccb21875 100644 --- a/htdocs/langs/bg_BG/bills.lang +++ b/htdocs/langs/bg_BG/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Фактури за доставка SupplierBill=Фактура за доставка SupplierBills=Фактури за доставка Payment=Плащане -PaymentBack=Обратно плащане -CustomerInvoicePaymentBack=Обратно плащане +PaymentBack=Възстановяване +CustomerInvoicePaymentBack=Възстановяване Payments=Плащания PaymentsBack=Възстановявания paymentInInvoiceCurrency=във валута на фактури PaidBack=Платено обратно DeletePayment=Изтриване на плащане ConfirmDeletePayment=Сигурни ли сте че, искате да изтриете това плащане? -ConfirmConvertToReduc=Искате ли да конвертирате това %s в абсолютна отстъпка? +ConfirmConvertToReduc=Искате ли да конвертирате товa %s в наличен кредит? ConfirmConvertToReduc2=Сумата ще бъде запазена измежду всички отстъпки и може да се използва като отстъпка за текуща или бъдеща фактура за този клиент. -ConfirmConvertToReducSupplier=Искате ли да конвертирате това %s в абсолютна отстъпка? +ConfirmConvertToReducSupplier=Искате ли да конвертирате товa %s в наличен кредит? ConfirmConvertToReducSupplier2=Сумата ще бъде запазена измежду всички отстъпки и може да се използва като отстъпка за текуща или бъдеща фактура за този доставчик. SupplierPayments=Плащания към доставчици ReceivedPayments=Получени плащания @@ -205,10 +205,10 @@ ConfirmValidatePayment=Сигурни ли сте, че искате да вал ValidateBill=Валидиране на фактура UnvalidateBill=Повторно отваряне на фактура NumberOfBills=Брой фактури -NumberOfBillsByMonth=Брой фактури на месец +NumberOfBillsByMonth=Брой фактури за месец AmountOfBills=Сума на фактури AmountOfBillsHT=Сума на фактури (без ДДС) -AmountOfBillsByMonthHT=Сума на фактури по месец (без ДДС) +AmountOfBillsByMonthHT=Стойност на фактури за месец (без ДДС) ShowSocialContribution=Показване на социален / фискален данък ShowBill=Показване на фактура ShowInvoice=Показване на фактура @@ -219,7 +219,10 @@ ShowInvoiceSituation=Показване на ситуационна фактур UseSituationInvoices=Разрешаване на ситуационна фактура UseSituationInvoicesCreditNote=Разрешаване на кредитно известие за ситуационна фактура Retainedwarranty=Запазена гаранция +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Процент по подразбиране за запазена гаранция +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=Да се плати на %s toPayOn=да се плати на %s RetainedWarranty=Запазена гаранция @@ -509,11 +512,11 @@ ToMakePayment=Плащане ToMakePaymentBack=Обратно плащане ListOfYourUnpaidInvoices=Списък с неплатени фактури NoteListOfYourUnpaidInvoices=Забележка: Този списък съдържа само фактури за контрагенти, с които сте свързан като търговски представител. -RevenueStamp=Приходен печат (бандерол) +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Тази опция е налична само при създаване на фактура от раздел "Клиент" на контрагента YouMustCreateInvoiceFromSupplierThird=Тази опция е налична само при създаването на фактура от раздел "Доставчик" на контрагента YouMustCreateStandardInvoiceFirstDesc=Първо трябва да създадете стандартна фактура и да я конвертирате в „шаблон“, за да създадете нова шаблонна фактура -PDFCrabeDescription=PDF шаблон за фактура. Пълен шаблон за фактура (стара реализация на шаблон Sponge) +PDFCrabeDescription=PDF шаблон за фактура. Пълен шаблон за фактура PDFSpongeDescription=PDF шаблон за фактура. Пълен шаблон за фактура PDFCrevetteDescription=PDF шаблон за фактура. Пълен шаблон за ситуационни фактури TerreNumRefModelDesc1=Връща номер с формат %syymm-nnnn за стандартни фактури и %syymm-nnnn за кредитни бележки, където yy е година, mm е месец и nnnn е последователност без прекъсване и няма връщане към 0 @@ -550,7 +553,7 @@ DisabledBecauseFinal=Тази ситуация е финална. situationInvoiceShortcode_AS=КАТО situationInvoiceShortcode_S=С CantBeLessThanMinPercent=Напредъкът не може да бъде по-малък от стойността в предишната ситуация. -NoSituations=Няма отворени ситуации +NoSituations=Няма активни ситуации InvoiceSituationLast=Последна и обща фактура PDFCrevetteSituationNumber=Ситуация №%s PDFCrevetteSituationInvoiceLineDecompte=Ситуационна фактура - Преброяване @@ -575,3 +578,4 @@ AutoFillDateTo=Посочете крайна дата на услуга в за AutoFillDateToShort=Задаване на крайна дата MaxNumberOfGenerationReached=Максималният брой генерирани документи е достигнат BILL_DELETEInDolibarr=Фактурата е изтрита +BILL_SUPPLIER_DELETEInDolibarr=Фактурата за доставка е изтрита diff --git a/htdocs/langs/bg_BG/blockedlog.lang b/htdocs/langs/bg_BG/blockedlog.lang index 372aa24a92b..60c5d813935 100644 --- a/htdocs/langs/bg_BG/blockedlog.lang +++ b/htdocs/langs/bg_BG/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Неизменими регистри ShowAllFingerPrintsMightBeTooLong=Показване на всички архивирани регистри (може да са дълги) ShowAllFingerPrintsErrorsMightBeTooLong=Показване на всички невалидни архивирани регистри (може да са дълги) DownloadBlockChain=Изтегляне на идентификационни данни -KoCheckFingerprintValidity=Записът в архивираният регистър не е валиден. Това означава, че някой (хакер?) е променил данните тук, след като е бил направен запис или е изтрил предишния архивиран запис (сравнете този ред с предишния #, който съществува). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Записът в архивираният регистър е валиден. Данните от този ред не са променени и записът следва предишния. OkCheckFingerprintValidityButChainIsKo=Архивираният регистър изглежда валиден в сравнение с предишния, но веригата е повредена от преди това. AddedByAuthority=Съхранено в отдалечен орган diff --git a/htdocs/langs/bg_BG/cashdesk.lang b/htdocs/langs/bg_BG/cashdesk.lang index a6d1891c088..28d7540f858 100644 --- a/htdocs/langs/bg_BG/cashdesk.lang +++ b/htdocs/langs/bg_BG/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Добавете артикула RestartSelling=Обратно към продажбите SellFinished=Продажбата е завършена PrintTicket=Отпечатване на етикет +SendTicket=Изпращане на етикет NoProductFound=Няма открит артикул ProductFound=открит продукт NoArticle=Няма артикул @@ -48,6 +49,7 @@ Footer=Футър AmountAtEndOfPeriod=Сума в края на периода (ден, месец или година) TheoricalAmount=Теоретична сума RealAmount=Реална сума +CashFence=Cash fence CashFenceDone=Парична граница за периода NbOfInvoices=Брой фактури Paymentnumpad=Тип Pad за въвеждане на плащане @@ -56,11 +58,12 @@ BillsCoinsPad=Pad за монети и банкноти DolistorePosCategory=TakePOS модули и други ПОС решения за Dolibarr TakeposNeedsCategories=TakePOS се нуждае от продуктови категории, за да работи OrderNotes=Бележки за поръчка -CashDeskBankAccountFor=Профил по подразбиране, който да се използва за плащания в +CashDeskBankAccountFor=Сметка по подразбиране, която да се използва за плащания с NoPaimementModesDefined=В конфигурацията на TakePOS не е определен тип на плащане -TicketVatGrouped=Групиране на ДДС по ставка в билетите -AutoPrintTickets=Автоматично отпечатване на билети -EnableBarOrRestaurantFeatures=Включете функции за бар или ресторант +TicketVatGrouped=Групиране на ДДС по ставка в етикети / разписки +AutoPrintTickets=Автоматично отпечатване на етикети / разписки +PrintCustomerOnReceipts=Отпечатване на клиент върху етикети / разписки +EnableBarOrRestaurantFeatures=Функции за бар или ресторант ConfirmDeletionOfThisPOSSale=Потвърждавате ли изтриването на настоящата продажба? ConfirmDiscardOfThisPOSSale=Искате ли да отхвърлите тази текуща продажба? History=История @@ -87,7 +90,19 @@ HeadBar=Заглавна лента SortProductField=Поле за сортиране на продукти Browser=Браузър BrowserMethodDescription=Прост и лесен отпечатване на разписки. Само няколко параметъра за конфигуриране на разписката. Отпечатване, чрез браузър. -TakeposConnectorMethodDescription=Външен модул с допълнителни функции. Възможност за отпечатване от облака. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Метод на отпечатване ReceiptPrinterMethodDescription=Мощен метод с много параметри. Пълно персонализиране с шаблони. Не може да отпечатва от облака. -ByTerminal=By terminal +ByTerminal=По терминал +TakeposNumpadUsePaymentIcon=Използване на икона за плащане в цифровия панел +CashDeskRefNumberingModules=Модул за номериране на каси +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> тагът се използва за добавяне на номера на терминала +TakeposGroupSameProduct=Групиране на едни и същи продукти +StartAParallelSale=Стартиране на нова паралелна продажба +ControlCashOpening=Контролиране на каса при стартиране на ПОС +CloseCashFence=Close cash fence +CashReport=Паричен отчет +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/bg_BG/companies.lang b/htdocs/langs/bg_BG/companies.lang index d0da486bd28..5118a9a8ede 100644 --- a/htdocs/langs/bg_BG/companies.lang +++ b/htdocs/langs/bg_BG/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Фирма "%s" е изтрита от базата данни. ListOfContacts=Списък на контакти / адреси ListOfContactsAddresses=Списък на контакти / адреси ListOfThirdParties=Списък на контрагенти -ShowCompany=Показване на контрагент ShowContact=Показване на контакт ContactsAllShort=Всички (без филтър) ContactType=Тип контакт @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Собствено име на търговския SaleRepresentativeLastname=Фамилия на търговския представител ErrorThirdpartiesMerge=При изтриването на контрагента възникна грешка. Моля, проверете историята. Промените са отменени. NewCustomerSupplierCodeProposed=Кода на клиент или доставчик е вече използван, необходим е нов код. +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Начин на плащане - клиент PaymentTermsCustomer=Условия за плащане - Клиент diff --git a/htdocs/langs/bg_BG/compta.lang b/htdocs/langs/bg_BG/compta.lang index 3b9a13a5d6b..e89f987a70d 100644 --- a/htdocs/langs/bg_BG/compta.lang +++ b/htdocs/langs/bg_BG/compta.lang @@ -68,7 +68,7 @@ SpecialExpensesArea=Секция за всички специални плаща SocialContribution=Социален или фискален данък SocialContributions=Социални или фискални данъци SocialContributionsDeductibles=Приспадащи се социални или фискални данъци -SocialContributionsNondeductibles=Не приспадащи се социални или данъчни данъци +SocialContributionsNondeductibles=Не приспадащи се социални или фискални данъци LabelContrib=Име на вноска TypeContrib=Тип вноска MenuSpecialExpenses=Специални разходи @@ -139,8 +139,8 @@ ConfirmDeleteSocialContribution=Сигурни ли сте, че искате д ExportDataset_tax_1=Социални / фискални данъци и плащания CalcModeVATDebt=Режим <b>%sДДС върху осчетоводени задължения%s</b> CalcModeVATEngagement=Режим <b>%sДДС върху приходи - разходи%s</b> -CalcModeDebt=Анализ на регистрираните фактури, дори ако те все още не са осчетоводени в книгата. -CalcModeEngagement=Анализ на регистрираните плащания, дори ако те все още не са осчетоводени в книгата. +CalcModeDebt=Анализ на регистрирани фактури, включително на неосчетоводени в книгата +CalcModeEngagement=Анализ на регистрирани плащания, включително на неосчетоводени в книгата CalcModeBookkeeping=Анализ на данни, регистрирани в таблицата на счетоводната книга. CalcModeLT1= Режим <b>%sRE върху фактури за продажба - фактури за доставка%s</b> CalcModeLT1Debt=Режим <b>%sRE върху фактури за продажба%s</b> @@ -157,17 +157,17 @@ SeeReportInInputOutputMode=Вижте %sанализа на плащанията SeeReportInDueDebtMode=Вижте %sанализа на фактурите%s за изчисляване, който е базиран на регистираните фактури, дори и ако те все още не са осчетоводени в книгата. SeeReportInBookkeepingMode=Вижте <b>%sСчетоводния доклад%s</b> за изчисляване на <b>таблицата в счетоводната книга</b> RulesAmountWithTaxIncluded=- Посочените суми са с включени всички данъци -RulesResultDue=- Включва неизплатени фактури, разходи, ДДС, дарения, независимо дали са платени или не. Включва също платени заплати. <br> - Основава се на датата на валидиране на фактурите и ДДС и на датата на падежа на разходите. За заплати, определени с модула заплати се използва датата на плащането. -RulesResultInOut=- Включва реалните плащания по фактури, разходи, ДДС и заплати. <br> - Основава се на датите на плащане на фактурите, разходите, ДДС и заплатите. Датата на дарение за дарения. -RulesCADue=- Включва дължимите фактури на клиента, независимо дали са платени или не. <br>- Базирани на датата на валидиране на тези фактури.<br> -RulesCAIn=- Включва всички ефективни плащания по фактури, получени от клиенти. <br>- Базирани на датата на плащане на тези фактури<br> +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. +RulesResultInOut=- Включва реални плащания по фактури, разходи, ДДС и заплати<br>- Основава се на дата на плащане на фактури, разходи, ДДС и заплати. Дата на дарение за дарения. +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> +RulesCAIn=- Включва всички реални плащания по фактури, получени от клиенти<br>- Основава се на дата на плащане на тези фактури<br> RulesCATotalSaleJournal=Включва всички кредитни линии от журнала за продажба. RulesAmountOnInOutBookkeepingRecord=Включва запис във вашата книга със счетоводни сметки, които са в групата "РАЗХОД" или "ПРИХОД" RulesResultBookkeepingPredefined=Включва запис във вашата книга със счетоводни сметки, които са в групата "РАЗХОД" или "ПРИХОД" RulesResultBookkeepingPersonalized=Показва запис във вашата книга със счетоводни сметки <b>, групирани в персонализирани групи</b> SeePageForSetup=Вижте менюто <a href="%s">%s</a> за настройка -DepositsAreNotIncluded=- Фактурите за авансови плащания не са включени -DepositsAreIncluded=- Фактурите за авансови плащания са включени +DepositsAreNotIncluded=- Не включва фактури за авансови плащания +DepositsAreIncluded=- Включва фактури за авансови плащания LT1ReportByCustomers=Справка за данък 2 по контрагент LT2ReportByCustomers=Справка за данък 3 по контрагент LT1ReportByCustomersES=Справка за RE по контрагент @@ -219,8 +219,8 @@ Mode1=Метод 1 Mode2=Метод 2 CalculationRuleDesc=За изчисляване на общия ДДС има два метода: <br> Метод 1 закръгля ДДС за всеки ред, след което ги сумира. <br> Метод 2 сумира ДДС от всеки ред, след което закръглява резултатът. <br> Крайните резултати може да се различават в известна степен. Метод по подразбиране е метод <b>%s</b>. CalculationRuleDescSupplier=Според доставчика, изберете подходящ метод, за да приложите същото правило за изчисление и да получите същия резултат, очакван от вашия доставчик. -TurnoverPerProductInCommitmentAccountingNotRelevant=Справката за оборот, натрупан от продукт, не е наличен. Тази справка е налице само за фактуриран оборот. -TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=Справката за оборот, натрупан от данък върху продажбите, не е наличен. Тази справка е налице само за фактуриран оборот. +TurnoverPerProductInCommitmentAccountingNotRelevant=Отчетът за оборот, натрупан от продукт, не е наличен. Този отчет е наличен само за фактуриран оборот. +TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=Отчетът за оборот, натрупан от данък върху продажбите, не е наличен. Този отчет е наличен само за фактуриран оборот. CalculationMode=Режим на изчисление AccountancyJournal=Счетоводен код на журнал ACCOUNTING_VAT_SOLD_ACCOUNT=Счетоводна сметка по подразбиране за ДДС при продажби (използва се, ако не е определена при настройка на речника за ДДС) @@ -255,3 +255,10 @@ TurnoverbyVatrate=Оборот, фактуриран по ставка на ДД TurnoverCollectedbyVatrate=Оборот, натрупан по ставка на ДДС PurchasebyVatrate=Покупка по ставка на ДДС LabelToShow=Кратко означение +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/bg_BG/errors.lang b/htdocs/langs/bg_BG/errors.lang index e8d46885c8a..58564caac1b 100644 --- a/htdocs/langs/bg_BG/errors.lang +++ b/htdocs/langs/bg_BG/errors.lang @@ -46,9 +46,9 @@ ErrorUserCannotBeDelete=Потребителят не може да бъде и ErrorFieldsRequired=Някои задължителни полета не са попълнени. ErrorSubjectIsRequired=Необходима е тема на имейл ErrorFailedToCreateDir=Неуспешно създаване на директория. Уверете се, че уеб сървър потребител има разрешение да пишат в Dolibarr документи. Ако параметър <b>safe_mode</b> е разрешен в тази PHP, проверете дали Dolibarr PHP файлове притежава за потребителя на уеб сървъра (или група). -ErrorNoMailDefinedForThisUser=Не поща, определена за този потребител +ErrorNoMailDefinedForThisUser=Няма дефиниран имейл за този потребител ErrorFeatureNeedJavascript=Тази функция трябва ДжаваСкрипт да се активира, за да работят. Променете тази настройка - дисплей. -ErrorTopMenuMustHaveAParentWithId0=Менюто на "Топ" тип не може да има меню майка. Поставете 0 в майка меню или изберете меню от типа "ляво". +ErrorTopMenuMustHaveAParentWithId0=Меню от тип 'Горно' не може да има главно меню. Поставете 0 за главно меню или изберете меню от тип 'Ляво'. ErrorLeftMenuMustHaveAParentId=Менюто на "левицата" тип трябва да имат родителски идентификатор. ErrorFileNotFound=Файлът не <b>%s</b> намерена (Bad път, грешни права или отказан достъп от PHP openbasedir или safe_mode параметър) ErrorDirNotFound=Директория <b>%s</b> не е намерен (Bad път, грешни права или отказан достъп от PHP openbasedir или safe_mode параметър) @@ -59,6 +59,7 @@ ErrorPartialFile=Файла не е получил изцяло от сървъ ErrorNoTmpDir=Временно за директно %s не съществува. ErrorUploadBlockedByAddon=Качи блокиран от PHP / Apache плъгин. ErrorFileSizeTooLarge=Размерът на файла е твърде голям. +ErrorFieldTooLong=Полето %s е твърде дълго ErrorSizeTooLongForIntType=Размер твърде дълго за Вътрешна (%s цифри максимум) ErrorSizeTooLongForVarcharType=Размер твърде дълго за низ тип (%s символа максимум) ErrorNoValueForSelectType=Моля попълнете стойност за списък избиране @@ -122,7 +123,7 @@ ErrorLinesCantBeNegativeForOneVATRate=Total of lines can't be negative for a giv ErrorLinesCantBeNegativeOnDeposits=Редовете не могат да бъдат отрицателни при депозит. Ще се сблъскате с проблеми, когато включите депозита в окончателната фактура. ErrorQtyForCustomerInvoiceCantBeNegative=Количество за ред в клиентска фактура не може да бъде отрицателно ErrorWebServerUserHasNotPermission=Потребителски акаунт <b>%s</b> използват за извършване на уеб сървър не разполага с разрешение за това -ErrorNoActivatedBarcode=Не е тип баркод активира +ErrorNoActivatedBarcode=Няма активиран тип баркод ErrUnzipFails=Неуспех да разархивирате %s с ZipArchive ErrNoZipEngine=Няма инструмент за архивиране/разархивиране на файл %s в PHP ErrorFileMustBeADolibarrPackage=Файла %s трябва да бъде Dolibarr zip архив @@ -233,8 +234,9 @@ ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=Грешка, езикът ErrorLanguageOfTranslatedPageIsSameThanThisPage=Грешка, езикът на преведената страница е същият като този. ErrorBatchNoFoundForProductInWarehouse=Няма намерен партиден / сериен номер за продукт '%s' в склад '%s'. ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=Няма достатъчно количество от този партиден / сериен номер за продукт '%s' в склад '%s'. -ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorOnlyOneFieldForGroupByIsPossible=Възможно е само едно поле за 'Групиране по' (другите се пренебрегват) +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Вашата стойност на PHP параметър upload_max_filesize (%s) е по-голяма от стойността на PHP параметър post_max_size (%s). Това не е последователна настройка. WarningPasswordSetWithNoAccount=За този член бе зададена парола. Въпреки това, не е създаден потребителски акаунт. Така че тази парола е съхранена, но не може да се използва за влизане в Dolibarr. Може да се използва от външен модул/интерфейс, но ако не е необходимо да дефинирате потребителско име или парола за член може да деактивирате опцията "Управление на вход за всеки член" от настройката на модула Членове. Ако трябва да управлявате вход, но не се нуждаете от парола, можете да запазите това поле празно, за да избегнете това предупреждение. Забележка: Имейлът може да се използва и като вход, ако членът е свързан с потребител. @@ -259,5 +261,5 @@ WarningYourLoginWasModifiedPleaseLogin=Входните ви данни са п WarningAnEntryAlreadyExistForTransKey=Вече съществува запис за ключа за превод за този език WarningNumberOfRecipientIsRestrictedInMassAction=Внимание, броят на различните получатели е ограничен до <b>%s</b>, когато се използват масови действия в списъците WarningDateOfLineMustBeInExpenseReportRange=Внимание, датата на реда не е в обхвата на разходния отчет -WarningProjectClosed=Проектът е затворен. Трябва първо да го отворите отново. +WarningProjectClosed=Проектът е приключен. Трябва първо да го активирате отново. WarningSomeBankTransactionByChequeWereRemovedAfter=Някои банкови транзакции бяха премахнати, след което бе генерирана разписка, в която са включени. Броят на чековете и общата сума на разписката може да се различават от броя и общата сума в списъка. diff --git a/htdocs/langs/bg_BG/install.lang b/htdocs/langs/bg_BG/install.lang index 008cb0e89bd..e4abfe30de4 100644 --- a/htdocs/langs/bg_BG/install.lang +++ b/htdocs/langs/bg_BG/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=PHP поддържа Curl. PHPSupportCalendar=PHP поддържа разширения на календари. PHPSupportUTF8=PHP поддържа UTF8 функции. PHPSupportIntl=PHP поддържа Intl функции. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=PHP поддържа %s функции. PHPMemoryOK=Максималният размер на паметта за PHP сесия е настроен на <b>%s</b>. Това трябва да е достатъчно. PHPMemoryTooLow=Вашият максимален размер на паметта за PHP сесия е настроен на <b> %s </b> байта. Това е твърде ниско. Променете <b> php.ini </b> като зададете стойност на параметър <b> memory_limit </b> поне <b> %s </b> байта. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Вашата PHP инсталация не поддъ ErrorPHPDoesNotSupportCalendar=Вашата PHP инсталация не поддържа разширения за календар. ErrorPHPDoesNotSupportUTF8=Вашата PHP инсталация не поддържа UTF8 функции. Dolibarr не може да работи правилно. Решете това преди да инсталирате Dolibarr. ErrorPHPDoesNotSupportIntl=Вашата PHP инсталация не поддържа Intl функции. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Вашата PHP инсталация не поддържа %s функции. ErrorDirDoesNotExists=Директорията %s не съществува. ErrorGoBackAndCorrectParameters=Върнете се назад и проверете / коригирайте параметрите. @@ -182,10 +184,10 @@ MigrationContractsInvalidDatesNothingToUpdate=Няма неправилни да MigrationContractsIncoherentCreationDateUpdate=Корекция на неправилни дати на създаване в договори MigrationContractsIncoherentCreationDateUpdateSuccess=Корекцията на неправилните дати на създаване в договори е успешно извършена MigrationContractsIncoherentCreationDateNothingToUpdate=Няма неправилни дати на създаване в договори за коригиране -MigrationReopeningContracts=Отворен договор е затворен с грешка +MigrationReopeningContracts=Активен договор е приключен с грешка MigrationReopenThisContract=Повторно отваряне на договор %s MigrationReopenedContractsNumber=%s променен(и) договор(а) -MigrationReopeningContractsNothingToUpdate=Няма затворени договори за отваряне +MigrationReopeningContractsNothingToUpdate=Няма приключени договори за актуализиране MigrationBankTransfertsUpdate=Актуализиране на връзките между банков запис и банков превод MigrationBankTransfertsNothingToUpdate=Всички връзки са актуални MigrationShipmentOrderMatching=Актуализация на експедиционни бележки @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Приложението се опита да с YouTryInstallDisabledByFileLock=Приложението се опита да се самоактуализира, но страниците за инсталация / актуализация са били изключени от гледна точка на сигурност (от наличието на заключващ файл <strong> install.lock </strong> в директорията documents на Dolibarr). <br> ClickHereToGoToApp=Кликнете тук, за да отидете в приложението си ClickOnLinkOrRemoveManualy=Кликнете върху следната връзка. Ако винаги виждате същата страница, трябва да премахнете / преименувате файла install.lock в директорията documents на Dolibarr. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/bg_BG/link.lang b/htdocs/langs/bg_BG/link.lang index 82f13ef5198..047d53902e2 100644 --- a/htdocs/langs/bg_BG/link.lang +++ b/htdocs/langs/bg_BG/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Връзката %s е премахната ErrorFailedToDeleteLink= Премахването на връзката '<b>%s</b>' не е успешно ErrorFailedToUpdateLink= Актуализацията на връзката '<b>%s</b>' не е успешна URLToLink=URL адрес +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/bg_BG/mails.lang b/htdocs/langs/bg_BG/mails.lang index 83e195432d4..e0396ddfaa9 100644 --- a/htdocs/langs/bg_BG/mails.lang +++ b/htdocs/langs/bg_BG/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Няма намерен контакт/адрес с NoContactLinkedToThirdpartieWithCategoryFound=Няма намерен контакт/адрес с тази категория OutGoingEmailSetup=Настройка на изходяща електронна поща InGoingEmailSetup=Настройка на входящата поща -OutGoingEmailSetupForEmailing=Настройка на изходяща електронна поща (за масово изпращане по имейл) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Настройка на изходящата поща по подразбиране Information=Информация ContactsWithThirdpartyFilter=Контакти с филтър за контрагент diff --git a/htdocs/langs/bg_BG/main.lang b/htdocs/langs/bg_BG/main.lang index c3f5487e1b0..c5fdbe37db2 100644 --- a/htdocs/langs/bg_BG/main.lang +++ b/htdocs/langs/bg_BG/main.lang @@ -61,7 +61,7 @@ ErrorDuplicateField=Дублиране в поле с уникални стой ErrorSomeErrorWereFoundRollbackIsDone=Намерени са някои грешки. Промените бяха отменени. ErrorConfigParameterNotDefined=Параметър <b> %s </b> не е дефиниран в конфигурационния файл на Dolibarr <b> conf.php </b>. ErrorCantLoadUserFromDolibarrDatabase=Не е открит потребител <b>%s</b> в базата данни. -ErrorNoVATRateDefinedForSellerCountry=Грешка, не са дефинирани ДДС ставки за държавата „%s“. +ErrorNoVATRateDefinedForSellerCountry=Грешка, не са дефинирани ДДС ставки за държавата "%s". ErrorNoSocialContributionForSellerCountry=Грешка, не е дефиниран тип за социални / фискални данъци за държавата "%s". ErrorFailedToSaveFile=Грешка, неуспешно записване на файл. ErrorCannotAddThisParentWarehouse=Опитвате се да добавите основен склад, който вече е под-склад на съществуващ склад @@ -143,7 +143,7 @@ Activate=Активиране Activated=Активирано Closed=Приключен Closed2=Неактивен -NotClosed=Не е затворен +NotClosed=Не е приключен Enabled=Активен Enable=Включване Deprecated=Отхвърлено @@ -174,6 +174,7 @@ SaveAndStay=Съхраняване SaveAndNew=Съхраняване и създаване TestConnection=Проверяване на връзката ToClone=Клониране +ConfirmCloneAsk=Сигурни ли сте, че искате да клонирате обект <b>%s</b>? ConfirmClone=Изберете данни, които искате да клонирате: NoCloneOptionsSpecified=Няма определени данни за клониране. Of=на @@ -417,7 +418,7 @@ VATNPR=Данъчна ставка NPR DefaultTaxRate=Данъчна ставка по подразбиране Average=Средно Sum=Сума -Delta=Делта +Delta=Разлика StatusToPay=За плащане RemainToPay=Оставащо за плащане Module=Модул / Приложение @@ -429,7 +430,7 @@ Statistics=Статистика OtherStatistics=Други статистически данни Status=Статус Favorite=Фаворит -ShortInfo=Инфо. +ShortInfo=Информация Ref=№ ExternalRef=Външен № RefSupplier=Изх. № на доставчик @@ -438,7 +439,7 @@ CommercialProposalsShort=Търговски предложения Comment=Коментар Comments=Коментари ActionsToDo=Предстоящи събития -ActionsToDoShort=Да се направи +ActionsToDoShort=За извършване ActionsDoneShort=Завършено ActionNotApplicable=Не се прилага ActionRunningNotStarted=За започване @@ -457,7 +458,7 @@ ActionsOnContract=Свързани събития ActionsOnMember=Събития за този член ActionsOnProduct=Събития за този продукт NActionsLate=%s закъснели -ToDo=Да се направи +ToDo=За извършване Completed=Завършено Running=В процес RequestAlreadyDone=Заявката вече е записана @@ -472,8 +473,8 @@ Duration=Продължителност TotalDuration=Обща продължителност Summary=Резюме DolibarrStateBoard=Статистика от базата данни -DolibarrWorkBoard=Отворени елементи -NoOpenedElementToProcess=Няма отворен елемент за обработка +DolibarrWorkBoard=Активни елементи +NoOpenedElementToProcess=Няма активен елемент за обработка Available=Налично NotYetAvailable=Все още не е налично NotAvailable=Не е налично @@ -593,8 +594,8 @@ JoinMainDoc=Присъединете към основния документ DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS -ReportName=Име на отчета -ReportPeriod=Период на отчета +ReportName=Име на отчет +ReportPeriod=Период на отчет ReportDescription=Описание Report=Отчет Keyword=Ключова дума @@ -659,7 +660,7 @@ AlreadyRead=Вече е прочетено NotRead=Непрочетено NoMobilePhone=Няма мобилен телефон Owner=Собственик -FollowingConstantsWillBeSubstituted=Следните константи ще бъдат заменени със съответната стойност. +FollowingConstantsWillBeSubstituted=Следните константи ще бъдат заменени със съответната стойност: Refresh=Обновяване BackToList=Назад към списъка GoBack=Назад @@ -745,7 +746,7 @@ Result=Резултат ToTest=Тест ValidateBefore=Елементът трябва да бъде валидиран, преди да използвате тази функция. Visibility=Видимост -Totalizable=Обобщаване +Totalizable=Обобщеност TotalizableDesc=Това поле е обобщаващо в списъка Private=Личен Hidden=Скрит @@ -829,6 +830,8 @@ Gender=Пол Genderman=Мъж Genderwoman=Жена ViewList=Списъчен изглед +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Задължително Hello=Здравейте GoodBye=Довиждане @@ -898,8 +901,8 @@ LeadOrProject=Възможност | Проект LeadsOrProjects=Възможности | Проекти Lead=Възможност Leads=Възможности -ListOpenLeads=Отворени възможности -ListOpenProjects=Отворени проекти +ListOpenLeads=Активни възможности +ListOpenProjects=Активни проекти NewLeadOrProject=Нова възможност или проект Rights=Права LineNb=Ред № @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Изберете опциите за изгражд Measures=Мерки XAxis=Х-ос YAxis=Y-ос +StatusOfRefMustBe=Статуса на %s трябва да бъде %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/bg_BG/orders.lang b/htdocs/langs/bg_BG/orders.lang index b19a1664578..09890779ff5 100644 --- a/htdocs/langs/bg_BG/orders.lang +++ b/htdocs/langs/bg_BG/orders.lang @@ -141,7 +141,7 @@ OrderByEMail=Имейл OrderByWWW=Онлайн OrderByPhone=Телефон # Documents models -PDFEinsteinDescription=Пълен шаблон на поръчка (стара реализация на шаблон Eratosthene)) +PDFEinsteinDescription=Пълен шаблон на поръчка PDFEratostheneDescription=Пълен шаблон на поръчка PDFEdisonDescription=Опростен шаблон за поръчка PDFProformaDescription=Пълен шаблон за проформа-фактура diff --git a/htdocs/langs/bg_BG/other.lang b/htdocs/langs/bg_BG/other.lang index b2d59a2aa81..db0d1a6edd7 100644 --- a/htdocs/langs/bg_BG/other.lang +++ b/htdocs/langs/bg_BG/other.lang @@ -30,11 +30,11 @@ PreviousYearOfInvoice=Предишна година от дата на факт NextYearOfInvoice=Следваща година от дата на фактурата DateNextInvoiceBeforeGen=Дата на следващата фактура (преди генериране) DateNextInvoiceAfterGen=Дата на следващата фактура (след генериране) -GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mode. The mode 'Lines' was automatically selected instead. +GraphInBarsAreLimitedToNMeasures=Графиките са ограничени до %s измервания в режим 'Ленти'. Вместо това автоматично е избран режимът 'Линии'. OnlyOneFieldForXAxisIsPossible=Понастоящем е възможно само 1 поле за X-ос. Само първото маркирано поле е избрано. AtLeastOneMeasureIsRequired=Изисква се поне 1 поле за измерване AtLeastOneXAxisIsRequired=Необходимо е поне 1 поле за X-ос - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Поръчката за продажба е валидирана Notify_ORDER_SENTBYMAIL=Поръчката за продажба е изпратена на имейл Notify_ORDER_SUPPLIER_SENTBYMAIL=Поръчката за покупка е изпратена на имейл @@ -51,7 +51,7 @@ Notify_WITHDRAW_EMIT=Извършване на оттегляне Notify_COMPANY_CREATE=Контрагентът е създаден Notify_COMPANY_SENTBYMAIL=Имейли изпратени от картата на контрагента Notify_BILL_VALIDATE=Фактурата за продажба е валидирана -Notify_BILL_UNVALIDATE=Фактурата за продажба е отворена отново +Notify_BILL_UNVALIDATE=Фактурата за продажба е активна отново Notify_BILL_PAYED=Фактурата за продажба е платена Notify_BILL_CANCEL=Фактурата за продажба е анулирана Notify_BILL_SENTBYMAIL=Фактурата за продажба е изпратена на имейл @@ -132,9 +132,9 @@ FeaturesSupported=Поддържани функции Width=Ширина Height=Височина Depth=Дълбочина -Top=Отгоре +Top=Горно Bottom=Отдолу -Left=Отляво +Left=Ляво Right=Отдясно CalculatedWeight=Изчислено тегло CalculatedVolume=Изчислен обем @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL адрес на страницата WEBSITE_TITLE=Заглавие WEBSITE_DESCRIPTION=Описание WEBSITE_IMAGE=Изображение -WEBSITE_IMAGEDesc=Относителен път до изображението. Може да запазите това празно, тъй като се използва рядко (може да се използва от динамично съдържание, за да се покаже миниатюра в списък с публикации в блога). Използвайте __WEBSITEKEY__ в пътя, ако пътят зависи от името на уебсайта. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Ключови думи LinesToImport=Редове за импортиране diff --git a/htdocs/langs/bg_BG/products.lang b/htdocs/langs/bg_BG/products.lang index 65ed5522789..7c7f0f55122 100644 --- a/htdocs/langs/bg_BG/products.lang +++ b/htdocs/langs/bg_BG/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Този инструмент актуализира с MassBarcodeInit=Масова инициализация на баркодове MassBarcodeInitDesc=Тази страница може да се използва за инициализиране на баркод на обекти, които нямат дефиниран баркод. Проверете преди това дали настройката на модул 'Баркод' е завършена. ProductAccountancyBuyCode=Счетоводен код (покупка) +ProductAccountancyBuyIntraCode=Счетоводен код (вътреобщностна покупка) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Счетоводен код (продажба) ProductAccountancySellIntraCode=Счетоводен код (вътреобщностна продажба) ProductAccountancySellExportCode=Счетоводен код (експортна продажба) @@ -79,7 +81,7 @@ NewPrice=Нова цена MinPrice=Минимална продажна цена EditSellingPriceLabel=Променяне на етикета с продажна цена CantBeLessThanMinPrice=Продажната цена не може да бъде по-ниска от минимално допустимата за този продукт/услуга (%s без ДДС). Това съобщение може да се появи, ако въведете твърде голяма отстъпка. -ContractStatusClosed=Затворен +ContractStatusClosed=Приключен ErrorProductAlreadyExists=Вече съществува продукт / услуга с № %s. ErrorProductBadRefOrLabel=Грешна стойност за № или име ErrorProductClone=Възникна проблем при опит за клониране на продукта/услугата. @@ -165,7 +167,7 @@ SuppliersPrices=Доставни цени SuppliersPricesOfProductsOrServices=Доставни цени (на продукти / услуги) CustomCode=Митнически / Стоков / ХС код CountryOrigin=Държава на произход -Nature=Произход на продукта (суровина / произведен) +Nature=Nature of product (material/finished) ShortLabel=Кратко означение Unit=Мярка p=е. diff --git a/htdocs/langs/bg_BG/projects.lang b/htdocs/langs/bg_BG/projects.lang index 085bf0bbe35..a0bc06032dd 100644 --- a/htdocs/langs/bg_BG/projects.lang +++ b/htdocs/langs/bg_BG/projects.lang @@ -17,7 +17,7 @@ ProjectsPublicTaskDesc=Този изглед представя всички п ProjectsDesc=Този изглед представя всички проекти (вашите потребителски права ви дават разрешение да виждате всичко). TasksOnProjectsDesc=Този изглед представя всички задачи за всички проекти (вашите потребителски права ви дават разрешение да виждате всичко). MyTasksDesc=Този изглед е ограничен до проекти или задачи, в които сте определен за контакт -OnlyOpenedProject=Само отворените проекти са видими (чернови или приключени проекти не са видими). +OnlyOpenedProject=Само активните проекти са видими (чернови или приключени проекти не са видими). ClosedProjectsAreHidden=Приключените проекти не са видими. TasksPublicDesc=Този страница показва всички проекти и задачи, които може да прочетете. TasksDesc=Този страница показва всички проекти и задачи (вашите потребителски права ви дават разрешение да виждате всичко). @@ -31,9 +31,9 @@ DeleteAProject=Изтриване на проект DeleteATask=Изтриване на задача ConfirmDeleteAProject=Сигурни ли сте, че искате да изтриете този проект? ConfirmDeleteATask=Сигурни ли сте, че искате да изтриете тази задача? -OpenedProjects=Отворени проекти -OpenedTasks=Отворени задачи -OpportunitiesStatusForOpenedProjects=Размер на възможностите от отворени проекти по статус +OpenedProjects=Активни проекти +OpenedTasks=Активни задачи +OpportunitiesStatusForOpenedProjects=Размер на възможностите от активни проекти по статус OpportunitiesStatusForProjects=Размер на възможностите от проекти по статус ShowProject=Показване на проект ShowTask=Показване на задача @@ -52,7 +52,7 @@ TaskTimeSpent=Време, отделено на задачи TaskTimeUser=Потребител TaskTimeNote=Бележка TaskTimeDate=Дата -TasksOnOpenedProject=Задачи от отворени проекти +TasksOnOpenedProject=Задачи от активни проекти WorkloadNotDefined=Не е определена работна натовареност NewTimeSpent=Отделено време MyTimeSpent=Моето отделено време @@ -78,7 +78,7 @@ MyProjectsArea=Секция с мои проекти DurationEffective=Ефективна продължителност ProgressDeclared=Деклариран напредък TaskProgressSummary=Напредък на задачата -CurentlyOpenedTasks=Отворени задачи в момента +CurentlyOpenedTasks=Текущи активни задачи TheReportedProgressIsLessThanTheCalculatedProgressionByX=Декларираният напредък е по-малко %s от изчисления напредък TheReportedProgressIsMoreThanTheCalculatedProgressionByX=Декларираният напредък е повече %s от изчисления напредък ProgressCalculated=Изчислен напредък @@ -87,8 +87,6 @@ WhichIamLinkedToProject=с които съм свързан в проект Time=Време ListOfTasks=Списък със задачи GoToListOfTimeConsumed=Показване на списъка с изразходвано време -GoToListOfTasks=Показване като списък -GoToGanttView=Показване като Gantt GanttView=Gantt диаграма ListProposalsAssociatedProject=Списък на търговски предложения, свързани с проекта ListOrdersAssociatedProject=Списък на поръчки за продажба, свързани с проекта @@ -122,7 +120,7 @@ ValidateProject=Валидиране на проект ConfirmValidateProject=Сигурни ли сте, че искате да валидирате този проект? CloseAProject=Приключване на проект ConfirmCloseAProject=Сигурни ли сте, че искате да приключите този проект? -AlsoCloseAProject=Приключване на проект (задръжте го отворен, ако все още трябва да работите по задачите в него) +AlsoCloseAProject=Приключване на проект (задръжте го активен, ако все още трябва да работите по задачите в него) ReOpenAProject=Отваряне на проект ConfirmReOpenAProject=Сигурни ли сте, че искате да отворите повторно този проект? ProjectContact=Контакти / Участници @@ -188,7 +186,7 @@ PlannedWorkload=Планирана натовареност PlannedWorkloadShort=Натовареност ProjectReferers=Свързани елементи ProjectMustBeValidatedFirst=Проектът трябва първо да бъде валидиран -FirstAddRessourceToAllocateTime=Определете потребителски ресурс на задачата за разпределяне на времето +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=За ден InputPerWeek=За седмица InputPerMonth=За месец @@ -212,16 +210,16 @@ ProjectNbProjectByMonth=Брой създадени проекти на месе ProjectNbTaskByMonth=Брой създадени задачи на месец ProjectOppAmountOfProjectsByMonth=Сума на възможностите на месец ProjectWeightedOppAmountOfProjectsByMonth=Изчислена сума на възможностите на месец -ProjectOpenedProjectByOppStatus=Отворен проект / възможност по статус на възможността +ProjectOpenedProjectByOppStatus=Активен проект / възможност по статус на възможността ProjectsStatistics=Статистики на проекти / възможности TasksStatistics=Статистика на задачи TaskAssignedToEnterTime=Задачата е възложена. Въвеждането на време по тази задача трябва да е възможно. IdTaskTime=Идентификатор на време на задача YouCanCompleteRef=Ако искате да завършите номера с някакъв суфикс, препоръчително е да добавите символ "-", за да го отделите, така че автоматичното номериране да продължи да работи правилно за следващите проекти. Например %s-Суфикс -OpenedProjectsByThirdparties=Отворени проекти по контрагенти +OpenedProjectsByThirdparties=Активни проекти по контрагенти OnlyOpportunitiesShort=Само възможности -OpenedOpportunitiesShort=Отворени възможности -NotOpenedOpportunitiesShort=Неотворени възможности +OpenedOpportunitiesShort=Активни възможности +NotOpenedOpportunitiesShort=Неактивни възможности NotAnOpportunityShort=Не е възможност OpportunityTotalAmount=Обща сума на възможностите OpportunityPonderatedAmount=Изчислена сума на възможностите @@ -240,11 +238,12 @@ LatestModifiedProjects=Проекти: %s последно променени OtherFilteredTasks=Други филтрирани задачи NoAssignedTasks=Не са намерени възложени задачи (възложете проект / задачи на текущия потребител от най-горното поле за избор, за да въведете времето в него) ThirdPartyRequiredToGenerateInvoice=Трябва да бъде определен контрагент по проекта, за да може да генерирате фактура. +ChooseANotYetAssignedTask=Изберете задача, която все още не ви е възложена # Comments trans AllowCommentOnTask=Разрешаване на потребителски коментари в задачите AllowCommentOnProject=Разрешаване на потребителски коментари в проектите DontHavePermissionForCloseProject=Нямате права, за да приключите проект %s. -DontHaveTheValidateStatus=Проектът %s трябва да бъде отворен, за да го приключите. +DontHaveTheValidateStatus=Проектът %s трябва да бъде активен, за да го приключите. RecordsClosed=%s проект(а) е(са) приключен(и) SendProjectRef=Информация за проект %s ModuleSalaryToDefineHourlyRateMustBeEnabled=Модулът 'Заплати' трябва да бъде активиран, за да дефинирате почасова ставка на служителите, за да оценените отделеното по проекта време @@ -257,7 +256,7 @@ InvoiceGeneratedFromTimeSpent=Фактура %s е генерирана въз ProjectBillTimeDescription=Маркирайте, ако въвеждате график на задачите в проекта и планирате да генерирате фактура(и) за клиента от графика на задачите в проекта (не маркирайте, ако планирате да създадете фактура, която не се основава на въведеният график на задачите). Забележка: За да генерирате фактура, отидете в раздела "Отделено време" на проекта и изберете редовете, които да включите. ProjectFollowOpportunity=Проследяване на възможности ProjectFollowTasks=Проследяване на задачи -Usage=Usage +Usage=Употреба UsageOpportunity=Употреба: Възможност UsageTasks=Употреба: Задачи UsageBillTimeShort=Употреба: Фактуриране на време @@ -265,3 +264,4 @@ InvoiceToUse=Чернова фактура, която да използвате NewInvoice=Нова фактура OneLinePerTask=Един ред на задача OneLinePerPeriod=Един ред на период +RefTaskParent=Съгласно главна задача № diff --git a/htdocs/langs/bg_BG/propal.lang b/htdocs/langs/bg_BG/propal.lang index 2e87c9ef3a0..567c61986d2 100644 --- a/htdocs/langs/bg_BG/propal.lang +++ b/htdocs/langs/bg_BG/propal.lang @@ -76,7 +76,7 @@ TypeContact_propal_external_BILLING=Получател на фактура TypeContact_propal_external_CUSTOMER=Получател на предложение TypeContact_propal_external_SHIPPING=Получател на доставка # Document models -DocModelAzurDescription=Пълен шаблон на предложение (стара реализация на шаблон Cyan) +DocModelAzurDescription=Пълен шаблон на предложение DocModelCyanDescription=Пълен модел на предложение DefaultModelPropalCreate=Създаване на шаблон по подразбиране DefaultModelPropalToBill=Шаблон по подразбиране, когато се приключва търговско предложение (за да бъде фактурирано) diff --git a/htdocs/langs/bg_BG/receiptprinter.lang b/htdocs/langs/bg_BG/receiptprinter.lang index b7af63dc077..05efd4813a1 100644 --- a/htdocs/langs/bg_BG/receiptprinter.lang +++ b/htdocs/langs/bg_BG/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Фиктивен принтер CONNECTOR_NETWORK_PRINT=Мрежови принтер CONNECTOR_FILE_PRINT=Локален принтер CONNECTOR_WINDOWS_PRINT=Локален Windows принтер +CONNECTOR_CUPS_PRINT=CUPS принтер CONNECTOR_DUMMY_HELP=Фиктивен принтер за тест, не прави нищо CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=Име на CUPS принтер, пример: HPRT_TP805L PROFILE_DEFAULT=Профил по подразбиране PROFILE_SIMPLE=Обикновен профил PROFILE_EPOSTEP=Epos Tep профил @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Месец на фактура с букви DOL_VALUE_MONTH=Месец на фактура DOL_VALUE_DAY=Ден на фактура DOL_VALUE_DAY_LETTERS=Ден на фактура с букви +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Съгласно фактура № +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=ДДС № +DOL_VALUE_MYSOC_CAPITAL=Капитал +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/bg_BG/stripe.lang b/htdocs/langs/bg_BG/stripe.lang index fcd0789b5f7..b5cfa89acb3 100644 --- a/htdocs/langs/bg_BG/stripe.lang +++ b/htdocs/langs/bg_BG/stripe.lang @@ -32,6 +32,7 @@ VendorName=Име на доставчик CSSUrlForPaymentForm=URL адрес на CSS стил с формуляр за плащане NewStripePaymentReceived=Получено е ново Stripe плащане NewStripePaymentFailed=Неуспешен опит за ново Stripe плащане +FailedToChargeCard=Неупешно таксуване на карта STRIPE_TEST_SECRET_KEY=Тестов Secret ключ STRIPE_TEST_PUBLISHABLE_KEY=Тестов Publishable ключ STRIPE_TEST_WEBHOOK_KEY=Тестов Webhook ключ @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Връзка към настройка на Stripe We ToOfferALinkForLiveWebhook=Връзка към настройка на Stripe WebHook за извикване на IPN (реален режим) PaymentWillBeRecordedForNextPeriod=Плащането ще бъде регистрирано за следващия период. ClickHereToTryAgain=<a href="%s">Кликнете тук, за да опитате отново ...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Поради строгите правила за автентификация на клиентите, създаването на карта трябва да се извърши от вътрешния интерфейс на Stripe. Може да кликнете тук, за да включите клиентския Stripe запис: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/bg_BG/users.lang b/htdocs/langs/bg_BG/users.lang index 38003af0e13..e5a96ba466f 100644 --- a/htdocs/langs/bg_BG/users.lang +++ b/htdocs/langs/bg_BG/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Потребители и техните реквизити DomainUser=Домейн потребител %s Reactivate=Възстановяване CreateInternalUserDesc=Тази форма позволява да създадете вътрешен потребител във вашата фирма / организация. За да създадете външен потребител (за клиент, доставчик и т.н.), използвайте бутона 'Създаване на потребител' в картата на контакта за този контрагент. -InternalExternalDesc=<b>Вътрешния</b> потребител е потребител, който е част от вашата фирма / организация.<br><b>Външният</b> потребител е клиент, доставчик или друг.<br><br>И в двата случая разрешенията дефинират права в Dolibarr, също така външния потребител може да има различен мениджър на менюто от вътрешния потребител (Вижте Начало - Настройка - Дисплей) +InternalExternalDesc=<b>Вътрешен</b> потребител е този, който е част от вашата фирма / организация.<br><b>Външен</b> потребител е този, който е клиент, доставчик или друг (Външен потребител към контрагент може да бъде създаден от раздела 'Контакти / Адреси' на съответният контрагент).<br><br>И в двата случая разрешенията определят права в Dolibarr, също така външният потребител може да има различен меню манипулатор от вътрешният (Вижте Начало - Настройка - Интерфейс). PermissionInheritedFromAGroup=Разрешението е предоставено, тъй като е наследено от една от групите на потребителя. Inherited=Наследено UserWillBeInternalUser=Създаденият потребителят ще бъде вътрешен потребител (тъй като не е свързан с определен контрагент) @@ -113,3 +113,5 @@ CantDisableYourself=Не можете да забраните собствени ForceUserExpenseValidator=Принудително валидиране на разходни отчети ForceUserHolidayValidator=Принудително валидиране на молби за отпуск ValidatorIsSupervisorByDefault=По подразбиране валидиращият е ръководителя на потребителя. Оставете празно, за да запазите това поведение. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/bg_BG/website.lang b/htdocs/langs/bg_BG/website.lang index b6b2033b01b..95a9f829429 100644 --- a/htdocs/langs/bg_BG/website.lang +++ b/htdocs/langs/bg_BG/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Преглед на страницата в нов раздел SetAsHomePage=Задаване като начална страница RealURL=Реален URL адрес ViewWebsiteInProduction=Преглед на уебсайт, чрез начални URL адреси -SetHereVirtualHost=<u>Използване, чрез Apache / NGinx / ...</u> <br> Ако може да създадете на вашия уеб сървър (Apache, Nginx, ...) специален виртуален хост с активиран PHP и основна директория в <br> <strong>%s</strong>, <br> то тогава посочете името на виртуалния хост, който сте създали в свойствата на уебсайта, така че прегледът може да се извърши и чрез този специализиран достъп до уеб сървъра, вместо чрез вътрешния Dolibarr сървър. +SetHereVirtualHost=<u>Използвайте с Apache / Nginx / ...</u><br>Създайте на вашият уеб сървър (Apache, Nginx, ...) специален виртуален хост с PHP поддръжка и основна директория в<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Пример за използване при настройка на виртуалния хост в Apache: YouCanAlsoTestWithPHPS=<u>Използване, чрез вграден PHP сървър</u> <br> В среда за разработка може да предпочетете да тествате сайта с вградения PHP уеб сървър (изисква се PHP 5.5) като стартирате <br> <strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Стартирайте уебсайта си на друг Dolibarr хостинг доставчик</u> <br> Ако нямате уеб сървър като Apache или NGinx в интернет може да експортирате и импортирате уебсайта си в друга Dolibarr инстанция, предоставена от друг Dolibarr хостинг доставчик, който осигурява пълна интеграция с модула на уебсайта. Може да намерите списък с някои доставчици на Dolibarr хостинг услуги на <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Проверете също дали виртуалният хост има права за <strong>%s</strong> на файлове в <br> <strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=За съжаление този уебсайт WEBSITE_USE_WEBSITE_ACCOUNTS=Активиране на таблица с уебсайт профили WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Активирайте таблица, която да съхранява уебсайт профили (потребителски имена / пароли) за всеки уебсайт / контрагент YouMustDefineTheHomePage=Първо трябва да дефинирате началната страница по подразбиране -OnlyEditionOfSourceForGrabbedContentFuture=Внимание: Създаването на уеб страница, чрез импортиране на външна уеб страница е препоръчително за опитни потребители. В зависимост от сложността на импортираната страница, резултатът може да се различава от оригинала. Също така, ако импортираната страницата използва общи CSS стилове или противоречащ JavaScript, тя може да наруши външния вид или функции на редактора на уебсайтове, когато се работи върху тази страница. Този метод е бърз начин за създаване на страница, но се препоръчва да създадете новата си страница от нулата или от предложен шаблон за страница.<br>Обърнете внимание също, че редактирането на изходния HTML код ще бъде възможно, когато съдържанието на страницата е инициализирано, чрез прихващане на външна страница ("Онлайн" редакторът няма да бъде наличен). +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Когато съдържанието е прихванато от външен сайт е възможно само издание с изходен HTML код. GrabImagesInto=Прихващане на изображения открити в CSS и страница. ImagesShouldBeSavedInto=Изображенията трябва да бъдат записани в директория @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=Като добра SEO практика използ MainLanguage=Основен език OtherLanguages=Други езици UseManifest=Въведете manifest.json файл +PublicAuthorAlias=Публичен псевдоним на автора +AvailableLanguagesAreDefinedIntoWebsiteProperties=Наличните езици сa дефинирани в свойствата на уебсайта +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/bn_BD/admin.lang b/htdocs/langs/bn_BD/admin.lang index 2f36c876c1a..0205f246b0c 100644 --- a/htdocs/langs/bn_BD/admin.lang +++ b/htdocs/langs/bn_BD/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/bn_BD/bills.lang b/htdocs/langs/bn_BD/bills.lang index a8b48700ee6..5c9c86c1376 100644 --- a/htdocs/langs/bn_BD/bills.lang +++ b/htdocs/langs/bn_BD/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment ? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/bn_BD/blockedlog.lang b/htdocs/langs/bn_BD/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/bn_BD/blockedlog.lang +++ b/htdocs/langs/bn_BD/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/bn_BD/cashdesk.lang b/htdocs/langs/bn_BD/cashdesk.lang index 7ddbc71f3e9..f9f00015840 100644 --- a/htdocs/langs/bn_BD/cashdesk.lang +++ b/htdocs/langs/bn_BD/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/bn_BD/companies.lang b/htdocs/langs/bn_BD/companies.lang index 3de0eb0c8e3..4ef1ae39ddd 100644 --- a/htdocs/langs/bn_BD/companies.lang +++ b/htdocs/langs/bn_BD/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/bn_BD/compta.lang b/htdocs/langs/bn_BD/compta.lang index 1de030a1905..6cd046c5607 100644 --- a/htdocs/langs/bn_BD/compta.lang +++ b/htdocs/langs/bn_BD/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/bn_BD/errors.lang b/htdocs/langs/bn_BD/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/bn_BD/errors.lang +++ b/htdocs/langs/bn_BD/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/bn_BD/install.lang b/htdocs/langs/bn_BD/install.lang index bf9c08c4ba7..f67dff57184 100644 --- a/htdocs/langs/bn_BD/install.lang +++ b/htdocs/langs/bn_BD/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/bn_BD/link.lang b/htdocs/langs/bn_BD/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/bn_BD/link.lang +++ b/htdocs/langs/bn_BD/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/bn_BD/mails.lang b/htdocs/langs/bn_BD/mails.lang index 8b92cef3103..7b3bfd3852a 100644 --- a/htdocs/langs/bn_BD/mails.lang +++ b/htdocs/langs/bn_BD/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/bn_BD/main.lang b/htdocs/langs/bn_BD/main.lang index a29b56dc3bf..2f70685f627 100644 --- a/htdocs/langs/bn_BD/main.lang +++ b/htdocs/langs/bn_BD/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/bn_BD/other.lang b/htdocs/langs/bn_BD/other.lang index 00259d976bc..ba85f51e739 100644 --- a/htdocs/langs/bn_BD/other.lang +++ b/htdocs/langs/bn_BD/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/bn_BD/products.lang b/htdocs/langs/bn_BD/products.lang index d8a3192551f..a31243a07b6 100644 --- a/htdocs/langs/bn_BD/products.lang +++ b/htdocs/langs/bn_BD/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/bn_BD/projects.lang b/htdocs/langs/bn_BD/projects.lang index 94e440f9ab9..cdc0e6b3c95 100644 --- a/htdocs/langs/bn_BD/projects.lang +++ b/htdocs/langs/bn_BD/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/bn_BD/receiptprinter.lang b/htdocs/langs/bn_BD/receiptprinter.lang index 3df49b9fe67..896eaa313dd 100644 --- a/htdocs/langs/bn_BD/receiptprinter.lang +++ b/htdocs/langs/bn_BD/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/bn_BD/stripe.lang b/htdocs/langs/bn_BD/stripe.lang index eb77441d2cd..844762040af 100644 --- a/htdocs/langs/bn_BD/stripe.lang +++ b/htdocs/langs/bn_BD/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/bn_BD/users.lang b/htdocs/langs/bn_BD/users.lang index 43fa5342da3..aea4e7676e4 100644 --- a/htdocs/langs/bn_BD/users.lang +++ b/htdocs/langs/bn_BD/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/bn_BD/website.lang b/htdocs/langs/bn_BD/website.lang index 9e5c4ba3ff8..c802b2d2ae8 100644 --- a/htdocs/langs/bn_BD/website.lang +++ b/htdocs/langs/bn_BD/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/bs_BA/admin.lang b/htdocs/langs/bs_BA/admin.lang index e8725dacf6f..8747ea5b951 100644 --- a/htdocs/langs/bs_BA/admin.lang +++ b/htdocs/langs/bs_BA/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Više parametara preko komandne linije -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Postavke modula za računovodstvo UserSetup=Postavke upravljanja korisnika MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=Link +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Upozorenje, ova vrijednost se može prebrisati posebnim postavkama korisnika (svaki korisnik može postaviti svoj clicktodial URL) -ExternalModule=Eksterni moduli - Instalirani u direktorij %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Stopa LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Vodeni žig na nacrte komercijalnih prijedloga (ništa, ako je prazno) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/bs_BA/bills.lang b/htdocs/langs/bs_BA/bills.lang index ad9be7f229a..252e06a5c6c 100644 --- a/htdocs/langs/bs_BA/bills.lang +++ b/htdocs/langs/bs_BA/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=fakture dobavljača Payment=Uplata -PaymentBack=Povrat uplate -CustomerInvoicePaymentBack=Povrat uplate +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Uplate PaymentsBack=Refunds paymentInInvoiceCurrency=u valuti faktura PaidBack=Uplaćeno nazad DeletePayment=Obriši uplatu ConfirmDeletePayment=Da li ste sigurni da želite obrisati ovu uplatu? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Primljene uplate @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Platiti ToMakePaymentBack=Povrat uplate ListOfYourUnpaidInvoices=Lista neplaćenih faktura NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Carinski pečat +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=PDF šablon Crevette za račune. Kompletan šablon za situiranje privremenih situacija TerreNumRefModelDesc1=Predlaga številko v formatu %syymm-nnnn za standardne račune in %syymm-nnnn za dobropise kjer je yy leto, mm mesec in nnnn zaporedna broj brez presledkov in večja od 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Faktura obrisana +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/bs_BA/blockedlog.lang b/htdocs/langs/bs_BA/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/bs_BA/blockedlog.lang +++ b/htdocs/langs/bs_BA/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/bs_BA/cashdesk.lang b/htdocs/langs/bs_BA/cashdesk.lang index e97f4077a5c..30796188873 100644 --- a/htdocs/langs/bs_BA/cashdesk.lang +++ b/htdocs/langs/bs_BA/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Dodaj ovaj proizvod RestartSelling=Nazad na prodaju SellFinished=Sale complete PrintTicket=Isprintaj račun +SendTicket=Send ticket NoProductFound=Nema pronađenih proizvoda ProductFound=proizvod pronađen NoArticle=Nema proizvoda @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Broj faktura Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/bs_BA/companies.lang b/htdocs/langs/bs_BA/companies.lang index 38ad3fdea51..af7c0a6cc82 100644 --- a/htdocs/langs/bs_BA/companies.lang +++ b/htdocs/langs/bs_BA/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Kompanija"%s" obrisana iz baze podataka ListOfContacts=Lista kontakta/adresa ListOfContactsAddresses=Lista kontakta/adresa ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Prikaži kontakt ContactsAllShort=Svi (bez filtera) ContactType=Tip kontakta @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Ime predstavnika prodaje SaleRepresentativeLastname=Prezime predstavnika prodaje ErrorThirdpartiesMerge=Nastala je greška pri brisanju treće strane. Molimo vas da provjerite zapisnik. Izmjene su vraćene. NewCustomerSupplierCodeProposed=Customer or Vendor code already used, a new code is suggested +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/bs_BA/compta.lang b/htdocs/langs/bs_BA/compta.lang index 247a97b2fb1..488ffaee0e9 100644 --- a/htdocs/langs/bs_BA/compta.lang +++ b/htdocs/langs/bs_BA/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/bs_BA/errors.lang b/htdocs/langs/bs_BA/errors.lang index 4cb8dc104bf..5ab22b34cc1 100644 --- a/htdocs/langs/bs_BA/errors.lang +++ b/htdocs/langs/bs_BA/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/bs_BA/install.lang b/htdocs/langs/bs_BA/install.lang index df3d27d0459..204e5360006 100644 --- a/htdocs/langs/bs_BA/install.lang +++ b/htdocs/langs/bs_BA/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Vaša maksimalna memorija za PHP sesiju je postavljena na <b>%s</b>. To bi trebalo biti dovoljno. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Direktorij %s ne postoji. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/bs_BA/link.lang b/htdocs/langs/bs_BA/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/bs_BA/link.lang +++ b/htdocs/langs/bs_BA/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/bs_BA/mails.lang b/htdocs/langs/bs_BA/mails.lang index 386a1f9a367..3b41f698ef6 100644 --- a/htdocs/langs/bs_BA/mails.lang +++ b/htdocs/langs/bs_BA/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Inromacije ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/bs_BA/main.lang b/htdocs/langs/bs_BA/main.lang index 8e35d27d977..a025ce378fb 100644 --- a/htdocs/langs/bs_BA/main.lang +++ b/htdocs/langs/bs_BA/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test konekcije ToClone=Kloniraj +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Nije definiran podatak za kloniranje. Of=od @@ -829,6 +830,8 @@ Gender=Spol Genderman=Muškarac Genderwoman=Žena ViewList=Lista +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obavezno Hello=Zdravo GoodBye=Zbogom @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/bs_BA/other.lang b/htdocs/langs/bs_BA/other.lang index 91eec967638..0ecb34ad42f 100644 --- a/htdocs/langs/bs_BA/other.lang +++ b/htdocs/langs/bs_BA/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Titula WEBSITE_DESCRIPTION=Opis 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Linija za uvoz diff --git a/htdocs/langs/bs_BA/products.lang b/htdocs/langs/bs_BA/products.lang index a945967e610..afa6c414b77 100644 --- a/htdocs/langs/bs_BA/products.lang +++ b/htdocs/langs/bs_BA/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Jedinica p=u. diff --git a/htdocs/langs/bs_BA/projects.lang b/htdocs/langs/bs_BA/projects.lang index 48074f53837..56127b173e0 100644 --- a/htdocs/langs/bs_BA/projects.lang +++ b/htdocs/langs/bs_BA/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Vrijeme ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Povezane stavke ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Nova faktura OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/bs_BA/receiptprinter.lang b/htdocs/langs/bs_BA/receiptprinter.lang index 22f1e96b300..c8fa83f8e37 100644 --- a/htdocs/langs/bs_BA/receiptprinter.lang +++ b/htdocs/langs/bs_BA/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Referenca fakture +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Kapital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/bs_BA/stripe.lang b/htdocs/langs/bs_BA/stripe.lang index 3cbffcb605f..a1d7a15aa8b 100644 --- a/htdocs/langs/bs_BA/stripe.lang +++ b/htdocs/langs/bs_BA/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/bs_BA/users.lang b/htdocs/langs/bs_BA/users.lang index 5a9bc1af868..06906541007 100644 --- a/htdocs/langs/bs_BA/users.lang +++ b/htdocs/langs/bs_BA/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Korisnik domene %s Reactivate=Reaktivirati CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Dozvola je prenesena od jedne korisničke grupe. Inherited=Preneseno UserWillBeInternalUser=Kreirani korisnik će biti interni korisnik (jer nije povezan sa nekim subjektom) @@ -110,3 +110,8 @@ UserLogged=Korisnik prijavljen DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/bs_BA/website.lang b/htdocs/langs/bs_BA/website.lang index 0bb2c7d5870..735f153ab1f 100644 --- a/htdocs/langs/bs_BA/website.lang +++ b/htdocs/langs/bs_BA/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index b8125edbf2e..2b9c2c4ea33 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Observació: El seu PHP limita la mida a <b>%s</b> %s de NoMaxSizeByPHPLimit=Cap limitació interna en el seu servidor PHP MaxSizeForUploadedFiles=Tamany màxim dels documents a pujar (0 per prohibir la pujada) UseCaptchaCode=Utilització de codi gràfic (CAPTCHA) en el login -AntiVirusCommand= Ruta completa cap al comandament antivirus -AntiVirusCommandExample= Exemple per a ClamWin: c:\\Program Files (x86)\\ClamWin\\bin\\clamscan.exe<br>Exemple per a ClamAv: /usr/bin/clamscan +AntiVirusCommand=Ruta completa cap al comandament antivirus +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Paràmetres complementaris en la línia de comandes -AntiVirusParamExample= Exemple per a ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Configuració del mòdul Comptabilitat UserSetup=Configuració de gestió d'usuaris MultiCurrencySetup=Configuració multi-divisa @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Opció deshabilitada en demo FeatureAvailableOnlyOnStable=Funcionalitat disponible únicament en versions estables oficials 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 <a href="%s"> mòduls activats</a> són mostrats -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ó. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Pots trobar més mòduls per descarregar en pàgines web externes per internet... ModulesDeployDesc=Si els permisos en el seu sistema d'arxius ho permiteixen, pot utilitzar aquesta ferramente per instal·lar un mòdul extern. El mòdul estarà aleshores visible en la pestanya <strong>%s</strong> ModulesMarketPlaces=Trobar mòduls/complements externs @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible amb la versió %s NotCompatible=Aquest mòdul no sembla compatible amb el vostre Dolibarr %s (Mín %s - Màx %s). CompatibleAfterUpdate=Aquest mòdul requereix actualitzar el vostre Dolibarr %s (Mín %s - Màx %s). SeeInMarkerPlace=Veure a la tenda d'apps +SeeSetupOfModule=Vegi la configuració del mòdul %s Updated=Actualitzat Nouveauté=Novetat AchatTelechargement=Comprar / Descarregar @@ -221,6 +222,7 @@ DoliPartnersDesc=Llista d'empreses que proporcionen desenvolupament a mida de m 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=URL +RelativeURL=URL relativa BoxesAvailable=Panells disponibles BoxesActivated=Panells activats ActivateOn=Activar a @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Deixa-ho buit per usar el valor per defecte DefaultLink=Enllaç per defecte SetAsDefault=Indica'l com Defecte ValueOverwrittenByUserSetup=Atenció: Aquest valor pot ser sobreescrit per un valor específic de la configuració de l'usuari (cada usuari pot tenir la seva pròpia url clicktodial) -ExternalModule=Mòdul extern - Instal·lat al directori %s +ExternalModule=Mòdul extern +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Inicialització massiva de codis de barres per a tercers BarcodeInitForProductsOrServices=Inici massiu de codi de barres per productes o serveis CurrentlyNWithoutBarCode=Actualment, té <strong>%s</strong> registres a <strong>%s</strong> %s sense codi de barres definit. @@ -947,7 +950,7 @@ DictionaryCanton=Estats/Províncies DictionaryRegion=Regions DictionaryCountry=Països DictionaryCurrency=Monedes -DictionaryCivility=Títol de civisme +DictionaryCivility=Títols honorífics DictionaryActions=Tipus d'esdeveniments de l'agenda DictionarySocialContributions=Tipus d'impostos varis DictionaryVAT=Taxa d'IVA o Impost de vendes @@ -988,6 +991,7 @@ VATIsNotUsedDesc=El tipus d'IVA proposat per defecte és 0. Aquest és el cas d' 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 que no siguin declarades per vendes o empreses, organitzacions o professions liberals que hagin triat el sistema fiscal de la microempresa (Impost sobre vendes en franquícia) i paguen una franquícia. Impost sobre vendes sense declaració d'impost sobre vendes. Aquesta elecció mostrarà la referència "Impost sobre vendes no aplicable - art-293B de CGI" a les factures. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Tarifa LocalTax1IsNotUsed=No subjecte LocalTax1IsUsedDesc=Utilitzar un 2on tipus d'impost (diferent de l'IVA) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=El tipus d'IRPF proposat per defecte en les creacions de p 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=A Espanya, es tracta d'empreses no subjectes al règim fiscal de mòduls. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Informes d'impostos locals CalcLocaltax1=Vendes - Compres CalcLocaltax1Desc=Els informes es calculen amb la diferència entre les vendes i les compres @@ -1018,6 +1025,7 @@ CalcLocaltax2=Compres CalcLocaltax2Desc=Els informes es basen en el total de les compres CalcLocaltax3=Vendes CalcLocaltax3Desc=Els informes es basen en el total de les vendes +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Etiqueta utilitzada per defecte si no es troba cap traducció per aquest codi LabelOnDocuments=Etiqueta sobre documents LabelOrTranslationKey=Clau de traducció o cadena @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Informe de despeses per aprovar Delays_MAIN_DELAY_HOLIDAYS=Dies lliures a aprovar SetupDescription1=Abans de començar a utilitzar Dolibarr cal definir alguns paràmetres inicials i habilitar/configurar els mòduls. SetupDescription2=Les dues seccions següents són obligatòries (les dues primeres entrades al menú Configuració): -SetupDescription3= <a href="%s"> %s -> %s </a> <br> Paràmetres bàsics per personalitzar el comportament predeterminat de la vostra aplicació (per exemple, per a funcions relacionades amb el país). -SetupDescription4= <a href="%s"> %s -> %s </a> <br> Aquest programari és un conjunt de molts mòduls / aplicacions, tots ells més o menys independents. Els mòduls rellevants per a les vostres necessitats s'han d’habilitar i configurar. S'afegeixen nous elements / opcions als menús amb l’activació d’un mòdul. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Altres entrades del menú d'instal·lació gestionen paràmetres opcionals. LogEvents=Auditoria de la seguretat d'esdeveniments Audit=Auditoria @@ -1128,7 +1136,7 @@ LogEventDesc=Habiliteu el registre per a esdeveniments de seguretat específics. AreaForAdminOnly=Els paràmetres de configuració només poden ser establerts per <b>usuaris administradors</b>. SystemInfoDesc=La informació del sistema és informació tècnica accessible només en només lectura als administradors. SystemAreaForAdminOnly=Aquesta àrea només està disponible per als usuaris administradors. Els permisos d'usuari de Dolibarr no poden canviar aquesta restricció. -CompanyFundationDesc=Edita la informació de l’empresa / entitat. Feu clic al botó "%s" al final de la pàgina. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Si teniu un comptable extern, podeu editar aquí la seva informació. AccountantFileNumber=Número de fila DisplayDesc=Els paràmetres que afecten l'aspecte i el comportament de Dolibarr es poden modificar aquí. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Regles per generar i validar contrasenyes DisableForgetPasswordLinkOnLogonPage=No mostri l'enllaç "Contrasenya oblidada" a la pàgina d'inici de sessió UsersSetup=Configuració del mòdul usuaris UserMailRequired=Es necessita un correu electrònic per crear un nou usuari +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Configuració de mòdul de gestió de recursos humans ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Models de documents de factures BillsPDFModulesAccordindToInvoiceType=Model de documents de factures d'acord amb el tipus de factura PaymentsPDFModules=Models de documents de pagament ForceInvoiceDate=Forçar la data de factura a la data de validació -SuggestedPaymentModesIfNotDefinedInInvoice=Formes de pagament suggerides per a les factures si no estan definides explícitament +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggereix el pagament per retirada per compte SuggestPaymentByChequeToAddress=Suggereix pagament mitjançant xec a FreeLegalTextOnInvoices=Text lliure en factures @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Configuració de pagaments a proveïdors PropalSetup=Configuració del mòdul Pressupostos ProposalsNumberingModules=Models de numeració de pressupostos ProposalsPDFModules=Models de documents de pressupostos -SuggestedPaymentModesIfNotDefinedInProposal=El mode de pagaments suggerit a la proposta per defecte si no es defineix per a la proposta +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Text lliure en pressupostos WatermarkOnDraftProposal=Marca d'aigua en pressupostos esborrany (en cas d'estar buit) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Preguntar compte bancari del pressupost @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Preguntar per el magatzem d'origen per a la ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Demana el compte bancari de destí de la comanda de compra ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Configuració de gestió d'ordres de vendes OrdersNumberingModules=Models de numeració de comandes OrdersModelModule=Models de documents de comandes @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Advertència, els valors més alts fren ModuleActivated=El mòdul %s està activat i alenteix la interfície EXPORTS_SHARE_MODELS=Els models d’exportació es comparteixen amb tothom ExportSetup=Configuració del mòdul Export +ImportSetup=Setup of module Import InstanceUniqueID=ID únic de la instància SmallerThan=Menor que LargerThan=Major que @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Creeu un ping "+1" anònim al servidor de bases Doli FeatureNotAvailableWithReceptionModule=Funció no disponible quan el mòdul Recepció està habilitat EmailTemplate=Plantilla per correu electrònic EMailsWillHaveMessageID=Els correus electrònics tindran una etiqueta "Referències" que coincideix amb aquesta sintaxi -PDF_USE_ALSO_LANGUAGE_CODE=Si voleu tenir un títol de text al vostre PDF duplicat en 2 idiomes diferents en un mateix generar PDF, heu d’establir aquí aquest segon idioma de manera que el PDF generat contindrà 2 idiomes diferents a la mateixa pàgina, l’elecció al generar PDF i aquest. (només algunes plantilles PDF suporten això). Manteniu-lo buit per a 1 idioma per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Introduïu aquí el codi de la icona de FontAwesome. Si no sabeu què és FontAwesome, podeu utilitzar el llibre genèric d’adreces. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/ca_ES/bills.lang b/htdocs/langs/ca_ES/bills.lang index f9866a5e9fb..b6726202768 100644 --- a/htdocs/langs/ca_ES/bills.lang +++ b/htdocs/langs/ca_ES/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Factures de proveïdors SupplierBill=Factura del proveïdor SupplierBills=Factures de proveïdors Payment=Pagament -PaymentBack=Reembossament -CustomerInvoicePaymentBack=Reembossament +PaymentBack=Devolució +CustomerInvoicePaymentBack=Devolució Payments=Pagaments PaymentsBack=Devolucions paymentInInvoiceCurrency=en divisa de factures PaidBack=Reemborsat DeletePayment=Elimina el pagament ConfirmDeletePayment=Esteu segur de voler eliminar aquest pagament? -ConfirmConvertToReduc=Voleu convertir aquest %s en un descompte absolut? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=L’import s’emmagatzemarà entre tots els descomptes i es podrà utilitzar com a descompte per a una factura actual o futura per a aquest client. -ConfirmConvertToReducSupplier=Voleu convertir aquest %s en un descompte absolut? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=L’import s’ha desat entre tots els descomptes i es podrà utilitzar com a descompte per a una factura actual o futura per a aquest proveïdor. SupplierPayments=Pagaments a proveïdors ReceivedPayments=Pagaments rebuts @@ -219,7 +219,10 @@ ShowInvoiceSituation=Mostra la factura de situació UseSituationInvoices=Permetre la factura de la situació UseSituationInvoicesCreditNote=Permet la nota de crèdit de la factura de situació Retainedwarranty=Garantia retinguda +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Percentatge de garantia retingut per defecte +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=Per pagar %s toPayOn=a pagar %s RetainedWarranty=Garantia retinguda @@ -509,11 +512,11 @@ ToMakePayment=Pagar ToMakePaymentBack=Reemborsar ListOfYourUnpaidInvoices=Llistat de factures impagades NoteListOfYourUnpaidInvoices=Nota: Aquest llistat només conté factures de tercers que tens enllaçats com a agent comercial. -RevenueStamp=Timbre fiscal +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Aquesta opció només està disponible al moment de crear una factura des de la llengüeta "Client" de tercers YouMustCreateInvoiceFromSupplierThird=Aquesta opció només està disponible quan es crea la factura des de la pestanya "proveïdor" d'un tercer YouMustCreateStandardInvoiceFirstDesc=Primer has de crear una factura estàndard i convertir-la en "plantilla" per crear una nova plantilla de factura -PDFCrabeDescription=Plantilla de factura PDF Crabe. Una plantilla de factura completa (implementació antiga de la plantilla Sponge) +PDFCrabeDescription=Plantilla de factura PDF Crabe. Una plantilla de factura completa PDFSpongeDescription=Plantilla PDF de factures Sponge. Una plantilla de factura completa PDFCrevetteDescription=Plantilla Crevette per factures PDF. Una plantilla de factura completa per factures de situació. TerreNumRefModelDesc1=Retorna el nombre sota el format %syymm-nnnn per a les factures i %syymm-nnnn per als abonaments on yy és l'any, mm. el mes i nnnn un comptador seqüencial sense ruptura i sense permanència a 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Estableix la data de finalització de la línia de serveis amb la AutoFillDateToShort=Estableix la data de finalització MaxNumberOfGenerationReached=Nombre màxim de gen. arribat BILL_DELETEInDolibarr=Factura esborrada +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/ca_ES/blockedlog.lang b/htdocs/langs/ca_ES/blockedlog.lang index 0a991ede0cf..2d1baa823d7 100644 --- a/htdocs/langs/ca_ES/blockedlog.lang +++ b/htdocs/langs/ca_ES/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Registres inalterables ShowAllFingerPrintsMightBeTooLong=Mostra tots els registres arxivats (pot ser llarg) ShowAllFingerPrintsErrorsMightBeTooLong=Mostra tots els registres d'arxiu no vàlids (pot ser llarg) DownloadBlockChain=Baixa les empremtes dactilars -KoCheckFingerprintValidity=L'entrada de registre arxivada no és vàlida. Significa que algú (un hacker?) Ha modificat algunes dades d'aquest re després de la seva gravació, o ha esborrat el registre arxivat anterior (comprova que existeix la línia anterior). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=El registre del registre arxivat és vàlid. Les dades d'aquesta línia no s'han modificat i l'entrada segueix l'anterior. OkCheckFingerprintValidityButChainIsKo=El registre arxivat sembla ser vàlid en comparació amb l'anterior, però la cadena s'ha corromput prèviament. AddedByAuthority=Emmagatzemat a l'autoritat remota diff --git a/htdocs/langs/ca_ES/cashdesk.lang b/htdocs/langs/ca_ES/cashdesk.lang index 369f180c048..f6dfbd865dc 100644 --- a/htdocs/langs/ca_ES/cashdesk.lang +++ b/htdocs/langs/ca_ES/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Afegeix aquest article RestartSelling=Reprendre la venda SellFinished=Venda acabada PrintTicket=Imprimir +SendTicket=Send ticket NoProductFound=Cap article trobat ProductFound=Producte trobat NoArticle=Cap article @@ -48,6 +49,7 @@ Footer=Peu de pàgina AmountAtEndOfPeriod=Import al final del període (dia, mes o any) TheoricalAmount=Import teòric RealAmount=Import real +CashFence=Cash fence CashFenceDone=Tancament de caixa realitzat pel període NbOfInvoices=Nº de factures Paymentnumpad=Tipus de pad per introduir el pagament @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS necessita que les categories de productes funcion OrderNotes=Notes de comanda CashDeskBankAccountFor=Compte predeterminat a utilitzar per als pagaments NoPaimementModesDefined=No hi ha cap mode de pagament definit a la configuració de TakePOS -TicketVatGrouped=IVA per grups als tiquets -AutoPrintTickets=Imprimeix automàticament els tiquets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Habiliteu funcions per a bar o restaurant ConfirmDeletionOfThisPOSSale=Confirmeu la supressió de la venda actual? ConfirmDiscardOfThisPOSSale=Voleu descartar aquesta venda actual? @@ -87,7 +90,19 @@ HeadBar=Barra de capçalera SortProductField=Camp per ordenar productes Browser=Navegador BrowserMethodDescription=Impressió de rebuts senzilla i senzilla. Només uns quants paràmetres per configurar el rebut. Imprimeix a través del navegador. -TakeposConnectorMethodDescription=Mòdul extern amb funcions addicionals. Possibilitat d'imprimir des de núvol. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Mètode d'impressió ReceiptPrinterMethodDescription=Mètode potent amb molts paràmetres. Completament personalitzable amb plantilles. No es pot imprimir des del núvol. -ByTerminal=By terminal +ByTerminal=Per terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Inicia una nova venda paral·lela +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Informe d'efectiu +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/ca_ES/companies.lang b/htdocs/langs/ca_ES/companies.lang index 2cd312297d8..223d1aa37e4 100644 --- a/htdocs/langs/ca_ES/companies.lang +++ b/htdocs/langs/ca_ES/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=L'empresa "%s" ha estat eliminada ListOfContacts=Llistat de contactes ListOfContactsAddresses=Llistat de contactes ListOfThirdParties=Llista de tercers -ShowCompany=Mostra el tercer ShowContact=Mostrar contacte ContactsAllShort=Tots (sense filtre) ContactType=Tipus de contacte @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Nom de l'agent comercial SaleRepresentativeLastname=Cognoms de l'agent comercial ErrorThirdpartiesMerge=S'ha produït un error en suprimir els tercers. Verifiqueu el registre. S'han revertit els canvis. NewCustomerSupplierCodeProposed=El codi de client o proveïdor ja utilitzat, es suggereix un codi nou +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Tipus de pagament - Client PaymentTermsCustomer=Condicions de pagament - Client diff --git a/htdocs/langs/ca_ES/compta.lang b/htdocs/langs/ca_ES/compta.lang index c74186ba10c..6cb0f6b1b98 100644 --- a/htdocs/langs/ca_ES/compta.lang +++ b/htdocs/langs/ca_ES/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Veure %sl'anàlisi de pagaments %s per a un càlcul d SeeReportInDueDebtMode=Veure l'informe %sanàlisi de factures%s per a un càlcul basat en factures registrades conegudes encara que encara no s'hagin comptabilitzat en el Llibre Major. SeeReportInBookkeepingMode=Veure <b>%sl'informe%s</b> per a un càlcul a <b> Taula de Llibre Major</b> RulesAmountWithTaxIncluded=- Els imports mostrats són amb tots els impostos inclosos. -RulesResultDue=- Inclou les factures pendents, despeses, IVA, donacions estiguen o no pagades. També s'inclou salaris pagats. <br> - Es basa en la data de la validació de les factures i l'IVA i en la data de venciment per a despeses. Per salaris definits amb el mòdul de Salari, s'utilitza la data de valor del pagament. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Inclou els pagaments reals realitzats en les factures, les despeses, l'IVA i els salaris. <br> - Es basa en les dates de pagament de les factures, les despeses, l'IVA i els salaris. La data de la donació per a la donació. -RulesCADue=- Inclou les factures degudes del client estiguin pagades o no. <br> - Es basa en la data de la validació d'aquestes factures. <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Inclou tots els pagaments efectius de factures rebuts dels clients. <br> - Es basa en la data de pagament d'aquestes factures <br> RulesCATotalSaleJournal=Inclou totes les línies de crèdit del Diari de venda. RulesAmountOnInOutBookkeepingRecord=Inclou un registre al vostre Llibre Major amb comptes comptables que tenen el grup "DESPESA" o "INGRÉS" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Facturació facturada pel tipus d'impost sobre la venda TurnoverCollectedbyVatrate=Facturació recaptada pel tipus d'impost sobre la venda PurchasebyVatrate=Compra per l'impost sobre vendes LabelToShow=Etiqueta curta +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/ca_ES/errors.lang b/htdocs/langs/ca_ES/errors.lang index 02a35eb9659..fc5e083a365 100644 --- a/htdocs/langs/ca_ES/errors.lang +++ b/htdocs/langs/ca_ES/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Arxiu no rebut íntegrament pel servidor. ErrorNoTmpDir=Directori temporal de recepció %s inexistent ErrorUploadBlockedByAddon=Pujada bloquejada per un plugin PHP/Apache. ErrorFileSizeTooLarge=La mida del fitxer és massa gran. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Longitud del camp massa llarg per al tipus int (màxim %s xifres) ErrorSizeTooLongForVarcharType=Longitud del camp massa llarg per al tipus cadena (màxim %s xifres) ErrorNoValueForSelectType=Els valors de la llista han de ser indicats @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, l’idioma de la pàgina ErrorBatchNoFoundForProductInWarehouse=No s'ha trobat lot / sèrie per al producte "%s" al magatzem "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No hi ha quantitat suficient per a aquest lot / sèrie per al producte "%s" al magatzem "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=El paràmetre PHP upload_max_filesize (%s) és superior al paràmetre PHP post_max_size (%s). No es tracta d’una configuració consistent. WarningPasswordSetWithNoAccount=S'ha indicat una contrasenya per aquest soci. En canvi, no s'ha creat cap compte d'usuari, de manera que aquesta contrasenya s'ha desat però no pot ser utilitzada per entrar a Dolibarr. Es pot utilitzar per un mòdul/interfície extern, però si no cal definir cap usuari i contrasenya per un soci, pots deshabilitar la opció "Gestiona l'entrada per tots els socis" des de la configuració del mòdul Socis. Si necessites gestionar una entrada sense contrasenya, pots mantenir aquest camp buit i permetre aquest avís. Nota: El correu electrònic es pot utilitzar per entrar si el soci està enllaçat a un usuarí diff --git a/htdocs/langs/ca_ES/install.lang b/htdocs/langs/ca_ES/install.lang index bc315d5b8b6..8a74e406fb7 100644 --- a/htdocs/langs/ca_ES/install.lang +++ b/htdocs/langs/ca_ES/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Aquest PHP suporta Curl. PHPSupportCalendar=Aquest PHP admet extensions de calendaris. PHPSupportUTF8=Aquest PHP és compatible amb les funcions UTF8. PHPSupportIntl=Aquest PHP admet funcions Intl. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=Aquest PHP admet les funcions %s. PHPMemoryOK=La seva memòria màxima de sessió PHP està definida a <b>%s</b>. Això hauria de ser suficient. PHPMemoryTooLow=La seva memòria màxima de sessió PHP està definida a <b>%s</b> bytes. Això és molt poc. Es recomana modificar el paràmetre <b>memory_limit</b> del seu arxiu <b> php.ini</b> a almenys <b>%s</b> octets. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=La teva instal·lació PHP no soporta Curl. ErrorPHPDoesNotSupportCalendar=La vostra instal·lació de PHP no admet extensions de calendari php. ErrorPHPDoesNotSupportUTF8=Aquest PHP no suporta les funcions UTF8. Resolgui el problema abans d'instal lar Dolibarr ja que no funcionarà correctamete. ErrorPHPDoesNotSupportIntl=La vostra instal·lació de PHP no admet funcions Intl. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=La teva instal·lació PHP no admet funcions %s. ErrorDirDoesNotExists=La carpeta <b>%s</b> no existeix o no és accessible. ErrorGoBackAndCorrectParameters=Torneu enrere i verifiqueu / corregiu els paràmetres. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=L'aplicació ha intentat actualitzar-se automàti YouTryInstallDisabledByFileLock=L'aplicació s'ha intentat actualitzar automàticament, però les pàgines d'instal·lació / actualització s'han desactivat per a la seguretat (per l'existència d'un fitxer de bloqueig <strong> install.lock </strong> al directori de documents del dolibarr). <br> ClickHereToGoToApp=Fes clic aquí per anar a la teva aplicació ClickOnLinkOrRemoveManualy=Feu clic al següent enllaç. Si sempre veieu aquesta mateixa pàgina, heu d'eliminar / canviar el nom del fitxer install.lock al directori de documents. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/ca_ES/link.lang b/htdocs/langs/ca_ES/link.lang index d385261415b..60bb39b3786 100644 --- a/htdocs/langs/ca_ES/link.lang +++ b/htdocs/langs/ca_ES/link.lang @@ -8,3 +8,4 @@ LinkRemoved=L'enllaç %s s'ha eliminat ErrorFailedToDeleteLink= Error en eliminar l'enllaç '<b>%s</b>' ErrorFailedToUpdateLink= Error en actualitzar l'enllaç '<b>%s</b>' URLToLink=URL a enllaçar +OverwriteIfExists=Sobreescriu el fitxer si existeix diff --git a/htdocs/langs/ca_ES/mails.lang b/htdocs/langs/ca_ES/mails.lang index 3a70554297a..33c56156b38 100644 --- a/htdocs/langs/ca_ES/mails.lang +++ b/htdocs/langs/ca_ES/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No s'han trobat contactes/adreces amb categoria NoContactLinkedToThirdpartieWithCategoryFound=No s'han trobat contactes/adreces amb categoria OutGoingEmailSetup=Configuració de correus electrònics sortints InGoingEmailSetup=Configuració de correus electrònics entrants -OutGoingEmailSetupForEmailing=Configuració del correu electrònic sortint (per enviament de correus massiu) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Configuració per defecte del correu electrònic sortint Information=Informació ContactsWithThirdpartyFilter=Contactes amb filtre de tercers diff --git a/htdocs/langs/ca_ES/main.lang b/htdocs/langs/ca_ES/main.lang index 8448d1b9644..c28f8eb03eb 100644 --- a/htdocs/langs/ca_ES/main.lang +++ b/htdocs/langs/ca_ES/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Desa i continua SaveAndNew=Guardar i nou TestConnection=Provar la connexió ToClone=Copiar +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Trieu les dades que voleu clonar: NoCloneOptionsSpecified=no hi ha dades definits per copiar Of=de @@ -829,6 +830,8 @@ Gender=Sexe Genderman=Home Genderwoman=Dona ViewList=Vista llistat +ViewGantt=Vista Gantt +ViewKanban=Vista de Kanban Mandatory=Obligatori Hello=Hola GoodBye=A reveure @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Seleccioneu les opcions gràfiques per crear un grà Measures=Mesures XAxis=Eix X YAxis=Eix Y +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirma l'eliminació del fitxer +DeleteFileText=Realment vols suprimir aquest fitxer? diff --git a/htdocs/langs/ca_ES/mrp.lang b/htdocs/langs/ca_ES/mrp.lang index 5b4b70f6c37..0e92fda2b8e 100644 --- a/htdocs/langs/ca_ES/mrp.lang +++ b/htdocs/langs/ca_ES/mrp.lang @@ -71,3 +71,5 @@ ProductQtyToProduceByMO=Quantitat de producte que encara es pot produir mitjanç AddNewConsumeLines=Afegiu una nova línia per consumir ProductsToConsume=Productes a consumir ProductsToProduce=Productes a produir +UnitCost=Cost unitari +TotalCost=Cost total diff --git a/htdocs/langs/ca_ES/orders.lang b/htdocs/langs/ca_ES/orders.lang index 7c3f75f91b8..fdbcc544fdb 100644 --- a/htdocs/langs/ca_ES/orders.lang +++ b/htdocs/langs/ca_ES/orders.lang @@ -141,7 +141,7 @@ OrderByEMail=Correu electrònic OrderByWWW=En línia OrderByPhone=Telèfon # Documents models -PDFEinsteinDescription=Un model complet de comanda (antiga implementació de la plantilla d'Eratosthene) +PDFEinsteinDescription=Un model complet de comanda PDFEratostheneDescription=Un model complet de comanda PDFEdisonDescription=Model de comanda simple PDFProformaDescription=Una plantilla completa de factura Proforma diff --git a/htdocs/langs/ca_ES/other.lang b/htdocs/langs/ca_ES/other.lang index dec9c733127..b98360624ba 100644 --- a/htdocs/langs/ca_ES/other.lang +++ b/htdocs/langs/ca_ES/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Actualment només és possible 1 camp com a Eix X. Només s’ha seleccionat el primer camp seleccionat. AtLeastOneMeasureIsRequired=Almenys 1 camp per a la mesura és obligatori AtLeastOneXAxisIsRequired=Almenys 1 camp per a l'Eix X és obligatori - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Ordre de venda validat Notify_ORDER_SENTBYMAIL=Ordre de venda enviat per correu Notify_ORDER_SUPPLIER_SENTBYMAIL=Ordre de compra enviat per correu electrònic @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL de pàgina WEBSITE_TITLE=Títol WEBSITE_DESCRIPTION=Descripció WEBSITE_IMAGE=Imatge -WEBSITE_IMAGEDesc=Camí relatiu dels mitjans d'imatge. Podeu mantenir aquest buit perquè no s'usa gaire (el contingut dinàmic pot utilitzar-se per mostrar una vista prèvia d'una llista de publicacions de bloc). +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Paraules clau LinesToImport=Línies per importar diff --git a/htdocs/langs/ca_ES/products.lang b/htdocs/langs/ca_ES/products.lang index 2832d002fa0..c184a1f0292 100644 --- a/htdocs/langs/ca_ES/products.lang +++ b/htdocs/langs/ca_ES/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Aquesta eina actualitza el tipus d'IVA establert a <b> 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) +ProductAccountancyBuyIntraCode=Codi comptable (compra intracomunitària) +ProductAccountancyBuyExportCode=Codi comptable (compra d'importació) ProductAccountancySellCode=Codi comptable (venda) ProductAccountancySellIntraCode=Codi de comptabilitat (venda intracomunitària) ProductAccountancySellExportCode=Codi comptable (exportació de venda) @@ -165,7 +167,7 @@ SuppliersPrices=Preus del proveïdor SuppliersPricesOfProductsOrServices=Preus del venedor (de productes o serveis) CustomCode=Duana / mercaderia / codi HS CountryOrigin=País d'origen -Nature=Naturalesa del producte (material / acabat) +Nature=Naturalesa del producte (material/acabat) ShortLabel=Etiqueta curta Unit=Unitat p=u. diff --git a/htdocs/langs/ca_ES/projects.lang b/htdocs/langs/ca_ES/projects.lang index a7e67fb92bc..906e3a6f5e4 100644 --- a/htdocs/langs/ca_ES/projects.lang +++ b/htdocs/langs/ca_ES/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=que estic vinculat al projecte Time=Temps ListOfTasks=Llistat de tasques GoToListOfTimeConsumed=Ves al llistat de temps consumit -GoToListOfTasks=Mostra com a llista -GoToGanttView=mostra com Gantt GanttView=Vista de Gantt ListProposalsAssociatedProject=Llista de propostes comercials relacionades amb el projecte ListOrdersAssociatedProject=Llista de comandes de vendes relacionades amb el projecte @@ -188,7 +186,7 @@ PlannedWorkload=Càrrega de treball prevista PlannedWorkloadShort=Càrrega de treball ProjectReferers=Registres relacionats ProjectMustBeValidatedFirst=El projecte primer ha de ser validat -FirstAddRessourceToAllocateTime=Associa un recurs d'usuari per reservar el temps de la tasca +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Entrada per dia InputPerWeek=Entrada per setmana InputPerMonth=Entrada per mes @@ -240,6 +238,7 @@ LatestModifiedProjects=Darrers %s projectes modificats OtherFilteredTasks=Altres tasques filtrades NoAssignedTasks=No es troben tasques assignades (assigni el projecte/tasques a l'usuari actual des del quadre de selecció superior per especificar-ne l'hora) ThirdPartyRequiredToGenerateInvoice=S'ha de definir un tercer en el projecte per poder facturar-lo. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Permet comentaris dels usuaris a les tasques AllowCommentOnProject=Permetre comentaris dels usuaris als projectes @@ -265,3 +264,4 @@ InvoiceToUse=Esborrany de factura a utilitzar NewInvoice=Nova factura OneLinePerTask=Una línia per tasca OneLinePerPeriod=Una línia per període +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/ca_ES/propal.lang b/htdocs/langs/ca_ES/propal.lang index 26e2cef2915..899f1354d94 100644 --- a/htdocs/langs/ca_ES/propal.lang +++ b/htdocs/langs/ca_ES/propal.lang @@ -76,7 +76,7 @@ TypeContact_propal_external_BILLING=Contacte client de facturació pressupost TypeContact_propal_external_CUSTOMER=Contacte client seguiment pressupost TypeContact_propal_external_SHIPPING=Contacte del client pel lliurament # Document models -DocModelAzurDescription=Un model complet de pressupost (antiga implementació de la plantilla Cyan) +DocModelAzurDescription=Un model complet de pressupost DocModelCyanDescription=Un model de pressupost complet DefaultModelPropalCreate=Model per defecte DefaultModelPropalToBill=Model per defecte en tancar un pressupost (a facturar) diff --git a/htdocs/langs/ca_ES/receiptprinter.lang b/htdocs/langs/ca_ES/receiptprinter.lang index d2a7476dbab..020308cba2b 100644 --- a/htdocs/langs/ca_ES/receiptprinter.lang +++ b/htdocs/langs/ca_ES/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Impressora de proves CONNECTOR_NETWORK_PRINT=Impresora en xarxa CONNECTOR_FILE_PRINT=Impressora local CONNECTOR_WINDOWS_PRINT=Impressora local en Windows +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Impresora de proves, no fa res CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Perfil per defecte PROFILE_SIMPLE=Perfil simpre PROFILE_EPOSTEP=Perfil Epos Tep @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Mes de factura en lletres DOL_VALUE_MONTH=Mes de factura DOL_VALUE_DAY=Dia de la factura DOL_VALUE_DAY_LETTERS=Dia de factura en lletres +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Ref. factura +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Nom del client +DOL_VALUE_CUSTOMER_LASTNAME=Cognom del client +DOL_VALUE_CUSTOMER_MAIL=Correu del client +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Mòbil del client +DOL_VALUE_CUSTOMER_SKYPE=Skype del client +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=El nom de l'empresa +DOL_VALUE_MYSOC_ADDRESS=La teva adreça d’empresa +DOL_VALUE_MYSOC_ZIP=El teu codi postal +DOL_VALUE_MYSOC_TOWN=La teva ciutat +DOL_VALUE_MYSOC_COUNTRY=El teu país +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=ID IVA intracomunitari +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Cognom del venedor +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/ca_ES/stripe.lang b/htdocs/langs/ca_ES/stripe.lang index 3e141657411..5b2c35e1295 100644 --- a/htdocs/langs/ca_ES/stripe.lang +++ b/htdocs/langs/ca_ES/stripe.lang @@ -32,6 +32,7 @@ VendorName=Nom del venedor CSSUrlForPaymentForm=Url del full d'estil CSS per al formulari de pagament NewStripePaymentReceived=S'ha rebut un nou pagament de Stripe NewStripePaymentFailed=S'ha intentat el pagament de Stripe però, ha fallat +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Clau secreta de test STRIPE_TEST_PUBLISHABLE_KEY=Clau de test publicable STRIPE_TEST_WEBHOOK_KEY=Clau de prova de Webhook @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Enllaç a la configuració de Stripe WebHook per truc ToOfferALinkForLiveWebhook=Enllaç a la configuració de Stripe WebHook per trucar a l’IPN (mode en directe) PaymentWillBeRecordedForNextPeriod=El pagament es registrarà per al període següent. ClickHereToTryAgain=<a href="%s">Feu clic aquí per tornar-ho a provar ...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Degut a les regles d’autenticatització del client, la creació d’una targeta s’ha de fer des del backoffice Stripe. Podeu fer clic aquí per activar el registre de clients de Stripe: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/ca_ES/ticket.lang b/htdocs/langs/ca_ES/ticket.lang index 6aaa092a6e5..a623ab8a9cd 100644 --- a/htdocs/langs/ca_ES/ticket.lang +++ b/htdocs/langs/ca_ES/ticket.lang @@ -133,7 +133,7 @@ TicketsDisableCustomerEmail=Desactiveu sempre els correus electrònics quan es c # # Index & list page # -TicketsIndex=Tiquet - inici +TicketsIndex=Àrea de tiquets TicketList=Llista de tiquets TicketAssignedToMeInfos=Aquesta pàgina mostra la llista de butlletes creada per o assignada a l'usuari actual NoTicketsFound=Tiquet no trobat diff --git a/htdocs/langs/ca_ES/users.lang b/htdocs/langs/ca_ES/users.lang index c71ee023a2d..33457aff18a 100644 --- a/htdocs/langs/ca_ES/users.lang +++ b/htdocs/langs/ca_ES/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Usuaris i les seves propietats DomainUser=Usuari de domini Reactivate=Reactivar CreateInternalUserDesc=Aquest formulari us permet crear un usuari intern a la vostra empresa / organització. Per crear un usuari extern (client, proveïdor, etc.), utilitzeu el botó 'Crear usuari Dolibarr' de la targeta de contacte d'un tercer. -InternalExternalDesc=Un usuari <b> intern </b> és un usuari que forma part de la seva empresa o organització. <br>Un usuari <b> extern </b> és un client, proveïdor o altre. <br> <br>En ambdós casos, els permisos defineixen drets sobre Dolibarr, també l'usuari extern pot tenir un gestor de menú diferent que l'usuari intern (vegeu Inici - Configuració - Visualització) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=El permís es concedeix ja que ho hereta d'un grup al qual pertany l'usuari. Inherited=Heretat UserWillBeInternalUser=L'usuari creat serà un usuari intern (ja que no està lligat a un tercer en particular) @@ -113,3 +113,5 @@ CantDisableYourself=No podeu desactivar el vostre propi registre d'usuari ForceUserExpenseValidator=Validador de l'informe de despeses obligatori ForceUserHolidayValidator=Forçar validador de sol·licitud d'abandonament ValidatorIsSupervisorByDefault=Per defecte, el validador és el supervisor de l’usuari. Deixar buit per mantenir aquest comportament. +UserPersonalEmail=Correu electrònic personal +UserPersonalMobile=Telèfon mòbil personal diff --git a/htdocs/langs/ca_ES/website.lang b/htdocs/langs/ca_ES/website.lang index c487d4bb9c9..95f7f8fff4d 100644 --- a/htdocs/langs/ca_ES/website.lang +++ b/htdocs/langs/ca_ES/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Mostra la pàgina en una nova pestanya SetAsHomePage=Indica com a Pàgina principal RealURL=URL real ViewWebsiteInProduction=Mostra la pàgina web utilitzant les URLs d'inici -SetHereVirtualHost=<u> Ús amb Apache / NGinx / ...</u> <br> Si podeu crear, en el vostre servidor web (Apache, Nginx, ...), un host virtual dedicat amb PHP habilitat i un directori Root a <br> <strong> %s </strong> <br> i, a continuació, estableixi el nom de l'amfitrió virtual que heu creat a les propietats del lloc web, de manera que la previsualització es pot fer també usant aquest accés dedicat al servidor web en lloc del Dolibarr intern servidor. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u> Utilitzeu-lo amb el servidor incrustat de PHP </u> <br> Al desenvolupar l'entorn, és possible que preferiu provar el lloc amb el servidor web incrustat de PHP (requereix PHP 5.5) executant<br> <strong> php -S 0.0. 0.0: 8080 -t %s </strong> YouCanAlsoDeployToAnotherWHP=<u>Executeu el vostre lloc web amb un altre proveïdor de hosting de Dolibarr</u> <br> Si no teniu disponible un servidor web com Apache o NGinx a Internet, podeu exportar i importar el vostre lloc web a una altra instància de Dolibarr proporcionada per un altre proveïdor d'allotjament de Dolibarr que ofereixi una integració completa amb el mòdul del lloc web. Podeu trobar una llista d'alguns proveïdors d'allotjament Dolibarr a <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Comproveu també que l'amfitrió virtual té permisos <strong> %s </strong> en fitxers a <strong> %s </strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Ho sentim, actualment aquest lloc web està fora WEBSITE_USE_WEBSITE_ACCOUNTS=Activa la taula del compte del lloc web WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Activeu la taula per emmagatzemar comptes del lloc web (login/contrasenya) per a cada lloc web de tercers YouMustDefineTheHomePage=Primer heu de definir la pàgina d'inici predeterminada -OnlyEditionOfSourceForGrabbedContentFuture=Advertència: crear una pàgina web mitjançant la importació d'una pàgina web externa està reservada als usuaris experimentats. Depenent de la complexitat de la pàgina d'origen, el resultat de la importació pot diferir de l'original. A més, si la pàgina d'origen utilitza estils CSS comuns o javascript en conflicte, pot trencar l'aspecte o les característiques de l'editor del lloc web quan es treballa en aquesta pàgina. Aquest mètode és una forma més ràpida de crear una pàgina, però es recomana crear la nova pàgina des de zero o des d'una plantilla de pàgina suggerida. <br>Recordeu també que les modificacions de l'origen HTML seran possibles quan el contingut de la pàgina s'hagi iniciat agafant-lo des d'una pàgina externa (l'editor "Online" NO estarà disponible) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Només l'edició de codi HTML és possible quan el contingut s'ha capturat d'un lloc extern GrabImagesInto=Agafa també imatges trobades dins del css i a la pàgina. ImagesShouldBeSavedInto=Les imatges s'han de desar al directori @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=Per seguir bones pràctiques de SEO, utilitzeu un text MainLanguage=Idioma principal OtherLanguages=Altres idiomes UseManifest=Proporciona un fitxer manifest.json +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/cs_CZ/admin.lang b/htdocs/langs/cs_CZ/admin.lang index aa95438270a..166b9aaaaf3 100644 --- a/htdocs/langs/cs_CZ/admin.lang +++ b/htdocs/langs/cs_CZ/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Poznámka: <b> vaše konfigurace PHP </b> momentálně o NoMaxSizeByPHPLimit=Poznámka: Ve Vaší PHP konfiguraci není nastaven limit MaxSizeForUploadedFiles=Maximální velikost nahrávaných souborů (0 pro zablokování nahrávání) UseCaptchaCode=Použít grafický kód (CAPTCHA) na přihlašovací stránce -AntiVirusCommand= Úplná cesta k antivirovému souboru -AntiVirusCommandExample= Příklad pro ClamWin: C: \\ PROGRA ~ 1 \\ ClamWin \\ bin \\ clamscan.exe <br> Příklad pro ClamAV: / usr / bin / clamscan +AntiVirusCommand=Úplná cesta k antivirovému souboru +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Další parametry příkazového řádku -AntiVirusParamExample= Příklad ClamWin: - databáze = "C: \\ Program Files (x86) \\ ClamWin \\ lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Nastavení účetního modulu UserSetup=Nastavení správy uživatelů MultiCurrencySetup=Nastavení více měn @@ -149,7 +149,7 @@ SystemToolsAreaDesc=Tato oblast poskytuje uživatelských funkcí. Pomocí nabí Purge=Očistit PurgeAreaDesc=Tato stránka umožňuje odstranit všechny soubory generované nebo uložené v Dolibarr (dočasné soubory nebo všechny soubory v adresáři <b> %s </b>). Použití této funkce není obvykle nutné. Je poskytována jako řešení pro uživatele, jejichž Dolibarr hostuje poskytovatel, který nenabízí oprávnění k odstranění souborů generovaných webovým serverem. PurgeDeleteLogFile=Odstranit soubory protokolu, včetně <b> %s </b> definované pro modul Syslog (bez rizika ztráty dat) -PurgeDeleteTemporaryFiles=Delete all temporary files (no risk of losing data). Note: Deletion is done only if the temp directory was created 24 hours ago. +PurgeDeleteTemporaryFiles=Odstraňte všechny dočasné soubory (bez rizika ztráty dat). Poznámka: Odstranění se provede pouze v případě, že dočasný adresář byl vytvořen před 24 hodinami. PurgeDeleteTemporaryFilesShort=Odstranit dočasné soubory PurgeDeleteAllFilesInDocumentsDir=Odstranit všechny soubory v adresáři: <b> %s </b>. <br> Tímto odstraníte všechny generované dokumenty související s prvky (subjekty, faktury atd.), Soubory nahrané do modulu ECM, zálohování databází a dočasné soubory. PurgeRunNow=Vyčistit nyní @@ -178,8 +178,8 @@ Compression=Komprese CommandsToDisableForeignKeysForImport=Příkaz pro zákaz cizích klíču při importu CommandsToDisableForeignKeysForImportWarning=Povinné, pokud chcete být schopni obnovit SQL dump později ExportCompatibility=Kompatibilita vytvořeného souboru exportu -ExportUseMySQLQuickParameter=Use the --quick parameter -ExportUseMySQLQuickParameterHelp=The '--quick' parameter helps limit RAM consumption for large tables. +ExportUseMySQLQuickParameter=Použijte --rychlý parametr +ExportUseMySQLQuickParameterHelp=Parametr '- quick' pomáhá omezit spotřebu RAM u velkých tabulek. MySqlExportParameters=MySQL parametry exportu PostgreSqlExportParameters= PostgreSQL parametry exportu UseTransactionnalMode=Použití transakční režim @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Funkce zakázána v demu FeatureAvailableOnlyOnStable=Funkce je k dispozici pouze v oficiálních stabilních verzích BoxesDesc=Widgety jsou oblasti obrazovky, které ukazují krátké informace na některých stránkách. Můžete si vybrat mezi zobrazením/schováním boxu zvolením cílové stránky a kliknutím na 'Aktivovat' nebo kliknutím na popelnici ji zakázat. OnlyActiveElementsAreShown=Pouze prvky z <a href="%s">povolených modulů</a> jsou uvedeny. -ModulesDesc=Moduly / aplikace určují, které funkce jsou v softwaru k dispozici. Některé moduly vyžadují oprávnění, která mají být udělena uživatelům po aktivaci modulu. Klepnutím na tlačítko zapnuto / vypnuto (na konci linky modulu) aktivujete / deaktivujete modul / aplikaci. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Více modulů naleznete ke stažení na externích webových stránkách ... ModulesDeployDesc=Pokud to umožňují oprávnění vašeho souborového systému, můžete pomocí tohoto nástroje nasadit externí modul. Modul bude potom viditelný na kartě <strong> %s </strong>. ModulesMarketPlaces=Najděte externí aplikaci / moduly @@ -212,6 +212,7 @@ CompatibleUpTo=Kompatibilní s verzí %s NotCompatible=Tento modul se nezdá být kompatibilní s Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=Tento modul vyžaduje aktualizaci souboru Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Podívejte se na trh +SeeSetupOfModule=Viz nastavení modulu %s Updated=Aktualizováno Nouveauté=Novinka AchatTelechargement=Koupit / stáhnout @@ -221,6 +222,7 @@ DoliPartnersDesc=Seznam firem, které poskytují vlastní moduly nebo funkce. <b WebSiteDesc=Externí webové stránky pro další (doplňkové) moduly ... DevelopYourModuleDesc=Některá řešení pro vývoj vlastního modulu ... URL=URL +RelativeURL=Relative URL BoxesAvailable=widgety k dispozici BoxesActivated=Widgety aktivovány ActivateOn=Aktivace na @@ -270,7 +272,7 @@ Emails=Emaily EMailsSetup=Nastavení emailů EMailsDesc=Tato stránka vám umožňuje předcházet výchozí parametry PHP pro odesílání e-mailů. Ve většině případů v systému Unix / Linux je nastavení PHP správné a tyto parametry jsou zbytečné. EmailSenderProfiles=Profily odesílatelů e-mailů -EMailsSenderProfileDesc=You can keep this section empty. If you enter some emails here, they will be added to the list of possible senders into the combobox when your write a new email. +EMailsSenderProfileDesc=Tuto sekci můžete ponechat prázdnou. Pokud sem zadáte nějaké e-maily, budou při psaní nového e-mailu přidány do seznamu možných odesílatelů do combo boxu. MAIN_MAIL_SMTP_PORT=SMTP / SMTPS Port (Výchozí nastavení v php.ini: <b>%s</b>) MAIN_MAIL_SMTP_SERVER=SMTP / SMTPS Host (Výchozí nastavení v php.ini: <b>%s</b>) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP / SMTPS Port (Nedefinováno v PHP na Unixových systémech) @@ -280,7 +282,7 @@ MAIN_MAIL_ERRORS_TO=E-mail, který se používá pro hlášení chyb, vrací e-m MAIN_MAIL_AUTOCOPY_TO= Kopírovat (Bcc) všechny odeslané e-maily MAIN_DISABLE_ALL_MAILS=Zakázat veškeré odesílání e-mailů (pro testovací účely nebo ukázky) MAIN_MAIL_FORCE_SENDTO=Pošlete všechny e-maily do (namísto skutečných příjemců pro testovací účely) -MAIN_MAIL_ENABLED_USER_DEST_SELECT=Suggest emails of employees (if defined) into the list of predefined recipient when writing a new email +MAIN_MAIL_ENABLED_USER_DEST_SELECT=Při psaní nového e-mailu navrhujte e-maily zaměstnanců (pokud jsou definováni) do seznamu předdefinovaných příjemců MAIN_MAIL_SENDMODE=Metoda odesílání e-mailů MAIN_MAIL_SMTPS_ID=ID SMTP (pokud odesílající server vyžaduje ověření) MAIN_MAIL_SMTPS_PW=Heslo SMTP (pokud server pro odesílání vyžaduje ověření) @@ -328,7 +330,7 @@ SetupIsReadyForUse=Zavedení modulu je dokončeno. Musíte však povolit a nasta NotExistsDirect=Alternativní kořenový adresář není definován. <br> InfDirAlt=Od verze 3 je možné definovat alternativní kořenovou složku. To umožňuje ukládat na stejné místo plug-iny a vlastní šablony. <br> Stačí vytvořit adresář v kořenovém adresáři Dolibarr (např.: custom). <br> InfDirExample= <br> Pak deklarujte v souboru <strong> conf.php </strong> <br> $ dolibarr_main_url_root_alt = '/ custom' <br> $ dolibarr_main_document_root_alt = '/ cesta / z / dolibarr / htdocs / custom' <br> Pokud jsou tyto řádky komentovány "#" , stačí odkomentovat odstraněním znaku "#". -YouCanSubmitFile=You can upload the .zip file of module package from here: +YouCanSubmitFile=Zde můžete nahrát soubor .zip balíčku modulů: CurrentVersion=Dolibarr aktuální verze CallUpdatePage=Projděte stránku, která aktualizuje databázovou strukturu a data: %s. LastStableVersion=Poslední stabilní verze @@ -403,7 +405,7 @@ OldVATRates=Staré Sazba DPH NewVATRates=Nová sazba DPH PriceBaseTypeToChange=Změňte ceny podle základní referenční hodnoty definované na MassConvert=Spusťte hromadnou konverzi -PriceFormatInCurrentLanguage=Price Format In Current Language +PriceFormatInCurrentLanguage=Formát ceny v aktuálním jazyce String=Řetěz TextLong=Dlouhý text HtmlText=Html text @@ -426,8 +428,8 @@ ExtrafieldCheckBoxFromList=Zaškrtávací políčka z tabulky ExtrafieldLink=Odkaz na objekt ComputedFormula=Vypočtené pole ComputedFormulaDesc=Zde můžete zadat vzorec pomocí jiných vlastností objektu nebo libovolného kódování PHP pro získání dynamické vypočtené hodnoty. Můžete použít libovolné kompatibilní formule PHP včetně "?" operátor stavu a následující globální objekt: <strong> $ db, $ conf, $ langs, $ mysoc, $ user, $ objekt </strong>. <br> <strong> VAROVÁNÍ </strong>: K dispozici jsou pouze některé vlastnosti objektu $. Pokud potřebujete vlastnosti, které nejsou načteny, jednoduše přiveďte objekt do vzorce, jako ve druhém příkladu. <br> Použití vypočítaného pole znamená, že nemůžete zadat libovolnou hodnotu z rozhraní. Také pokud existuje syntaktická chyba, vzorec může vrátit nic. <br> <br> Příklad vzorce: <br> $ object-> id < 10 ? round($object-> id / 2, 2): ($ objekt-> id + 2 * $ user-> id) * (int) substr ($ mysoc-> zip, 1, 2 ) <br> <br> Příklad pro opětovné načtení objektu <br> (($ reloadedobj = new Societe ($ db)) && ($ reloadedobj-> fetch ($ obj-> id? $ Obj-> id: > rowid: $ object-> id))> 0))? $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1' <br> <br> Jiný příklad vzoru pro zatížení objektu a jeho nadřazeného objektu: <br> ($ reloadedobj = new Task )) && ($ reloadedobj-> fetch ($ object-> id)> 0) && ($ secondloadedobj = nový projekt ($ db)) && ($ secondloadedobj-> fetch ($ reloadedobj-> fk_project)> 0))? $ secondloadedobj-> ref: 'Nadřazený projekt nebyl nalezen' -Computedpersistent=Store computed field -ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! +Computedpersistent=Uložte vypočítané pole +ComputedpersistentDesc=Vypočítaná další pole pole budou uložena do databáze, hodnota však bude přepočítána pouze při změně objektu tohoto pole. Pokud vypočítané pole závisí na jiných objektech nebo globálních datech, může být tato hodnota špatná !! ExtrafieldParamHelpPassword=Pokud ponecháte toto pole prázdné, znamená to, že tato hodnota bude uložena bez šifrování (pole musí být skryto pouze s hvězdou na obrazovce). <br> Nastavte "auto" pro použití výchozího šifrovacího pravidla pro uložení hesla do databáze (pak hodnota bude číst pouze hash, žádný způsob získání původní hodnoty) ExtrafieldParamHelpselect=Seznam hodnot musí být řádky s formátovým klíčem, hodnota (kde klíč nemůže být '0') <br> <br> například: <br> 1, value1 <br> 2, value2 <br> code3, value3 <br> ... <br> <br> seznam v závislosti na dalším doplňkovém seznamu atributů: <br> 1, value1 | options_ <i> parent_list_code </i>: parent_key <br> 2, value2 | options_ <i> parent_list_code </i>: parent_key <br> <br> Chcete-li mít seznam v závislosti na jiném seznamu: <br> 1, hodnota1 | <i> parent_list_code </i>: parent_key <br> 2, hodnota2 | <i> parent_list_code </i>: parent_key ExtrafieldParamHelpcheckbox=Seznam hodnot musí být řádky s formátovým klíčem, hodnota (kde klíč nemůže být '0') <br> <br> například: <br> 1, value1 <br> 2, value2 <br> 3, value3 <br> ... @@ -435,7 +437,7 @@ ExtrafieldParamHelpradio=Seznam hodnot musí být řádky s formátovým klíče ExtrafieldParamHelpsellist=Seznam hodnot pochází z tabulky <br> Syntaxe: table_name: label_field: id_field :: filter <br> Příklad: c_typent: libelle: id :: filter <br> <br> - idfilter je nutně primární int klíč <br> - filtr může být jednoduchý test = 1) pro zobrazení pouze aktivní hodnoty <br> Můžete také použít $ ID $ ve filtru, který je aktuálním id aktuálního objektu <br> Chcete-li provést SELECT ve filtru, použijte $ SEL $ <br>, pokud chcete filtrovat na extrafields použít syntaxi extra.fieldcode = ... (kde kód pole je kód extrafield) <br> <br> Aby byl seznam v závislosti na jiném seznamu doplňkových atributů: <br> c_typent: libelle: id: options_ <i> parent_list_code </i> | parent_column: filter <br> <br> Aby bylo možné mít seznam v závislosti na jiném seznamu: <br> c_typent: libelle: id: <i> parent_list_code </i> | parent_column: filtr ExtrafieldParamHelpchkbxlst=Seznam hodnot pochází z tabulky <br> Syntaxe: table_name: label_field: id_field :: filter <br> Příklad: c_typent: libelle: id :: filter <br> <br> filtr může být jednoduchý test (např. Aktivní = 1) pro zobrazení pouze aktivní hodnoty <br> You může také použít $ ID $ ve filtru, který je aktuální id aktuálního objektu <br> Chcete-li provést SELECT ve filtru, použijte $ SEL $ <br>, pokud chcete filtrovat na extrafields použijte syntaxi extra.fieldcode = ... (kde kód pole je code of extrafield) <br> <br> Aby byl seznam v závislosti na jiném seznamu doplňkových atributů: <br> c_typent: libelle: id: options_ <i> parent_list_code </i> | parent_column: filter <br> <br> Aby byl seznam v závislosti na jiném seznamu: <br> c_typent: libelle: id: <i> parent_list_code </i> | nadřazený sloupec: filtr ExtrafieldParamHelplink=Parametry musí být ObjectName: Classpath <br> Syntaxe: Název_objektu: Classpath <br> Příklady: <br> Societe: societe / class / societe.class.php <br> Kontakt: contact / class / contact.class.php -ExtrafieldParamHelpSeparator=Keep empty for a simple separator<br>Set this to 1 for a collapsing separator (open by default for new session, then status is kept for each user session)<br>Set this to 2 for a collapsing separator (collapsed by default for new session, then status is kept fore each user session) +ExtrafieldParamHelpSeparator=Ponechte prázdné pro jednoduchý oddělovač <br> Tuto hodnotu nastavíte na 1 pro odlučovač (výchozí nastavení je otevřeno pro novou relaci, poté je stav zachován pro každou uživatelskou relaci) <br>Nastavte tuto položku na 2 pro sbalující se oddělovač. (ve výchozím nastavení sbaleno pro novou relaci, pak je stav udržován pro každou relaci uživatele) LibraryToBuildPDF=Knihovna používaná pro generování PDF LocalTaxDesc=Některé země mohou uplatnit dvě nebo tři daně na každé čáře faktur. Pokud tomu tak je, vyberte typ druhého a třetího daně a jeho sazbu. Možné typy jsou: <br> 1: místní daň se vztahuje na produkty a služby bez DPH (platí se na základě daně bez daně) <br> 2: místní daň se vztahuje na produkty a služby, včetně DPH (0%) 3x342fccfda19b 3: místní daň se vztahuje na produkty bez DPH (místní taxa se vypočítává z částky bez daně) <br> 4: místní daň se vztahuje na produkty včetně DPH (místní taxa se vypočítává z částky + hlavní daň) <br> 5: Místní daň platí pro služby bez DPH z částky bez daně) <br> 6: Místní daň platí za služby včetně DPH (místní taxa se vypočítává z částky + daně) SMS=SMS @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Uchovávejte prázdnou pro použití výchozí hodnoty DefaultLink=Výchozí odkaz SetAsDefault=Nastavit jako výchozí ValueOverwrittenByUserSetup=Upozornění: tato hodnota může být přepsána uživatelsky specifickým nastavením (každý uživatel si může nastavit svoji vlastní adresu kliknutí) -ExternalModule=Externí modul - instalován do adresáře %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Masový čárový kód pro subjekty BarcodeInitForProductsOrServices=Masový čárový kód pro produkty nebo služby CurrentlyNWithoutBarCode=V současné době máte <strong> %s </strong> záznam na <strong> %s </strong> %s bez definice čárového kódu. @@ -465,14 +468,14 @@ EnableAndSetupModuleCron=Pokud chcete, aby tato opakovaná faktura byla automati ModuleCompanyCodeCustomerAquarium=%s, následovaný kódem zákazníka pro účetní kód zákazníka ModuleCompanyCodeSupplierAquarium=%s následovaný dodavatelem kód dodavatel kód účetnictví ModuleCompanyCodePanicum=Vrátit prázdný účetní kód. -ModuleCompanyCodeDigitaria=Returns a compound accounting code according to the name of the third party. The code consists of a prefix that can be defined in the first position followed by the number of characters defined in the third party code. -ModuleCompanyCodeCustomerDigitaria=%s followed by the truncated customer name by the number of characters: %s for the customer accounting code. -ModuleCompanyCodeSupplierDigitaria=%s followed by the truncated supplier name by the number of characters: %s for the supplier accounting code. +ModuleCompanyCodeDigitaria=Vrací složený účetní kód podle jména subjektu. Kód se skládá z předpony, která může být definována na první pozici, po které následuje počet znaků definovaných v kódu subjektu. +ModuleCompanyCodeCustomerDigitaria=%s následovaný zkráceným jménem zákazníka o počet znaků: %s pro kód účetnictví zákazníka. +ModuleCompanyCodeSupplierDigitaria=%s následované zkráceným jménem dodavatele podle počtu znaků: %s pro účetní kód dodavatele. Use3StepsApproval=Ve výchozím nastavení musí být nákupní objednávky vytvořeny a schváleny dvěma různými uživateli (jeden krok / uživatel k vytvoření a jeden krok / uživatel ke schválení. Všimněte si, že pokud má uživatel oprávnění k vytvoření a schválení, stačí jeden krok / uživatel) . Touto volbou můžete požádat o zavedení třetího schvalovacího kroku / schválení uživatele, pokud je částka vyšší než určená hodnota (potřebujete tedy 3 kroky: 1 = ověření, 2 = první schválení a 3 = druhé schválení, pokud je dostatečné množství). <br> Pokud je zapotřebí jedno schvalování (2 kroky), nastavte jej na velmi malou hodnotu (0,1), pokud je vždy požadováno druhé schválení (3 kroky). UseDoubleApproval=Použijte schválení 3 kroky, kdy částka (bez DPH) je vyšší než ... WarningPHPMail=UPOZORNĚNÍ: Je často lepší nastavit odchozí e-maily, než použít výchozí nastavení poštovního serveru poskytovatele. Někteří poskytovatelé e-mailů (například Yahoo) vám neumožňují odeslat e-mail z jiného serveru, než je jejich vlastní server. Vaše současné nastavení používá server pro odesílání e-mailů a nikoli server vašeho poskytovatele e-mailu, takže někteří příjemci (ten, který je kompatibilní s omezujícím protokolem DMARC) požádá vašeho poskytovatele e-mailu, aby mohli přijmout váš e-mail a některé poskytovatele e-mailu (jako je Yahoo) může odpovědět "ne", protože server není jejich, takže nemnoho přijatých e-mailů nemůže být přijato (buďte opatrní také kvótou odesílatele vašeho e-mailu). <br> Pokud má váš poskytovatel e-mailu (například Yahoo) toto omezení, musíte změnit nastavení e-mailu a zvolit druhou metodu "SMTP server" a zadat server SMTP a pověření poskytnuté poskytovatelem e-mailu. WarningPHPMail2=Pokud je váš poskytovatel e-mailových služeb SMTP povinen omezit e-mailový klient na některé adresy IP (velmi vzácné), jedná se o adresu IP agentu uživatele pošty (MUA) pro aplikaci ERP CRM: <strong> %s </strong>. -WarningPHPMailSPF=If the domain name in your sender email address is protected by SPF (ask you email provider), you must include the following IPs in the SPF record of the DNS of your domain: <strong>%s</strong>. +WarningPHPMailSPF=Pokud je název domény ve vaší e-mailové adrese odesílatele chráněn pomocí SPF (zeptejte se poskytovatele e-mailu), musíte do záznamu SPF DNS vaší domény zahrnout následující adresy IP: <strong> %s </strong>. ClickToShowDescription=Kliknutím zobrazíte popis DependsOn=Tento modul potřebuje modul (y) RequiredBy=Tento modul je vyžadován modulem (moduly) @@ -480,7 +483,7 @@ TheKeyIsTheNameOfHtmlField=Toto je název pole HTML. Technická znalost je potř PageUrlForDefaultValues=Musíte zadat relativní cestu URL stránky. Pokud do adresy URL zadáte parametry, budou výchozí hodnoty účinné, pokud budou všechny parametry nastaveny na stejnou hodnotu. PageUrlForDefaultValuesCreate= <br> Příklad: <br> Formulář pro vytvoření nového subjektu je <strong> %s </strong>. <br> Pro URL externích modulů nainstalovaných do vlastního adresáře nezahrnujte "vlastní /", tak použijte cestu jako <strong> mymodule / mypage.php </strong> a ne vlastní / mymodule / mypage.php. <br> Pokud chcete výchozí hodnotu pouze v případě, že url má nějaký parametr, můžete použít <strong> %s </strong> PageUrlForDefaultValuesList= <br> Příklad: <br> Pro stránku, která obsahuje subjekty, je <strong> %s </strong>. <br> Pro adresy URL externích modulů nainstalovaných do vlastního adresáře nezahrnujte "vlastní", takže použijte cestu jako <strong> mymodule / mypagelist.php </strong> a ne vlastní / mymodule / mypagelist.php. <br> Pokud chcete výchozí hodnotu pouze v případě, že url má nějaký parametr, můžete použít <strong> %s </strong> -AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) +AlsoDefaultValuesAreEffectiveForActionCreate=Také si všimněte, že přepsání výchozích hodnot pro vytváření formulářů funguje pouze pro stránky, které byly správně navrženy (takže s parametrem action = create or presend ...) EnableDefaultValues=Povolit přizpůsobení výchozích hodnot EnableOverwriteTranslation=Povolit použití přepsaného překladu GoIntoTranslationMenuToChangeThis=Překlad byl nalezen pro klíč s tímto kódem. Chcete-li tuto hodnotu změnit, musíte ji upravit z Home-Setup-translation. @@ -520,7 +523,7 @@ Module25Desc=Řízení prodeje objednávek Module30Name=Faktury Module30Desc=Řízení faktur a dobropisů pro zákazníky. Řízení faktur a dobropisů pro dodavatele Module40Name=Dodavatelé -Module40Desc=Vendors and purchase management (purchase orders and billing of supplier invoices) +Module40Desc=Prodejci a řízení nákupu (objednávky a fakturace dodavatelských faktur) Module42Name=Debug Logs Module42Desc=Zařízení pro protokolování (soubor, syslog, ...). Takové protokoly jsou určeny pro technické účely / ladění. Module49Name=Redakce @@ -530,7 +533,7 @@ Module50Desc=Řízení výrobků Module51Name=Hromadné e-maily Module51Desc=Hromadná správa pošty Module52Name=Zásoby -Module52Desc=Stock management +Module52Desc=Skladové hospodářství Module53Name=Služby Module53Desc=Řízení služeb Module54Name=Smlouvy/Objednávky @@ -545,8 +548,8 @@ Module58Name=ClickToDial Module58Desc=Integrace ClickToDial systému (Asterisk, ...) Module59Name=Bookmark4u Module59Desc=Přidat funkce pro generování Bookmark4u účet z účtu Dolibarr -Module60Name=Stickers -Module60Desc=Management of stickers +Module60Name=Samolepky +Module60Desc=Správa nálepek Module70Name=Intervence Module70Desc=Intervence řízení Module75Name=Nákladové a výlet poznámky @@ -564,9 +567,9 @@ Module200Desc=Synchronizace adresářů LDAP Module210Name=PostNuke Module210Desc=PostNuke integrace Module240Name=Exporty dat -Module240Desc=Tool to export Dolibarr data (with assistance) +Module240Desc=Nástroj pro export dat Dolibarr (s pomocí) Module250Name=Import dat -Module250Desc=Tool to import data into Dolibarr (with assistance) +Module250Desc=Nástroj pro import dat do Dolibarru (s pomocí) Module310Name=Členové Module310Desc=Nadace členové vedení Module320Name=RSS Feed @@ -583,7 +586,7 @@ Module510Name=Platy Module510Desc=Zaznamenejte a sledujte platby zaměstnanců Module520Name=Úvěry Module520Desc=Správa úvěrů -Module600Name=Notifications on business event +Module600Name=Oznámení o obchodní události Module600Desc=Odeslání e-mailových upozornění vyvolaných podnikovou událostí: na uživatele (nastavení definované pro každého uživatele), na kontakty třetích stran (nastavení definováno na každé třetí straně) nebo na konkrétní e-maily Module600Long=Všimněte si, že tento modul pošle e-maily v reálném čase, když nastane konkrétní událost. Pokud hledáte funkci pro zasílání upozornění na události agend, přejděte do nastavení modulu Agenda. Module610Name=Varianty produktu @@ -630,7 +633,7 @@ Module5000Desc=Umožňuje spravovat více společností Module6000Name=Workflow Module6000Desc=Správa pracovních postupů (automatické vytvoření objektu a / nebo automatické změny stavu) Module10000Name=Webové stránky -Module10000Desc=Create websites (public) with a WYSIWYG editor. This is a webmaster or developer oriented CMS (it is better to know HTML and CSS language). 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. +Module10000Desc=Vytvořte webové stránky (veřejné) pomocí editoru WYSIWYG. Toto je CMS pro webmastery nebo vývojáře (je lepší znát jazyk HTML a CSS). Stačí nastavit svůj webový server (Apache, Nginx, ...) tak, aby ukazoval na vyhrazený adresář Dolibarr, aby byl online na internetu s vaším vlastním názvem domény. Module20000Name=Nechte správu požadavků Module20000Desc=Definujte a sledujte žádosti o odchod zaměstnanců Module39000Name=Množství produktu @@ -642,7 +645,7 @@ Module50000Desc=Nabídněte zákazníkům platební stránku PayBox (kreditní / Module50100Name=POS SimplePOS Module50100Desc=Prodejní modul SimplePOS (jednoduché POS). Module50150Name=POS TakePOS -Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). +Module50150Desc=Modul Point of Sale TakePOS (POS dotykový displej, pro obchody, bary nebo restaurace). Module50200Name=Paypal Module50200Desc=Nabídněte zákazníkům platební stránku PayPal online (účet PayPal nebo kreditní nebo debetní karty). To může být použito k tomu, aby zákazníci mohli provádět ad hoc platby nebo platby související s konkrétním předmětem Dolibarr (faktura, objednávka atd.) Module50300Name=Proužek @@ -816,7 +819,7 @@ Permission401=Přečtěte slevy Permission402=Vytvořit / upravit slevy Permission403=Ověřit slevy Permission404=Odstranit slevy -Permission430=Use Debug Bar +Permission430=Použijte ladicí panel Permission511=Přečtěte si platy Permission512=Vytvořte / upravte platby platů Permission514=Smazat platy @@ -831,9 +834,9 @@ Permission532=Vytvořit / upravit služby Permission534=Odstranit služby Permission536=Viz / správa skryté služby Permission538=Export služeb -Permission650=Read Bills of Materials -Permission651=Create/Update Bills of Materials -Permission652=Delete Bills of Materials +Permission650=Přečtěte si kusovníky +Permission651=Vytvářejte / aktualizujte účty materiálů +Permission652=Smazat kusovníky Permission701=Přečtěte si dary Permission702=Vytvořit / upravit dary Permission703=Odstranit dary @@ -849,12 +852,12 @@ Permission1002=Vytvoření/úprava skladišť Permission1003=Odstranění skladišť Permission1004=Přečtěte skladové pohyby Permission1005=Vytvořit / upravit skladové pohyby -Permission1101=Read delivery receipts -Permission1102=Create/modify delivery receipts -Permission1104=Validate delivery receipts -Permission1109=Delete delivery receipts -Permission1121=Read supplier proposals -Permission1122=Create/modify supplier proposals +Permission1101=Přečíst potvrzení o doručení +Permission1102=Vytvářejte / upravujte potvrzení o doručení +Permission1104=Ověřte potvrzení o doručení +Permission1109=Smažte potvrzení o doručení +Permission1121=Přečtěte si návrhy dodavatelů +Permission1122=Vytvářejte / upravujte návrhy dodavatelů Permission1123=Validate supplier proposals Permission1124=Send supplier proposals Permission1125=Delete supplier proposals @@ -947,7 +950,7 @@ DictionaryCanton=Stát/Okres DictionaryRegion=Regiony DictionaryCountry=Země DictionaryCurrency=Měny -DictionaryCivility=Zdvořilostní oslovení +DictionaryCivility=Honorific titles DictionaryActions=Typ agendy událostí DictionarySocialContributions=Typy sociální nebo fiskální daně DictionaryVAT=Sazby DPH nebo daň z prodeje @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Ve výchozím nastavení je navrhovaná daň z prodeje 0, kter VATIsUsedExampleFR=Ve Francii to znamená, že společnosti nebo organizace mají skutečný fiskální systém (zjednodušený reálný nebo normální reálný). Systém, v němž je uvedena DPH. VATIsNotUsedExampleFR=Ve Francii se jedná o sdružení, která jsou prohlášena za nepodléhající daň z prodeje, nebo společnosti, organizace nebo svobodné profese, které si vybraly daňový systém pro mikropodniky (daně z prodeje ve franchise) a zaplatili daň z prodeje bez daně z prodeje bez prohlášení o daních z prodeje. Tato volba zobrazí na fakturách odkaz "Neuplatňuje se daň z prodeje - art-293B CGI". ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rychlost LocalTax1IsNotUsed=Nepoužívejte druhou daň LocalTax1IsUsedDesc=Použijte druhý typ daně (jiný než první) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=Kurz IRPF ve výchozím nastavení při vytváření prosp LocalTax2IsNotUsedDescES=Standardně navrhovaný IRPF je 0. Konec pravidla. LocalTax2IsUsedExampleES=Ve Španělsku, na volné noze a nezávislí odborníci, kteří poskytují služby a firmy, kteří se rozhodli daňového systému modulů. LocalTax2IsNotUsedExampleES=Ve Španělsku jsou podniky, které nepodléhají daňovému systému modulů. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Zprávy o místních daních CalcLocaltax1=Prodej - Nákupy CalcLocaltax1Desc=Přehledy místních daní jsou vypočítávány s rozdílem mezi místními nákupy a místními nákupy @@ -1018,6 +1025,7 @@ CalcLocaltax2=Nákupy CalcLocaltax2Desc=Přehledy místních daní jsou součtem nákupů místních taxíků CalcLocaltax3=Odbyt CalcLocaltax3Desc=Přehledy místních daní představují celkový prodej místních tax +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Štítky použité ve výchozím nastavení, pokud nelze najít překlad pro kód LabelOnDocuments=Štítek na dokumenty LabelOrTranslationKey=Klíč pro označení nebo překlad @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Zpráva o výdajích ke schválení Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Než začnete používat Dolibarr, je třeba definovat některé počáteční parametry a povolit / konfigurovat moduly. SetupDescription2=Následující dvě části jsou povinné (první dvě položky v nabídce Nastavení): -SetupDescription3=<a href="%s">%s ->%s</a> <br> Základní parametry používané k přizpůsobení výchozího chování vaší aplikace (např. Pro funkce související se zemí). -SetupDescription4=<a href="%s">%s -> %s</a> <br> Tento software je sadou mnoha modulů/aplikací, které jsou více či méně nezávislé. Moduly odpovídající vašim potřebám musí být povoleny a nakonfigurovány. Nové položky/možnosti jsou přidány do menu s aktivací modulu. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Ostatní položky nabídky nastavení řídí volitelné parametry. LogEvents=Události bezpečnostního auditu Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Povolte protokolování pro konkrétní události zabezpečení. Ad AreaForAdminOnly=Parametry nastavení mohou být nastaveny pouze <b>uživateli administrátora </b> . SystemInfoDesc=Systémové informace jsou různé technické informace, které získáte pouze v režimu pro čtení a viditelné pouze pro správce. SystemAreaForAdminOnly=Tato oblast je k dispozici pouze uživatelům správce. Uživatelské oprávnění Dolibarr nemůže toto omezení měnit. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parametry ovlivňující vzhled a chování nástroje Dolibarr lze zde změnit. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Pravidla pro generování a ověřování hesel DisableForgetPasswordLinkOnLogonPage=Na stránce Přihlášení nezobrazujte odkaz Zapomenuté heslo UsersSetup=Uživatelé modul nastavení UserMailRequired=K vytvoření nového uživatele potřebujete e-mail +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=setup HRM Modul ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Modely dokumentů faktur BillsPDFModulesAccordindToInvoiceType=Modely dokladů faktur podle typu faktury PaymentsPDFModules=Vzory platebních dokumentů ForceInvoiceDate=Vynutit datum fakturace k datu ověření -SuggestedPaymentModesIfNotDefinedInInvoice=Navrhované platby režimu na faktuře ve výchozím nastavení, pokud není definován pro faktury +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Navrhněte platbu výběrem na účet SuggestPaymentByChequeToAddress=Navrhněte platbu šekem na FreeLegalTextOnInvoices=Volný text na fakturách @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Nastavení plateb dodavatelů PropalSetup=Nastavení modulů komerčních návrhů ProposalsNumberingModules=Modelové modely číslování návrhů ProposalsPDFModules=Komerční návrh doklady modely -SuggestedPaymentModesIfNotDefinedInProposal=Navrhovaný režim platby na návrh ve výchozím nastavení, pokud není definován pro návrh +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Volný text o obchodních návrhů WatermarkOnDraftProposal=Vodoznak v návrhových komerčních návrzích (žádný není prázdný) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Zeptejte se na umístění bankovního účtu nabídky @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Zadat zdroj datového skladu pro objednávk ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Požádejte o umístění bankovního účtu objednávky ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Nastavení řízení nákupních objednávek OrdersNumberingModules=Objednávky číslování modelů OrdersModelModule=Objednat dokumenty modely @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Varování, vyšší hodnoty dramaticky ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Exportní modely jsou sdílené s každým ExportSetup=Nastavení modulu Export +ImportSetup=Setup of module Import InstanceUniqueID=Jedinečné ID instance SmallerThan=Menší než LargerThan=Větší než @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/cs_CZ/bills.lang b/htdocs/langs/cs_CZ/bills.lang index a08717ba138..66ebc9db50c 100644 --- a/htdocs/langs/cs_CZ/bills.lang +++ b/htdocs/langs/cs_CZ/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Faktury dodavatelů SupplierBill=Faktura dodavatele SupplierBills=Faktury dodavatelů Payment=Platba -PaymentBack=Vrácení platby -CustomerInvoicePaymentBack=Vrácení platby +PaymentBack=Vrácení +CustomerInvoicePaymentBack=Vrácení Payments=Platby PaymentsBack=Refunds paymentInInvoiceCurrency=v měně faktur PaidBack=Navrácené DeletePayment=Odstranit platby ConfirmDeletePayment=Jste si jisti, že chcete smazat tuto platbu? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Platby dodavatele ReceivedPayments=Přijaté platby @@ -219,7 +219,10 @@ ShowInvoiceSituation=Zobrazit fakturu situace UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Zaplatit ToMakePaymentBack=Vrátit ListOfYourUnpaidInvoices=Seznam nezaplacených faktur NoteListOfYourUnpaidInvoices=Poznámka: Tento seznam obsahuje pouze faktury pro třetí strany které jsou propojeny na obchodního zástupce. -RevenueStamp=Kolek +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Tato možnost je k dispozici pouze při vytváření faktury z karty "Zákazník" subjektu YouMustCreateInvoiceFromSupplierThird=Tato možnost je k dispozici pouze při vytváření faktury z karty "Prodejce" subjektu YouMustCreateStandardInvoiceFirstDesc=Musíte nejprve vytvořit standardní fakturu a převést ji do „šablony“ pro vytvoření nové šablony faktury -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Faktura Šablona PDF Sponge. Kompletní šablona faktury PDFCrevetteDescription=Faktura PDF šablony Crevette. Kompletní fakturu šablona pro situace faktur TerreNumRefModelDesc1=Vrátí číslo ve formátu %s yymm-nnnn pro standardní faktury a %s yymm-nnnn pro dobropisy, kde yy je rok, mm je měsíc a nnnn je sekvence bez přerušení a bez návratu k 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Nastavte datum ukončení servisního řádku s dalším datem fa AutoFillDateToShort=Nastavte datum ukončení MaxNumberOfGenerationReached=Maximální počet gen. dosáhl BILL_DELETEInDolibarr=faktura smazána +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/cs_CZ/blockedlog.lang b/htdocs/langs/cs_CZ/blockedlog.lang index c81d53c65c2..d5505d61df0 100644 --- a/htdocs/langs/cs_CZ/blockedlog.lang +++ b/htdocs/langs/cs_CZ/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Nezměnitelné záznamy ShowAllFingerPrintsMightBeTooLong=Zobrazit všechny archivované záznamy (mohou být dlouhé) ShowAllFingerPrintsErrorsMightBeTooLong=Zobrazit všechny neplatné protokoly archivu (mohou být dlouhé) DownloadBlockChain=Stažení otisků prstů -KoCheckFingerprintValidity=Archivovaná položka protokolu není platná. To znamená, že někdo (hacker?) Změnil některé údaje o tomto re po nahrání nebo vymazal předchozí archivovaný záznam (zkontrolujte, zda existuje řádek s předchozím #). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archivovaný záznam protokolu je platný. Údaje na tomto řádku nebyly změněny a záznam je následující. OkCheckFingerprintValidityButChainIsKo=Archivovaný protokol se zdá být v porovnání s předchozím protokolem platný, ale řetězec byl dříve poškozen. AddedByAuthority=Uloženo do vzdálené autority diff --git a/htdocs/langs/cs_CZ/cashdesk.lang b/htdocs/langs/cs_CZ/cashdesk.lang index f5c5835ecc9..27fbe7b11e4 100644 --- a/htdocs/langs/cs_CZ/cashdesk.lang +++ b/htdocs/langs/cs_CZ/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Přidat tento článek RestartSelling=Vraťte se na prodej SellFinished=Sale complete PrintTicket=Tisk dokladu +SendTicket=Send ticket NoProductFound=Žádný článek nalezen ProductFound=vyhledané výrobky NoArticle=Žádný článek @@ -48,6 +49,7 @@ Footer=Zápatí AmountAtEndOfPeriod=Částka na konci období (den, měsíc nebo rok) TheoricalAmount=Teoretická částka RealAmount=Skutečná částka +CashFence=Cash fence CashFenceDone=Peněžní oplatek za období NbOfInvoices=Některé z faktur Paymentnumpad=Zadejte Pad pro vložení platby @@ -58,8 +60,9 @@ TakeposNeedsCategories=Firma TakePOS potřebuje k tomu produktové kategorie OrderNotes=Objednací poznámky CashDeskBankAccountFor=Výchozí účet, který se má použít pro platby v účtu NoPaimementModesDefined=V konfiguraci TakePOS není definován žádný režim platby -TicketVatGrouped=Skupinová DPH dle sazeb na lístcích -AutoPrintTickets=Automaticky tisknout vstupenky +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Povolit funkce pro Bar nebo Restaurace ConfirmDeletionOfThisPOSSale=Potvrzujete, že jste tento prodej zrušili? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Prohlížeč BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/cs_CZ/companies.lang b/htdocs/langs/cs_CZ/companies.lang index 4cc4191e3e9..ce0b18caed1 100644 --- a/htdocs/langs/cs_CZ/companies.lang +++ b/htdocs/langs/cs_CZ/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Společnost %s odstraněna z databáze. ListOfContacts=Seznam kontaktů/adres ListOfContactsAddresses=Seznam kontaktů/adres ListOfThirdParties=Seznam subjektů -ShowCompany=Zobrazit subjekt ShowContact=Zobrazit kontakt ContactsAllShort=Vše (Bez filtru) ContactType=Typ kontaktu @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Jméno obchodního zástupce SaleRepresentativeLastname=Příjmení obchodního zástupce ErrorThirdpartiesMerge=Při odstraňování subjektů došlo k chybě. Zkontrolujte protokol. Změny byly vráceny. NewCustomerSupplierCodeProposed=Kód zákazníka nebo dodavatele již byl použit, je doporučen nový kód +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Typ platby - Zákazník PaymentTermsCustomer=Platební podmínky - Zákazník diff --git a/htdocs/langs/cs_CZ/compta.lang b/htdocs/langs/cs_CZ/compta.lang index c7e1a7ea7e8..5d746c572bf 100644 --- a/htdocs/langs/cs_CZ/compta.lang +++ b/htdocs/langs/cs_CZ/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Viz %sanalýza plateb %spro výpočet skutečných pl SeeReportInDueDebtMode=Viz %sanalýza faktur %s pro výpočet založený na známých zaznamenaných fakturách, i když ještě nejsou účtovány v Ledgeru. SeeReportInBookkeepingMode=Viz část <b> %sKontrola report %s</b> pro výpočet na <b> Tabulce účtů účetnictví </b> RulesAmountWithTaxIncluded=- Uvedené částky jsou se všemi daněmi -RulesResultDue=- To zahrnuje neuhrazené faktury, výdaje a DPH, zda byly zaplaceny či nikoliv. <br> - Je založen na ověřených datech faktur a DPH a ke dni splatnosti pro náklady. Platy definované s plat modulem, použije se datum splatnosti platby. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- To zahrnuje skutečné platby na fakturách, nákladů, DPH a platů. <br> - Je založen na datech plateb faktur, náklady, DPH a platů. Datum daru pro dárcovství. -RulesCADue=- To zahrnuje splatné faktury klienta, zda byly zaplaceny či nikoliv. <br> - Je založen na datum ověření těchto faktur <br>. +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Zahrnuje všechny efektivní platby faktur obdržených od zákazníků. <br> - Je založeno na datu splatnosti těchto faktur <br> RulesCATotalSaleJournal=Zahrnuje všechny úvěrové linky z žurnálu Prodej. RulesAmountOnInOutBookkeepingRecord=Zahrnuje záznam ve vašem účtu Ledger s účetními účty, které mají skupinu "EXPENSE" nebo "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Obrat je fakturován sazbou daně z prodeje TurnoverCollectedbyVatrate=Obrat shromážděný podle sazby daně z prodeje PurchasebyVatrate=Nákup podle sazby daně z prodeje LabelToShow=Krátký štítek +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/cs_CZ/errors.lang b/htdocs/langs/cs_CZ/errors.lang index 6cc550bed4b..9ec1ad76886 100644 --- a/htdocs/langs/cs_CZ/errors.lang +++ b/htdocs/langs/cs_CZ/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Soubor nebyl korektně poslán serverem ErrorNoTmpDir=Dočasné directy %s neexistuje. ErrorUploadBlockedByAddon=Nahrávání blokováno pluginem PHP / Apache. ErrorFileSizeTooLarge=Soubor je příliš velký. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Velikost příliš dlouhá pro typ int (%s číslice maximum) ErrorSizeTooLongForVarcharType=Velikost příliš dlouho typu string (%s znaků maximum) ErrorNoValueForSelectType=Vyplňte prosím hodnotu pro vybraný seznam @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=Pro tohoto člena bylo nastaveno heslo. Nebyl však vytvořen žádný uživatelský účet. Toto heslo je uloženo, ale nemůže být použito pro přihlášení k Dolibarr. Může být použito externím modulem / rozhraním, ale pokud nemáte pro člena definováno žádné přihlašovací jméno ani heslo, můžete vypnout možnost "Správa přihlášení pro každého člena" z nastavení modulu člena. Pokud potřebujete spravovat přihlašovací údaje, ale nepotřebujete žádné heslo, můžete toto pole ponechat prázdné, abyste se tomuto varování vyhnuli. Poznámka: E-mail může být také použit jako přihlašovací jméno, pokud je člen připojen k uživateli. diff --git a/htdocs/langs/cs_CZ/install.lang b/htdocs/langs/cs_CZ/install.lang index 46aa42ac0a4..bdc4d493fd7 100644 --- a/htdocs/langs/cs_CZ/install.lang +++ b/htdocs/langs/cs_CZ/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Tato konfigurace PHP podporuje Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=Tato PHP instalace podporuje UTF8 funkce. PHPSupportIntl=Tato instalace PHP podporuje funkce Intl. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Maximální velikost relace je nastavena na <b>%s.</b> To by mělo stačit. PHPMemoryTooLow=Maximální velikost relace je nastavena na <b>%s</b> bajtů. To bohužel nestačí. Zvyšte svůj parametr <b>memory_limit</b> ve Vašem <b>php.ini</b> na minimální velikost <b>%s</b> bajtů. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Vaše instalace PHP nepodporuje Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Tato PHP instalace nepodporuje UTF8 funkce. Tato funkce je nutná, pro správnou funkčnost Dolibarr. Zkontrolujte Vaše PHP nastavení. ErrorPHPDoesNotSupportIntl=Instalace PHP nepodporuje funkce Intl. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Adresář %s neexistuje. ErrorGoBackAndCorrectParameters=Vraťte se zpět a zkontrolujte / opravte špatné parametry. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Aplikace se pokoušela samoinnicializovat, ale st YouTryInstallDisabledByFileLock=Aplikace se pokoušela o vlastní inovaci, ale stránky s instalací / upgradem byly zakázány z důvodu zabezpečení (existence souboru zámku <strong> install.lock </strong> v adresáři dokumentů dolibarr). <br> ClickHereToGoToApp=Kliknutím sem přejdete do aplikace ClickOnLinkOrRemoveManualy=Klikněte na následující odkaz. Pokud vždy vidíte stejnou stránku, musíte odstranit / přejmenovat soubor install.lock v adresáři dokumentů. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/cs_CZ/link.lang b/htdocs/langs/cs_CZ/link.lang index ed6714e9cc6..3d620dcba76 100644 --- a/htdocs/langs/cs_CZ/link.lang +++ b/htdocs/langs/cs_CZ/link.lang @@ -1,10 +1,11 @@ # Dolibarr language file - Source file is en_US - languages -LinkANewFile=Odkaz na nový soubor/dokument -LinkedFiles=Odkaz na soubory a dokumenty -NoLinkFound=Neregistrovaný odkaz -LinkComplete=Soubor byl úspěšně propojen -ErrorFileNotLinked=Soubor nemohl být propojen +LinkANewFile=Připojit nový soubor/dokument +LinkedFiles=Připojené soubory a dokumenty +NoLinkFound=Žádné odkazy +LinkComplete=Soubor byl úspěšně připojen +ErrorFileNotLinked=Soubor nemohl být připojen LinkRemoved=Odkaz %s byl odstraněn ErrorFailedToDeleteLink= Nepodařilo se odstranit odkaz '<b>%s</b>' ErrorFailedToUpdateLink= Nepodařilo se aktualizovat odkaz '<b>%s</b>' -URLToLink=URL to link +URLToLink=Připojit URL +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/cs_CZ/mails.lang b/htdocs/langs/cs_CZ/mails.lang index b98921f4106..f154b82748f 100644 --- a/htdocs/langs/cs_CZ/mails.lang +++ b/htdocs/langs/cs_CZ/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Žádný kontakt / adresa s nalezenou kategorií NoContactLinkedToThirdpartieWithCategoryFound=Žádný kontakt / adresa s nalezenou kategorií OutGoingEmailSetup=Nastavení odchozí pošty InGoingEmailSetup=Příchozí nastavení e-mailu -OutGoingEmailSetupForEmailing=Nastavení odchozích e-mailů (pro hromadné zasílání e-mailů) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Výchozí nastavení odchozí pošty Information=Informace ContactsWithThirdpartyFilter=Kontakty s filtrem subjektu diff --git a/htdocs/langs/cs_CZ/main.lang b/htdocs/langs/cs_CZ/main.lang index d85d85de4e8..827bdef2db1 100644 --- a/htdocs/langs/cs_CZ/main.lang +++ b/htdocs/langs/cs_CZ/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Zkušební připojení ToClone=Klon +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Vyberte data, která chcete klonovat: NoCloneOptionsSpecified=Nejsou definovány žádné údaje ke klonování. Of=z @@ -829,6 +830,8 @@ Gender=Pohlaví Genderman=Muž Genderwoman=Žena ViewList=Zobrazení seznamu +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=povinné Hello=Ahoj GoodBye=No, nazdar ... @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/cs_CZ/other.lang b/htdocs/langs/cs_CZ/other.lang index 2e234b393ef..568b1eac8c4 100644 --- a/htdocs/langs/cs_CZ/other.lang +++ b/htdocs/langs/cs_CZ/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Objednávka prodeje byla ověřena Notify_ORDER_SENTBYMAIL=Prodejní objednávka byla odeslána mailem Notify_ORDER_SUPPLIER_SENTBYMAIL=Objednávka byla odeslána e-mailem @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL stránky WEBSITE_TITLE=Titul WEBSITE_DESCRIPTION=Popis WEBSITE_IMAGE=obraz -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Klíčová slova LinesToImport=Řádky, které chcete importovat diff --git a/htdocs/langs/cs_CZ/products.lang b/htdocs/langs/cs_CZ/products.lang index 868ea8447a5..b9baf58d160 100644 --- a/htdocs/langs/cs_CZ/products.lang +++ b/htdocs/langs/cs_CZ/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Tento nástroj aktualizuje sazbu DPH definovanou na pro MassBarcodeInit=Hromadný čárový kód inicializace MassBarcodeInitDesc=Tato stránka může být použita k inicializaci čárového kódu na objekty, které nemají definovaný čárový kód. Zkontrolujte před touto akcí, zda je nastavení modulu čárového kódu kompletní. ProductAccountancyBuyCode=Účetní kód (nákup) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Účetní kód (prodej) ProductAccountancySellIntraCode=Účetní kód (prodej uvnitř Společenství) ProductAccountancySellExportCode=Účetní kód (exportní prodej) @@ -165,7 +167,7 @@ SuppliersPrices=Ceny prodejců SuppliersPricesOfProductsOrServices=Ceny prodejců (produktů nebo služeb) CustomCode=Kód cla / komodity / HS CountryOrigin=Země původu -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Krátký štítek Unit=Jednotka p=u. diff --git a/htdocs/langs/cs_CZ/projects.lang b/htdocs/langs/cs_CZ/projects.lang index d736ca6c502..46eafc29ec1 100644 --- a/htdocs/langs/cs_CZ/projects.lang +++ b/htdocs/langs/cs_CZ/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Čas ListOfTasks=Seznam úkolů GoToListOfTimeConsumed=Přejít na seznam času spotřebovaného -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=Seznam komerčních návrhů týkajících se projektu ListOrdersAssociatedProject=Seznam prodejních zakázek týkajících se projektu @@ -188,7 +186,7 @@ PlannedWorkload=Plánované vytížení PlannedWorkloadShort=Pracovní zátěž ProjectReferers=Související zboží ProjectMustBeValidatedFirst=Projekt musí být nejdříve ověřen -FirstAddRessourceToAllocateTime=Přiřadit zdroj k vyčlenění času +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Vstup za den InputPerWeek=Vstup za týden InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Nejnovější %smodifikované projekty OtherFilteredTasks=Další filtrované úkoly NoAssignedTasks=Nebyly nalezeny žádné přiřazené úkoly (přiřadit projekt / úkoly aktuálnímu uživateli z horního výběrového pole pro zadání času na něm) ThirdPartyRequiredToGenerateInvoice=Subjekt musí být definován na projektu, aby mohl fakturovat. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Povolení uživatelských komentářů k úkolům AllowCommentOnProject=Umožňuje uživatelským komentářům k projektům @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Nová faktura OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/cs_CZ/receiptprinter.lang b/htdocs/langs/cs_CZ/receiptprinter.lang index 107887bca71..fd1a14ecd03 100644 --- a/htdocs/langs/cs_CZ/receiptprinter.lang +++ b/htdocs/langs/cs_CZ/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Síťová tiskárna CONNECTOR_FILE_PRINT=místní tiskárna CONNECTOR_WINDOWS_PRINT=Místní tiskárna Windows +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake tiskárna pro zkoušku, nedělá nic CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x: 9100 CONNECTOR_FILE_PRINT_HELP=/Dev/usb/lp0,/dev/usb/LP1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Výchozí profil PROFILE_SIMPLE=Zjednodušený profil PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Faktura ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Identifikační číslo DPH uvnitř Společenství +DOL_VALUE_MYSOC_CAPITAL=Kapitál +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/cs_CZ/stripe.lang b/htdocs/langs/cs_CZ/stripe.lang index 763e4862427..a0dd5814103 100644 --- a/htdocs/langs/cs_CZ/stripe.lang +++ b/htdocs/langs/cs_CZ/stripe.lang @@ -32,6 +32,7 @@ VendorName=Název dodavatele CSSUrlForPaymentForm=CSS styly url platebního formuláře NewStripePaymentReceived=Byla obdržena nová platba Stripe NewStripePaymentFailed=Pokus o novou Stripe platbu, ta ale selhala +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Tajný testovací klíč STRIPE_TEST_PUBLISHABLE_KEY=Testovatelný klíč pro publikování STRIPE_TEST_WEBHOOK_KEY=Testovací klíč Webhook @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Odkaz na nastavení Stripe WebHook pro volání IPN ( ToOfferALinkForLiveWebhook=Odkaz na nastavení Stripe WebHook pro volání IPN (provozní režim) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/cs_CZ/users.lang b/htdocs/langs/cs_CZ/users.lang index d96e14e53df..265e3f116ec 100644 --- a/htdocs/langs/cs_CZ/users.lang +++ b/htdocs/langs/cs_CZ/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Uživatelé a jejich vlastnosti DomainUser=Doménový uživatel %s Reactivate=Reaktivace CreateInternalUserDesc=Tento formulář umožňuje vytvořit interní uživatele ve vaší společnosti / organizaci. Chcete-li vytvořit externího uživatele (zákazník, dodavatel atd.), použijte tlačítko "Vytvořit uživatele Dolibarr z karty kontaktu subjektu. -InternalExternalDesc=<b>Interní</b> uživatel je uživatel, který je součástí vaší firmy / nadace. <br> <b>Externí</b> uživatel je zákazník, dodavatel nebo jiný. <br><br> V obou případech se oprávněními definují práva na Dolibarr. Externí uživatel navíc může mít jinou nabídku menu než-li interní (viz Domů - Nastavení - Zobrazení) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Povolení uděleno, neboť je zděděno z některé uživatelské skupiny. Inherited=Zděděný UserWillBeInternalUser=Vytvořený uživatel bude interní (protože není spojen s žádnou třetí stranou) @@ -113,3 +113,5 @@ CantDisableYourself=Nelze zakázat vlastní uživatelský záznam ForceUserExpenseValidator=Validator výkazu výdajů ForceUserHolidayValidator=Vynutit validátor žádosti o dovolenou ValidatorIsSupervisorByDefault=Ve výchozím nastavení je validátor nadřazený nad uživatelem. Chcete-li zachovat toto chování, ponechte prázdné. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/cs_CZ/website.lang b/htdocs/langs/cs_CZ/website.lang index 47303baa66c..9abca0118ab 100644 --- a/htdocs/langs/cs_CZ/website.lang +++ b/htdocs/langs/cs_CZ/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Zobrazit stránku v nové kartě SetAsHomePage=Nastavit jako domovskou stránku RealURL=real URL ViewWebsiteInProduction=Pohled webové stránky s použitím domácí adresy URL -SetHereVirtualHost= <u> Použití s Apache / NGinx / ... </u> <br> Pokud můžete vytvořit na svém webovém serveru (Apache, Nginx, ...) vyhrazený virtuální hostitel s PHP povoleným a kořenový adresář na <br> <strong> %s </strong> <br> pak nastavit název virtuálního hostitele, který jste vytvořili ve vlastnostech webových stránek, takže náhled lze provést také pomocí tohoto vyhrazeného přístupu k webovým serverům místo interního serveru Dolibarr. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS= <u> Použití s vloženým serverem PHP </u> <br> Při vývoji prostředí můžete upřednostňovat testování webu pomocí integrovaného webového serveru PHP (PHP 5.5 vyžadováno) spuštěním <br> <strong> php -S 0.0.0.0:8080 -t %s </strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Zkontrolujte také, že virtuální hostitel má oprávnění <strong> %s </strong> na souborech do <br> <strong> %s </strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Povolte tabulku účtu webových stránek WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Aktivujte tabulku pro ukládání účtů webových stránek (login / heslo) pro každý web / třetí stranu YouMustDefineTheHomePage=Nejprve musíte definovat výchozí domovskou stránku -OnlyEditionOfSourceForGrabbedContentFuture=Upozornění: Vytvoření webové stránky importováním externí webové stránky je vyhrazeno pro zkušené uživatele. V závislosti na složitosti zdrojové stránky se může výsledek importu lišit od původního. Také pokud zdrojová stránka používá běžné styly CSS nebo konfliktní javascript, může při práci na této stránce narušit vzhled nebo funkce editoru webových stránek. Tato metoda je rychlejší způsob, jak vytvořit stránku, ale doporučuje se vytvořit novou stránku od začátku nebo od navržené šablony stránky. <br> Upozorňujeme také, že úpravy HTML zdroje budou možné, pokud bude obsah stránky inicializován tak, že jej budete chytat z externí stránky (editor "Online" NENÍ dostupný) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Pouze vydání zdroje HTML je možné, pokud byl obsah chycen z externího webu GrabImagesInto=Uchopte také obrázky do css a stránky. ImagesShouldBeSavedInto=Obrázky je třeba uložit do adresáře @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/da_DK/admin.lang b/htdocs/langs/da_DK/admin.lang index 83a89ffb0d7..d4dde827a10 100644 --- a/htdocs/langs/da_DK/admin.lang +++ b/htdocs/langs/da_DK/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Bemærk: <b> din </b> PHP konfiguration begrænser i øj NoMaxSizeByPHPLimit=Bemærk: Ingen grænse er sat i din PHP-konfiguration MaxSizeForUploadedFiles=Maksimale størrelse for uploadede filer (0 til disallow enhver upload) UseCaptchaCode=Brug grafisk kode på loginsiden -AntiVirusCommand= Fuld sti til antivirus kommando -AntiVirusCommandExample= Eksempel på ClamWin: c: \\ Program Files (x86) \\ ClamWin \\ bin \\ clamscan.exe <br> Eksempel på ClamAV: / usr / bin / clamscan +AntiVirusCommand=Fuld sti til antivirus kommando +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Flere parametre på kommandolinjen -AntiVirusParamExample= Eksempel for ClamWin: - database = "C: \\ Programmer (x86) \\ ClamWin \\ lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Opsætning af regnskabsmodul UserSetup=Brugerstyring opsætning MultiCurrencySetup=Multi-valuta opsætning @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Funktionen slået fra i demo FeatureAvailableOnlyOnStable=Funktionen er kun tilgængelig på officielle stabile versioner BoxesDesc=Widgets er komponenter, der viser nogle oplysninger, som du kan tilføje for at tilpasse nogle sider. Du kan vælge mellem at vise widgeten eller ej ved at vælge målside og klikke på 'Aktiver' eller ved at klikke på papirkurven for at deaktivere den. OnlyActiveElementsAreShown=Kun elementer fra de <a href="%s">aktiverede moduler</a> er vist. -ModulesDesc=Modulerne / applikationerne bestemmer hvilke funktioner der er tilgængelige i softwaren. Nogle moduler kræver tilladelser til brugere efter aktivering af modulet. Klik på tænd / sluk-knappen (ved slutningen af modullinjen) for at aktivere / deaktivere et modul / program. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Du kan finde flere moduler som kan downloades på eksterne hjemmesider på internettet ... ModulesDeployDesc=Hvis tilladelser i dit filsystem tillader det, kan du bruge dette værktøj til at installere et eksternt modul. Modulet vil så være synligt på fanen <strong> %s</strong>. ModulesMarketPlaces=Finde eksterne app/moduler @@ -212,6 +212,7 @@ CompatibleUpTo=Kompatibel med version %s NotCompatible=Dette modul virker ikke kompatibelt med din Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=Dette modul kræver en opdatering til din Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Se på markedspladsen +SeeSetupOfModule=See setup of module %s Updated=Opdater Nouveauté=Nyhed AchatTelechargement=Køb / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=Liste over virksomheder, der leverer specialudviklede moduler e WebSiteDesc=Eksterne websites til flere (tredjeparts) tillægsmoduler ... DevelopYourModuleDesc=Nogle løsninger til at udvikle dit eget modul ... URL=URL +RelativeURL=Relative URL BoxesAvailable=Bokse til rådighed BoxesActivated=Bokse aktiveret ActivateOn=Aktivér om @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Holde tomt for at bruge standard værdi DefaultLink=Standard link SetAsDefault=Indstillet som standard ValueOverwrittenByUserSetup=Advarsel, denne værdi kan blive overskrevet af bruger-specifik opsætning (hver bruger kan indstille sin egen clicktodial url) -ExternalModule=Eksternt modul - Installeret i mappe %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for tredjepart BarcodeInitForProductsOrServices=Mass barcode init eller nulstil for produkter eller tjenester CurrentlyNWithoutBarCode=I øjeblikket har du <strong> %s </strong> post på <strong> %s </strong> %s uden stregkode defineret. @@ -947,7 +950,7 @@ DictionaryCanton=Stater / provinser DictionaryRegion=Regioner DictionaryCountry=Lande DictionaryCurrency=Valuta -DictionaryCivility=Titel for høflighed +DictionaryCivility=Honorific titles DictionaryActions=Begivenhedstyper DictionarySocialContributions=Typer af sociale eller skattemæssige afgifter DictionaryVAT=Momssatser @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Den foreslåede moms er som standard 0, som kan bruges til sage VATIsUsedExampleFR=I Frankrig betyder det, at virksomheder eller organisationer har et rigtigt finanssystem (forenklet reel eller normal reel). Et system, hvor moms er erklæret. VATIsNotUsedExampleFR=I Frankrig betyder det foreninger, der ikke er momsregistrerede, eller selskaber, organisationer eller liberale erhverv, der har valgt mikrovirksomhedens skattesystem (Salgsskat i franchise) og betalt en franchise Salgsskat uden nogen momsafgift. Dette valg vil vise referencen "Ikke gældende salgsafgift - art-293B CGI" på fakturaer. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Hyppighed LocalTax1IsNotUsed=Brug ikke anden skat LocalTax1IsUsedDesc=Brug en anden type afgift (bortset fra den første) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=IRPF-kursen som standard ved oprettelse af emner. fakturae LocalTax2IsNotUsedDescES=Som standard den foreslåede IRPF er 0. Slut på reglen. LocalTax2IsUsedExampleES=I Spanien, freelancere og selvstændige, der leverer tjenesteydelser og virksomheder, der har valgt at skattesystemet i de moduler. LocalTax2IsNotUsedExampleES=I Spanien er de virksomheder, der ikke er underlagt skattesystemer for moduler. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Rapporter om lokale skatter CalcLocaltax1=Salg - Køb CalcLocaltax1Desc=Lokale skatter rapporter beregnes med forskellen mellem localtaxes salg og localtaxes køb @@ -1018,6 +1025,7 @@ CalcLocaltax2=Køb CalcLocaltax2Desc=Lokale skatter rapporter er de samlede køb af lokale afgifter CalcLocaltax3=Salg CalcLocaltax3Desc=Lokale skatter rapporter er det samlede salg af localtaxes +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Etiket, som bruges som standard, hvis ingen oversættelse kan findes for kode LabelOnDocuments=Etiketten på dokumenter LabelOrTranslationKey=Etiket eller oversættelsestast @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Udgiftsrapporten godkendes Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Før du begynder at bruge Dolibarr, skal nogle indledende parametre defineres og moduler aktiveres / konfigureres. SetupDescription2=Følgende to afsnit er obligatoriske (de to første indgange i opsætningsmenuen): -SetupDescription3=<a href="%s">%s -> %s</a> <br> Grundlæggende parametre, der bruges til at tilpasse din applikations standardopførsel (f.eks. Til landrelaterede funktioner). -SetupDescription4=<a href="%s">%s -> %s</a> <br> Denne software er en pakke med mange moduler / applikationer, alle mere eller mindre uafhængige. De moduler, der er relevante for dine behov, skal være aktiveret og konfigureret. Nye elementer / indstillinger føjes til menuer med aktivering af et modul. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Andre opsætningsmenuindgange styrer valgfrie parametre. LogEvents=Sikkerhed revision arrangementer Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Aktivér logføring til specifikke sikkerhedshændelser. Administra AreaForAdminOnly=Opsætningsparametre kan kun indstilles af <b> administratorbrugere</b>. SystemInfoDesc=System oplysninger er diverse tekniske oplysninger du får i read only mode og synlig kun for administratorer. SystemAreaForAdminOnly=Dette område er kun tilgængeligt for administratorbrugere. Dolibarr bruger tilladelser kan ikke ændre denne begrænsning. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Hvis du har en ekstern revisor / bogholder, kan du her redigere dens oplysninger. AccountantFileNumber=Revisor kode DisplayDesc=Parametre, der påvirker udseende og opførsel af Dolibarr kan ændres her. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Regler for at generere og validere adgangskoder DisableForgetPasswordLinkOnLogonPage=Vis ikke linket "Glemt adgangskode" på siden Login UsersSetup=Opsætning af brugermodul UserMailRequired=Email nødvendig for at oprette en ny bruger +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM modul opsætning ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Faktura dokumenter modeller BillsPDFModulesAccordindToInvoiceType=Faktura dokumenter modeller efter faktura type PaymentsPDFModules=Betalingsdokumenter modeller ForceInvoiceDate=Force fakturadatoen til bekræftelse dato -SuggestedPaymentModesIfNotDefinedInInvoice=Foreslåede betalinger tilstand på fakturaen som standard, hvis ikke defineret for faktura +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Foreslå betaling ved tilbagetrækning på konto SuggestPaymentByChequeToAddress=Foreslå betaling med check til FreeLegalTextOnInvoices=Fri tekst på fakturaer @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Opsætning af leverandørbetalinger PropalSetup=Modulopsætning for tilbud ProposalsNumberingModules=Nummerering af tilbud ProposalsPDFModules=Skabelon for tilbud -SuggestedPaymentModesIfNotDefinedInProposal=Foreslået betalingsmetode på forslag som standard, hvis ikke defineret til forslag +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Fri tekst på tilbud WatermarkOnDraftProposal=Vandmærke på udkast til tilbud (intet, hvis tom) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Anmode om en bankkonto destination for forslag @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Anmode om lagerkilde for ordre ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Anmode om købskonto bestemmelsessted ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Salgsordrer ledelsesopsætning OrdersNumberingModules=Ordrer nummerressourcer moduler OrdersModelModule=Bestil dokumenter modeller @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Advarsel, højere værdier bremser dram ModuleActivated=Modul %s er aktiveret og forsinker grænsefladen EXPORTS_SHARE_MODELS=Eksportmodeller deles med alle ExportSetup=Opsætning af modul Eksport +ImportSetup=Setup of module Import InstanceUniqueID=Forekomstets unikke ID SmallerThan=Mindre end LargerThan=Større end @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Lav en anonym Ping '+1' til Dolibarr foundation-serveren (udf FeatureNotAvailableWithReceptionModule=Funktion ikke tilgængelig, når modulmodtagelse er aktiveret EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/da_DK/bills.lang b/htdocs/langs/da_DK/bills.lang index 0eede26674c..b53f6bad382 100644 --- a/htdocs/langs/da_DK/bills.lang +++ b/htdocs/langs/da_DK/bills.lang @@ -59,16 +59,16 @@ SupplierBill=Leverandørfaktura SupplierBills=leverandørfakturaer Payment=Betaling PaymentBack=Tilbagebetaling -CustomerInvoicePaymentBack=Betaling tilbage +CustomerInvoicePaymentBack=Tilbagebetaling Payments=Betalinger PaymentsBack=restitutioner paymentInInvoiceCurrency=i fakturaer valuta PaidBack=Tilbagebetalt DeletePayment=Slet betaling ConfirmDeletePayment=Er du sikker på, at du vil slette denne betaling? -ConfirmConvertToReduc=Vil du konvertere denne %s til en absolut rabat? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=Beløbet gemmes mellem alle rabatter og kan bruges som en rabat på en aktuel eller en fremtidig faktura for denne kunde. -ConfirmConvertToReducSupplier=Vil du konvertere denne %s til en absolut rabat? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=Beløbet gemmes blandt alle rabatter og kan bruges som en rabat på en aktuel eller en fremtidig faktura for denne leverandør. SupplierPayments=Leverandørbetalinger ReceivedPayments=Modtagne betalinger @@ -219,7 +219,10 @@ ShowInvoiceSituation=Vis faktura status UseSituationInvoices=Tillad midlertidig faktura UseSituationInvoicesCreditNote=Tillad midlertidig faktura kreditnota Retainedwarranty=Opretholdt garanti +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Tilbageholdt garanti standart procent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=At betale på %s toPayOn=at betale på %s RetainedWarranty=Opholdt garanti @@ -509,7 +512,7 @@ ToMakePayment=Betale ToMakePaymentBack=Tilbagebetalt ListOfYourUnpaidInvoices=Liste over ubetalte fakturaer NoteListOfYourUnpaidInvoices=Bemærk: Denne liste indeholder kun fakturaer til tredjeparter, som du er knyttet til som salgsrepræsentant. -RevenueStamp=Indtægtsstempel +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Denne indstilling er kun tilgængelig, når du opretter en faktura fra fanen "Kund" fra tredjepart YouMustCreateInvoiceFromSupplierThird=Denne indstilling er kun tilgængelig, når du opretter en faktura fra fanen "Sælger" fra tredjepart YouMustCreateStandardInvoiceFirstDesc=Du skal først oprette en standardfaktura og konvertere den til "skabelon" for at oprette en ny skabelonfaktura @@ -575,3 +578,4 @@ AutoFillDateTo=Indstil slutdato for servicelinje med næste faktura dato AutoFillDateToShort=Indstil slutdato MaxNumberOfGenerationReached=Maks antal gener. nået BILL_DELETEInDolibarr=Faktura slettet +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/da_DK/blockedlog.lang b/htdocs/langs/da_DK/blockedlog.lang index 84d8d52f33a..c76c9e72916 100644 --- a/htdocs/langs/da_DK/blockedlog.lang +++ b/htdocs/langs/da_DK/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Uændrede logfiler ShowAllFingerPrintsMightBeTooLong=Vis alle arkiverede logfiler (kan være lang) ShowAllFingerPrintsErrorsMightBeTooLong=Vis alle ikke-gyldige arkivlogfiler (kan være lange) DownloadBlockChain=Download fingeraftryk -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Arkiveret log synes at være gyldig i forhold til den foregående, men kæden blev ødelagt tidligere. AddedByAuthority=Gemt i ekstern myndighed diff --git a/htdocs/langs/da_DK/cashdesk.lang b/htdocs/langs/da_DK/cashdesk.lang index d0d8da4afe5..a2749d3ffcf 100644 --- a/htdocs/langs/da_DK/cashdesk.lang +++ b/htdocs/langs/da_DK/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Tilføj denne artikel RestartSelling=Gå tilbage til salg SellFinished=Salg gennemført PrintTicket=Udskriv billet +SendTicket=Send ticket NoProductFound=Ingen artikel fundet ProductFound=Varen findes NoArticle=Ingen artikel @@ -48,6 +49,7 @@ Footer=Sidefod AmountAtEndOfPeriod=Beløb ved udgangen af perioden (dag, måned eller år) TheoricalAmount=Teoretisk mængde RealAmount=Reelt beløb +CashFence=Cash fence CashFenceDone=Cash fence gjort for perioden NbOfInvoices=Antal fakturaer Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS har brug for produkt kategorier for at fungere OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/da_DK/companies.lang b/htdocs/langs/da_DK/companies.lang index ce8b8830ca0..970ecf1e4e1 100644 --- a/htdocs/langs/da_DK/companies.lang +++ b/htdocs/langs/da_DK/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company " %s" slettet fra databasen. ListOfContacts=Liste over kontakter/adresser ListOfContactsAddresses=Liste over kontakter/adresser ListOfThirdParties=Liste over tredjeparter -ShowCompany=Vis tredjepart ShowContact=Vis kontakt ContactsAllShort=Alle (intet filter) ContactType=Type af kontakt @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Fornavn på salgsrepræsentant SaleRepresentativeLastname=Efternavn på salgsrepræsentant ErrorThirdpartiesMerge=Der opstod en fejl ved sletning af tredjeparter. Kontroller loggen. Ændringer er blevet vendt tilbage. NewCustomerSupplierCodeProposed=Kunde- eller leverandørkode, der allerede er brugt, foreslås en ny kode +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Betalingstype - Kunde PaymentTermsCustomer=Betalingsbetingelser - Kunde diff --git a/htdocs/langs/da_DK/compta.lang b/htdocs/langs/da_DK/compta.lang index ce9ae06ce02..6b19d13f78a 100644 --- a/htdocs/langs/da_DK/compta.lang +++ b/htdocs/langs/da_DK/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Se %sanalyse af betaling%s for en beregning af faktis SeeReportInDueDebtMode=Se %sanalyse af faktura%s for en beregning baseret på kendte registrerede fakturaer, selvom de endnu ikke er opført i hovedbogen. SeeReportInBookkeepingMode=Se <b> %skassekladde report%s </b> til en beregning på <b> kasssekladdens tabelen </b> RulesAmountWithTaxIncluded=- De viste beløb er med alle inkl. moms -RulesResultDue=- Det inkluderer udestående fakturaer, udgifter, moms, donationer, uanset om de er betalt eller ej. Inkluderer også betalte lønninger. <br> - Det er baseret på bekræftesesdatoen for fakturaer og moms og på forfaldsdagen for udgifter. For lønninger, der er defineret med Lønmodul, anvendes datoen for betaling. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Den omfatter de reelle betalinger foretaget på fakturaer, udgifter, moms og løn. <br> - Det er baseret på betalingsdatoer for fakturaer, udgifter, moms og løn. Donationsdatoen for donation. -RulesCADue=- Det inkluderer kundens fakturaer, uanset om de er betalt eller ej. <br> - Det er baseret på valideringsdatoen for disse fakturaer. <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Den omfatter alle effektive betalinger af fakturaer modtaget fra kunder. <br> - Det er baseret på betalingsdatoen for disse fakturaer <br> RulesCATotalSaleJournal=Den omfatter alle kreditlinjer fra salgslisten. RulesAmountOnInOutBookkeepingRecord=Det indeholder post i din hovedbog med kontor, der har gruppen "EXPENSE" eller "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Omsætning faktureret ved salgskurs TurnoverCollectedbyVatrate=Omsætning opkrævet ved salgskurs PurchasebyVatrate=Køb ved salgskurs LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/da_DK/errors.lang b/htdocs/langs/da_DK/errors.lang index 8a0ee4bad7e..8eb3fb29a3f 100644 --- a/htdocs/langs/da_DK/errors.lang +++ b/htdocs/langs/da_DK/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Fil ikke modtaget helt af serveren. ErrorNoTmpDir=Midlertidig directy %s ikke eksisterer. ErrorUploadBlockedByAddon=Upload blokeret af en PHP / Apache plugin. ErrorFileSizeTooLarge=Filstørrelse er for stor. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Størrelse for lang tid for int type (%s cifre maksimum) ErrorSizeTooLongForVarcharType=Størrelse for lang tid for streng type (%s tegn maksimum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/da_DK/install.lang b/htdocs/langs/da_DK/install.lang index 5adaa0794ca..692e45b5abb 100644 --- a/htdocs/langs/da_DK/install.lang +++ b/htdocs/langs/da_DK/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Dette PHP understøtter Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=Dette PHP understøtter UTF8 funktioner. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Din PHP max session hukommelse er sat <b>til %s.</b> Dette skulle være nok. PHPMemoryTooLow=Din PHP max-sessionshukommelse er indstillet til <b> %s </ b> bytes. Dette er for lavt. Skift din <b> php.ini </ b> for at indstille parameteren <b> memory_limit </ b> til mindst <b> %s </ b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Din PHP-installation understøtter ikke UTF8-funktioner. Dolibarr kan ikke fungere korrekt. Løs dette inden du installerer Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s ikke eksisterer. ErrorGoBackAndCorrectParameters=Gå tilbage og kontroller / korrigér parametrene. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Programmet forsøgte at opgradere selv, men insta YouTryInstallDisabledByFileLock=Programmet forsøgte at opgradere selv, men installerings- / opgraderingssiderne er blevet deaktiveret for sikkerhed (ved at der findes en låsfil <strong> install.lock </ strong> i dolibarr-dokumenter-mappen). <br> ClickHereToGoToApp=Klik her for at gå til din ansøgning ClickOnLinkOrRemoveManualy=Klik på følgende link. Hvis du altid ser den samme side, skal du fjerne / omdøbe filen install.lock i dokumentmappen. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/da_DK/link.lang b/htdocs/langs/da_DK/link.lang index fdcf07aeff4..bf3e4545fe4 100644 --- a/htdocs/langs/da_DK/link.lang +++ b/htdocs/langs/da_DK/link.lang @@ -1,10 +1,11 @@ # Dolibarr language file - Source file is en_US - languages -LinkANewFile=Link a new file/document -LinkedFiles=Linked files and documents -NoLinkFound=No registered links -LinkComplete=The file has been linked successfully -ErrorFileNotLinked=The file could not be linked -LinkRemoved=The link %s has been removed -ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' -ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' -URLToLink=URL to link +LinkANewFile=Link en ny fil / et dokument +LinkedFiles=Sammenkædede filer og dokumenter +NoLinkFound=Ingen registrerede links +LinkComplete=Filen er blevet linket korrekt +ErrorFileNotLinked=Filen kunne ikke forbindes +LinkRemoved=Linket %s er blevet fjernet +ErrorFailedToDeleteLink= Kunne ikke fjerne linket '<b> %s </b>' +ErrorFailedToUpdateLink= Kunne ikke opdatere linket '<b> %s </b>' +URLToLink=URL til link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/da_DK/mails.lang b/htdocs/langs/da_DK/mails.lang index 3aea0b5baea..ac4731f9f95 100644 --- a/htdocs/langs/da_DK/mails.lang +++ b/htdocs/langs/da_DK/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Udgående e-mail opsætning InGoingEmailSetup=Indgående e-mail opsætning -OutGoingEmailSetupForEmailing=Udgående e-mail opsætning (til masse emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Standard udgående e-mail opsætning Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/da_DK/main.lang b/htdocs/langs/da_DK/main.lang index 2f9e64a0919..0496ed4d3b8 100644 --- a/htdocs/langs/da_DK/main.lang +++ b/htdocs/langs/da_DK/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Gem og bliv SaveAndNew=Gem og nyt TestConnection=Test forbindelse ToClone=Klon +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Vælg de data, du vil klone: NoCloneOptionsSpecified=Ingen data at klone defineret. Of=af @@ -829,6 +830,8 @@ Gender=Køn Genderman=Mand Genderwoman=Kvinde ViewList=Vis liste +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obligatorisk Hello=Hallo GoodBye=Farvel @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Vælg dine grafindstillinger for at oprette en graf Measures=Foranstaltninger XAxis=X-akse YAxis=Y-akse +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/da_DK/other.lang b/htdocs/langs/da_DK/other.lang index 2ac1a8ed8d7..47fee11ebee 100644 --- a/htdocs/langs/da_DK/other.lang +++ b/htdocs/langs/da_DK/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL til side WEBSITE_TITLE=Titel WEBSITE_DESCRIPTION=Beskrivelse 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=nøgleord LinesToImport=Linjer at importere diff --git a/htdocs/langs/da_DK/products.lang b/htdocs/langs/da_DK/products.lang index 42ce2440c93..d6fc860186e 100644 --- a/htdocs/langs/da_DK/products.lang +++ b/htdocs/langs/da_DK/products.lang @@ -2,7 +2,7 @@ ProductRef=Produkt ref. ProductLabel=Produktmærke ProductLabelTranslated=Oversat produktmærke -ProductDescription=Product description +ProductDescription=Produkt beskrivelse ProductDescriptionTranslated=Oversat produktbeskrivelse ProductNoteTranslated=Oversat produkt notat ProductServiceCard=Produkter / Tjenester kortet @@ -17,11 +17,13 @@ Create=Opret Reference=Reference NewProduct=Ny vare NewService=Ny ydelse -ProductVatMassChange=Global VAT Update -ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u></b> products and services! +ProductVatMassChange=Global momsopdatering +ProductVatMassChangeDesc=Dette værktøj opdaterer momssatsen, der er defineret på <b> <u> ALLE </u> </b> produkter og tjenester! MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=Denne side kan bruges til at initialisere en stregkode på objekter, der ikke har stregkode defineret. Kontroller, inden opsætningen af ​​modulets stregkode er afsluttet. ProductAccountancyBuyCode=Regnskabskode (køb) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Regnskabskode (salg) ProductAccountancySellIntraCode=Regnskabskode (salg inden for Fællesskabet) ProductAccountancySellExportCode=Regnskabskode (salg eksport) @@ -29,14 +31,14 @@ ProductOrService=Vare eller ydelse ProductsAndServices=Varer og ydelser ProductsOrServices=Varer eller ydelser ProductsPipeServices=Produkter | Services -ProductsOnSale=Products for sale -ProductsOnPurchase=Products for purchase +ProductsOnSale=Produkter til salg +ProductsOnPurchase=Produkter til køb ProductsOnSaleOnly=Varer kun til salg ProductsOnPurchaseOnly=Varer kun til indkøb ProductsNotOnSell=Varer, der ikke er til salg og ikke kan købes ProductsOnSellAndOnBuy=Produkter til salg og til køb -ServicesOnSale=Services for sale -ServicesOnPurchase=Services for purchase +ServicesOnSale=Tjenester til salg +ServicesOnPurchase=Tjenester til køb ServicesOnSaleOnly=Ydelser kun til salg ServicesOnPurchaseOnly=Ydelser kun til indkøb ServicesNotOnSell=Ydelse, der ikke er til salg og ikke kan købes @@ -48,10 +50,10 @@ CardProduct0=Vare CardProduct1=Ydelse Stock=Varelager MenuStocks=Lagre -Stocks=Stocks and location (warehouse) of products +Stocks=Lagre og placering (lager) af produkter Movements=Bevægelser Sell=Sælge -Buy=Purchase +Buy=Køb OnSell=Til salg OnBuy=Til indkøb NotOnSell=Ikke til salg @@ -66,17 +68,17 @@ ProductStatusNotOnBuyShort=Ikke til indkøb UpdateVAT=Opdater moms UpdateDefaultPrice=Opdater standardpris UpdateLevelPrices=Opdater priser for hvert niveau -AppliedPricesFrom=Applied from +AppliedPricesFrom=Anvendt fra SellingPrice=Salgspris -SellingPriceHT=Selling price (excl. tax) +SellingPriceHT=Salgspris (ekskl. Skat) SellingPriceTTC=Salgspris (inkl. moms) -SellingMinPriceTTC=Minimum Selling price (inc. tax) -CostPriceDescription=This price field (excl. tax) can be used to store the average amount this product costs to your company. It may be any price you calculate yourself, for example from the average buying price plus average production and distribution cost. +SellingMinPriceTTC=Minimumssalgspris (inkl. Skat) +CostPriceDescription=Dette prisfelt (ekskl. Skat) kan bruges til at gemme det gennemsnitlige beløb, dette produkt koster for din virksomhed. Det kan være enhver pris, du selv beregner, for eksempel ud fra den gennemsnitlige købspris plus gennemsnitlige produktions- og distributionsomkostninger. CostPriceUsage=Denne værdi kan bruges til margenberegning. SoldAmount=Solgt beløb PurchasedAmount=Købt beløb NewPrice=Ny pris -MinPrice=Min. sell price +MinPrice=Min. salgspris EditSellingPriceLabel=Rediger salgsprisetiket CantBeLessThanMinPrice=Salgsprisen kan ikke være lavere end det minimum, der er tilladt for denne vare (%s uden moms). Denne meddelelse kan også ses, hvis du bruger en for høj rabat. ContractStatusClosed=Lukket @@ -85,7 +87,7 @@ ErrorProductBadRefOrLabel=Forkert værdi for reference eller etiket. ErrorProductClone=Der opstod et problem under forsøg på at klone produktet eller tjenesten. ErrorPriceCantBeLowerThanMinPrice=Fejl, prisen kan ikke være lavere end minimumsprisen. Suppliers=Leverandører -SupplierRef=Vendor SKU +SupplierRef=Sælger SKU ShowProduct=Vis vare ShowService=Vis ydelse ProductsAndServicesArea=Varer og ydelser @@ -94,7 +96,7 @@ ServicesArea=Ydelser ListOfStockMovements=Liste over lagerbevægelser BuyingPrice=Købspris PriceForEachProduct=Produkter med specifikke priser -SupplierCard=Vendor card +SupplierCard=Sælgerkort PriceRemoved=Pris fjernet BarCode=Stregkode BarcodeType=Stregkodetype @@ -102,7 +104,7 @@ SetDefaultBarcodeType=Vælg stregkodetype BarcodeValue=Stregkodeværdi NoteNotVisibleOnBill=Note (ikke synlig på fakturaer, tilbud ...) ServiceLimitedDuration=Hvis varen er en ydelse med begrænset varighed: -MultiPricesAbility=Multiple price segments per product/service (each customer is in one price segment) +MultiPricesAbility=Flere prissegmenter pr. Produkt / service (hver kunde er i et prissegment) MultiPricesNumPrices=Antal priser AssociatedProductsAbility=Aktivér virtuelle produkter (sæt) AssociatedProducts=Virtuelle produkter @@ -116,7 +118,7 @@ CategoryFilter=Kategori filter ProductToAddSearch=Søg produkt for at tilføje NoMatchFound=Ingen match fundet ListOfProductsServices=Liste over produkter / tjenester -ProductAssociationList=List of products/services that are component(s) of this virtual product/kit +ProductAssociationList=Liste over produkter / tjenester, der er komponent (er) i dette virtuelle produkt / kit ProductParentList=Liste over produkter / services med dette produkt som en komponent ErrorAssociationIsFatherOfThis=En af valgte produkt er moderselskab med aktuelle produkt DeleteProduct=Slet en vare/ydelse @@ -129,15 +131,15 @@ ImportDataset_service_1=Ydelser DeleteProductLine=Slet varelinje ConfirmDeleteProductLine=Er du sikker på du vil slette denne varelinje? ProductSpecial=Særlig -QtyMin=Min. purchase quantity -PriceQtyMin=Price quantity min. -PriceQtyMinCurrency=Price (currency) for this qty. (no discount) -VATRateForSupplierProduct=VAT Rate (for this vendor/product) -DiscountQtyMin=Discount for this qty. -NoPriceDefinedForThisSupplier=No price/qty defined for this vendor/product -NoSupplierPriceDefinedForThisProduct=No vendor price/qty defined for this product -PredefinedProductsToSell=Predefined Product -PredefinedServicesToSell=Predefined Service +QtyMin=Min. købsmængde +PriceQtyMin=Prismængde min. +PriceQtyMinCurrency=Pris (valuta) for denne mængde. (ingen rabat) +VATRateForSupplierProduct=Momssats (for denne leverandør / produkt) +DiscountQtyMin=Rabat for denne mængde. +NoPriceDefinedForThisSupplier=Ingen pris / antal defineret for denne leverandør / produkt +NoSupplierPriceDefinedForThisProduct=Der er ikke defineret nogen leverandørpris / antal for dette produkt +PredefinedProductsToSell=Foruddefineret produkt +PredefinedServicesToSell=Foruddefineret service PredefinedProductsAndServicesToSell=Predefinerede produkter / tjenester til salg PredefinedProductsToPurchase=Predefineret produkt til køb PredefinedServicesToPurchase=Predefinerede tjenester til køb @@ -153,8 +155,8 @@ RowMaterial=Råvare ConfirmCloneProduct=Er du sikker på at du vil klone produktet eller tjenesten <b> %s </b>? CloneContentProduct=Klon alle hovedoplysninger af produkt / service ClonePricesProduct=Klonpriser -CloneCategoriesProduct=Clone tags/categories linked -CloneCompositionProduct=Clone virtual product/service +CloneCategoriesProduct=Klon tags / kategorier knyttet +CloneCompositionProduct=Klon virtuelt produkt / service CloneCombinationsProduct=Klon produkt varianter ProductIsUsed=Denne vare er brugt NewRefForClone=Ref. for nye vare/ydelse @@ -162,10 +164,10 @@ SellingPrices=Salgspriser BuyingPrices=Købspriser CustomerPrices=Kundepriser SuppliersPrices=Leverandørpriser -SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) +SuppliersPricesOfProductsOrServices=Sælgerpriser (af produkter eller tjenester) CustomCode=Told / vare / HS-kode CountryOrigin=Oprindelsesland -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Kort etiket Unit=Enhed p=u. @@ -210,7 +212,7 @@ unitDM=dm unitCM=cm unitMM=mm unitFT=ft -unitIN=in +unitIN=i unitM2=Kvadratmeter unitDM2=dm² unitCM2=cm² @@ -218,7 +220,7 @@ unitMM2=mm² unitFT2=ft² unitIN2=in² unitM3=Kubikmeter -unitDM3=dm³ +unitDM3=dm unitCM3=cm³ unitMM3=mm³ unitFT3=ft³ @@ -238,8 +240,8 @@ UseMultipriceRules=Brug prissegmentregler (defineret i opsætning af produktmodu PercentVariationOver=%% variation over %s PercentDiscountOver=%% rabat over %s KeepEmptyForAutoCalculation=Hold tom for at få dette beregnet automatisk ud fra vægt eller volumen af ​​produkter -VariantRefExample=Examples: COL, SIZE -VariantLabelExample=Examples: Color, Size +VariantRefExample=Eksempler: COL, STØRRELSE +VariantLabelExample=Eksempler: Farve, størrelse ### composition fabrication Build=Fremstille ProductsMultiPrice=Produkter og priser for hvert prissegment @@ -250,18 +252,18 @@ Quarter1=1st. Kvarter Quarter2=2nd. Kvarter Quarter3=3rd. Kvarter Quarter4=4th. Kvarter -BarCodePrintsheet=Print barcode -PageToGenerateBarCodeSheets=With this tool, you can print sheets of barcode stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button <b>%s</b>. +BarCodePrintsheet=Udskriv stregkode +PageToGenerateBarCodeSheets=Med dette værktøj kan du udskrive ark med stregkode-klistermærker. Vælg format for din klistermærkeside, type stregkode og stregkodes værdi, og klik derefter på knappen <b> %s </b>. NumberOfStickers=Antal klistermærker til udskrivning på side PrintsheetForOneBarCode=Udskriv flere klistermærker for en stregkode BuildPageToPrint=Generer side, der skal udskrives FillBarCodeTypeAndValueManually=Udfyld stregkode type og værdi manuelt. FillBarCodeTypeAndValueFromProduct=Udfyld stregkode type og værdi fra stregkode for et produkt. FillBarCodeTypeAndValueFromThirdParty=Udfyld stregkode type og værdi fra stregkode for en tredjepart. -DefinitionOfBarCodeForProductNotComplete=Definition of type or value of barcode not complete for product %s. -DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of barcode non complete for third party %s. -BarCodeDataForProduct=Barcode information of product %s: -BarCodeDataForThirdparty=Barcode information of third party %s: +DefinitionOfBarCodeForProductNotComplete=Definition af type eller værdi af stregkode er ikke komplet for produkt %s. +DefinitionOfBarCodeForThirdpartyNotComplete=Definition af type eller værdi af stregkode ikke komplet til tredjepart %s. +BarCodeDataForProduct=Stregkodeinformation for produktet %s: +BarCodeDataForThirdparty=Stregkodeinformation fra tredjepart %s: ResetBarcodeForAllRecords=Definer stregkodeværdi for alle poster (dette vil også nulstille stregkodeværdi allerede defineret med nye værdier) PriceByCustomer=Forskellige priser for hver kunde PriceCatalogue=En enkelt salgspris pr. Produkt / service @@ -270,28 +272,28 @@ AddCustomerPrice=Tilføj pris ved kunde ForceUpdateChildPriceSoc=Indstil samme pris på kundernes datterselskaber PriceByCustomerLog=Log af tidligere kundepriser MinimumPriceLimit=Minimumsprisen kan ikke være lavere end %s -MinimumRecommendedPrice=Minimum recommended price is: %s +MinimumRecommendedPrice=Minimum anbefalet pris er: %s PriceExpressionEditor=Pris Udtryks Editor PriceExpressionSelected=Udvalgt prisudtryk PriceExpressionEditorHelp1="pris = 2 + 2" eller "2 + 2" til indstilling af prisen. Brug ; at adskille udtryk PriceExpressionEditorHelp2=Du kan få adgang til ExtraFields med variabler som <b> #extrafield_myextrafieldkey # </b> og globale variabler med <b> #global_mycode # </b> -PriceExpressionEditorHelp3=In both product/service and vendor prices there are these variables available:<br><b>#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min#</b> -PriceExpressionEditorHelp4=In product/service price only: <b>#supplier_min_price#</b><br>In vendor prices only: <b>#supplier_quantity# and #supplier_tva_tx#</b> +PriceExpressionEditorHelp3=I både produkt / service og leverandørpriser er der disse variabler tilgængelige: <br> <b> # tva_tx # # localtax1_tx # # localtax2_tx # # vægt # # længde # # overflade # # pris_min # </b> +PriceExpressionEditorHelp4=Kun i produkt / service pris: <b> # leverandør_min_pris # </b> <br> Kun i sælgerpriser: <b> # leverandør_kvantitet # og # leverandør_tva_tx # a09a4b73917 PriceExpressionEditorHelp5=Tilgængelige globale værdier: PriceMode=Pris-tilstand PriceNumeric=Numero DefaultPrice=Standard pris ComposedProductIncDecStock=Forøg / sænk lagerbeholdning ved forældreændring -ComposedProduct=Child products +ComposedProduct=Børneprodukter MinSupplierPrice=Min købskurs MinCustomerPrice=Mindste salgspris DynamicPriceConfiguration=Dynamisk priskonfiguration -DynamicPriceDesc=You may define mathematical formulae to calculate Customer or Vendor prices. Such formulas can use all mathematical operators, some constants and variables. You can define here the variables you wish to use. If the variable needs an automatic update, you may define the external URL to allow Dolibarr to update the value automatically. +DynamicPriceDesc=Du kan definere matematiske formler til beregning af kunde- eller leverandørpriser. Sådanne formler kan bruge alle matematiske operatorer, nogle konstanter og variabler. Du kan her definere de variabler, du vil bruge. Hvis variablen har brug for en automatisk opdatering, kan du definere den eksterne URL, så Dolibarr kan opdatere værdien automatisk. AddVariable=Tilføj variabel AddUpdater=Tilføj opdaterer GlobalVariables=Globale variabler VariableToUpdate=Variabel for opdatering -GlobalVariableUpdaters=External updaters for variables +GlobalVariableUpdaters=Eksterne opdateringer til variabler GlobalVariableUpdaterType0=JSON data GlobalVariableUpdaterHelp0=Analyserer JSON-data fra den angivne webadresse, VALUE angiver placeringen af ​​den relevante værdi, GlobalVariableUpdaterHelpFormat0=Formatér for anmodning {"URL": "http://example.com/urlofjson", "VALUE": "array1, array2, targetvalue"} @@ -309,7 +311,7 @@ WarningSelectOneDocument=Vælg mindst et dokument DefaultUnitToShow=Enhed NbOfQtyInProposals=Antal i forslag ClinkOnALinkOfColumn=Klik på et link i kolonne %s for at få en detaljeret visning ... -ProductsOrServicesTranslations=Products/Services translations +ProductsOrServicesTranslations=Produkter / tjenester oversættelser TranslatedLabel=Oversat etiket TranslatedDescription=Oversat beskrivelse TranslatedNote=Oversatte noter @@ -317,10 +319,10 @@ ProductWeight=Vægt for 1 produkt ProductVolume=Volumen for 1 produkt WeightUnits=Vægt enhed VolumeUnits=Volumen enhed -WidthUnits=Width unit -LengthUnits=Length unit -HeightUnits=Height unit -SurfaceUnits=Surface unit +WidthUnits=Bredde enhed +LengthUnits=Længde enhed +HeightUnits=Højdeenhed +SurfaceUnits=Overfladeenhed SizeUnits=Størrelsesenhed DeleteProductBuyPrice=Slet købspris ConfirmDeleteProductBuyPrice=Er du sikker på, at du vil slette denne købspris? @@ -329,11 +331,11 @@ ProductSheet=Vareside ServiceSheet=Serviceblad PossibleValues=Mulige værdier GoOnMenuToCreateVairants=Gå på menu %s - %s for at forberede attributvarianter (som farver, størrelse, ...) -UseProductFournDesc=Add a feature to define the descriptions of products defined by the vendors in addition to descriptions for customers -ProductSupplierDescription=Vendor description for the product -UseProductSupplierPackaging=Use packaging on supplier prices (recalculate quantities according to packaging set on supplier price when adding/updating line in supplier documents) -PackagingForThisProduct=Packaging -QtyRecalculatedWithPackaging=The quantity of the line were recalculated according to supplier packaging +UseProductFournDesc=Tilføj en funktion til at definere beskrivelser af produkter, der er defineret af leverandørerne, ud over beskrivelser til kunder +ProductSupplierDescription=Leverandørbeskrivelse for produktet +UseProductSupplierPackaging=Brug emballage til leverandørpriser (genberegn mængder i henhold til emballage, der er angivet på leverandørpris, når du tilføjer / opdaterer linje i leverandørdokumenter) +PackagingForThisProduct=Emballage +QtyRecalculatedWithPackaging=Mængden af linjen blev beregnet om efter leverandøremballage #Attributes VariantAttributes=Variant attributter @@ -367,17 +369,17 @@ UsePercentageVariations=Brug procentvise variationer PercentageVariation=Procentvis variation ErrorDeletingGeneratedProducts=Der opstod en fejl under forsøg på at slette eksisterende varianter NbOfDifferentValues=Antal forskellige værdier -NbProducts=Number of products +NbProducts=Antal produkter ParentProduct=Forældrevarer HideChildProducts=Skjul varevarianter ShowChildProducts=Vis variantprodukter -NoEditVariants=Go to Parent product card and edit variants price impact in the variants tab +NoEditVariants=Gå til Parent-produktkort og rediger variantens prispåvirkning under fanen Varianter ConfirmCloneProductCombinations=Vil du gerne kopiere alle varianter til det andet overordnede produkt med den givne reference? CloneDestinationReference=Bestemmelsesproduktreference ErrorCopyProductCombinations=Der opstod en fejl under kopiering af varianter af varen ErrorDestinationProductNotFound=Destination produkt ikke fundet ErrorProductCombinationNotFound=Varevariant ikke fundet -ActionAvailableOnVariantProductOnly=Action only available on the variant of product -ProductsPricePerCustomer=Product prices per customers -ProductSupplierExtraFields=Additional Attributes (Supplier Prices) -DeleteLinkedProduct=Delete the child product linked to the combination +ActionAvailableOnVariantProductOnly=Handling kun tilgængelig på variant af produkt +ProductsPricePerCustomer=Produktpriser pr. Kunde +ProductSupplierExtraFields=Yderligere attributter (leverandørpriser) +DeleteLinkedProduct=Slet det underordnede produkt, der er knyttet til kombinationen diff --git a/htdocs/langs/da_DK/projects.lang b/htdocs/langs/da_DK/projects.lang index 132f59035a3..0637091484c 100644 --- a/htdocs/langs/da_DK/projects.lang +++ b/htdocs/langs/da_DK/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Tid ListOfTasks=Liste over opgaver GoToListOfTimeConsumed=Gå til listen over tid forbrugt -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planlagt arbejdsbyrde PlannedWorkloadShort=arbejdsbyrde ProjectReferers=Relaterede emner ProjectMustBeValidatedFirst=Projektet skal bekræftes først -FirstAddRessourceToAllocateTime=Tildel en brugerressource til opgaven for at allokere tid +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Indgang pr. Dag InputPerWeek=Indgang pr. Uge InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Seneste %s ændrede projekter OtherFilteredTasks=Andre filtrerede opgaver NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Tillad brugernes kommentarer til opgaver AllowCommentOnProject=Tillad brugernes kommentarer til projekter @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Ny faktura OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/da_DK/receiptprinter.lang b/htdocs/langs/da_DK/receiptprinter.lang index 53dfdcad15f..6f52edb7a45 100644 --- a/htdocs/langs/da_DK/receiptprinter.lang +++ b/htdocs/langs/da_DK/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Netværksprinter CONNECTOR_FILE_PRINT=Lokal printer CONNECTOR_WINDOWS_PRINT=Lokal Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Falsk printer til test, gør ingenting CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x: 9100 CONNECTOR_FILE_PRINT_HELP=/ dev / usb / lp0, / dev / usb / lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb: //FooUser:hemmeligt@computernavn/arbejdsgruppe/kvitteringsprinter +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Standard profil PROFILE_SIMPLE=Enkel profil PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Faktura ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Moms ID inden for Fællesskabet +DOL_VALUE_MYSOC_CAPITAL=Egenkapital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/da_DK/stripe.lang b/htdocs/langs/da_DK/stripe.lang index 8a6e6cc98fb..7ea3e6c6d93 100644 --- a/htdocs/langs/da_DK/stripe.lang +++ b/htdocs/langs/da_DK/stripe.lang @@ -32,6 +32,7 @@ VendorName=Navn på leverandør CSSUrlForPaymentForm=CSS stilark url for betalingsformular NewStripePaymentReceived=Ny Stripe betaling modtaget NewStripePaymentFailed=Ny Stripe betaling forsøgt men mislykkedes +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Hemmelig testnøgle STRIPE_TEST_PUBLISHABLE_KEY=Udgivelig testnøgle STRIPE_TEST_WEBHOOK_KEY=Webhook testnøgle @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/da_DK/users.lang b/htdocs/langs/da_DK/users.lang index f970ceaa08e..465b8ad793b 100644 --- a/htdocs/langs/da_DK/users.lang +++ b/htdocs/langs/da_DK/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Brugere og deres egenskaber DomainUser=Domænebruger %s Reactivate=Genaktiver CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Tilladelse gives, fordi arvet fra en af en brugers gruppe. Inherited=Arvelige UserWillBeInternalUser=Oprettet brugeren vil blive en intern bruger (fordi der ikke er knyttet til en bestemt tredjepart) @@ -110,3 +110,8 @@ UserLogged=Bruger logget DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/da_DK/website.lang b/htdocs/langs/da_DK/website.lang index 317c15c1b37..c6b7dec2547 100644 --- a/htdocs/langs/da_DK/website.lang +++ b/htdocs/langs/da_DK/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Se side i ny fane SetAsHomePage=Angiv som hjemmeside RealURL=Rigtig webadresse ViewWebsiteInProduction=Se websitet ved hjælp af hjemmesider -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u> Brug med PHP-integreret server </ u> <br> På udvikler miljø kan du helst prøve webstedet med den indbyggede PHP-server (PHP 5.5 påkrævet) ved at køre <br> <strong> php -S 0.0. 0,0: 8080 -t %s </ strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Kontroller også, at den virtuelle vært har tilladelse <strong> %s </strong> på filer til <br> <strong> %s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Aktivér webstedets kontobord WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=Du skal først definere standard startside -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Kun udgave af HTML-kilde er mulig, når indhold blev taget fra et eksternt websted GrabImagesInto=Grib også billeder fundet i css og side. ImagesShouldBeSavedInto=Billeder skal gemmes i biblioteket @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/de_AT/admin.lang b/htdocs/langs/de_AT/admin.lang index 4afdce2c5dd..11e60ccc00b 100644 --- a/htdocs/langs/de_AT/admin.lang +++ b/htdocs/langs/de_AT/admin.lang @@ -19,8 +19,6 @@ InternalUsers=interne Nutzer ExternalUsers=externe Nutzer GUISetup=Anischt NextValue=Nächste Wert -AntiVirusCommandExample=Beispiel für ClamWin: c:\\Program Files (x86)\\ClamWin\\bin\\clamscan.exe <br>Beispiel für ClamAV: /usr/bin/clamscan -AntiVirusParamExample=Beispiel für ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" URL=URL oder Link YouCanSubmitFile=You can upload the .zip file of module package from here: Module50Name=Produkte und Services diff --git a/htdocs/langs/de_AT/bills.lang b/htdocs/langs/de_AT/bills.lang index d15ee7cc57c..d250ef21a6a 100644 --- a/htdocs/langs/de_AT/bills.lang +++ b/htdocs/langs/de_AT/bills.lang @@ -6,6 +6,8 @@ InvoiceProFormaAsk=Proformarechnung InvoiceProFormaDesc=<b>Proformarechnung</b> entspricht dem Wert der echten Rechnung, wird aber nicht verbucht. ConsumedBy=Consumed von CardBill=Rechnungskarte +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund BillShortStatusValidated=Bestätigt BillShortStatusClosedUnpaid=geschlossen ValidateBill=Validate Rechnung @@ -21,7 +23,7 @@ ValidateInvoice=Validate Rechnung DisabledBecausePayments=Nicht möglich, da gibt es einige Zahlungen CantRemovePaymentWithOneInvoicePaid=Kann die Zahlung nicht entfernen, da es zumindest auf der Rechnung bezahlt klassifiziert PayedByThisPayment=Bezahlt durch diese Zahlung -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template TerreNumRefModelDesc1=Zurück NUMERO mit Format %syymm-nnnn für Standardrechnungen und syymm%-nnnn für Gutschriften, wo ist JJ Jahr, MM Monat und nnnn ist eine Folge ohne Pause und keine Rückkehr auf 0 TypeContact_facture_internal_SALESREPFOLL=Repräsentative Follow-up Debitorenrechnung TypeContact_facture_external_BILLING=Debitorenrechnung Kontakt diff --git a/htdocs/langs/de_AT/other.lang b/htdocs/langs/de_AT/other.lang index 51e1f322638..a3a26cd55b0 100644 --- a/htdocs/langs/de_AT/other.lang +++ b/htdocs/langs/de_AT/other.lang @@ -21,4 +21,3 @@ EMailTextInterventionValidated=Eingriff %s freigegeben ThisIsListOfModules=Dies ist eine Liste der Module, die von dieser Demo-Profil (nur gängigsten Module sind in dieser Demo) vorgewählt. Bearbeiten, um eine personalisierte Demo haben und klicken Sie auf "Start". SelectAColor=Wählen Sie eine Farbe WEBSITE_TITLE=Titel -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. diff --git a/htdocs/langs/de_CH/admin.lang b/htdocs/langs/de_CH/admin.lang index 7fcee10eb8a..c1aba0657cb 100644 --- a/htdocs/langs/de_CH/admin.lang +++ b/htdocs/langs/de_CH/admin.lang @@ -53,9 +53,7 @@ NextValueForDeposit=Nächster Wert (Anzahlung) MustBeLowerThanPHPLimit=Hinweis: <b>Deine</b> PHP Konfigurationslimite für Uploads ist aktuell <b>%s</b> %s pro Datei - unabhängig vom Wert dieses Parameters. NoMaxSizeByPHPLimit=Hinweis: In Ihren PHP-Einstellungen sind keine Grössenbeschränkungen hinterlegt MaxSizeForUploadedFiles=Maximale Grösse für Dateiuploads (0 verbietet jegliche Uploads) -AntiVirusCommandExample=Beispiel für ClamWin: c:\\Program Files (x86)\\ClamWin\\bin\\clamscan.exe <br>Beispiel für ClamAV: /usr/bin/clamscan AntiVirusParam=Weitere Parameter auf der Kommandozeile -AntiVirusParamExample=Beispiel für ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" MultiCurrencySetup=Mehrfachwährungen konfigurieren MenuIdParent=Eltern-Menü-ID DetailPosition=Reihungsnummer für definition der Menüposition @@ -94,7 +92,6 @@ AddDropDatabase=DROP DATABASE Befehl hinzufügen AddDropTable=DROP TABLE Befehl hinzufügen IgnoreDuplicateRecords=Fehler durch doppelte Zeilen ignorieren (INSERT IGNORE) BoxesDesc=Boxen (Widgets) sind Informationsblöcke, die man für personalisierte Ansichten verwenden kann. Gib bei einer Box an, auf welcher Ansicht Sie erscheinen soll und Klicke auf "Aktivieren" - oder entferne eine Box über das Papierkorbsymbol. -ModulesDesc=Über Module steuerst du die Funktionsvielfalt deiner Dolibarr - Umgebung. Schalte die gewünschten Module einfach mit dem Schiebeschalter daneben ein und aus. Setze dann benutzerspezifische Rechte für deine Anwender. ModulesMarketPlaceDesc=Sie finden weitere Module auf externen Websites ModulesDeployDesc=Hier kannst du Module und Apps von Drittanbietern in deine Umgebung einbinden. Dazu braucht es lokale Schreibrechte auf deiner Webserverumgebung. Diese Module erscheinen danach hier im Tab "<strong>%s</strong>" ModulesMarketPlaces=Suche externe Module @@ -415,8 +412,6 @@ CompanyInfo=Firma / Organisation CompanyZip=PLZ DoNotSuggestPaymentMode=Nicht vorschlagen SetupDescription1=Der Setupbereich erlaubt das konfigurieren ihrer Dolibarr Installation vor der ersten Verwendung. -SetupDescription3=<a href="%s">%s -> %s</a> <br> Grundlegende Parameter zum Anpassen des Standardverhaltens Ihrer Anwendung (z. B. für länderbezogene Funktionen). -SetupDescription4=Die Parameter im Menü <a href="%s">%s-> %s</a> sind notwenig, da Dolibarr ein modulares monolithisches ERP/CRM-System ist. Neue Funktionen werden für jedes aktivierte Modul zum Menü hinzugefügt. InfoDolibarr=Infos Dolibarr InfoBrowser=Infos Browser InfoOS=Infos OS diff --git a/htdocs/langs/de_CH/bills.lang b/htdocs/langs/de_CH/bills.lang index 58df948fa26..c653f5b376c 100644 --- a/htdocs/langs/de_CH/bills.lang +++ b/htdocs/langs/de_CH/bills.lang @@ -24,14 +24,11 @@ NoInvoiceToCorrect=Ich habe keine Rechnung zu korrigieren. InvoiceHasAvoir=Korrigiert durch eine oder mehrere Gutschriften CardBill=Rechnungsübersicht InvoiceLine=Rechnungsposition -CustomerInvoicePaymentBack=Gutschrift paymentInInvoiceCurrency=In Rechnungswährung PaidBack=Zurückbezahlt DeletePayment=Zahlung löschen ConfirmDeletePayment=Nur zur Sicherheit: Willst du diese Zahlung wirklich löschen? -ConfirmConvertToReduc=Willst du diese %s in einen absoluten Rabatt umwandeln? ConfirmConvertToReduc2=Der Betrag wird in den Gutschriften gespeichert und kann für diesen Kunden in einer offenen oder künftigen Rechnung als Rabatt verwendet werden. -ConfirmConvertToReducSupplier=Willst du diese %s in einen Rabatt umwandeln? ConfirmConvertToReducSupplier2=Der Betrag wird in den Gutschriften gespeichert und kann für diesen Lieferanten in einer offenen oder künftigen Rechnung als Rabatt verwendet werden. SupplierPayments=Lieferantenzahlungen ReceivedPayments=Zahlungseingang @@ -179,7 +176,7 @@ ChequesArea=Schecks ChequeDeposits=Scheckeinlagen NoteListOfYourUnpaidInvoices=Bitte beachten: Diese Liste enthält nur Rechnungen für Geschäftspartner, bei denen Sie als Vertreter angegeben sind. YouMustCreateStandardInvoiceFirstDesc=Sie müssen zuerst eine Standardrechnung Erstellen und diese dann in eine Rechnungsvorlage umwandeln -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template TypeContact_invoice_supplier_external_BILLING=Lieferanten - Rechnungskontakt TypeContact_invoice_supplier_external_SHIPPING=Lieferanten - Versandkontakt InvoiceFirstSituationAsk=Erste Situation Rechnung diff --git a/htdocs/langs/de_CH/companies.lang b/htdocs/langs/de_CH/companies.lang index 04657d94f4e..29c7c3a46b4 100644 --- a/htdocs/langs/de_CH/companies.lang +++ b/htdocs/langs/de_CH/companies.lang @@ -128,7 +128,6 @@ RequiredIfCustomer=Erforderlich falls Geschäftspartner Kunde oder Interessent i RequiredIfSupplier=Erforderlich, wenn der Partner Lieferant ist ValidityControledByModule=Durch Modul validiert ListOfThirdParties=Liste der Geschäftspartner -ShowCompany=Geschäftspartner anzeigen ShowContact=Zeige Kontaktangaben ContactsAllShort=Alle (Kein Filter) ContactForOrdersOrShipments=Bestellungs- oder Lieferkontakt diff --git a/htdocs/langs/de_CH/compta.lang b/htdocs/langs/de_CH/compta.lang index eecf64ff1d5..1690ed0c885 100644 --- a/htdocs/langs/de_CH/compta.lang +++ b/htdocs/langs/de_CH/compta.lang @@ -18,7 +18,6 @@ LastCheckReceiptShort=Letzte %s Scheckeinnahmen NoWaitingChecks=Keine Schecks warten auf Einlösung. CalcModeVATDebt=Modus <b>%s Mwst. auf Engagement Rechnungslegung %s</b>. CalcModeLT2Rec=Modus <b>%sIRPF aufLieferantenrechnungen%s</b> -RulesResultDue=- Dies beinhaltet ausstehende Rechnungen, Aufwendungen, Mehrwertsteuern, Abgaben, ob sie bezahlt wurden oder nicht. Auch die gezahlten Gehälter. <br> - Es gilt das Freigabedatum von den Rechnungen und MwSt., sowie das Fälligkeitsdatum für Aufwendungen. Für Gehälter definiert mit dem Modul Löhne, wird das Valutadatum der Zahlung verwendet. LT2ReportByCustomersES=Bericht von Geschäftspartner EKSt. VATReportByCustomersInInputOutputMode=Bericht zur vereinnahmten und bezahlten MwSt. nach Kunden SeeVATReportInInputOutputMode=Siehe <b>%sMwSt.-Einnahmen%s</b>-Bericht für eine standardmässige Berechnung diff --git a/htdocs/langs/de_CH/orders.lang b/htdocs/langs/de_CH/orders.lang index d9718fd8eb6..d3413475a4d 100644 --- a/htdocs/langs/de_CH/orders.lang +++ b/htdocs/langs/de_CH/orders.lang @@ -43,7 +43,7 @@ TypeContact_order_supplier_external_SHIPPING=Lieferanten - Versandkontakt TypeContact_order_supplier_external_CUSTOMER=Lieferanten - Nachkalkulationskontakt Error_OrderNotChecked=Keine zu verrechnenden Bestellungen ausgewählt OrderByEMail=E-Mail -PDFEinsteinDescription=A complete order model (old implementation of Eratosthene template) +PDFEinsteinDescription=A complete order model PDFEratostheneDescription=A complete order model PDFProformaDescription=A complete Proforma invoice template OrderCreation=Erstellen einer Bestellung diff --git a/htdocs/langs/de_CH/other.lang b/htdocs/langs/de_CH/other.lang index bc96b56d634..4f942e32521 100644 --- a/htdocs/langs/de_CH/other.lang +++ b/htdocs/langs/de_CH/other.lang @@ -26,5 +26,4 @@ FileIsTooBig=Dateien sind zu gross WebsiteSetup=Einstellungen des Webseitenmoduls WEBSITE_PAGEURL=URL für Seite WEBSITE_TITLE=Titel -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. WEBSITE_KEYWORDS=Stichworte diff --git a/htdocs/langs/de_CH/products.lang b/htdocs/langs/de_CH/products.lang index f0153258f68..0f2072b4e04 100644 --- a/htdocs/langs/de_CH/products.lang +++ b/htdocs/langs/de_CH/products.lang @@ -69,7 +69,6 @@ CustomerPrices=Kunden Preise SuppliersPrices=Lieferantenpreise SuppliersPricesOfProductsOrServices=Anbieterpreise CustomCode=Zolltarifnummer (z.B. HSN) -Nature=Produktart (Rohmaterial / Fertigprodukt) kilogram=Kilo unitP=Teil unitSET=Satz diff --git a/htdocs/langs/de_CH/users.lang b/htdocs/langs/de_CH/users.lang index a7baf78b067..e3216933e71 100644 --- a/htdocs/langs/de_CH/users.lang +++ b/htdocs/langs/de_CH/users.lang @@ -22,7 +22,6 @@ LinkedToDolibarrThirdParty=Mit Geschäftspartner verknüpft CreateDolibarrThirdParty=Neuen Geschäftspartner erstellen ExportDataset_user_1=Benutzer und Eigenschaften CreateInternalUserDesc=Hier kannst du interne Benutzer erzeugen.\nExterne Benutzer erzeugst du in den Kontakten deiner Partner. -InternalExternalDesc=Ein interner Benutzer gehört zu deiner Firma.\nExterne User sind Partner, die Zugriff auf das System erhalten.\nSo oder wird die Reichweite mit Benutzerberechtigungen gesteuert. Man kann internen und externen Benutzern auch verschiedene Ansichten und Menus zuweisen. PermissionInheritedFromAGroup=Berechtigung durch eine Gruppenzugehörigkeit gererbt. UserWillBeInternalUser=Erstellter Benutzer ist ein intern Benutzer (da mit keinem bestimmten Geschäftspartner verknüpft) UserWillBeExternalUser=Erstellter Benutzer ist ein externer Benutzer (da mit einem bestimmten Geschäftspartner verknüpft) diff --git a/htdocs/langs/de_DE/admin.lang b/htdocs/langs/de_DE/admin.lang index 715f5a0c6ba..be500d597ed 100644 --- a/htdocs/langs/de_DE/admin.lang +++ b/htdocs/langs/de_DE/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Hinweis: <b>Ihre</b> PHP-Einstellungen beschränken die NoMaxSizeByPHPLimit=Hinweis: In Ihren PHP-Einstellungen sind keine Größenbeschränkungen hinterlegt MaxSizeForUploadedFiles=Maximale Größe für Dateiuploads (0 verbietet jegliche Uploads) UseCaptchaCode=Captcha-Code auf der Anmeldeseite verwenden -AntiVirusCommand= Vollständiger Pfad zum installierten Virenschutz -AntiVirusCommandExample= Beispiel für ClamWin: c:\\Programme (x86)\\ClamWin\\bin\\clamscan.exe <br>Beispiel für ClamAV: /usr/bin/clamscan +AntiVirusCommand=Vollständiger Pfad zum installierten Virenschutz +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Weitere Kommandozeilen-Parameter für den Virenschutz -AntiVirusParamExample= Beispiel für ClamWin: --database="C:\\Programme (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Buchhaltungsmoduls-Einstellungen UserSetup=Benutzerverwaltung Einstellungen MultiCurrencySetup=Modul Mehrfachwährungen - Einstellungen @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Funktion in der Demoversion deaktiviert FeatureAvailableOnlyOnStable=Diese Funktion steht nur in offiziellen stabilen Versionen zur Verfügung BoxesDesc=Boxen sind Komponenten, die einige Informationen anzeigen, die Sie hinzufügen können, um einige Seiten zu personalisieren. Sie können wählen, ob Sie die Box anzeigen möchten oder nicht, indem Sie die Zielseite auswählen und auf 'Aktivieren' klicken oder indem Sie auf den Papierkorb klicken, um es zu deaktivieren. OnlyActiveElementsAreShown=Nur Elemente aus <a href="%s">aktiven Module</a> werden angezeigt. -ModulesDesc=Die Module / Anwendungen bestimmen, welche Funktionen in Dolibarr verfügbar sind. Für einige Module müssen den Benutzern nach der Aktivierung des Moduls Berechtigungen erteilt werden. Klicken Sie auf die Schaltfläche Ein / Aus (am Ende der Modulzeile), um ein Modul / eine Anwendung zu aktivieren / deaktivieren. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Sie finden weitere Module auf externen Web-Sites... ModulesDeployDesc=DateiWenn es die Berechtigungen in Ihrem Dateisystem zulassen, können Sie mit diesem Tool ein externes Modul bereitstellen. Das Modul ist dann auf der Registerkarte <strong>%s</strong> sichtbar. ModulesMarketPlaces=Zusatzmodule / Erweiterungen @@ -212,6 +212,7 @@ CompatibleUpTo=Kompatibel mit Version %s NotCompatible=Dieses Modul scheint nicht mit ihrer Dolibarr Version %s kompatibel zu sein. (Min %s - Max %s). CompatibleAfterUpdate=Dieses Modul benötigt ein Upgrade ihrer Dolibarr Installation %s (Min %s - Max %s). SeeInMarkerPlace=siehe Marktplatz +SeeSetupOfModule=Finden Sie im Modul-Setup %s Updated=Aktualisiert Nouveauté=Neuheit AchatTelechargement=Kaufen / Herunterladen @@ -221,6 +222,7 @@ DoliPartnersDesc=Liste der Unternehmen, die speziell entwickelte Module oder Fun WebSiteDesc=Externe Webseiten mit zusätzlichen Add-on (nicht zum Grundumfang gehörend) Modulen ... DevelopYourModuleDesc=einige Lösungen um eigene Module zu entwickeln ... URL=Link +RelativeURL=Relative URL BoxesAvailable=Verfügbare Boxen BoxesActivated=Boxen aktiviert ActivateOn=Aktiv ab @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Leer lassen für Standardwert DefaultLink=Standardlink SetAsDefault=Als Standard setzen ValueOverwrittenByUserSetup=Achtung, dieser Wert kann durch den Benutzer überschrieben werden (jeder kann seine eigene ClickToDial-URL setzen) -ExternalModule=Externes Modul - im Verzeichnis %s installiert +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=alle Barcodes für Geschäftspartner initialisieren BarcodeInitForProductsOrServices=Alle Barcodes für Produkte oder Services initialisieren oder zurücksetzen CurrentlyNWithoutBarCode=Zur Zeit gibt es <strong>%s</strong> Datensätze in <strong>%s</strong> %s ohne Barcode. @@ -947,7 +950,7 @@ DictionaryCanton=Bundesland/Kanton DictionaryRegion=Regionen DictionaryCountry=Länder DictionaryCurrency=Währungen -DictionaryCivility=Titel & Anreden +DictionaryCivility=Honorific titles DictionaryActions=Typen von Kalender-Ereignissen DictionarySocialContributions=Arten von Steuern oder Sozialabgaben DictionaryVAT=USt.-Sätze @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Die vorgeschlagene USt. ist standardmäßig 0 für alle Fälle VATIsUsedExampleFR=In Frankreich sind damit Unternehmen oder Organisationen gemeint, die ein echtes Steuersystem haben (vereinfacht oder normal). Ein System, in dem die Mehrwertsteuer deklariert wird. VATIsNotUsedExampleFR=In Frankreich bedeutet es, dass keine Umsatzsteuer ausgewiesen wird oder Unternehmen, Organisationen oder Freiberufler, die als Kleinunternehmer tätig sind (Privilegiensteuer), Umsatzsteuern zahlen ohne selbst Umsatzsteuer auszuweisen. Diese Auswahl zeigt den Hinweis "Umsatzsteuer nicht anwendbar - Artikel-293B des CGI" auf Rechnungen an. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Zweite Steuer nicht nutzen LocalTax1IsUsedDesc=Verwende eine zweite Art von Steuer (andere als erste) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=Die Einkommenssteuerrate beim Erstellen von Interessenten, LocalTax2IsNotUsedDescES=Standardmäßig ist die vorgeschlagene Einkommenssteuer 0. Ende der Regel. LocalTax2IsUsedExampleES=In Spanien, Freiberufler und unabhängigen Fachleuten, die ihre Dienstleistungen und Unternehmen, die das Steuersystem von Modulen gewählt haben. LocalTax2IsNotUsedExampleES=In Spanien sind das Unternehmen, die nicht dem Steuersystem für Module unterliegen. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Berichte über lokale Steuern CalcLocaltax1=Sales - Käufe CalcLocaltax1Desc=Lokale Steuer-Reports werden mit der Differenz von lokalen Verkaufs- und Einkaufs-Steuern berechnet @@ -1018,6 +1025,7 @@ CalcLocaltax2=Einkauf CalcLocaltax2Desc=Lokale Steuer-Reports sind die Summe der lokalen Steuern auf Einkäufe CalcLocaltax3=Verkauf CalcLocaltax3Desc=Lokale Steuer-Reports sind die Summe der lokalen Steuern auf Verkäufe +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Bezeichnung wird verwendet falls keine Übersetzung für den Code vorhanden ist. LabelOnDocuments=Bezeichnung auf Dokumenten LabelOrTranslationKey=Bezeichung oder Übersetzungsschlüssel @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=zu genehmigende Spesenabrechnung Delays_MAIN_DELAY_HOLIDAYS=Zu genehmigende Urlaubsanträge SetupDescription1=Bevor Sie mit Dolibarr arbeiten können müssen grundlegende Einstellungen getätigt und Module freigeschalten / konfiguriert werden. SetupDescription2=Die folgenden zwei Punkte sind obligatorisch: -SetupDescription3=<a href="%s">%s -> %s</a>. Basis-Parameter um das Standardverhalten Ihrer Anwendung anzupassen (beispielsweise länderbezogene Funktionen). -SetupDescription4=<a href="%s">%s -> %s</a><br>Diese Software ist ein Paket aus vielen Modulen/Anwendungen, alle mehr oder weniger unabhängig. Die für Ihre Bedürfnisse notwendigen Module müssen aktiviert und konfiguriert sein. Neue Einträge/Optionen werden der Menüs bei der Modulaktivierung hinzugefügt. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Andere Setup-Menüs verwalten optionale Parameter. LogEvents=Protokollierte Ereignisse Audit=Protokoll @@ -1128,7 +1136,7 @@ LogEventDesc=Aktivieren Sie die Protokollierung für bestimmte Sicherheitsereign AreaForAdminOnly=Einstellungen können nur durch </b>Administratoren</b> verändert werden. SystemInfoDesc=Verschiedene systemrelevante, technische Informationen - Lesemodus und nur für Administratoren sichtbar. SystemAreaForAdminOnly=Dieser Bereich steht ausschließlich Administratoren zur Verfügung. Keine der Benutzerberechtigungen kann dies ändern. -CompanyFundationDesc=Bearbeiten Sie die Informationen des Unternehmens oder Institution. Klicken Sie auf "%s" am Ende der Seite. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Falls Sie einen externen Buchhalter/Treuhänder haben, können Sie hier dessen Informationen hinterlegen. AccountantFileNumber=Buchhalter-Code DisplayDesc=Hier können Parameter zum Aussehen und Verhalten von Dolibarr angepasst werden. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Regeln für die Erstellung und Freigabe von Passwörte DisableForgetPasswordLinkOnLogonPage='Passwort vergessen'-Link nicht auf der Anmeldeseite anzeigen UsersSetup=Benutzermoduleinstellungen UserMailRequired=Für die Anlage eines neuen Benutzers ist eine E-Mail-Adresse erforderlich +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Personal Modul Einstellungen ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=PDF-Rechnungsvorlagen BillsPDFModulesAccordindToInvoiceType=Rechnung dokumentiert Modelle nach Rechnungsart PaymentsPDFModules=Zahlungsvorlagen ForceInvoiceDate=Rechnungsdatum ist zwingend Freigabedatum -SuggestedPaymentModesIfNotDefinedInInvoice=Empfohlene Zahlungsart für Rechnung falls nicht in gesondert definiert +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Bankkonto für Bezahlung per Überweisung SuggestPaymentByChequeToAddress=Adresse für Zahlung per Scheck FreeLegalTextOnInvoices=Freier Rechtstext für Rechnungen @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Einstellungen für Lieferantenzahlungen PropalSetup=Angebotsmoduleinstellungen ProposalsNumberingModules=Nummernvergabe für Angebote ProposalsPDFModules=Dokumentenvorlage(n) -SuggestedPaymentModesIfNotDefinedInProposal=Empfohlene Zahlungsart für Angebote, falls im Angebot nicht gesondert definiert +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Freier Rechtstext auf Angeboten WatermarkOnDraftProposal=Wasserzeichen auf Angebotsentwurf (leerlassen wenn keines benötigt wird) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Fragen Sie nach dem Bankkonto bei einem Angebot @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Frage nach Lager für Aufträge ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Frage nach der Ziel-Bankverbindung der Lieferantenbestellung ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Einstellungen für die Verwaltung von Verkaufsaufträgen OrdersNumberingModules=Nummernvergabe für Bestellungen OrdersModelModule=Dokumentenvorlage(n) @@ -1720,7 +1731,7 @@ MultiCompanySetup=Einstellungen des Modul Mandanten ##### Suppliers ##### SuppliersSetup=Einrichtung des Lieferantenmoduls SuppliersCommandModel=Vollständige Bestellvorlage -SuppliersCommandModelMuscadet=Vollständige Bestellvorlage (alte Implementierung der Cornas-Vorlage) +SuppliersCommandModelMuscadet=Vollständige Bestellvorlage SuppliersInvoiceModel=Vollständige Vorlage der Lieferantenrechnung SuppliersInvoiceNumberingModel=Lieferantenrechnungen Zähl-Modell IfSetToYesDontForgetPermission=Wenn ein Wert ungleich Null festgelegt ist, vergessen Sie nicht, Berechtigungen für Gruppen oder Benutzer bereitzustellen, die für die zweite Genehmigung zugelassen sind @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warnung, höhere Werte verlangsamen die ModuleActivated=Modul %s is aktiviert und verlangsamt die Overfläche EXPORTS_SHARE_MODELS=Exportmodelle sind für jeden zugänglich. ExportSetup=Einrichtung Modul Export +ImportSetup=Setup of module Import InstanceUniqueID=Eindeutige ID dieser Instanz SmallerThan=Kleiner als LargerThan=Größer als @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Einen anonymen Ping '+1' an den Dolibarr-Foundation-Server (ei FeatureNotAvailableWithReceptionModule=Funtion nicht verfügbar, wenn Modul Wareneingang aktiviert ist EmailTemplate=E-Mail-Vorlage EMailsWillHaveMessageID=E-Mails haben ein Schlagwort "Referenzen", das dieser Syntax entspricht -PDF_USE_ALSO_LANGUAGE_CODE=Wenn der Text im PDF-Dokument in 2 unterschiedlichen Sprachen enthalten sein soll, also 2 unterschiedlichen Sprachen im gleichen PDF, muss diese zweite Sprache hier angegeben werden so dass das erzeugte PDF 2 unterschiedliche Sprachen in einem Dokument aufweist. Die beim PDF erzeugen eingestellte und die hier angegebene (nur wenige PDF-Vorlagen unterstützen das). Leer lassen, um nur eine Sprache im PDF zu verwenden. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Gib hier den Code für ein FontAwesome icon ein. Wenn du FontAwesome nicht kennst, kannst du den Standard 'fa-address-book' benutzen. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/de_DE/bills.lang b/htdocs/langs/de_DE/bills.lang index 268e655376c..fbcf4801dab 100644 --- a/htdocs/langs/de_DE/bills.lang +++ b/htdocs/langs/de_DE/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Lieferantenrechnungen SupplierBill=Lieferantenrechnung SupplierBills=Lieferantenrechnungen Payment=Zahlung -PaymentBack=Rückzahlung -CustomerInvoicePaymentBack=Rückzahlung +PaymentBack=Rückerstattung +CustomerInvoicePaymentBack=Rückerstattung Payments=Zahlungen PaymentsBack=Rückerstattungen paymentInInvoiceCurrency=in Rechnungswährung PaidBack=Zurück bezahlt DeletePayment=Lösche Zahlung ConfirmDeletePayment=Möchten Sie diese Zahlung wirklich löschen? -ConfirmConvertToReduc=Möchten Sie diese %s in einen absoluten Rabatt umwandeln? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=Der Betrag wird unter allen Rabatten gespeichert und kann als Rabatt für eine aktuelle oder zukünftige Rechnung für diesen Kunden verwendet werden. -ConfirmConvertToReducSupplier=Möchten Sie diese %s in einen absoluten Rabatt umwandeln? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=Der Betrag wird unter allen Rabatten gespeichert und kann als Rabatt für eine aktuelle oder zukünftige Rechnung dieses Anbieters verwendet werden. SupplierPayments=Lieferanten Zahlung ReceivedPayments=Erhaltene Zahlungen @@ -219,7 +219,10 @@ ShowInvoiceSituation=Zeige Fortschritt-Rechnung UseSituationInvoices=Fortschritt-Rechnung zulassen UseSituationInvoicesCreditNote=Fortschritt-Rechnungsgutschrift zulassen Retainedwarranty=Zurückbehaltene Garantie +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Zurückbehaltene Garantie in Prozent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=Zu zahlen am %s toPayOn=zu zahlen am %s RetainedWarranty=Zurückbehaltene Garantie @@ -509,11 +512,11 @@ ToMakePayment=Bezahlen ToMakePaymentBack=Rückzahlung ListOfYourUnpaidInvoices=Liste aller unbezahlten Rechnungen NoteListOfYourUnpaidInvoices=Bitte beachten: Diese Liste enthält nur Rechnungen an Partner, bei denen Sie als Vertreter angegeben sind. -RevenueStamp=Steuermarke +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Diese Option ist nur verfügbar, wenn Sie eine Rechnung auf der Registerkarte "Kunde" eines Drittanbieters erstellen YouMustCreateInvoiceFromSupplierThird=Diese Option ist nur verfügbar, wenn Sie eine Rechnung auf der Registerkarte "Kreditor" eines Drittanbieters erstellen YouMustCreateStandardInvoiceFirstDesc=Zuerst muss eine Standardrechnung erstellt werden, dies kann dann in eine neue Rechnungsvorlage konvertiert werden -PDFCrabeDescription=Rechnung PDF-Vorlage Crabe. Eine vollständige Rechnungsvorlage (alte Implementierung der Sponge-Vorlage) +PDFCrabeDescription=Rechnung PDF-Vorlage Crabe. Eine vollständige Rechnungsvorlage PDFSpongeDescription=Rechnung PDF-Vorlage Sponge. Eine vollständige Rechnungsvorlage PDFCrevetteDescription=PDF Rechnungsvorlage Crevette. Vollständige Rechnungsvolage für normale Rechnungen TerreNumRefModelDesc1=Liefert eine Nummer mit dem Format %syymm-nnnn für Standard-Rechnungen und %syymm-nnnn für Gutschriften, wobei yy=Jahr, mm=Monat und nnnn eine lückenlose Folge ohne Überlauf auf 0 ist @@ -575,3 +578,4 @@ AutoFillDateTo=Enddatum der Dienstleistung auf das Rechnungsdatum setzen AutoFillDateToShort=Enddatum festlegen MaxNumberOfGenerationReached=Maximal Anzahl Generierungen erreicht BILL_DELETEInDolibarr=Rechnung gelöscht +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/de_DE/blockedlog.lang b/htdocs/langs/de_DE/blockedlog.lang index d77cda25f7e..b42f38edc50 100644 --- a/htdocs/langs/de_DE/blockedlog.lang +++ b/htdocs/langs/de_DE/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unveränderbare Logs ShowAllFingerPrintsMightBeTooLong=Unveränderbare Logs anzeigen (kann lange dauern...) ShowAllFingerPrintsErrorsMightBeTooLong=Non valid Logs anzeigen (kann lange dauern) DownloadBlockChain=Fingerprints herunterladen -KoCheckFingerprintValidity=Archived Log eintrag ist nicht gültig. Jemand hat den Originellen Eintrag verändert (Hacker ?), oder der originelle Eintrag wurde gelöscht. +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Der archivierte Logeintrag ist gültig. Die Daten in dieser Zeile wurden nicht geändert und der Eintrag folgt dem vorherigen. OkCheckFingerprintValidityButChainIsKo=Der archivierte Logeintrag scheint im Vergleich zum vorherigen gültig zu sein, aber die vorangehende Eintragskette wurde beschädigt. AddedByAuthority=In der Remote-Instanz gespeichert diff --git a/htdocs/langs/de_DE/cashdesk.lang b/htdocs/langs/de_DE/cashdesk.lang index 6e1862a76e5..ea36609a634 100644 --- a/htdocs/langs/de_DE/cashdesk.lang +++ b/htdocs/langs/de_DE/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=In Warenkorb legen RestartSelling=zurück zum Verkauf SellFinished=Verkauf abgeschlossen PrintTicket=Kassenbon drucken +SendTicket=Send ticket NoProductFound=Kein Artikel gefunden ProductFound=Produkt gefunden NoArticle=Kein Artikel @@ -48,6 +49,7 @@ Footer=Fusszeile AmountAtEndOfPeriod=Betrag am Ende der Periode (Tag, Monat oder Jahr) TheoricalAmount=Theoretischer Betrag RealAmount=Realer Betrag +CashFence=Cash fence CashFenceDone=Kassenschnitt im Zeitraum durchgeführt NbOfInvoices=Anzahl der Rechnungen Paymentnumpad=Art des Pads zur Eingabe der Zahlung @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS benötigt Produktkategorien, um zu funktionieren OrderNotes=Bestellhinweise CashDeskBankAccountFor=Standardkonto für Zahlungen in NoPaimementModesDefined=In der TakePOS-Konfiguration ist kein Zahlungsmodus definiert -TicketVatGrouped=Mehrwertsteuer nach Ticketangaben gruppieren -AutoPrintTickets=Tickets automatisch drucken +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Aktivieren Sie Funktionen für Bar oder Restaurant ConfirmDeletionOfThisPOSSale=Bestätigen Sie die Löschung dieses aktuellen Verkaufs? ConfirmDiscardOfThisPOSSale=Möchten Sie diesen aktuellen Verkauf verwerfen? @@ -87,7 +90,19 @@ HeadBar=Kopfleiste SortProductField=Feld zum Sortieren von Produkten Browser=Browser BrowserMethodDescription=Schneller und einfacher Belegdruck. Nur wenige Parameter zum Konfigurieren der Quittung. Drucken via Browser. -TakeposConnectorMethodDescription=Externes Modul mit zusätzlichen Funktionen. Möglichkeit zum Drucken aus der Cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Druckmethode ReceiptPrinterMethodDescription=Leistungsstarke Methode mit vielen Parametern. Vollständig anpassbar mit Vorlagen. Kann nicht aus der Cloud drucken. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/de_DE/companies.lang b/htdocs/langs/de_DE/companies.lang index 451828dd7aa..862481c2ae1 100644 --- a/htdocs/langs/de_DE/companies.lang +++ b/htdocs/langs/de_DE/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Firma "%s" aus der Datenbank gelöscht. ListOfContacts=Liste der Kontakte ListOfContactsAddresses=Liste der Kontakte ListOfThirdParties=Liste der Partner -ShowCompany=Partner anzeigen ShowContact=Kontakt anzeigen ContactsAllShort=Alle (kein Filter) ContactType=Kontaktart @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Vorname des Vertreter SaleRepresentativeLastname=Nachname des Vertreter ErrorThirdpartiesMerge=Es gab einen Fehler beim Löschen des Partners. Bitte Details sind im Prokoll zu finden. Die Löschung wurden rückgängig gemacht. NewCustomerSupplierCodeProposed=Kunden- oder Lieferantennummer wird bereits verwendet. \nEine neue Nummer wird empfohlen. +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Zahlungsart - Kunde PaymentTermsCustomer=Zahlungsbedingung - Kunde diff --git a/htdocs/langs/de_DE/compta.lang b/htdocs/langs/de_DE/compta.lang index 565102ea3c7..11b23d8e79e 100644 --- a/htdocs/langs/de_DE/compta.lang +++ b/htdocs/langs/de_DE/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Zeige %sZahlungsanalyse%s für die Berechnung der akt SeeReportInDueDebtMode=Zeige %sRechnungsanalyse%s für die Berechnung der aktuellen Rechnungen auch wenn diese noch nicht ins Hauptbuch übernommen wurden. SeeReportInBookkeepingMode=Siehe <b>%sBuchungsreport%s</b> für die Berechnung via <b>Hauptbuch </b> RulesAmountWithTaxIncluded=- Angezeigte Beträge enthalten alle Steuern -RulesResultDue=- Dies beinhaltet ausstehende Rechnungen, Aufwendungen, Umsatzsteuern, Abgaben, ob sie bezahlt wurden oder nicht. Auch die gezahlten Gehälter. <br> - Es gilt das Freigabedatum von den Rechnungen und USt., sowie das Fälligkeitsdatum für Aufwendungen. Für Gehälter definiert mit dem Modul Löhne, wird das Valutadatum der Zahlung verwendet. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Es sind nur tatsächliche Zahlungen für Rechnungen, Kostenabrechnungen, USt und Gehälter enthalten. <br>- Bei Rechnungen, Kostenabrechnungen, USt und Gehälter gilt das Zahlugnsdatum. Bei Spenden gilt das Spendendatum. -RulesCADue=- Es enthält die fälligen Rechnungen des Kunden, ob sie bezahlt werden oder nicht. <br> - Es basiert auf dem Validierungsdatum dieser Rechnungen. <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Es umfasst alle effektiven Zahlungen von Rechnungen, die von Kunden erhalten wurden. <br> - Es basiert auf dem Zahlungsdatum dieser Rechnungen. <br> RulesCATotalSaleJournal=Es beinhaltet alle Gutschriftspositionen aus dem Verkaufsjournal. RulesAmountOnInOutBookkeepingRecord=Beinhaltet Datensätze aus dem Hauptbuch mit den Gruppen "Aufwand" oder "Ertrag" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Verrechneter Umsatz pro Steuersatz TurnoverCollectedbyVatrate=Realisierter Umsatz pro Steuersatz PurchasebyVatrate=Einkäufe pro Steuersatz LabelToShow=Kurzbezeichnung +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/de_DE/errors.lang b/htdocs/langs/de_DE/errors.lang index 0b38b138aa3..9ad6bef1441 100644 --- a/htdocs/langs/de_DE/errors.lang +++ b/htdocs/langs/de_DE/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Die Datei wurde nicht vollständig zum Server übertragen. ErrorNoTmpDir=Das temporäre Verzeichnis %s existiert nicht. ErrorUploadBlockedByAddon=Der Upload wurde durch ein PHP Apache-Plugin blockiert. ErrorFileSizeTooLarge=Die Größe der gewählten Datei übersteigt den zulässigen Maximalwert. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Die Größe überschreitet das Maximum für den Typ 'int' (%s Ziffern maximal) ErrorSizeTooLongForVarcharType=Die Größe überschreitet das Maximum für den Typ 'string' (%s Zeichen maximal) ErrorNoValueForSelectType=Bitte Wert für Auswahlliste eingeben @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Fehler, die Sprache der überset ErrorBatchNoFoundForProductInWarehouse=Für das Produkt "%s" wurde im Lager "%s" keine Los / Seriennummer gefunden. ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=Bestand nicht ausreichend für diese Los / Seriennummer für das Produkt "%s" im Lager "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Ihr PHP Parameter upload_max_filesize (%s) ist größer als Parameter post_max_size (%s). Dies ist eine inkonsistente Einstellung. WarningPasswordSetWithNoAccount=Es wurde ein Passwort für dieses Mitglied vergeben, aber kein Benutzer erstellt. Das Passwort wird gespeichert, aber kann nicht für die Anmeldung an Dolibarr verwendet werden. Es kann von einem externen Modul/einer Schnittstelle verwendet werden, aber wenn Sie kein Login oder Passwort für dieses Mitglied definiert müssen, können Sie die Option "Login für jedes Mitglied verwalten" in den Mitgliedseinstellungen deaktivieren. Wenn Sie ein Login aber kein Passwort benötige, lassen Sie dieses Feld leer, um diese Meldung zu deaktivieren. Anmerkung: Die E-Mail-Adresse kann auch zur Anmeldung verwendet werden, wenn das Mitglied mit einem Benutzer verbunden wird. diff --git a/htdocs/langs/de_DE/install.lang b/htdocs/langs/de_DE/install.lang index eef58425e45..024bb2f2b61 100644 --- a/htdocs/langs/de_DE/install.lang +++ b/htdocs/langs/de_DE/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Ihre PHP-Konfiguration unterstützt cURL. PHPSupportCalendar=Ihre PHP-Konfiguration unterstützt die Kalender-Erweiterungen. PHPSupportUTF8=Ihre PHP-Konfiguration unterstützt die UTF8-Funktionen. PHPSupportIntl=Ihre PHP-Konfiguration unterstützt die Internationalisierungs-Funktionen. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=Dieses PHP unterstützt %s-Funktionen. PHPMemoryOK=Die Sitzungsspeicherbegrenzung ihrer PHP-Konfiguration steht auf <b>%s</b>. Dies sollte ausreichend sein. PHPMemoryTooLow=Der maximale PHP-Sitzungsspeicher ist auf <b>%s</b> Bytes gesetzt. Dieser Wert ist zu niedrig. Ändern sie den Parameter <b>memory_limit</b> in der <b>php.ini</b> auf mindestens <b>%s</b> Bytes! @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Ihre PHP-Version unterstützt die Erweiterung Curl ni ErrorPHPDoesNotSupportCalendar=Ihre PHP-Installation unterstützt die Kalender-Erweiterungen nicht. ErrorPHPDoesNotSupportUTF8=Ihre PHP-Installation unterstützt die UTF8-Funktionen nicht. Dolibarr wird nicht korrekt funktionieren. Beheben Sie das Problem vor der Installation. ErrorPHPDoesNotSupportIntl=Ihre PHP-Konfiguration unterstützt keine Internationalisierungsfunktion (intl-extension). +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Ihre PHP-Installation unterstützt keine %s-Funktionen. ErrorDirDoesNotExists=Das Verzeichnis %s existiert nicht. ErrorGoBackAndCorrectParameters=Gehen Sie zurück und prüfen/korrigieren Sie die Parameter. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Die Anwendung hat versucht, sich selbst zu aktual YouTryInstallDisabledByFileLock=Die Anwendung hat versucht, sich selbst zu aktualisieren, aber die Installations-/Upgrade-Seiten wurden aus Sicherheitsgründen deaktiviert (durch die Existenz einer Sperrdatei <strong>install.lock</strong> im Dokumenten-Verzeichnis).<br> ClickHereToGoToApp=Hier klicken um zu Ihrer Anwendung zu kommen ClickOnLinkOrRemoveManualy=Klicken Sie auf den folgenden Link. Wenn Sie immer die gleiche Seite sehen, müssen Sie die Datei install.lock im Dokumenten-Verzeichnis entfernen/umbenennen. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/de_DE/link.lang b/htdocs/langs/de_DE/link.lang index 9c561230019..2c9e412b742 100644 --- a/htdocs/langs/de_DE/link.lang +++ b/htdocs/langs/de_DE/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Der Link %s wurde entfernt ErrorFailedToDeleteLink= Fehler beim entfernen des Links '<b>%s</b>' ErrorFailedToUpdateLink= Fehler beim aktualisieren des Link '<b>%s</b>' URLToLink=URL zum verlinken +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/de_DE/mails.lang b/htdocs/langs/de_DE/mails.lang index 04567ddd4d6..a2f484938be 100644 --- a/htdocs/langs/de_DE/mails.lang +++ b/htdocs/langs/de_DE/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Kein Kontakt/Adresse mit einer Kategorie gefunden NoContactLinkedToThirdpartieWithCategoryFound=Kein Kontakt/Adresse mit einer Kategorie gefunden OutGoingEmailSetup=Postausgang InGoingEmailSetup=Posteingang -OutGoingEmailSetupForEmailing=Einstellung ausgehende E-Mails (für den Massenversand) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Standardeinstellungen für ausgehende E-Mails Information=Information ContactsWithThirdpartyFilter=Kontakte mit Drittanbieter-Filter diff --git a/htdocs/langs/de_DE/main.lang b/htdocs/langs/de_DE/main.lang index a3c7af845ec..47e0eedd055 100644 --- a/htdocs/langs/de_DE/main.lang +++ b/htdocs/langs/de_DE/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Speichern und bleiben SaveAndNew=Speichern und neu TestConnection=Verbindung testen ToClone=Duplizieren +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Wählen Sie die zu duplizierenden Daten: NoCloneOptionsSpecified=Keine Duplikationsoptionen ausgewählt. Of=von @@ -829,6 +830,8 @@ Gender=Geschlecht Genderman=männlich Genderwoman=weiblich ViewList=Listenansicht +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Pflichtfeld Hello=Hallo GoodBye=Auf Wiedersehen @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Wählen Sie Ihre Diagrammoptionen aus, um ein Diagra Measures=Maße XAxis=X-Achse YAxis=Y-Achse +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/de_DE/orders.lang b/htdocs/langs/de_DE/orders.lang index 3550d747799..dfff5494aa3 100644 --- a/htdocs/langs/de_DE/orders.lang +++ b/htdocs/langs/de_DE/orders.lang @@ -141,7 +141,7 @@ OrderByEMail=E-Mail (Feld mit automatischer E-Mail-Syntaxprüfung) OrderByWWW=Online OrderByPhone=Telefon # Documents models -PDFEinsteinDescription=Ein vollständiges Bestellmodell (alte Implementierung der Eratosthene-Vorlage) +PDFEinsteinDescription=Ein vollständiges Bestellmodell PDFEratostheneDescription=Ein komplettes Bestellmodell PDFEdisonDescription=Eine einfache Bestellvorlage PDFProformaDescription=Eine vollständige Proforma-Rechnungsvorlage diff --git a/htdocs/langs/de_DE/other.lang b/htdocs/langs/de_DE/other.lang index 3e0794697c4..eeead24c7dd 100644 --- a/htdocs/langs/de_DE/other.lang +++ b/htdocs/langs/de_DE/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Derzeit ist nur 1 Feld als X-Achse möglich. Es wurde nur das erste selektierte Feld ausgewählt. AtLeastOneMeasureIsRequired=Es ist mindestens 1 Feld für Maßnahmen erforderlich AtLeastOneXAxisIsRequired=Es ist mindestens 1 Feld für die X-Achse erforderlich - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Kundenbestellung freigegeben Notify_ORDER_SENTBYMAIL=Kundenbestellung per E-Mail versendet Notify_ORDER_SUPPLIER_SENTBYMAIL=Lieferantenbestellung per E-Mail zugestellt @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL der Seite WEBSITE_TITLE=TItel WEBSITE_DESCRIPTION=Beschreibung WEBSITE_IMAGE=Bild -WEBSITE_IMAGEDesc=Relativer Pfad zur Bildimage-Datei. Kann auch leer bleiben, da selten benutzt (es kann für die Anzeige von dynamischen Inhalten für Thumbnails in einer Liste von Blogposts verwendet werden). Benutze __WEBSITEKEY__ im Pfad, wenn sich der Pfad auf einen Website-Namen bezieht. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Schlüsselwörter LinesToImport=Positionen zum importieren diff --git a/htdocs/langs/de_DE/products.lang b/htdocs/langs/de_DE/products.lang index fab2a70242b..8dc1242398a 100644 --- a/htdocs/langs/de_DE/products.lang +++ b/htdocs/langs/de_DE/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Dieses Tool aktualisiert den für <b><u>ALLE</u></b> Pr MassBarcodeInit=Initialisierung Barcodes MassBarcodeInitDesc=Hier können Objekte mit einem Barcode initialisiert werden, die noch keinen haben. Stellen Sie vor Benutzung sicher, dass die Einstellungen des Barcode-Moduls vollständig sind! ProductAccountancyBuyCode=Rechnungscode (Einkauf) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Buchhaltungscode (Verkauf) ProductAccountancySellIntraCode=Buchungscode (Verkauf innerhalb der Gemeinschaft) ProductAccountancySellExportCode=Kontierungscode (Verkauf Export) @@ -165,7 +167,7 @@ SuppliersPrices=Lieferanten Preise SuppliersPricesOfProductsOrServices=Herstellerpreise (von Produkten oder Dienstleistungen) CustomCode=Zolltarifnummer CountryOrigin=Urspungsland -Nature=Produkttyp (Material / Fertig) +Nature=Nature of product (material/finished) ShortLabel=Kurzbezeichnung Unit=Einheit p=u. diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index d235de8b9d5..03dcfa404f7 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=Projekt mit dem ich verbunden bin Time=Zeitaufwand ListOfTasks=Aufgabenliste GoToListOfTimeConsumed=Liste der verwendeten Zeit aufrufen -GoToListOfTasks=Als Liste anzeigen -GoToGanttView=als Gantt zeigen GanttView=Gantt-Diagramm ListProposalsAssociatedProject=Liste der projektbezogenen Angebote ListOrdersAssociatedProject=Liste der projektbezogenen Kundenaufträge @@ -188,7 +186,7 @@ PlannedWorkload=Geplante Auslastung PlannedWorkloadShort=Arbeitsaufwand ProjectReferers=Verknüpfte Einträge ProjectMustBeValidatedFirst=Projekt muss erst bestätigt werden -FirstAddRessourceToAllocateTime=Benutzer eine Ressource pro Aufgabe zuordnen, um eine Zeitspanne einzuräumen +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Eingang pro Tag InputPerWeek=Eingang pro Woche InputPerMonth=Eingang pro Monat @@ -240,6 +238,7 @@ LatestModifiedProjects=Neueste %s modifizierte Projekte OtherFilteredTasks=Andere gefilterte Aufgaben NoAssignedTasks=Keine zugewiesenen Aufgaben gefunden (dem aktuellen Benutzer über das obere Auswahlfeld Projekt / Aufgaben zuweisen, um die Zeit einzugeben) ThirdPartyRequiredToGenerateInvoice=Für das Projekt muss ein Drittanbieter definiert werden, um es in Rechnung stellen zu können. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Alle Benutzerkommentare zur Aufgabe AllowCommentOnProject=Benutzer dürfen Projekte kommentieren @@ -265,3 +264,4 @@ InvoiceToUse=Zu verwendender Rechnungsentwurf NewInvoice=Neue Rechnung OneLinePerTask=Eine Zeile pro Aufgabe OneLinePerPeriod=Eine Zeile pro Zeitraum +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/de_DE/propal.lang b/htdocs/langs/de_DE/propal.lang index e16a3f5eef5..df4124f1b8b 100644 --- a/htdocs/langs/de_DE/propal.lang +++ b/htdocs/langs/de_DE/propal.lang @@ -76,7 +76,7 @@ TypeContact_propal_external_BILLING=Kontakt für Kundenrechnungen TypeContact_propal_external_CUSTOMER=Kundenkontakt für Angebot TypeContact_propal_external_SHIPPING=Kundenkontakt für Lieferung # Document models -DocModelAzurDescription=Ein vollständiges Angebotsmodell (alte Implementierung der Cyan-Vorlage) +DocModelAzurDescription=Ein vollständiges Angebotsmodell DocModelCyanDescription=Ein vollständiges Angebotsmodell DefaultModelPropalCreate=Erstellung Standardvorlage DefaultModelPropalToBill=Standard-Template, wenn Sie ein Angebot schließen wollen (zur Verrechung) diff --git a/htdocs/langs/de_DE/receiptprinter.lang b/htdocs/langs/de_DE/receiptprinter.lang index ef7e4748fd7..93f5e4bef5e 100644 --- a/htdocs/langs/de_DE/receiptprinter.lang +++ b/htdocs/langs/de_DE/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Drucker CONNECTOR_NETWORK_PRINT=Netzwerk-Drucker CONNECTOR_FILE_PRINT=lokaler Drucker CONNECTOR_WINDOWS_PRINT=lokaler Windows Drucker +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Simulierter Drucker zum Testen, hat keine Funktion CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Standardprofil PROFILE_SIMPLE=einfaches Profil PROFILE_EPOSTEP=Epos Tep Profil @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Rechnungsmonat (Abkürzung) DOL_VALUE_MONTH=Rechnungsmonat DOL_VALUE_DAY=Rechnungstag DOL_VALUE_DAY_LETTERS=Rechnungstag (Abkürzung) +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Rechnungs Nr. +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=innergemeinschaftliche Umsatzsteuer-ID +DOL_VALUE_MYSOC_CAPITAL=Kapital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/de_DE/stripe.lang b/htdocs/langs/de_DE/stripe.lang index 249be384aa5..e8913c6833a 100644 --- a/htdocs/langs/de_DE/stripe.lang +++ b/htdocs/langs/de_DE/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name des Lieferanten CSSUrlForPaymentForm=CSS-Datei für das Zahlungsmodul NewStripePaymentReceived=Neue Stripezahlung erhalten NewStripePaymentFailed=Neue Stripezahlung versucht, aber fehlgeschlagen +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Geheimer Testschlüssel STRIPE_TEST_PUBLISHABLE_KEY=Öffentlicher Testschlüssel STRIPE_TEST_WEBHOOK_KEY=Webhook Testschlüssel @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link zum Einrichten von Stripe WebHook zum Aufruf von ToOfferALinkForLiveWebhook=Link zum Einrichten von Stripe WebHook zum Aufruf von IPN (Livemodus) PaymentWillBeRecordedForNextPeriod=Die Zahlung wird für den folgenden Zeitraum erfasst. ClickHereToTryAgain=<a href="%s">Hier klicken und nochmal versuchen...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Aufgrund der strengen Kundenauthentifizierungsregeln muss die Erstellung einer Karte im Stripe-Backoffice erfolgen. Klicken Sie hier, um zum Stripe-Kundeneintrag zu wechseln: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/de_DE/users.lang b/htdocs/langs/de_DE/users.lang index 28c3db26415..9aa6e40068b 100644 --- a/htdocs/langs/de_DE/users.lang +++ b/htdocs/langs/de_DE/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Benutzer und -eigenschaften DomainUser=Domain-Benutzer %s Reactivate=Reaktivieren CreateInternalUserDesc=Dieses Formular erlaubt Ihnen das Anlegen eines Internen Benutzers in Ihrem Unternehmen oder Organisation. Zum Anlegen eines externen Benutzers (Kunden, Lieferanten, ...), verwenden Sie bitte die 'Kontakt/Adresse erstellen'-Schaltfläche in der Kontaktkarte des jeweiligen Partners. -InternalExternalDesc=Ein <b>interner</b> Benutzer ist Teil Ihres Unternehmens/Ihrer Organisation.<br>Ein <b>externer</b> Benutzer ist ein Kunde, Lieferant oder Sonstiges.<br><br>In beiden Fällen können Berechtigungen in Dolibarr definiert werden. Externe Benutzer können auch ein anderes Menü angezeigt bekommen als interne Benutzer (Siehe Start - Einstellungen - Anzeige). +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Berechtigung durch eine Gruppenzugehörigkeit geerbt. Inherited=Geerbt UserWillBeInternalUser=Erstellter Benutzer ist intern (mit keinem bestimmten Partner verknüpft) @@ -113,3 +113,5 @@ CantDisableYourself=Sie können Ihr eigenes Benutzerkonto nicht deaktivieren ForceUserExpenseValidator=Überprüfung der Spesenabrechnung erzwingen ForceUserHolidayValidator=Gültigkeitsprüfer für Urlaubsanträge erzwingen ValidatorIsSupervisorByDefault=Standardmäßig ist der Prüfer der Supervisor des Benutzers. Leer lassen, um dieses Verhalten beizubehalten. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/de_DE/website.lang b/htdocs/langs/de_DE/website.lang index cddab17114f..bfe140a6001 100644 --- a/htdocs/langs/de_DE/website.lang +++ b/htdocs/langs/de_DE/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Seite in neuem Tab anzeigen SetAsHomePage=Als Startseite festlegen RealURL=Echte URL ViewWebsiteInProduction=Anzeige der Webseite über die Startseite\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nüber die URL der Homepage -SetHereVirtualHost=<u>Mit Apache/NGinx/... nutzen</u><br>Wenn auf dem Webserver (Apache, Nginx, ...) ein dedizierter, virtueller Host mit PHP und einem Root Verzeichnis in<br><strong>%s</strong><br>eingerichtet werden kann, dann muss der Name des virtuellen Hosts aus den Einstellungen der Webseite verwendet werden. Dann kann die Vorschau auch diesen dedizierten Webserver nutzen anstelle des internen Dolibarr Servers. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Verwendung mit eingebettetem PHP-Server</u><br>In der Entwicklungsumgebung können Sie die Site mit dem eingebetteten PHP-Webserver (PHP 5.5 erforderlich) testen, indem Sie <br><strong>php -S 0.0.0.0:8080 -t %s</strong> ausführen. YouCanAlsoDeployToAnotherWHP=<u>Betreibe deine Website mit einem anderen Dolibarr Hosting-Anbieter</u><br>Wenn kein Apache oder NGinx Webserver online verfügbar ist, kann deine Website exportiert und importiert werden und zu einer anderen Dolibarr Instanz umziehen, die durch einen anderen Dolibarr Hosting-Anbieter mit kompletter Integration des Webseiten-Moduls bereitgestellt wird. Eine Liste mit Dolibarr Hosting-Anbietern ist hier abufbar <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Kontrolliere dass auch der Virtuelle Host die <strong>%s</strong> Berechtigung für die die Dateien in <br><strong>%s</strong> hat @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Diese Website ist derzeit offline. Bitte kommen S WEBSITE_USE_WEBSITE_ACCOUNTS=Benutzertabelle für Webseite aktivieren WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Aktiviere die Benutzertabelle, um Webseiten-Konten (Login/Kennwort) für jede Website / jeden Drittanbieter zu speichern YouMustDefineTheHomePage=Zuerst muss die Startseite definiert sein -OnlyEditionOfSourceForGrabbedContentFuture=Warnung: Die Erstellung einer Website durch importieren einer externen Seite ist erfahrenen Nutzern vorbehalten. Abhängig von der Komplexität der Quellseite, weicht das Importergebnis möglichweise von Original ab. Falls die Quellseite Standard-CSS oder konfliktträchtiges Javascript nutzt, kann das das Layout oder die Features des Webseiten-Editors beschädigen, wenn an dieser Seite gearbeitet wird. Diese Methode ist ein schnellerer Weg, um Webseiten zu erstellen aber es wird empfohlen, neue Webseiten von grundauf neu zu erstellen oder eine empfohlene Seitenvorlage zu nutzen.<br>Bitte auch beachten, dass Änderungen am HTML-Quellcode erst möglich sind, wenn der Seiteninhalt von der externen Seite übertragen wurde (Der "Online" Editor ist NICHT verfügbar.) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Der HTML Code kann nur editiert werden, wenn der Inhalt von einer externen Site geladen wurde GrabImagesInto=Auch Bilder aus CSS und Seite übernehmen ImagesShouldBeSavedInto=Bilder sollten im Verzeichnis gespeichert werden @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=Verwende für gute SEO-Ergebnisse einen Text zwischen MainLanguage=Hauptsprache OtherLanguages=Andere Sprachen UseManifest=Eine manifest.json-Datei bereitstellen +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/el_GR/admin.lang b/htdocs/langs/el_GR/admin.lang index 4b8ac4651a9..6a7c7ab2627 100644 --- a/htdocs/langs/el_GR/admin.lang +++ b/htdocs/langs/el_GR/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Σημείωση: <b>Η διαμόρφωση PHP σας NoMaxSizeByPHPLimit=Σημείωση: Κανένα όριο δεν έχει οριστεί στη διαμόρφωση του PHP σας MaxSizeForUploadedFiles=Μέγιστο μέγεθος για μεταφόρτωση αρχείων (0 απορρίπτει οποιοδήποτε μεταφόρτωση) UseCaptchaCode=Χρησιμοποιήστε το γραφικό κώδικα (CAPTCHA) στη σελίδα εισόδου -AntiVirusCommand= Πλήρης διαδρομή για την εντολή του antivirus -AntiVirusCommandExample= Παράδειγμα για ClamWin: c:\\Program Files (x86)\\ClamWin\\bin\\clamscan.exe<br>Παράδειγμα για ClamAv: /usr/bin/clamscan +AntiVirusCommand=Πλήρης διαδρομή για την εντολή του antivirus +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Περισσότερες παράμετροι στην γραμμή εντολής -AntiVirusParamExample= Παράδειγμα για το ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Εγκατάσταση Λογιστικού module UserSetup=Ρύθμιση χρήστη MultiCurrencySetup=Ρύθμιση πολλαπλών νομισμάτων @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Δυνατότητα απενεργοποίησης στο FeatureAvailableOnlyOnStable=Το χαρακτηριστικό είναι διαθέσιμο μόνο σε επίσημες σταθερές εκδόσεις BoxesDesc=Τα γραφικά στοιχεία είναι στοιχεία που εμφανίζουν ορισμένες πληροφορίες που μπορείτε να προσθέσετε για να προσαρμόσετε ορισμένες σελίδες. Μπορείτε να επιλέξετε μεταξύ εμφάνισης του γραφικού στοιχείου ή όχι επιλέγοντας τη σελίδα προορισμού και κάνοντας κλικ στην επιλογή 'Ενεργοποίηση' ή κάνοντας κλικ στο καλάθι απορριμάτων για να το απενεργοποιήσετε. OnlyActiveElementsAreShown=Μόνο στοιχεία από <a href="%s">ενεργοποιημένα modules</a> προβάλλονται. -ModulesDesc=Οι ενότητες / εφαρμογές καθορίζουν ποιες λειτουργίες είναι διαθέσιμες στο λογισμικό. Ορισμένες ενότητες απαιτούν δικαιώματα που θα χορηγούνται στους χρήστες μετά την ενεργοποίηση της ενότητας. Κάντε κλικ στο πλήκτρο ενεργοποίησης / απενεργοποίησης (στο τέλος της γραμμής μονάδας) για να ενεργοποιήσετε / απενεργοποιήσετε μια ενότητα / εφαρμογή. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Μπορείτε να βρείτε περισσότερες ενότητες για να κατεβάσετε σε εξωτερικές ιστοσελίδες στο Internet ... ModulesDeployDesc=Εάν το επιτρέπουν τα δικαιώματα στο σύστημα αρχείων σας, μπορείτε να χρησιμοποιήσετε αυτό το εργαλείο για την ανάπτυξη εξωτερικής μονάδας. Η ενότητα θα είναι στη συνέχεια ορατή στην καρτέλα <strong>%s</strong> . ModulesMarketPlaces=Βρείτε εξωτερική εφαρμογή / ενότητες @@ -212,6 +212,7 @@ CompatibleUpTo=Συμβατό με την έκδοση %s NotCompatible=Αυτή η ενότητα δεν φαίνεται συμβατή με το Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=Αυτή η ενότητα απαιτεί ενημέρωση του Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Δές στην Αγορά +SeeSetupOfModule=Δείτε την ρύθμιση του module %s Updated=Ενημερωμένο Nouveauté=Καινοτομία AchatTelechargement=Αγόρασε / Μεταφόρτωσε @@ -221,6 +222,7 @@ DoliPartnersDesc=Κατάλογος εταιρειών που παρέχουν WebSiteDesc=Εξωτερικοί ιστότοποι για περισσότερες πρόσθετες (μη πυρήνες) ενότητες ... DevelopYourModuleDesc=Μερικές λύσεις για να αναπτύξεις το δικό σου μοντέλο... URL=URL +RelativeURL=Relative URL BoxesAvailable=Διαθέσιμα Widgets BoxesActivated=Ενεργοποιημένα Widgets ActivateOn=Ενεργοποιήστε στις @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Αφήστε κενό για να χρησιμοποιήσ DefaultLink=Προεπιλεγμένος σύνδεσμος SetAsDefault=Ορισμός ως προεπιλογή ValueOverwrittenByUserSetup=Προσοχή, αυτή η τιμή μπορεί να αντικατασταθεί από επιλογή του χρήστη (ο κάθε χρήστης μπορεί να κάνει τον δικό του σύνδεσμο clicktodial) -ExternalModule=Εξωτερικό module - Εγκατεστημένο στον φάκελο %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Μαζικός κώδικας barcode για τρίτους BarcodeInitForProductsOrServices=Όγκος barcode init ή επαναφορά για προϊόντα ή υπηρεσίες CurrentlyNWithoutBarCode=Επί του παρόντος, έχετε <strong>%s</strong> ρεκόρ για <strong>%s</strong> %s χωρίς barcode ορίζεται. @@ -503,7 +506,7 @@ DAV_ALLOW_ECM_DIRTooltip=Ο ριζικός κατάλογος όπου όλα τ # Modules Module0Name=Χρήστες και Ομάδες Module0Desc=Διαχείριση χρηστών / εργαζομένων και ομάδων -Module1Name=Τρίτους +Module1Name=Πελάτες/Συνεργάτες Module1Desc=Διαχείριση εταιρειών και επαφών (πελάτες, προοπτικές ...) Module2Name=Εμπορικό Module2Desc=Εμπορική διαχείριση @@ -947,7 +950,7 @@ DictionaryCanton=Κράτη / Επαρχίες DictionaryRegion=Περιοχές DictionaryCountry=Χώρες DictionaryCurrency=Νόμισμα -DictionaryCivility=Τίτλος της ευγένειας +DictionaryCivility=Honorific titles DictionaryActions=Τύποι συμβάντων ημερήσιας διάταξης DictionarySocialContributions=Είδη κοινωνικών ή φορολογικών φόρων DictionaryVAT=Τιμές ΦΠΑ ή φόρου επί των πωλήσεων @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Από προεπιλογή, ο προτεινόμενος φό VATIsUsedExampleFR=Στη Γαλλία, σημαίνει ότι οι εταιρείες ή οι οργανώσεις έχουν ένα πραγματικό φορολογικό σύστημα (απλοποιημένο πραγματικό ή κανονικό πραγματικό). Ένα σύστημα στο οποίο δηλώνεται ο ΦΠΑ. VATIsNotUsedExampleFR=Στη Γαλλία, δηλώνονται ενώσεις που δεν έχουν δηλωθεί ως φόρος πωλήσεων ή εταιρείες, οργανώσεις ή ελεύθερα επαγγέλματα που επέλεξαν το φορολογικό σύστημα των μικροεπιχειρήσεων (Φόρος πωλήσεων σε franchise) και κατέβαλαν φόρο επί των πωλήσεων χωρίς καμία δήλωση φόρου επί των πωλήσεων. Αυτή η επιλογή θα εμφανίζει στα τιμολόγια την αναφορά "Μη εφαρμοστέος φόρος πωλήσεων - art-293B του CGI". ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Τιμή LocalTax1IsNotUsed=Μην χρησιμοποιείτε δεύτερο φόρο LocalTax1IsUsedDesc=Χρησιμοποιήστε έναν δεύτερο τύπο φόρου (εκτός από τον πρώτο) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=Το ποσοστό IRPF από προεπιλογή κα LocalTax2IsNotUsedDescES=Από προεπιλογή, το προτεινόμενο IRPF είναι 0. Τέλος κανόνα. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=Στην Ισπανία είναι επιχειρήσεις που δεν υπόκεινται σε φορολογικό σύστημα ενοτήτων. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Αναφορές για τοπικούς φόρους CalcLocaltax1=Πωλήσεις - Αγορές CalcLocaltax1Desc=Οι αναφορές τοπικών φόρων υπολογίζονται με τη διαφορά μεταξύ τοπικών πωλήσεων και τοπικών αγορών @@ -1018,6 +1025,7 @@ CalcLocaltax2=Αγορές CalcLocaltax2Desc=Οι αναφορές τοπικών φόρων είναι το σύνολο των τοπικών αγορών CalcLocaltax3=Πωλήσεις CalcLocaltax3Desc=Οι αναφορές τοπικών φόρων είναι το σύνολο των τοπικών πωλήσεων +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Ετικέτα που χρησιμοποιείται από προεπιλογή εάν δεν υπάρχει μετάφραση για τον κώδικα LabelOnDocuments=Ετικέτα στα έγγραφα LabelOrTranslationKey=Κλειδί ετικέτας ή μετάφρασης @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Έκθεση εξόδων για έγκριση Delays_MAIN_DELAY_HOLIDAYS=Αφήστε τα αιτήματα για έγκριση SetupDescription1=Πριν ξεκινήσετε τη χρήση του Dolibarr πρέπει να οριστούν ορισμένες αρχικές παράμετροι και να ενεργοποιηθούν / διαμορφωθούν οι ενότητες. SetupDescription2=Οι ακόλουθες δύο ενότητες είναι υποχρεωτικές (οι δύο πρώτες καταχωρίσεις στο μενού Ρύθμιση): -SetupDescription3=<a href="%s">%s -> %s</a> <br> Βασικές παράμετροι που χρησιμοποιούνται για την προσαρμογή της προεπιλεγμένης συμπεριφοράς της εφαρμογής σας (π.χ. για λειτουργίες που σχετίζονται με τη χώρα). -SetupDescription4=<a href="%s">%s -> %s</a> <br> Αυτό το λογισμικό είναι μια σουίτα από πολλές ενότητες / εφαρμογές, όλες λίγο πολύ ανεξάρτητες. Οι ενότητες που σχετίζονται με τις ανάγκες σας πρέπει να είναι ενεργοποιημένες και ρυθμισμένες. Τα νέα στοιχεία / επιλογές προστίθενται στα μενού με την ενεργοποίηση μιας ενότητας. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Άλλες καταχωρίσεις μενού ρυθμίσεων διαχειρίζονται προαιρετικές παραμέτρ LogEvents=Security audit events Audit=Ιστορικό εισόδου χρηστών @@ -1128,7 +1136,7 @@ LogEventDesc=Ενεργοποιήστε την καταγραφή για συγ AreaForAdminOnly=Οι παράμετροι εγκατάστασης μπορούν να οριστούν μόνο από <b>χρήστες διαχειριστή</b> . SystemInfoDesc=Οι πληροφορίες συστήματος είναι διάφορες τεχνικές πληροφορίες που λαμβάνετε μόνο στη λειτουργία ανάγνωσης και είναι ορατές μόνο για τους διαχειριστές. SystemAreaForAdminOnly=Αυτή η περιοχή είναι διαθέσιμη μόνο σε χρήστες διαχειριστή. Τα δικαιώματα χρήστη Dolibarr δεν μπορούν να αλλάξουν αυτόν τον περιορισμό. -CompanyFundationDesc=Επεξεργαστείτε τις πληροφορίες της εταιρείας / εταιρείας. Κάντε κλικ στο κουμπί "%s" στο κάτω μέρος της σελίδας. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Εάν έχετε έναν εξωτερικό λογιστή / λογιστή, μπορείτε να επεξεργαστείτε εδώ τις πληροφορίες του. AccountantFileNumber=Λογιστικό κώδικα DisplayDesc=Οι παράμετροι που επηρεάζουν την εμφάνιση και συμπεριφορά του Dolibarr μπορούν να τροποποιηθούν εδώ. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Κανόνες δημιουργίας και επικ DisableForgetPasswordLinkOnLogonPage=Να μην εμφανίζεται ο σύνδεσμος "Ξεχασμένος κωδικός πρόσβασης" στη σελίδα Σύνδεση UsersSetup=Ρυθμίσεις αρθρώματος χρηστών UserMailRequired=Απαιτείται ηλεκτρονικό ταχυδρομείο για τη δημιουργία νέου χρήστη +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Ρύθμιση μονάδας HRM ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Μοντέλα εγγράφων τιμολογίου BillsPDFModulesAccordindToInvoiceType=Τα μοντέλα εγγράφων τιμολογίου σύμφωνα με τον τύπο τιμολογίου PaymentsPDFModules=Μοντέλα εγγράφων πληρωμής ForceInvoiceDate=Μετάβαση ημερομηνίας ισχύος τιμολογίου σε ημερομηνία επικύρωσης -SuggestedPaymentModesIfNotDefinedInInvoice=Προτεινόμενη μέθοδος πληρωμής στο τιμολόγιο από προεπιλογή, εάν δεν έχει οριστεί για τιμολόγιο +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Προτείνετε την πληρωμή μέσω απόσυρσης στο λογαριασμό SuggestPaymentByChequeToAddress=Προτείνετε πληρωμή με επιταγή προς FreeLegalTextOnInvoices=Ελεύθερο κείμενο στα τιμολόγια @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Ρυθμίσεις πληρωμών προμηθευτή PropalSetup=Ρύθμιση ενότητας εμπορικών προτάσεων ProposalsNumberingModules=Μοντέλα αριθμοδότησης εμπορικών προτάσεων ProposalsPDFModules=Μοντέλα εγγράφων εμπορικών προτάσεων -SuggestedPaymentModesIfNotDefinedInProposal=Προτεινόμενη μέθοδος πληρωμών σχετικά με πρόταση από προεπιλογή, εάν δεν ορίζεται για πρόταση +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Ελεύθερο κείμενο στις προσφορές WatermarkOnDraftProposal=Υδατογράφημα σε προσχέδια εμπορικών προτάσεων (κανένα εάν δεν είναι κενό) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ρωτήστε για τον τραπεζικό λογαριασμό προορισμού της προσφοράς @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ζητήστε από την αποθήκη ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ζητήστε τον προορισμό του τραπεζικού λογαριασμού της εντολής αγοράς ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Ρύθμιση διαχείρισης παραγγελιών πωλήσεων OrdersNumberingModules=Μοντέλα αρίθμησης παραγγελιών OrdersModelModule=Παραγγείλετε μοντέλα εγγράφων @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Προειδοποίηση, οι υψη ModuleActivated=Η ενότητα %s ενεργοποιείται και επιβραδύνει τη διεπαφή EXPORTS_SHARE_MODELS=Τα μοντέλα εξαγωγής είναι κοινά με όλους ExportSetup=Ρύθμιση εξαγωγής της ενότητας +ImportSetup=Setup of module Import InstanceUniqueID=Μοναδικό αναγνωριστικό της παρουσίας SmallerThan=Μικρότερη από LargerThan=Μεγαλύτερο από @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Δημιουργήστε ένα ανώνυμο Ping '+1 FeatureNotAvailableWithReceptionModule=Η λειτουργία δεν είναι διαθέσιμη όταν είναι ενεργοποιημένη η λειτουργία Υποδοχή EmailTemplate=Πρότυπο email EMailsWillHaveMessageID=Τα μηνύματα ηλεκτρονικού ταχυδρομείου θα έχουν μια ετικέτα "Αναφορές" που ταιριάζουν με αυτή τη σύνταξη -PDF_USE_ALSO_LANGUAGE_CODE=Εάν θέλετε να έχετε κάποιο τίτλο κειμένου σε PDF που έχετε αντιγράψει σε 2 διαφορετικές γλώσσες στο ίδιο παραγόμενο PDF, πρέπει να ορίσετε εδώ αυτή τη δεύτερη γλώσσα, έτσι ώστε το παραγόμενο PDF να περιέχει 2 διαφορετικές γλώσσες στην ίδια σελίδα, αυτή που επιλέχθηκε κατά τη δημιουργία PDF και αυτή (μόνο μερικά πρότυπα PDF υποστηρίζουν αυτό). Κρατήστε κενό για 1 γλώσσα ανά PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/el_GR/bills.lang b/htdocs/langs/el_GR/bills.lang index 1262a205dea..f38dfa9741f 100644 --- a/htdocs/langs/el_GR/bills.lang +++ b/htdocs/langs/el_GR/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Τιμολόγια προμηθευτών SupplierBill=Τιμολόγιο προμηθευτή SupplierBills=Τιμολόγια Προμηθευτή Payment=Πληρωμή -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Πληρωμές PaymentsBack=Επιστροφές χρημάτων paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Διαγραφή Πληρωμής ConfirmDeletePayment=Είστε σίγουροι ότι θέλετε να διαγράψετε την πληρωμή; -ConfirmConvertToReduc=Θέλετε να μετατρέψετε αυτό το %s σε απόλυτη έκπτωση; +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=Το ποσό θα αποθηκευτεί σε όλες τις εκπτώσεις και θα μπορούσε να χρησιμοποιηθεί ως έκπτωση για ένα τρέχον ή μελλοντικό τιμολόγιο για αυτόν τον πελάτη. -ConfirmConvertToReducSupplier=Θέλετε να μετατρέψετε αυτό το %s σε απόλυτη έκπτωση; +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=Το ποσό θα αποθηκευτεί σε όλες τις εκπτώσεις και θα μπορούσε να χρησιμοποιηθεί ως έκπτωση για ένα τρέχον ή μελλοντικό τιμολόγιο για αυτόν τον προμηθευτή. SupplierPayments=Πληρωμές προμηθευτών ReceivedPayments=Ληφθείσες Πληρωμές @@ -219,7 +219,10 @@ ShowInvoiceSituation=Εμφάνιση κατάστασης τιμολογίου UseSituationInvoices=Να επιτρέπεται το τιμολόγιο κατάστασης UseSituationInvoicesCreditNote=Επιτρέψτε το πιστωτικό σημείωμα τιμολογίου κατάστασης Retainedwarranty=Διατηρημένη εγγύηση +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Διατηρημένο ποσοστό εξόφλησης εγγύησης +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=Να πληρώσετε για %s toPayOn=να πληρώσει για %s RetainedWarranty=Διατηρημένη εγγύηση @@ -259,7 +262,7 @@ SendReminderBillByMail=Αποστολή υπενθύμισης με email RelatedCommercialProposals=Σχετικές προσφορές RelatedRecurringCustomerInvoices=Related recurring customer invoices MenuToValid=Προς επικύρωση -DateMaxPayment=Πληρωμή λόγω πληρωμής +DateMaxPayment=Προθεσμία Πληρωμής DateInvoice=Ημερομηνία τιμολογίου DatePointOfTax=Point of tax NoInvoice=Δεν υπάρχει τιμολόγιο @@ -285,9 +288,9 @@ ExportDataset_invoice_1=Τιμολόγια πελατών και λεπτομέ ExportDataset_invoice_2=Πληρωμές και τιμολόγια πελατών ProformaBill=Proforma Bill: Reduction=Μείωση -ReductionShort=Δίσκος. +ReductionShort=Έκπτωση Reductions=Μειώσεις -ReductionsShort=Δίσκος. +ReductionsShort=Έκπτωση Discounts=Εκπτώσεις AddDiscount=Δημιουργία απόλυτη έκπτωση AddRelativeDiscount=Δημιουργία σχετική έκπτωση @@ -509,11 +512,11 @@ ToMakePayment=Πληρωμή ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=Κατάλογος των απλήρωτων τιμολογίων NoteListOfYourUnpaidInvoices=Σημείωση: Αυτή η λίστα περιέχει μόνο τα τιμολόγια για λογαριασμό Πελ./Προμ. που συνδέονται με τον εκπρόσωπο πώλησης. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Αυτή η επιλογή είναι διαθέσιμη μόνο όταν δημιουργείτε τιμολόγιο από την καρτέλα "Πελάτης" τρίτου μέρους YouMustCreateInvoiceFromSupplierThird=Αυτή η επιλογή είναι διαθέσιμη μόνο κατά τη δημιουργία τιμολογίου από την καρτέλα "Προμηθευτής" τρίτου μέρους YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Πρότυπο τιμολόγιο PDF Crabe. Ένα πλήρες πρότυπο τιμολογίου (παλιά εφαρμογή του προτύπου Sponge) +PDFCrabeDescription=Πρότυπο τιμολόγιο PDF Crabe. Ένα πλήρες πρότυπο τιμολογίου PDFSpongeDescription=Τιμολόγιο πρότυπο PDF Σφουγγάρι. Ένα πλήρες πρότυπο τιμολογίου PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Επιστρέψετε αριθμό με μορφή %syymm-nnnn για τυπικά τιμολόγια και %syymm-nnnn για πιστωτικά τιμολόγια όπου yy είναι το έτος, mm είναι ο μήνας και nnnn είναι μια ακολουθία αρίθμησης χωρίς διάλειμμα και χωρίς επιστροφή στο 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Ορίστε την ημερομηνία λήξης της γρα AutoFillDateToShort=Ορίστε την ημερομηνία λήξης MaxNumberOfGenerationReached=Μέγιστος αριθμός γονιδίων. επιτευχθεί BILL_DELETEInDolibarr=Το τιμολόγιο διαγράφηκε +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/el_GR/blockedlog.lang b/htdocs/langs/el_GR/blockedlog.lang index 5bf526aa5be..8172e83ec81 100644 --- a/htdocs/langs/el_GR/blockedlog.lang +++ b/htdocs/langs/el_GR/blockedlog.lang @@ -1,54 +1,54 @@ -BlockedLog=Unalterable Logs +BlockedLog=Μη τροποποιήσιμα αρχεία καταγραφής 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 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) -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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). -OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows 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 +BlockedLogDesc=Αυτή η ενότητα παρακολουθεί ορισμένα γεγονότα σε ένα μη αναστρέψιμο αρχείο καταγραφής (το οποίο δεν μπορείτε να τροποποιήσετε αφού καταγραφεί) σε μια αλυσίδα μπλοκ, σε πραγματικό χρόνο. Αυτή η ενότητα παρέχει συμβατότητα με τις απαιτήσεις των νόμων ορισμένων χωρών (όπως η Γαλλία με το νόμο Finance 2016 - Norme NF525). +Fingerprints=Αρχειοθετημένα συμβάντα και δακτυλικά αποτυπώματα +FingerprintsDesc=Αυτό είναι το εργαλείο για να περιηγηθείτε ή να εξαγάγετε τα μη αναστρέψιμα αρχεία καταγραφής. Ανεπιθύμητα αρχεία καταγραφής δημιουργούνται και αρχειοθετούνται τοπικά σε ένα ειδικό τραπέζι, σε πραγματικό χρόνο, όταν καταγράφετε ένα επιχειρηματικό γεγονός. Μπορείτε να χρησιμοποιήσετε αυτό το εργαλείο για να εξαγάγετε αυτό το αρχείο και να το αποθηκεύσετε σε εξωτερική υποστήριξη (ορισμένες χώρες, όπως η Γαλλία, ζητήστε να το κάνετε κάθε χρόνο). Σημειώστε ότι δεν υπάρχει καμία δυνατότητα για να καθαρίσετε αυτό το αρχείο καταγραφής και κάθε αλλαγή που προσπάθησε να γίνει απευθείας σε αυτό το αρχείο καταγραφής (π.χ. από έναν χάκερ) θα αναφέρεται με μη έγκυρο δακτυλικό αποτύπωμα. Εάν θέλετε πραγματικά να καθαρίσετε αυτόν τον πίνακα επειδή χρησιμοποιήσατε την εφαρμογή σας για δοκιμαστικό σκοπό και θέλετε να καθαρίσετε τα δεδομένα σας για να ξεκινήσετε την παραγωγή σας, μπορείτε να ζητήσετε από τον μεταπωλητή ή τον ολοκληρωτή σας να επαναφέρει τη βάση δεδομένων σας (όλα τα δεδομένα θα καταργηθούν). +CompanyInitialKey=Το αρχικό κλειδί της επιχείρησης (μπλοκ του μπλοκ γενεσίας) +BrowseBlockedLog=Μη τροποποιήσιμα κορμούς +ShowAllFingerPrintsMightBeTooLong=Εμφάνιση όλων των αρχειοθετημένων αρχείων καταγραφής (μπορεί να είναι μακρά) +ShowAllFingerPrintsErrorsMightBeTooLong=Εμφάνιση όλων των μη έγκυρων αρχείων καταγραφής αρχείων (μπορεί να είναι μεγάλο) +DownloadBlockChain=Κατεβάστε τα δακτυλικά αποτυπώματα +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +OkCheckFingerprintValidity=Η αρχειοθετημένη εγγραφή είναι έγκυρη. Τα δεδομένα αυτής της γραμμής δεν τροποποιήθηκαν και η καταχώριση ακολουθεί την προηγούμενη. +OkCheckFingerprintValidityButChainIsKo=Το αρχειοθετημένο ημερολόγιο φαίνεται έγκυρο σε σύγκριση με το προηγούμενο, αλλά η αλυσίδα είχε καταστραφεί προηγουμένως. +AddedByAuthority=Αποθηκεύεται σε απομακρυσμένη εξουσία +NotAddedByAuthorityYet=Δεν έχει ακόμη αποθηκευτεί σε απομακρυσμένη αρχή ShowDetails=Εμφάνιση αποθηκευμένων λεπτομεριών -logPAYMENT_VARIOUS_CREATE=Payment (not assigned to an invoice) created -logPAYMENT_VARIOUS_MODIFY=Payment (not assigned to an invoice) modified -logPAYMENT_VARIOUS_DELETE=Payment (not assigned to an invoice) logical deletion -logPAYMENT_ADD_TO_BANK=Payment added to bank -logPAYMENT_CUSTOMER_CREATE=Customer payment created -logPAYMENT_CUSTOMER_DELETE=Customer payment logical deletion -logDONATION_PAYMENT_CREATE=Donation payment created -logDONATION_PAYMENT_DELETE=Donation payment logical deletion -logBILL_PAYED=Customer invoice paid -logBILL_UNPAYED=Customer invoice set unpaid +logPAYMENT_VARIOUS_CREATE=Η πληρωμή (δεν έχει εκχωρηθεί σε τιμολόγιο) δημιουργήθηκε +logPAYMENT_VARIOUS_MODIFY=Η πληρωμή (δεν έχει εκχωρηθεί σε τιμολόγιο) τροποποιήθηκε +logPAYMENT_VARIOUS_DELETE=Πληρωμή (δεν έχει εκχωρηθεί σε τιμολόγιο) λογική διαγραφή +logPAYMENT_ADD_TO_BANK=Η πληρωμή προστέθηκε στην τράπεζα +logPAYMENT_CUSTOMER_CREATE=Η πληρωμή του πελάτη δημιουργήθηκε +logPAYMENT_CUSTOMER_DELETE=Λογική διαγραφή πληρωμής πελατών +logDONATION_PAYMENT_CREATE=Η πληρωμή δωρεάς δημιουργήθηκε +logDONATION_PAYMENT_DELETE=Δωρεά λογική διαγραφή πληρωμής +logBILL_PAYED=Πληρωμή τιμολογίου πελάτη +logBILL_UNPAYED=Το τιμολόγιο πελατών έχει οριστεί ως μη πληρωμένο logBILL_VALIDATE=Το τιμολόγιο πελάτη επικυρώθηκε -logBILL_SENTBYMAIL=Customer invoice send by mail -logBILL_DELETE=Customer invoice logically deleted -logMODULE_RESET=Module BlockedLog was disabled -logMODULE_SET=Module BlockedLog was enabled +logBILL_SENTBYMAIL=Τα τιμολόγια πελατών αποστέλλονται ταχυδρομικώς +logBILL_DELETE=Το τιμολόγιο πελατών διαγράφηκε λογικά +logMODULE_RESET=Η μονάδα BlockedLog απενεργοποιήθηκε +logMODULE_SET=Η μονάδα BlockedLog ήταν ενεργοποιημένη logDON_VALIDATE=Επικύρωση δωρεάς logDON_MODIFY=Μετατροπή δωρεάς -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 -ListOfTrackedEvents=List of tracked events -Fingerprint=Fingerprint -DownloadLogCSV=Export archived logs (CSV) -logDOC_PREVIEW=Preview of a validated document in order to print or download -logDOC_DOWNLOAD=Download of a validated document in order to print or send -DataOfArchivedEvent=Full datas of archived event -ImpossibleToReloadObject=Original object (type %s, id %s) not linked (see 'Full datas' column to get unalterable saved data) -BlockedLogAreRequiredByYourCountryLegislation=Unalterable Logs module may be required by the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they can not be validated by a tax audit. -BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Unalterable Logs module was activated because of the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they cannot be validated by a tax audit. -BlockedLogDisableNotAllowedForCountry=List of countries where usage of this module is mandatory (just to prevent to disable the module by error, if your country is in this list, disable of module is not possible without editing this list first. Note also that enabling/disabling this module will keep a track into the unalterable log). -OnlyNonValid=Non-valid -TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. -RestrictYearToExport=Restrict month / year to export +logDON_DELETE=Δωρεά λογική διαγραφή +logMEMBER_SUBSCRIPTION_CREATE=Δημιουργία συνδρομής μέλους +logMEMBER_SUBSCRIPTION_MODIFY=Η συνδρομή μέλους τροποποιήθηκε +logMEMBER_SUBSCRIPTION_DELETE=Συνδρομή λογικής διαγραφής μέλους +logCASHCONTROL_VALIDATE=Εγγραφή φράχτη μετρητών +BlockedLogBillDownload=Λήψη τιμολογίου πελατών +BlockedLogBillPreview=Προβολή τιμολογίου πελατών +BlockedlogInfoDialog=Στοιχεία καταγραφής +ListOfTrackedEvents=Λίστα συμβάντων που παρακολουθούνται +Fingerprint=Δακτυλικό αποτύπωμα +DownloadLogCSV=Εξαγωγή αρχειοθετημένων αρχείων καταγραφής (CSV) +logDOC_PREVIEW=Προεπισκόπηση ενός επικυρωμένου εγγράφου για εκτύπωση ή λήψη +logDOC_DOWNLOAD=Λήψη επικυρωμένου εγγράφου για εκτύπωση ή αποστολή +DataOfArchivedEvent=Πλήρη δεδομένα αρχειοθετημένου γεγονότος +ImpossibleToReloadObject=Το αρχικό αντικείμενο (πληκτρολογήστε %s, id %s) δεν είναι συνδεδεμένο (ανατρέξτε στη στήλη "Πλήρες αρχείο δεδομένων" για να λάβετε αναλλοίωτα αποθηκευμένα δεδομένα) +BlockedLogAreRequiredByYourCountryLegislation=Μπορείτε να ζητήσετε από τη νομοθεσία της χώρας σας τη λειτουργική μονάδα Unalterable Logs. Η απενεργοποίηση αυτής της ενότητας μπορεί να καταστήσει τυχόν μελλοντικές συναλλαγές άκυρες σε σχέση με το νόμο και τη χρήση νόμιμου λογισμικού, καθώς δεν μπορούν να επικυρωθούν από φορολογικό έλεγχο. +BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Το μη τροποποιημένο τμήμα καταγραφής ενεργοποιήθηκε λόγω της νομοθεσίας της χώρας σας. Η απενεργοποίηση αυτής της ενότητας μπορεί να καταστήσει τυχόν μελλοντικές συναλλαγές άκυρες σε σχέση με το νόμο και τη χρήση νόμιμου λογισμικού, καθώς δεν μπορούν να επικυρωθούν από φορολογικό έλεγχο. +BlockedLogDisableNotAllowedForCountry=Κατάλογος χωρών όπου η χρήση αυτής της λειτουργικής μονάδας είναι υποχρεωτική (απλά για να αποφευχθεί η απενεργοποίηση της μονάδας από λάθος, εάν η χώρα σας βρίσκεται σε αυτή τη λίστα, δεν είναι δυνατή η απενεργοποίηση της ενότητας χωρίς την πρώτη επεξεργασία αυτής της λίστας. κρατήστε ένα κομμάτι στο μη αναστρέψιμο αρχείο καταγραφής). +OnlyNonValid=Μη έγκυρη +TooManyRecordToScanRestrictFilters=Πάρα πολλές εγγραφές για σάρωση / ανάλυση. Περιορίστε τη λίστα με πιο περιοριστικά φίλτρα. +RestrictYearToExport=Περιορίστε μήνα / έτος για εξαγωγή diff --git a/htdocs/langs/el_GR/cashdesk.lang b/htdocs/langs/el_GR/cashdesk.lang index 3f41980eefb..3dc213913e9 100644 --- a/htdocs/langs/el_GR/cashdesk.lang +++ b/htdocs/langs/el_GR/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Προσθέστε αυτό το προϊόν RestartSelling=Επιστρέψτε στην πώληση SellFinished=Ολοκληρωμένη πώληση PrintTicket=Εκτύπωση Απόδειξης +SendTicket=Send ticket NoProductFound=Το προϊόν δεν βρέθηκε ProductFound=Το προϊόν βρέθηκε NoArticle=Κανένα προϊόν @@ -48,6 +49,7 @@ Footer=Υποσέλιδο AmountAtEndOfPeriod=Ποσό στο τέλος της περιόδου (ημέρα, μήνας ή έτος) TheoricalAmount=Θεωρητικό ποσό RealAmount=Πραγματικό ποσό +CashFence=Cash fence CashFenceDone=Μετρητά φράχτη για την περίοδο NbOfInvoices=Πλήθος τιμολογίων Paymentnumpad=Τύπος πλακέτας για να πληκτρολογήσετε την πληρωμή @@ -58,8 +60,9 @@ TakeposNeedsCategories=Το TakePOS χρειάζεται κατηγορίες π OrderNotes=Σημειώσεις Παραγγελίας CashDeskBankAccountFor=Προεπιλεγμένος λογαριασμός που θα χρησιμοποιηθεί για πληρωμές σε NoPaimementModesDefined=Δεν έχει ρυθμιστεί η λειτουργία πρατηρίου που έχει οριστεί στη διαμόρφωση του TakePOS -TicketVatGrouped=Φόρος ΦΠΑ βάσει ποσοστού σε εισιτήρια -AutoPrintTickets=Αυτόματη εκτύπωση εισιτηρίων +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Ενεργοποιήστε τις λειτουργίες του μπαρ ή του εστιατορίου ConfirmDeletionOfThisPOSSale=Επιβεβαιώνετε τη διαγραφή αυτής της τρέχουσας πώλησης; ConfirmDiscardOfThisPOSSale=Θέλετε να απορρίψετε αυτήν την τρέχουσα πώληση; @@ -87,7 +90,19 @@ HeadBar=Μπάρα Κεφαλίδας SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/el_GR/companies.lang b/htdocs/langs/el_GR/companies.lang index a3d237a88d9..d5121eceabd 100644 --- a/htdocs/langs/el_GR/companies.lang +++ b/htdocs/langs/el_GR/companies.lang @@ -32,7 +32,7 @@ PriceFormatInCurrentLanguage=Μορφή εμφάνισης τιμής στην ThirdPartyName=Όνομα τρίτου μέρους ThirdPartyEmail=Ηλεκτρονικό ταχυδρομείο τρίτου μέρους ThirdParty=Τρίτο μέρος -ThirdParties=Τρίτους +ThirdParties=Πελάτες/Συνεργάτες ThirdPartyProspects=Προοπτικές ThirdPartyProspectsStats=Προοπτικές ThirdPartyCustomers=Πελάτες @@ -325,7 +325,6 @@ CompanyDeleted="%s" διαγράφηκε από την βάση δεδομένω ListOfContacts=Λίστα αντιπροσώπων ListOfContactsAddresses=Λίστα αντιπροσώπων ListOfThirdParties=Κατάλογος τρίτων μερών -ShowCompany=Εμφάνιση τρίτου μέρους ShowContact=Εμφάνιση Προσώπου Επικοινωνίας ContactsAllShort=Όλα (Χωρίς Φίλτρο) ContactType=Τύπος αντιπροσώπου επικοινωνίας @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative ErrorThirdpartiesMerge=Παρουσιάστηκε σφάλμα κατά τη διαγραφή των τρίτων. Ελέγξτε το αρχείο καταγραφής. Οι αλλαγές έχουν επανέλθει. NewCustomerSupplierCodeProposed=Κωδικός πελάτη ή προμηθευτή που έχει ήδη χρησιμοποιηθεί, προτείνεται ένας νέος κωδικός +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Τύπος Πληρωμής - Πελάτης PaymentTermsCustomer=Όροι πληρωμής - Πελάτης diff --git a/htdocs/langs/el_GR/compta.lang b/htdocs/langs/el_GR/compta.lang index 751a1c0d199..d187476e8bb 100644 --- a/htdocs/langs/el_GR/compta.lang +++ b/htdocs/langs/el_GR/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Ανατρέξτε στο %sanalysis of payments%s γ SeeReportInDueDebtMode=Ανατρέξτε στο %sanalysis των τιμολογίων%s για έναν υπολογισμό βασισμένο σε γνωστά καταγεγραμμένα τιμολόγια, ακόμη και αν δεν έχουν ακόμη καταλογιστεί στο Ledger. SeeReportInBookkeepingMode=Δείτε <b>%sBookeeping report%s</b> για έναν υπολογισμό στον <b>πίνακα "</b> <b>Λογαριασμός Λογιστηρίου"</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- Περιλαμβάνει τα οφειλόμενα τιμολόγια του πελάτη, είτε πληρώνονται είτε όχι. <br> - Βασίζεται στην ημερομηνία επικύρωσης αυτών των τιμολογίων. <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Περιλαμβάνει όλες τις πραγματικές πληρωμές τιμολογίων που εισπράττονται από πελάτες. <br> - Βασίζεται στην ημερομηνία πληρωμής αυτών των τιμολογίων <br> RulesCATotalSaleJournal=Περιλαμβάνει όλες τις πιστωτικές γραμμές από το περιοδικό Sale. RulesAmountOnInOutBookkeepingRecord=Περιλαμβάνει την εγγραφή στον Λογαριασμό σας με Λογαριασμούς Λογαριασμού που έχει την ομάδα "ΕΞΟΔΑ" ή "ΕΙΣΟΔΟΣ" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Ο κύκλος εργασιών τιμολογείται απ TurnoverCollectedbyVatrate=Ο κύκλος εργασιών που εισπράττεται από το φορολογικό συντελεστή πώλησης PurchasebyVatrate=Ποσοστό φόρου επί των πωλήσεων LabelToShow=Σύντομη ετικέτα +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/el_GR/errors.lang b/htdocs/langs/el_GR/errors.lang index 86b72eb9710..f83468b7f5f 100644 --- a/htdocs/langs/el_GR/errors.lang +++ b/htdocs/langs/el_GR/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Ο διακομιστής δεν έλαβε ολόκληρο τ ErrorNoTmpDir=Ο προσωρινός φάκελος %s δεν υπάρχει. ErrorUploadBlockedByAddon=Η μεταφόρτωση απετράπει από ένα PHP / Apache plugin. ErrorFileSizeTooLarge=Το μέγεθος του αρχείου είναι πολύ μεγάλο. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Το μέγεθος είναι υπερβολικά μεγάλο για τιμή τύπου ακεραίου (%s είναι το μέγιστο πλήθος ψηφίων) ErrorSizeTooLongForVarcharType=Το μέγεθος είναι υπερβολικά μεγάλο για τιμή τύπου αλφαριθμητικού (%s είναι το μέγιστο πλήθος χαρακτήρων) ErrorNoValueForSelectType=Παρακαλούμε συμπληρώστε τιμή για την αναδυόμενη λίστα επιλογής @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Η παράμετρος PHP upload_max_filesize (%s) είναι υψηλότερη από την παράμετρο PHP post_max_size (%s). Αυτό δεν είναι μια σταθερή ρύθμιση. 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. diff --git a/htdocs/langs/el_GR/install.lang b/htdocs/langs/el_GR/install.lang index 8a2d7b31c46..b791f0313f3 100644 --- a/htdocs/langs/el_GR/install.lang +++ b/htdocs/langs/el_GR/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Αυτή η PHP υποστηρίζει το Curl. PHPSupportCalendar=Αυτή η PHP υποστηρίζει επεκτάσεις ημερολογίων. PHPSupportUTF8=Αυτή η PHP υποστηρίζει τις λειτουργίες UTF8. PHPSupportIntl=Αυτή η PHP υποστηρίζει τις λειτουργίες Intl. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=Η PHP υποστηρίζει %s λειτουργίες . PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Η μνήμη συνεδρίας PHP max έχει οριστεί σε <b>%s</b> bytes. Αυτό είναι πολύ χαμηλό. Αλλάξτε το <b>php.ini</b> για να ρυθμίσετε την παράμετρο <b>memory_limit</b> σε τουλάχιστον bytes <b>%s</b> . @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Η εγκατάσταση της php δεν υποσ ErrorPHPDoesNotSupportCalendar=Η εγκατάσταση της PHP δεν υποστηρίζει επεκτάσεις του php calendar. ErrorPHPDoesNotSupportUTF8=Η εγκατάσταση της PHP δεν υποστηρίζει λειτουργίες UTF8. Το Dolibarr δεν μπορεί να λειτουργήσει σωστά. Επιλύστε αυτό πριν εγκαταστήσετε Dolibarr. ErrorPHPDoesNotSupportIntl=Η εγκατάσταση της PHP δεν υποστηρίζει τις λειτουργίες Intl. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Η εγκατάσταση της PHP σας δεν υποστηρίζει %s λειτουργίες . ErrorDirDoesNotExists=Κατάλογος %s δεν υπάρχει. ErrorGoBackAndCorrectParameters=Επιστρέψτε και ελέγξτε / διορθώστε τις παραμέτρους. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Η εφαρμογή προσπάθησε να α YouTryInstallDisabledByFileLock=Η εφαρμογή προσπάθησε να αυτο-αναβαθμιστεί, αλλά οι σελίδες εγκατάστασης / αναβάθμισης έχουν απενεργοποιηθεί για λόγους ασφαλείας (με την ύπαρξη ενός αρχείου κλειδώματος <strong>install.lock</strong> στον κατάλογο εγγράφων dolibarr). <br> ClickHereToGoToApp=Κάντε κλικ εδώ για να μεταβείτε στην αίτησή σας ClickOnLinkOrRemoveManualy=Κάντε κλικ στον παρακάτω σύνδεσμο. Εάν βλέπετε πάντα την ίδια σελίδα, πρέπει να καταργήσετε / μετονομάσετε το αρχείο install.lock στον κατάλογο εγγράφων. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/el_GR/link.lang b/htdocs/langs/el_GR/link.lang index 2b285448666..7694f341249 100644 --- a/htdocs/langs/el_GR/link.lang +++ b/htdocs/langs/el_GR/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Ο σύνδεσμος %s έχει αφαιρεθεί ErrorFailedToDeleteLink= Απέτυχε η αφαίρεση του συνδέσμου '<b>%s</b>' ErrorFailedToUpdateLink= Απέτυχε η ενημέρωση του σύνδεσμο '<b>%s</b>' URLToLink=Διεύθυνση URL για σύνδεση +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/el_GR/mails.lang b/htdocs/langs/el_GR/mails.lang index c1661e2340f..42f4399baf0 100644 --- a/htdocs/langs/el_GR/mails.lang +++ b/htdocs/langs/el_GR/mails.lang @@ -11,16 +11,16 @@ MailFrom=Αποστολέας MailErrorsTo=Σφάλματα σε MailReply=Απάντηση σε MailTo=Παραλήπτης(ες) -MailToUsers=To user(s) +MailToUsers=Στο χρήστη (ες) MailCC=Αντιγραφή σε -MailToCCUsers=Copy to users(s) +MailToCCUsers=Αντιγραφή σε χρήστες MailCCC=Cached copy to -MailTopic=Email topic +MailTopic=Θέμα ηλεκτρονικού ταχυδρομείου MailText=Μήνυμα MailFile=Επισυναπτώμενα Αρχεία MailMessage=Κείμενο email -SubjectNotIn=Not in Subject -BodyNotIn=Not in Body +SubjectNotIn=Όχι στο θέμα +BodyNotIn=Όχι στο Σώμα ShowEMailing=Show emailing ListOfEMailings=List of emailings NewMailing=New emailing @@ -47,19 +47,19 @@ MailingStatusReadAndUnsubscribe=Read and unsubscribe ErrorMailRecipientIsEmpty=Email recipient is empty WarningNoEMailsAdded=No new Email to add to recipient's list. ConfirmValidMailing=Are you sure you want to validate this emailing? -ConfirmResetMailing=Warning, by re-initializing emailing <b>%s</b>, you will allow the re-sending this email in a bulk 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 +ConfirmResetMailing=Προειδοποίηση, ενεργοποιώντας εκ νέου την αποστολή e-mail <b>%s</b> , θα επιτρέψετε την <b>επανάδοση</b> αυτού του μηνύματος ηλεκτρονικού ταχυδρομείου σε μαζική αλληλογραφία. Είστε βέβαιοι ότι θέλετε να το κάνετε αυτό; +ConfirmDeleteMailing=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου; +NbOfUniqueEMails=Αριθμός μοναδικών μηνυμάτων ηλεκτρονικού ταχυδρομείου +NbOfEMails=Αριθμός Emails TotalNbOfDistinctRecipients=Number of distinct recipients NoTargetYet=No recipients defined yet (Go on tab 'Recipients') -NoRecipientEmail=No recipient email for %s +NoRecipientEmail=Δεν υπάρχει ηλεκτρονικό ταχυδρομείο παραλήπτη για %s RemoveRecipient=Remove recipient YouCanAddYourOwnPredefindedListHere=To create your email selector module, see htdocs/core/modules/mailings/README. EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions variables are replaced by generic values MailingAddFile=Attach this file NoAttachedFiles=No attached files -BadEMail=Bad value for Email +BadEMail=Κακή τιμή για το μήνυμα ηλεκτρονικού ταχυδρομείου ConfirmCloneEMailing=Are you sure you want to clone this emailing? CloneContent=Clone message CloneReceivers=Cloner recipients @@ -67,31 +67,31 @@ DateLastSend=Ημερομηνία τελευταίας αποστολής DateSending=Date sending SentTo=Sent to <b>%s</b> MailingStatusRead=Ανάγνωση -YourMailUnsubcribeOK=The email <b>%s</b> 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=Email sent for %s elements. +YourMailUnsubcribeOK=Το e <b>-</b> mail <b>%s καταργείται</b> σωστά από τη λίστα αλληλογραφίας +ActivateCheckReadKey=Το κλειδί που χρησιμοποιείται για την κρυπτογράφηση της διεύθυνσης URL που χρησιμοποιείται για τη λειτουργία "Έγγραφο ανάγνωσης" και "Κατάργηση εγγραφής" +EMailSentToNRecipients=Το μήνυμα ηλεκτρονικού ταχυδρομείου αποστέλλεται στους παραλήπτες %s. +EMailSentForNElements=Το ηλεκτρονικό ταχυδρομείο στάλθηκε για στοιχεία %s. XTargetsAdded=<b>%s</b> παραλήπτες που προστέθηκαν στο κατάλογο των στόχων -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=Group emails -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=Result of mass Email sending -NbSelected=Number selected -NbIgnored=Number ignored -NbSent=Number sent -SentXXXmessages=%s message(s) sent. +OnlyPDFattachmentSupported=Αν τα έγγραφα PDF δημιουργήθηκαν ήδη για τα αντικείμενα που θα αποσταλούν, θα επισυνάπτονται στο ηλεκτρονικό ταχυδρομείο. Εάν όχι, δεν θα αποσταλεί κανένα μήνυμα ηλεκτρονικού ταχυδρομείου (επίσης, σημειώστε ότι μόνο έγγραφα pdf υποστηρίζονται ως συνημμένα στη μαζική αποστολή σε αυτή την έκδοση). +AllRecipientSelected=Οι παραλήπτες της εγγραφής %s έχουν επιλεγεί (αν είναι γνωστό το email τους). +GroupEmails=Ομαδικά μηνύματα ηλεκτρονικού ταχυδρομείου +OneEmailPerRecipient=Ένα μήνυμα ηλεκτρονικού ταχυδρομείου ανά παραλήπτη (από προεπιλογή, επιλέγεται ένα μήνυμα ηλεκτρονικού ταχυδρομείου ανά εγγραφή) +WarningIfYouCheckOneRecipientPerEmail=Προειδοποίηση, αν επιλέξετε αυτό το πλαίσιο, σημαίνει ότι θα αποσταλεί μόνο ένα μήνυμα ηλεκτρονικού ταχυδρομείου για πολλές διαφορετικές εγγραφές, επομένως εάν το μήνυμά σας περιέχει μεταβλητές υποκατάστασης που αναφέρονται σε δεδομένα ενός αρχείου, δεν είναι δυνατή η αντικατάστασή τους. +ResultOfMailSending=Αποτέλεσμα της μαζικής αποστολής ηλεκτρονικού ταχυδρομείου +NbSelected=Ο αριθμός είναι επιλεγμένος +NbIgnored=Ο αριθμός αγνοήθηκε +NbSent=Ο αριθμός αποστέλλεται +SentXXXmessages=%s αποστέλλεται μήνυμα (ες). ConfirmUnvalidateEmailing=Are you sure you want to change email <b>%s</b> to draft status? MailingModuleDescContactsWithThirdpartyFilter=Contact with customer filters -MailingModuleDescContactsByCompanyCategory=Contacts by third-party category +MailingModuleDescContactsByCompanyCategory=Επαφές ανά κατηγορία τρίτων MailingModuleDescContactsByCategory=Contacts by categories MailingModuleDescContactsByFunction=Contacts by position -MailingModuleDescEmailsFromFile=Emails from file -MailingModuleDescEmailsFromUser=Emails input by user -MailingModuleDescDolibarrUsers=Users with Emails -MailingModuleDescThirdPartiesByCategories=Third parties (by categories) -SendingFromWebInterfaceIsNotAllowed=Sending from web interface is not allowed. +MailingModuleDescEmailsFromFile=Τα μηνύματα ηλεκτρονικού ταχυδρομείου από το αρχείο +MailingModuleDescEmailsFromUser=Εισαγωγή μηνυμάτων ηλεκτρονικού ταχυδρομείου από το χρήστη +MailingModuleDescDolibarrUsers=Χρήστες με μηνύματα ηλεκτρονικού ταχυδρομείου +MailingModuleDescThirdPartiesByCategories=Τρίτα μέρη (κατά κατηγορίες) +SendingFromWebInterfaceIsNotAllowed=Η αποστολή από τη διεπαφή ιστού δεν επιτρέπεται. # Libelle des modules de liste de destinataires mailing LineInFile=Σειρά %s στο αρχείο @@ -119,9 +119,9 @@ DeliveryReceipt=Delivery Ack. YouCanUseCommaSeparatorForSeveralRecipients=Μπορείτε να χρησιμοποιήσετε το <b>κόμμα</b> σαν διαχωριστή για να καθορίσετε πολλούς παραλήπτες. TagCheckMail=Παρακολούθηση άνοιγμα της αλληλογραφίας TagUnsubscribe=link διαγραφής -TagSignature=Signature of sending user -EMailRecipient=Recipient Email -TagMailtoEmail=Recipient Email (including html "mailto:" link) +TagSignature=Υπογραφή του χρήστη αποστολής +EMailRecipient=Email παραλήπτη +TagMailtoEmail=E-mail παραλήπτη (συμπεριλαμβανομένου του συνδέσμου html "mailto:") NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile. # Module Notifications Notifications=Notifications @@ -139,22 +139,22 @@ NbOfTargetedContacts=Τρέχων αριθμός των στοχευμένων UseFormatFileEmailToTarget=Imported file must have format <strong>email;name;firstname;other</strong> UseFormatInputEmailToTarget=Enter a string with format <strong>email;name;firstname;other</strong> MailAdvTargetRecipients=Recipients (advanced selection) -AdvTgtTitle=Fill input fields to preselect the third parties or contacts/addresses to target -AdvTgtSearchTextHelp=Use %% as wildcards. For example to find all item like <b>jean, joe, jim</b>, you can input <b>j%%</b>, you can also use ; as separator for value, and use ! for except this value. For example <b>jean;joe;jim%%;!jimo;!jima%</b> will target all jean, joe, start with jim but not jimo and not everything that starts with jima +AdvTgtTitle=Συμπληρώστε τα πεδία εισαγωγής για να επιλέξετε εκ των προτέρων τα τρίτα μέρη ή τις επαφές / διευθύνσεις που θέλετε να στοχεύσετε +AdvTgtSearchTextHelp=Χρησιμοποιήστε %% ως μπαλαντέρ. Για παράδειγμα, για να βρείτε όλα τα στοιχεία όπως το <b>jean, joe, jim</b> , μπορείτε να εισάγετε το <b>j%%</b> , μπορείτε επίσης να χρησιμοποιήσετε. ως διαχωριστικό για αξία και χρήση! για εκτός αυτής της τιμής. Για παράδειγμα, το <b>jean, joe, jim%%;! Jimo;! Jima%</b> θα στοχεύσει όλους τους Jean, joe, ξεκινήστε με τον Jim αλλά όχι το jimo και όχι με όλα όσα αρχίζουν με jima AdvTgtSearchIntHelp=Use interval to select int or float value AdvTgtMinVal=Ελάχιστη τιμή AdvTgtMaxVal=Μέγιστη τιμή AdvTgtSearchDtHelp=Use interval to select date value AdvTgtStartDt=Start dt. AdvTgtEndDt=End dt. -AdvTgtTypeOfIncudeHelp=Target Email of third party and email of contact of the third party, or just third-party email or just contact email +AdvTgtTypeOfIncudeHelp=Στόχευση ηλεκτρονικού ταχυδρομείου τρίτου μέρους και ηλεκτρονικού ταχυδρομείου της επαφής τρίτου μέρους, ή απλώς ηλεκτρονικού ταχυδρομείου τρίτου μέρους ή απλά ηλεκτρονικού ταχυδρομείου επικοινωνίας AdvTgtTypeOfIncude=Type of targeted email AdvTgtContactHelp=Use only if you target contact into "Type of targeted email" AddAll=Add all RemoveAll=Remove all ItemsCount=Item(s) AdvTgtNameTemplate=Filter name -AdvTgtAddContact=Add emails according to criteria +AdvTgtAddContact=Προσθέστε μηνύματα ηλεκτρονικού ταχυδρομείου σύμφωνα με τα κριτήρια AdvTgtLoadFilter=Load filter AdvTgtDeleteFilter=Delete filter AdvTgtSaveFilter=Save filter @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) -DefaultOutgoingEmailSetup=Default outgoing email setup +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) +DefaultOutgoingEmailSetup=Προεπιλεγμένη ρύθμιση εξερχόμενων email Information=Πληροφορίες -ContactsWithThirdpartyFilter=Contacts with third-party filter +ContactsWithThirdpartyFilter=Επαφές με φίλτρο τρίτου μέρους diff --git a/htdocs/langs/el_GR/main.lang b/htdocs/langs/el_GR/main.lang index 6971d613515..8c10cd22771 100644 --- a/htdocs/langs/el_GR/main.lang +++ b/htdocs/langs/el_GR/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Εξοικονομήστε και μείνετε SaveAndNew=Αποθήκευση και Νέο TestConnection=Δοκιμή Σύνδεσης ToClone=Κλωνοποίηση +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Επιλέξτε τα δεδομένα που θέλετε να κλωνοποιήσετε: NoCloneOptionsSpecified=Δεν καθορίστηκαν δεδομένα προς κλωνοποίηση. Of=του @@ -829,6 +830,8 @@ Gender=Φύλο Genderman=Άνδρας Genderwoman=Γυναίκα ViewList=Προβολή λίστας +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Υποχρεωτικό Hello=Χαίρετε GoodBye=Αντιο σας @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Επιλέξτε τις επιλογές γραφή Measures=Μετρήσεις XAxis=Άξονας Χ YAxis=Άξονας Υ +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/el_GR/other.lang b/htdocs/langs/el_GR/other.lang index c63a3955e87..15ec472fef1 100644 --- a/htdocs/langs/el_GR/other.lang +++ b/htdocs/langs/el_GR/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Μόνο 1 πεδίο είναι επί του παρόντος δυνατός ως Άξονας Χ. Έχει επιλεγεί μόνο το πρώτο επιλεγμένο πεδίο. AtLeastOneMeasureIsRequired=Απαιτείται τουλάχιστον 1 πεδίο για μέτρηση AtLeastOneXAxisIsRequired=Απαιτείται τουλάχιστον 1 πεδίο για τον άξονα Χ - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Η εντολή πώλησης έχει επικυρωθεί Notify_ORDER_SENTBYMAIL=Η εντολή πωλήσεων αποστέλλεται μέσω ταχυδρομείου Notify_ORDER_SUPPLIER_SENTBYMAIL=Η εντολή αγοράς στάλθηκε μέσω ηλεκτρονικού ταχυδρομείου @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=Σύνδεσμος URL της σελίδας WEBSITE_TITLE=Τίτλος WEBSITE_DESCRIPTION=Περιγραφή WEBSITE_IMAGE=Εικόνα -WEBSITE_IMAGEDesc=Σχετική διαδρομή των μέσων εικόνας. Μπορείτε να το κρατήσετε κενό, καθώς σπάνια χρησιμοποιείται (μπορεί να χρησιμοποιηθεί από το δυναμικό περιεχόμενο για να εμφανιστεί μια μικρογραφία σε μια λίστα με αναρτήσεις ιστολογίου). Χρησιμοποιήστε το __WEBSITEKEY__ στη διαδρομή εάν η διαδρομή εξαρτάται από το όνομα του ιστότοπου. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Λέξεις κλειδιά LinesToImport=Γραμμές για εισαγωγή diff --git a/htdocs/langs/el_GR/products.lang b/htdocs/langs/el_GR/products.lang index 305f375aae5..8aacaf0bf5a 100644 --- a/htdocs/langs/el_GR/products.lang +++ b/htdocs/langs/el_GR/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Αυτό το εργαλείο ενημερώνει τ MassBarcodeInit=Μαζική barcode init MassBarcodeInitDesc=Αυτή η σελίδα μπορεί να χρησιμοποιείται για να προετοιμάσει ένα barcode σε αντικείμενα που δεν έχουν barcode. Ελέγξτε πριν από την εγκατάσταση του module barcode αν έχει ολοκληρωθεί. ProductAccountancyBuyCode=Λογιστικός Κωδικός (Αγορά) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Λογιστικός Κωδικός (Πώληση) ProductAccountancySellIntraCode=Κωδικός λογιστικής (ενδοκοινοτική πώληση) ProductAccountancySellExportCode=Λογιστικός κωδικός (εξαγωγή πώλησης) @@ -165,7 +167,7 @@ SuppliersPrices=Τιμές πωλητών SuppliersPricesOfProductsOrServices=Τιμές πωλητών (προϊόντων ή υπηρεσιών) CustomCode=Τελωνείο / εμπορεύματα / κωδικός ΕΣ CountryOrigin=Χώρα προέλευσης -Nature=Φύση του προϊόντος (υλικό / έτοιμο) +Nature=Nature of product (material/finished) ShortLabel=Σύντομη ετικέτα Unit=Μονάδα p=Μονάδα diff --git a/htdocs/langs/el_GR/projects.lang b/htdocs/langs/el_GR/projects.lang index a9273d9d0f2..a94c36251e3 100644 --- a/htdocs/langs/el_GR/projects.lang +++ b/htdocs/langs/el_GR/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=που είμαι συνδεδεμένος με το έ Time=Χρόνος ListOfTasks=Κατάλογος εργασιών GoToListOfTimeConsumed=Μεταβείτε στη λίστα του χρόνου που καταναλώνετε -GoToListOfTasks=Εμφάνιση ως λίστα -GoToGanttView=δείτε ως Gantt GanttView=Gantt View ListProposalsAssociatedProject=Κατάλογος των εμπορικών προτάσεων που σχετίζονται με το έργο ListOrdersAssociatedProject=Κατάλογος παραγγελιών πωλήσεων που σχετίζονται με το έργο @@ -188,7 +186,7 @@ PlannedWorkload=Σχέδιο φόρτου εργασίας PlannedWorkloadShort=Φόρτος εργασίας ProjectReferers=Σχετικά αντικείμενα ProjectMustBeValidatedFirst=Το έργο πρέπει να επικυρωθεί πρώτα -FirstAddRessourceToAllocateTime=Εκχωρήστε μια πηγή χρήστη σε εργασία για να διαθέσετε χρόνο +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Εισαγωγή ανά ημέρα InputPerWeek=Εισαγωγή ανά εβδομάδα InputPerMonth=Είσοδος / εισαγωγή ανά μήνα @@ -240,6 +238,7 @@ LatestModifiedProjects=Τελευταία τροποποιημένα έργα %s OtherFilteredTasks=Άλλες φιλτραρισμένες εργασίες NoAssignedTasks=Δεν εντοπίστηκαν καθήκοντα που έχουν ανατεθεί (αναθέστε το έργο / εργασίες στον τρέχοντα χρήστη από το κορυφαίο πλαίσιο επιλογής για να εισάγετε χρόνο σε αυτό) ThirdPartyRequiredToGenerateInvoice=Ένα τρίτο μέρος πρέπει να οριστεί στο έργο για να μπορεί να το τιμολογεί. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Επιτρέψτε στα σχόλια των χρηστών τις εργασίες AllowCommentOnProject=Να επιτρέπεται στα σχόλια των χρηστών τα έργα @@ -265,3 +264,4 @@ InvoiceToUse=Προσχέδιο τιμολογίου προς χρήση NewInvoice=Νέο τιμολόγιο OneLinePerTask=Μια γραμμή ανά εργασία OneLinePerPeriod=Μία γραμμή ανά περίοδο +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/el_GR/receiptprinter.lang b/htdocs/langs/el_GR/receiptprinter.lang index 49ca178442c..a0d9eff853e 100644 --- a/htdocs/langs/el_GR/receiptprinter.lang +++ b/htdocs/langs/el_GR/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Εκτυπωτής Dummy CONNECTOR_NETWORK_PRINT=Δικτυακός εκτυπωτής CONNECTOR_FILE_PRINT=Τοπικός εκτυπωτής CONNECTOR_WINDOWS_PRINT=Τοπικός εκτυπωτής Windows +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Εικονικός εκτυπωτής για ελέγχους, δεν κάνει τίποτα CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb: // FooUser: μυστικό @ computername / workgroup / Εκτυπωτής παραλαβής +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Προεπιλεγμένο προφίλ PROFILE_SIMPLE=Απλό προφίλ PROFILE_EPOSTEP=Epos Προφίλ Tep @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Μήνας τιμολογίου με γράμματα DOL_VALUE_MONTH=Μήνας τιμολογίου DOL_VALUE_DAY=Ημέρα τιμολογίου DOL_VALUE_DAY_LETTERS=Ημέρα τιμολογίου με γράμματα +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Κωδ. τιμολογίου +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Ενδοκοινοτικό ΑΦΜ +DOL_VALUE_MYSOC_CAPITAL=Κεφάλαιο Κίνησης +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/el_GR/stripe.lang b/htdocs/langs/el_GR/stripe.lang index 28c49089cf9..3b1466bcad6 100644 --- a/htdocs/langs/el_GR/stripe.lang +++ b/htdocs/langs/el_GR/stripe.lang @@ -32,6 +32,7 @@ VendorName=Όνομα του πωλητή CSSUrlForPaymentForm=Url CSS φύλλο στυλ για το έντυπο πληρωμής NewStripePaymentReceived=Πληρωμή της νέας ταινίας Stripe NewStripePaymentFailed=Η πληρωμή του νέου Stripe προσπάθησε αλλά απέτυχε +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Μυστικό κλειδί δοκιμής STRIPE_TEST_PUBLISHABLE_KEY=Κλειδί ελέγχου δοκιμαστικής έκδοσης STRIPE_TEST_WEBHOOK_KEY=Πλήκτρο δοκιμής Webhook @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Σύνδεση με τη ρύθμιση Stripe WebHoo ToOfferALinkForLiveWebhook=Σύνδεση στη ρύθμιση Stripe WebHook για κλήση του IPN (ζωντανή λειτουργία) PaymentWillBeRecordedForNextPeriod=Η πληρωμή θα καταγραφεί για την επόμενη περίοδο. ClickHereToTryAgain=<a href="%s">Κάντε κλικ εδώ για να δοκιμάσετε ξανά ...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Λόγω ισχυρών κανόνων αυθεντικότητας πελατών, η δημιουργία μιας κάρτας πρέπει να γίνεται από το Stripe backoffice. Μπορείτε να κάνετε κλικ εδώ για να μεταφερθείτε στην εγγραφή πελάτη Stripe: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/el_GR/users.lang b/htdocs/langs/el_GR/users.lang index b31fdbc0741..bc56e33fb69 100644 --- a/htdocs/langs/el_GR/users.lang +++ b/htdocs/langs/el_GR/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Χρήστες και τις ιδιότητές τους DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=Αυτή η φόρμα σάς επιτρέπει να δημιουργήσετε έναν εσωτερικό χρήστη στην εταιρεία / οργανισμό σας. Για να δημιουργήσετε έναν εξωτερικό χρήστη (πελάτη, προμηθευτή κ.λπ.), χρησιμοποιήστε το κουμπί "Δημιουργία χρήστη Dolibarr" από την κάρτα επαφών του τρίτου μέρους. -InternalExternalDesc=Ένας <b>εσωτερικός</b> χρήστης είναι χρήστης που αποτελεί μέρος της εταιρείας / οργανισμού σας. <br> Ένας <b>εξωτερικός</b> χρήστης είναι πελάτης, πωλητής ή άλλος. <br><br> Και στις δύο περιπτώσεις, τα δικαιώματα καθορίζουν δικαιώματα στο Dolibarr, και ο εξωτερικός χρήστης μπορεί να έχει διαφορετικό διαχειριστή μενού από τον εσωτερικό χρήστη (βλέπε Αρχική σελίδα - Εγκατάσταση - Εμφάνιση) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Δημιουργήθηκε χρήστη θα είναι ένας εσωτερικός χρήστης (επειδή δεν συνδέεται με ένα συγκεκριμένο τρίτο μέρος) @@ -113,3 +113,5 @@ CantDisableYourself=Δεν μπορείτε να απενεργοποιήσετ ForceUserExpenseValidator=Έγκριση έκθεσης εξόδου ισχύος ForceUserHolidayValidator=Έγκριση αίτησης για άδεια εξόδου ValidatorIsSupervisorByDefault=Από προεπιλογή, ο επικυρωτής είναι ο επόπτης του χρήστη. Κρατήστε κενό για να διατηρήσετε αυτή τη συμπεριφορά. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/el_GR/website.lang b/htdocs/langs/el_GR/website.lang index 706b8c5caf1..b64c183fce7 100644 --- a/htdocs/langs/el_GR/website.lang +++ b/htdocs/langs/el_GR/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Προβολή σελίδας σε νέα καρτέλα SetAsHomePage=Ορισμός σαν αρχική σελίδα RealURL=Πραγματική διεύθυνση URL ViewWebsiteInProduction=Προβάλετε τον ιστότοπο χρησιμοποιώντας τις διευθύνσεις URL για το σπίτι -SetHereVirtualHost=<u>Χρήση με Apache / NGinx / ...</u> <br> Αν μπορείτε να δημιουργήσετε στον διακομιστή ιστού (Apache, Nginx, ...) ένα ειδικό εικονικό κεντρικό υπολογιστή με ενεργοποιημένη την PHP και έναν κατάλογο Root σε <br> <strong>%s</strong> <br> στη συνέχεια, ορίστε το όνομα του εικονικού κεντρικού υπολογιστή που έχετε δημιουργήσει στις ιδιότητες του ιστότοπου, οπότε η προεπισκόπηση μπορεί να γίνει επίσης χρησιμοποιώντας αυτήν την αποκλειστική πρόσβαση στο διακομιστή web αντί για τον εσωτερικό διακομιστή Dolibarr. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Χρήση με ενσωματωμένο διακομιστή PHP</u> <br> Στο περιβάλλον ανάπτυξης, μπορεί να προτιμάτε να δοκιμάσετε τον ιστότοπο με τον ενσωματωμένο διακομιστή ιστού PHP (απαιτείται PHP 5.5) εκτελώντας <br> <strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Εκτελέστε τον ιστότοπό σας με έναν άλλο πάροχο φιλοξενίας Dolibarr</u> <br> Αν δεν διαθέτετε διακομιστή ιστού όπως το Apache ή το NGinx που διατίθεται στο Διαδίκτυο, μπορείτε να εξάγετε και να εισάγετε την ιστοσελίδα σας σε μια άλλη παρουσία Dolibarr που παρέχεται από έναν άλλο πάροχο φιλοξενίας Dolibarr που παρέχει πλήρη ενσωμάτωση στην ενότητα Website. Μπορείτε να βρείτε μια λίστα με ορισμένους παρόχους φιλοξενίας Dolibarr στη <a href="https://saas.dolibarr.org" target="_blank">διεύθυνση https://saas.dolibarr.org</a> CheckVirtualHostPerms=Ελέγξτε επίσης ότι ο εικονικός κεντρικός υπολογιστής έχει άδεια <strong>%s</strong> σε αρχεία σε <br> <strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Λυπούμαστε, αυτός ο ιστότο WEBSITE_USE_WEBSITE_ACCOUNTS=Ενεργοποιήστε τον πίνακα λογαριασμού web site WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Ενεργοποιήστε τον πίνακα για να αποθηκεύσετε λογαριασμούς ιστότοπων (login / pass) για κάθε ιστότοπο / τρίτο μέρος YouMustDefineTheHomePage=Πρέπει πρώτα να ορίσετε την προεπιλεγμένη Αρχική σελίδα -OnlyEditionOfSourceForGrabbedContentFuture=Προειδοποίηση: Η δημιουργία μιας ιστοσελίδας με την εισαγωγή μιας εξωτερικής ιστοσελίδας προορίζεται αποκλειστικά για έμπειρους χρήστες. Ανάλογα με την πολυπλοκότητα της σελίδας πηγής, το αποτέλεσμα της εισαγωγής μπορεί να διαφέρει από το πρωτότυπο. Επίσης, αν η αρχική σελίδα χρησιμοποιεί κοινά στυλ CSS ή αντιφατικό javascript, μπορεί να σπάσει το βλέμμα ή τα χαρακτηριστικά του επεξεργαστή ιστότοπου κατά την εργασία σε αυτή τη σελίδα. Αυτή η μέθοδος είναι ένας πιο γρήγορος τρόπος για να δημιουργήσετε μια σελίδα, αλλά συνιστάται η δημιουργία της νέας σελίδας από την αρχή ή ενός προτεινόμενου προτύπου σελίδας. <br> Σημειώστε επίσης ότι οι τροποποιήσεις της πηγής HTML θα είναι δυνατές όταν το περιεχόμενο της σελίδας έχει αρχικοποιηθεί, αρπάζοντάς το από μια εξωτερική σελίδα (ο εκδότης "Online" ΔΕΝ θα είναι διαθέσιμος) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Μόνο έκδοση πηγής HTML είναι δυνατή όταν το περιεχόμενο έχει ληφθεί από έναν εξωτερικό ιστότοπο GrabImagesInto=Πιάσε επίσης τις εικόνες που βρέθηκαν στο css και τη σελίδα. ImagesShouldBeSavedInto=Οι εικόνες πρέπει να αποθηκεύονται στον κατάλογο @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=Για καλές πρακτικές SEO, χρησιμ MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/en_AU/admin.lang b/htdocs/langs/en_AU/admin.lang index d4c9f69d86a..0490a990d18 100644 --- a/htdocs/langs/en_AU/admin.lang +++ b/htdocs/langs/en_AU/admin.lang @@ -1,10 +1,18 @@ # Dolibarr language file - Source file is en_US - admin +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. YouCanSubmitFile=You can upload the .zip file of module package from here: OldVATRates=Old GST rate NewVATRates=New GST rate +ExternalModule=External module Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). +DictionaryCivility=Honorific titles DictionaryVAT=GST Rates or Sales Tax Rates ValueOfConstantKey=Value of a configuration constant +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. OptionVatMode=GST due SuppliersCommandModel=Complete template of Purchase Order SuppliersInvoiceModel=Complete template of Vendor Invoice diff --git a/htdocs/langs/en_AU/bills.lang b/htdocs/langs/en_AU/bills.lang index c77da1a3417..0488d509e28 100644 --- a/htdocs/langs/en_AU/bills.lang +++ b/htdocs/langs/en_AU/bills.lang @@ -1,4 +1,8 @@ # Dolibarr language file - Source file is en_US - bills +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? PaymentTypeCHQ=Cheque PaymentTypeShortCHQ=Cheque BankCode=BSB @@ -11,4 +15,5 @@ MenuCheques=Cheques NewChequeDeposit=New Cheque deposit Cheques=Cheques NbCheque=Number of cheques -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +RevenueStamp=Tax stamp +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template diff --git a/htdocs/langs/en_AU/cashdesk.lang b/htdocs/langs/en_AU/cashdesk.lang index adbd9cf9e57..690785ca368 100644 --- a/htdocs/langs/en_AU/cashdesk.lang +++ b/htdocs/langs/en_AU/cashdesk.lang @@ -1,2 +1,4 @@ # Dolibarr language file - Source file is en_US - cashdesk NoVAT=No GST for this sale +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts diff --git a/htdocs/langs/en_AU/compta.lang b/htdocs/langs/en_AU/compta.lang index 83b73fd798d..b5831e1cb0e 100644 --- a/htdocs/langs/en_AU/compta.lang +++ b/htdocs/langs/en_AU/compta.lang @@ -8,7 +8,6 @@ CheckReceipt=Cheque deposit CheckReceiptShort=Cheque deposit NewCheckDeposit=New cheque deposit DateChequeReceived=Cheque received date -RulesResultDue=- It includes outstanding invoices, expenses, GST, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and GST and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, GST and salaries. <br>- It is based on the payment dates of the invoices, expenses, GST and salaries. The donation date for donation. VATReportByCustomersInInputOutputMode=Report by the customer GST collected and paid SeeVATReportInInputOutputMode=See report <b>%sGST encasement%s</b> for a standard calculation diff --git a/htdocs/langs/en_CA/admin.lang b/htdocs/langs/en_CA/admin.lang index 3f3f6558559..02f884882dd 100644 --- a/htdocs/langs/en_CA/admin.lang +++ b/htdocs/langs/en_CA/admin.lang @@ -1,9 +1,17 @@ # Dolibarr language file - Source file is en_US - admin +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. YouCanSubmitFile=You can upload the .zip file of module package from here: +ExternalModule=External module Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). +DictionaryCivility=Honorific titles LocalTax1Management=PST Management ValueOfConstantKey=Value of a configuration constant CompanyZip=Postal code +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. LDAPFieldZip=Postal code SuppliersCommandModel=Complete template of Purchase Order SuppliersInvoiceModel=Complete template of Vendor Invoice diff --git a/htdocs/langs/en_GB/admin.lang b/htdocs/langs/en_GB/admin.lang index 41895afffce..f435d660136 100644 --- a/htdocs/langs/en_GB/admin.lang +++ b/htdocs/langs/en_GB/admin.lang @@ -10,6 +10,8 @@ ErrorDecimalLargerThanAreForbidden=Error: A precision higher than <b>%s</b> is n ErrorReservedTypeSystemSystemAuto=Entry of 'system' and 'systemauto' for this type is reserved. You can use 'user' as a value to add your own record ErrorCodeCantContainZero=Code can't contain value 0 (zero) MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to prevent any uploads) +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" CurrentValueSeparatorThousand=Thousands separator PositionByDefault=Default position MenusDesc=Menu managers set the content of the two menu bars (horizontal and vertical). @@ -18,6 +20,7 @@ PurgeDeleteLogFile=Delete log files, including <b>%s</b> defined by Syslog modul ConfirmPurgeAuditEvents=Are you sure you want to purge all security events? All security logs will be deleted but no other data will be removed. ImportPostgreSqlDesc=To import a backup file, you must use the pg_restore command from the command line: CommandsToDisableForeignKeysForImportWarning=This is mandatory if you want to restore your sql dumps later +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download from external websites on the Internet... ModulesMarketPlaces=Find external applications and modules AvailableOnlyIfJavascriptAndAjaxNotDisabled=Available only if JavaScript is enabled @@ -42,11 +45,16 @@ UMaskExplanation=This parameter allows you to define permissions set by default ListOfDirectories=List of OpenDocument template directories ListOfDirectoriesForModelGenODT=List of directories containing template files in OpenDocument format.<br><br>Put here full path of directories.<br>Add a carriage return between each directory.<br>To add a directory of the GED module, add here <b>DOL_DATA_ROOT/ecm/yourdirectoryname</b>.<br><br>Files in those directories must end with <b>.odt</b> or <b>.ods</b>. FollowingSubstitutionKeysCanBeUsed=<br>To learn how to create your .odt document templates, before storing them in those directories, read wiki documentation: +ExternalModule=External module Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). Module50200Name=PayPal +DictionaryCivility=Honorific titles DictionaryAccountancyJournal=Finance journals ValueOfConstantKey=Value of a configuration constant CompanyZip=Postcode +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. LDAPFieldZip=Postcode GenbarcodeLocation=Barcode generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".<br>For example: /usr/local/bin/genbarcode SuppliersCommandModel=Complete template of Purchase Order diff --git a/htdocs/langs/en_GB/bills.lang b/htdocs/langs/en_GB/bills.lang index 0d3b3922da9..b500a49afcd 100644 --- a/htdocs/langs/en_GB/bills.lang +++ b/htdocs/langs/en_GB/bills.lang @@ -2,6 +2,10 @@ InvoiceDeposit=Deposit invoice InvoiceDepositAsk=Deposit invoice InvoiceDepositDesc=This kind of invoice is raised when a deposit has been received. +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? PaymentHigherThanReminderToPay=Payment higher than balance outstanding ConfirmValidatePayment=Are you sure you want to validate this payment? No changes can be made once payment is validated. ShowInvoiceDeposit=Show deposit invoice @@ -21,6 +25,7 @@ PrettyLittleSentence=Accept the amount of payments due by cheques issued in my n MenuCheques=Cheques Cheques=Cheques NbCheque=Number of cheques -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +RevenueStamp=Tax stamp +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for deposit invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 CactusNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for credit notes and %syymm-nnnn for deposit invoices where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 diff --git a/htdocs/langs/en_GB/cashdesk.lang b/htdocs/langs/en_GB/cashdesk.lang index 0188074370e..87ee48c4d72 100644 --- a/htdocs/langs/en_GB/cashdesk.lang +++ b/htdocs/langs/en_GB/cashdesk.lang @@ -6,3 +6,5 @@ NewSell=New sale RestartSelling=Go back to sales NoProductFound=No product found NoArticle=No product +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts diff --git a/htdocs/langs/en_GB/projects.lang b/htdocs/langs/en_GB/projects.lang index f506b1a134e..be0ee26f4eb 100644 --- a/htdocs/langs/en_GB/projects.lang +++ b/htdocs/langs/en_GB/projects.lang @@ -1,2 +1,3 @@ # Dolibarr language file - Source file is en_US - projects CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See referrers tab. +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time diff --git a/htdocs/langs/en_GB/users.lang b/htdocs/langs/en_GB/users.lang index 33514bcb0de..99d06414135 100644 --- a/htdocs/langs/en_GB/users.lang +++ b/htdocs/langs/en_GB/users.lang @@ -5,6 +5,7 @@ RemoveFromGroup=Remove from a group ConfirmPasswordReset=Confirm password change NonAffectedUsers=Non-assigned users UsePersonalValue=Use a personal choice +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted through inherited rights from one of the user groups. UserWillBeInternalUser=Created user will be an internal user (because they are not linked to a particular third party) UserWillBeExternalUser=Created user will be an external user (because they are linked to a particular third party) diff --git a/htdocs/langs/en_GB/website.lang b/htdocs/langs/en_GB/website.lang index ef8e16da6ad..66eedde4939 100644 --- a/htdocs/langs/en_GB/website.lang +++ b/htdocs/langs/en_GB/website.lang @@ -1,2 +1,4 @@ # Dolibarr language file - Source file is en_US - website PageNameAliasHelp=Name or alias of the page.<br>This alias is also used to forge an SEO URL when the website is run from a Virtual host of a Web server (like Apache, Nginx, ...). Use the button "<strong>%s</strong>" to edit this alias. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. diff --git a/htdocs/langs/en_IN/admin.lang b/htdocs/langs/en_IN/admin.lang index 74c99fddfd7..ad87b77f8aa 100644 --- a/htdocs/langs/en_IN/admin.lang +++ b/htdocs/langs/en_IN/admin.lang @@ -1,5 +1,9 @@ # Dolibarr language file - Source file is en_US - admin +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. YouCanSubmitFile=You can upload the .zip file of module package from here: +ExternalModule=External module Module20Name=Quotations Module20Desc=Management of quotations Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). @@ -10,7 +14,11 @@ Permission25=Send quotations Permission26=Close quotations Permission27=Delete quotations Permission28=Export quotations +DictionaryCivility=Honorific titles ValueOfConstantKey=Value of a configuration constant +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. PropalSetup=Quotation module setup ProposalsNumberingModules=Quotation numbering models ProposalsPDFModules=Quotation documents models diff --git a/htdocs/langs/en_IN/bills.lang b/htdocs/langs/en_IN/bills.lang index fd7a230ef58..2f4fcf8b1e9 100644 --- a/htdocs/langs/en_IN/bills.lang +++ b/htdocs/langs/en_IN/bills.lang @@ -1,3 +1,8 @@ # Dolibarr language file - Source file is en_US - bills +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? RelatedCommercialProposals=Related quotations -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +RevenueStamp=Tax stamp +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template diff --git a/htdocs/langs/en_IN/other.lang b/htdocs/langs/en_IN/other.lang index 9389a3062de..47ee7b86fa1 100644 --- a/htdocs/langs/en_IN/other.lang +++ b/htdocs/langs/en_IN/other.lang @@ -3,4 +3,3 @@ Notify_PROPAL_VALIDATE=Quotation validated Notify_PROPAL_SENTBYMAIL=Quotation sent by mail NumberOfProposals=Number of quotations NumberOfUnitsProposals=Number of units on quotations -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. diff --git a/htdocs/langs/en_IN/projects.lang b/htdocs/langs/en_IN/projects.lang index bece63d2190..a8becbc9085 100644 --- a/htdocs/langs/en_IN/projects.lang +++ b/htdocs/langs/en_IN/projects.lang @@ -1,2 +1,3 @@ # Dolibarr language file - Source file is en_US - projects +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time OppStatusPROPO=Quotation diff --git a/htdocs/langs/es_AR/main.lang b/htdocs/langs/es_AR/main.lang index 50e919e9565..1451ea1c508 100644 --- a/htdocs/langs/es_AR/main.lang +++ b/htdocs/langs/es_AR/main.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr -FONTFORPDF=helvetica +FONTFORPDF=helvética FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, @@ -19,23 +19,578 @@ FormatDateHourShort=%m/%d/%Y %I:%M %p FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p FormatDateHourTextShort=%b %d, %Y, %I:%M %p FormatDateHourText=%B %d, %Y, %I:%M %p +DatabaseConnection=Conexión de base de datos +NoTemplateDefined=No hay plantilla para este tipo de email +AvailableVariables=Variables disponibles de substitución +EmptySearchString=Ingresar una cadena de búsqueda no vacía +NoRecordFound=Sin registros +NoRecordDeleted=Sin registros eliminados +NotEnoughDataYet=Sin datos suficientes +NoError=Sin error +ErrorFieldRequired=El campo '%s' es requerido +ErrorFieldFormat=El campo '%s' tiene un valor erroneo +ErrorFileDoesNotExists=El campo %s no existe +ErrorFailedToOpenFile=Fallo abrir archivo %s +ErrorCanNotCreateDir=No se puede crear la carpeta %s +ErrorCanNotReadDir=No se puede leer la carpeta %s +ErrorConstantNotDefined=El parámetro %s no está definido +ErrorSQL=Error SQL +ErrorLogoFileNotFound=El archivo del logo '%s' no fue encontrado +ErrorGoToGlobalSetup=Ir a configuración de 'Empresa/Organización' para solucionar esto +ErrorGoToModuleSetup=Ir al Módulo de configuración para solucionar esto +ErrorFailedToSendMail=Falló el envío del email (remitente=%s, receptor=%s) +ErrorFileNotUploaded=El archivo no fue cargado. Controle que el tamaño no exceda el máximo permitido, que haya espacio disponible en el disco y que no haya ya un archivo con el mismo nombre en la carpeta. +ErrorInternalErrorDetected=Se detectó un error +ErrorWrongHostParameter=Parámetros de host equivocados +ErrorYourCountryIsNotDefined=Su país no está definido. Vaya a Inicio-Configuración-Editar e ingrese el formulario nuevamente. +ErrorRecordIsUsedByChild=Falló la eliminación de este registro. Este registro es usado por al menos un registro hijo. +ErrorWrongValue=Valor erróneo +ErrorWrongValueForParameterX=Valor erróneo para el parámetro %s +ErrorNoRequestInError=Ningún pedido en error +ErrorServiceUnavailableTryLater=El servicio no está disponible al momento. Intente nuevamente luego. +ErrorDuplicateField=Valor duplicado en un campo único. +ErrorSomeErrorWereFoundRollbackIsDone=Se encontró algunos errores. Los cambios fueron echados para atrás. +ErrorConfigParameterNotDefined=El parámetro <b>%s</b> no está definido en el archivo de configuración de Dolibarr <b>conf.php</b>. +ErrorCantLoadUserFromDolibarrDatabase=Falló la busqueda del usuario <b>%s</b> en la base de datos de Dolibarr. +ErrorNoVATRateDefinedForSellerCountry=Error, no se ha definido tasa de IVA para el país '%s'. +ErrorNoSocialContributionForSellerCountry=Error, no se ha definido tasa de impuestos sociales/fiscales para el país '%s'. +ErrorFailedToSaveFile=Error, no se pudo guardar el archivo. +ErrorCannotAddThisParentWarehouse=Ud. está intentando agregar un depósito padre el cuál ya es hijo de un depósito existente +MaxNbOfRecordPerPage=Máx. número de registros por página +NotAuthorized=Ud. no está autorizado para hacer eso. +SelectDate=Elegir una fecha +SeeHere=Ver aquí +ClickHere=Hacer click aquí +BackgroundColorByDefault=Color del fondo por defecto +FileRenamed=El archivo fue renombrado con éxito. +FileGenerated=El archivo fue generado con éxito. +FileSaved=El archivo fue guardado con éxito. +FileUploaded=El archivo fue cargado con éxito +FileTransferComplete=Archivo(s) cargado con éxito +FilesDeleted=Archivo(s) eliminados con éxito +FileWasNotUploaded=Se eligió un archivo para adjuntar pero aún no fue cargado. Haga click en "Adjuntar archivo" para eso. +NbOfEntries=No. de entradas +GoToWikiHelpPage=Leer ayuda en línea (Se necesita acceso a Internet) +GoToHelpPage=Leer ayuda +LevelOfFeature=Nivel de características +NotDefined=Sin definir +DolibarrInHttpAuthenticationSoPasswordUseless=El modo de autenticación en Dolibarr se configuro a <b>%s</b> en el archivo de configuración <b>conf.php</b>. <br>Esto significa que la base de datos de las contraseñas es externa a Dolibarr, por lo que el cambio de este campo puede no tener efecto. +Undefined=Indefinido +PasswordForgotten=¿Olvidó la contraseña?' +NoAccount=¿No tiene cuenta? +SeeAbove=Ver arriba +LastConnexion=Último acceso +PreviousConnexion=Acceso previo +ConnectedOnMultiCompany=Conectado en el entorno +AuthenticationMode=Modo de autenticación +RequestedUrl=URL requerido +DatabaseTypeManager=Administrador de tipo de base de datos +RequestLastAccessInError=Error en el último requerimiento de acceso a la base de datos +ReturnCodeLastAccessInError=Código de respuesta para el último error al requerir acceso a la base de datos +InformationLastAccessInError=Información del último error al requerir acceso a la base de datos +YouCanSetOptionDolibarrMainProdToZero=Puede leer el archivo log o establecer la opción $dolibarr_main_prod a 0 en su archivo de configuración para obtener más información. +InformationToHelpDiagnose=Esta información puede ser útil para propósitos de diagnóstico (puede poner la opción $dolibarr_main_prod a '1' para sacar dichas noticias) +TechnicalID=ID técnico +LineID=ID línea +PrecisionUnitIsLimitedToXDecimals=Dolibarr fue configurada para limitar la precisión en el precio de la unidad a <b>%s</b> decimales. +DoTest=Prueba +ToFilter=Filtro +WarningYouHaveAtLeastOneTaskLate=Atención, usted tiene al menos un elemento que a excedido el tiempo de tolerancia. +yes=si All=Todos +MediaBrowser=Explorador de medios +Under=bajo +Period=Período +PeriodEndDate=Fecha final para el período +SelectedPeriod=Período elegido +PreviousPeriod=Período previo +NotClosed=Sin cerrar +Enabled=Habilitado +Enable=Habilitar +Disable=Deshabilitar +Disabled=Cancelado +Add=Agregar +AddLink=Agregar enlace +RemoveLink=Quitar enlace +AddToDraft=Agregar a borrador +Update=Actualizar +CloseBox=Quitar widget de su tablero +ConfirmSendCardByMail=¿Desea Ud, enviar esta tarjeta por email a <b>%s</b>? Delete=Borrar +Remove=Quitar +Cancel=Cancelar +Validate=Confirmar +ValidateAndApprove=Confirmar y Aprobar +ToValidate=Para confirmar +NotValidated=Sin confirmar +Save=Guardar +SaveAs=Guarda Como +TestConnection=Probar conexión +ToClone=Clonar +ConfirmCloneAsk=¿Estás seguro que quieres clonar el objeto <b>%s</b>? +ConfirmClone=Elija datos que quiere clonar: +NoCloneOptionsSpecified=Datos para clonar sin definir +Run=Correr +Show=Mostrar +Hide=Esconder +ShowCardHere=Mostrar tarjeta +SearchOf=Buscar +Valid=Valida +ReOpen=Re-abrir +Upload=Cargar +ResizeOrCrop=Redimensionar o Recortar +Recenter=Recentrar Groups=Los grupos +NoUserGroupDefined=No hay grupo de usuario definido +PasswordRetype=Repetir su contraseña +NoteSomeFeaturesAreDisabled=Notar que muchas características/módulos están des habilitados en esta demostración. +NameSlashCompany=Nombre/Compañía +PersonalValue=Valor personal +CurrentValue=Valor corriente +MultiLanguage=Multi-idioma +DateOfLine=Fecha de línea +DurationOfLine=Duración de línea +Model=Plantilla de doc +DefaultModel=Plantilla predeterminada para doc +Action=Evento +About=De nosotros +AmountByMonth=Monto por mes +Limit=Limite +Limits=Limites +Logout=Salir +NoLogoutProcessWithAuthMode=Sin características de desconexión con el modo de autenticación <b>%s</b> Connection=Iniciar Sesión Setup=Preparar +Previous=Previos +Cards=Tarjeta +Card=Tarjeta +HourStart=Hora de comienzo DateCreation=Fecha de Creación +DateModification=Fecha modificación +DateLastModification=Fecha última modificación +DateDue=Fecha vencimiento +DateValue=Fecha del valor +DateValueShort=Fecha del valor +DateOperation=Fecha de operación +DateOperationShort=Fecha Oper. +DateRequest=Fecha requerimiento +DateProcess=Fecha procesado +DateBuild=Fecha construcción del informe +DatePayment=Fecha de pago +DateApprove=Fecha aprovación +DateApprove2=Fecha aprobación (segunda aprobación) +RegistrationDate=Fecha de registro +UserCreation=Usuario de creación +UserModification=Usuario de modificación +UserValidation=Usuario de confirmación +UserCreationShort=Crear usuario +UserModificationShort=Modif. usuario +UserValidationShort=Confir. usuario +HourShort=Hr Rate=Tarifa +CurrencyRate=Tipo de cambio +UseLocalTax=Incluido impuesto +UserAuthor=Usuario de creación +UserModif=Usuario de última actualización +DefaultValue=Valor predeterminado +DefaultValues=Valores/filtros/ordenación predeterminados +UnitPriceHT=Precio unitario (neto) +UnitPriceHTCurrency=Precio unitario (neto) (moneda) +UnitPriceTTC=Precio unitario +PriceUHT=P.U. (neto) +PriceUHTCurrency=P.U. (moneda) +PriceUTTC=P.U. (con imp.) +Amount=Monto +AmountInvoice=Monto de factura +AmountInvoiced=Monto facturado +AmountInvoicedHT=Monto facturado (con imp.) +AmountInvoicedTTC=Monto facturado (neto) +AmountPayment=Monto pagado +AmountHTShort=Monto (neto) +AmountTTCShort=Monto (con imp.) +AmountHT=Monto (neto) +AmountTTC=Monto (con imp.) +AmountVAT=Monto impuesto +MulticurrencyAlreadyPaid=Ya pagado, moneda original +MulticurrencyRemainderToPay=Faltante a pagar, moneda original MulticurrencyPaymentAmount=Monto del pago, moneda original +MulticurrencyAmountHT=Monto (neto), moneda original +MulticurrencyAmountTTC=Monto (inc. imp.), moneda original +MulticurrencyAmountVAT=Monto del impuesto, moneda original +AmountLT1=Monto del impuesto 2 +AmountLT2=Monto del impuesto 3 +AmountLT1ES=Monto RE +AmountLT2ES=Monto IRPF +AmountTotal=Monto total +AmountAverage=Monto promedio +PriceQtyMinHT=Precio por cant. mínimo (neto) +PriceQtyMinHTCurrency=Precio por cant. mínimo (neto) (moneda) +TotalHTShort=Total (neto) +TotalHT100Short=Total 100%% (neto) +TotalHTShortCurrency=Total (neto en moneda) +TotalTTCShort=Total (incl. imp.) +TotalHT=Total (neto) +TotalHTforthispage=Total (neto) para esta página +Totalforthispage=Total para esta página +TotalTTC=Total (incl. imp.) +TotalTTCToYourCredit=Total (incl. impuesto) para su crédito +TotalVAT=Impuesto total +TotalLT1=Impuesto total 2 +TotalLT2=Total impuesto 3 +HT=Neto +TTC=Con imp. +INCVATONLY=Inc. IVA +INCT=Inc. todos los impuestos +VAT=Impuesto de ventas +VATs=Impuesto ventas +LT1=Impuesto ventas 2 +LT1Type=Impuesto ventas tipo 2 +LT2=Impuesto ventas 3 +LT2Type=Impuesto ventas tipo 3 +LT2IN=SGSR +LT1GC=Ctvs. adicionales +VATRate=Tasa Impuesto +VATCode=Código Tasa Impuesto +VATNPR=Tas impuesto NPR +DefaultTaxRate=Tasa de impuesto predeterminada +Average=Promedio +RemainToPay=Remanente a pagar +Module=Módulo/Aplicación +Modules=Módulos/Aplicaciones +Option=Opciones List=Lista +FullList=Toda la lista RefSupplier=Ref. Proveedor +CommercialProposalsShort=Propuesta comercial +Comment=Comentar +ActionsToDo=Eventos a cumplir +ActionsToDoShort=Para hacer +ActionsDoneShort=Hecho +ActionNotApplicable=No aplicables +ActionRunningNotStarted=Para comenzar +LatestLinkedEvents=Últimos eventos %s enlazados CompanyFoundation=Empresa / Organización +Accountant=Contador +ContactsForCompany=Contactos para esta tercera parte +ContactsAddressesForCompany=Contactos/direcciones para esta tercer parte +AddressesForCompany=Dirección para esta tercera parte +ActionsOnCompany=Eventos para esta tercera parte +ActionsOnContact=Eventos para este contacto/dirección +ActionsOnContract=Evento para este contacto +ActionsOnProduct=Eventos respecto a este producto +NActionsLate=%s tarde +ToDo=Para hacer +Completed=Completado +RequestAlreadyDone=Requerimiento ya guardado +FilterOnInto=Criterio de búsqueda '<strong>%s</strong>' en los campos %s +RemoveFilter=Quitar filtro +ChartGenerated=Gráfico generado +ChartNotGenerated=El gráfico no se generó +GeneratedOn=Construido en %s +Generate=Generado +DolibarrStateBoard=Estadísticas de Base de Datos +DolibarrWorkBoard=Items Abiertos +NoOpenedElementToProcess=No hay elementos abiertos para procesar +NotYetAvailable=Todavía no disponible +Categories=Etiquetas/categorías +to=para +To=para +Qty=Ctd +ChangedBy=Cambiado por +ResultKo=Falla +Reporting=Informando +Reportings=Informando +StatusInterInvoiced=Facturado Opened=Abierto +ClosedAll=Cerrado (todo) +ByCompanies=Por terceros +ByUsers=Por usuarios +Rejects=Rechazos +NextStep=Próximo paso +None=Ninguna +Late=Tarde +LateDesc=Un item se define como Demorado en relación\na la configuración del sistema en el menú\nInicio - Configuraciones - Alertas. +NoItemLate=No hay último item +Photo=Fotografía +Photos=Fotografías +AddPhoto=Agregar foto +DeletePicture=Eliminar foto +ConfirmDeletePicture=¿Confirma eliminar foto? Login=Iniciar Sesión +LoginEmail=Ingreso (email) +LoginOrEmail=Usuario o email +CurrentLogin=Usuario actual +EnterLoginDetail=Ingresar datos de usuario actual +January=Enero +February=Febrero +March=Marzo +April=Abril +May=Mayo +June=Junio +July=Julio +August=Agosto +September=Septiembre +October=Octubre +November=Noviembre +Month01=Enero +Month02=Febrero +Month03=Marzo +Month04=Abril +Month05=Mayo +Month06=Junio +Month07=Julio +Month08=Agosto +Month09=Septiembre +Month10=Octubre +Month11=Noviembre +Month12=Diciembre +MonthShort01=Ene +MonthShort04=Abr +MonthShort08=Ago +MonthShort12=Dic +MonthVeryShort02=V +MonthVeryShort03=Ma +MonthVeryShort05=Ma +AttachedFiles=Adjuntar archivos y documentos +JoinMainDoc=Unir documento principal +ReportName=Nombre de informe +ReportPeriod=Período del informe +Fill=Llenar +Reset=Resetear +NotAllowed=No permitido +ReadPermissionNotAllowed=Leer permisos no permitidos +AmountInCurrency=Monto en la moneda %s +FindBug=Informar un error +NbOfThirdParties=Número de terceras partes +NbOfLines=Número de líneas +NbOfObjectReferers=Número de items relacionados +DateFromTo=Desde %s a %s +DateFrom=Desde %s +Check=Cheque +Uncheck=Sin marcar +Internals=Interno +Externals=Externo +Warning=Atención +Warnings=Alarmas +BuildDoc=Construir Doc +Entity=Entorno +CustomerPreview=Vista previa cliente +SupplierPreview=Vista previa proveedor +ShowCustomerPreview=Mostrar vista previa cliente +ShowSupplierPreview=Mostrar vista previa proveedor +Currency=Moneda +InfoAdmin=Información para administradores +Undo=Deshacer +UndoExpandAll=Deshacer expandir +Reason=Motivo +FeatureNotYetSupported=Característica todavía sin soportar +Response=Responder +SendByMail=Enviar por email +MailSentBy=Email enviado por +TextUsedInTheMessageBody=Cuerpo del mensaje +SendMail=Enviar email +NoEMail=Sin email +NoMobilePhone=Sin teléfono Mobil +FollowingConstantsWillBeSubstituted=Las siguientes constantes serán reemplazadas\ncon los correspondientes valores. +BackToList=Volver a la lista +GoBack=Retroceder +CanBeModifiedIfOk=Puede modificarse si es válida +CanBeModifiedIfKo=Puede modificarse si no es válida +RecordCreatedSuccessfully=Registro creado con éxito +RecordsModified=%s registro(s) modificados +RecordsDeleted=%s registro(s) eliminados +RecordsGenerated=%s registro(s) generados +AutomaticCode=Código automático +FeatureDisabled=Característica deshabilitada +MoveBox=Mover el widget +Offered=Ofertado +NotEnoughPermissions=Ud. no tiene permiso para esta acción +SessionName=Nombre de sesión +Receive=Recibir +CompleteOrNoMoreReceptionExpected=Completo o no se espera más +ExpectedValue=Valor Esperado +YouCanChangeValuesForThisListFromDictionarySetup=Ud. puede cambiar los valores de esta lista\ndesde menu Configuración - Diccionarios +YouCanChangeValuesForThisListFrom=Ud. puede cambiar los valores de esta lista\ndesde menú %s +YouCanSetDefaultValueInModuleSetup=Ud. puede establecer el valor predeterminado cuando se\ncrea un nuevo registro en la configuración del módulo +Documents=Archivos enlazados +UploadDisabled=Carga deshabilitada +ThisLimitIsDefinedInSetup=Límite Dolibarr (Menú inicio-configuración-seguridad):\n%s KB, Límite PHP: %s Kb +NoFileFound=Ningún documento guardado en esta carpeta +CurrentMenuManager=Administrador de menú actual +Layout=Diseño +DisabledModules=Deshabilitar módulos +DateOfSignature=Fecha de firma +HidePassword=Mostrar comándos con contraseña escondida +UnHidePassword=Mostrar comando real con contraseña visible +RootOfMedias=Carpeta raíz de medios públicos (/medios) +AddNewLine=Agregar nueva línea +AddFile=Agregar archivo +FreeZone=No hay producto/servicio predefinido +FreeLineOfType=Item libre del tipo: +CloneMainAttributes=Clonar objeto con principales atributos +PDFMerge=Unir PDF +Merge=Unir +DocumentModelStandardPDF=Plantilla de PDF standard +PrintContentArea=Mostrar area principal del contenido a imprimir +MenuManager=Administrador de menú +WarningYouAreInMaintenanceMode=Atención, esta en modo mantenimiento:\nsolo usuarios <b>%s</b> tienen permitido\nusar la aplicación en este modo. +CoreErrorTitle=Error de sistema +CoreErrorMessage=Perdón, a ocurrido un error. Haga contacto\ncon su administrador de sistema para chequear\nlos logs o deshabilitar $dolibarr_main_prod=1 para\nobtener más información. +ValidatePayment=Confirmar pago +FieldsWithAreMandatory=Los campos con <b>%s</b> son mandatorios +FieldsWithIsForPublic=Los campos con <b>%s</b> son mostrados en la lista pública de miembros. Si no desea esto, quite el tilde en la casilla "público". +AccordingToGeoIPDatabase=(de acuerdo a la conversión GeoIP) +RequiredField=Campo requerido +ToTest=Prueba +ValidateBefore=El item debe ser validado antes de usar esta característica +TotalizableDesc=El campo se puede totalizar en la lista +Private=Contacot Privado +Hidden=Escondido +Source=Fuente +IM=Mensaje instantáneo +NewAttribute=Nuevo atributo +AttributeCode=Código de atributo +URLPhoto=URL de la foto/logo +SetLinkToAnotherThirdParty=Enlazar a otra tercera parte +LinkToProposal=Enlazar a propuesta +LinkToOrder=Enlazar a orden +LinkToSupplierOrder=Enlazar a orden de compra +LinkToSupplierProposal=Enlazar a propuesta de proveedor +LinkToContract=Enlazar a contacto +ClickToEdit=Hacer click para editar +ClickToRefresh=Hacer click para refrescar +EditHTMLSource=Editar Fuente HTML +ObjectDeleted=El objeto %s se eliminó +ByCountry=Por país +ByTown=Por ciudad +BySalesRepresentative=Por representante de ventas +LinkedToSpecificUsers=Enlazado a un contacto particular de usuario +NoResults=Sin resultados +AdminTools=Herramientas de Admin +SystemTools=Herramientas de sistema +ModulesSystemTools=Herramientas de módulos +NoPhotoYet=No hay fotos disponibles todavía +Dashboard=Escritorio +MyDashboard=Mi Escritorio +from=desde +toward=en dirección a +SelectTargetUser=Seleccione usuario/empleado al que apuntar +HelpCopyToClipboard=Use Ctrl+C para copiar al clipboard +SaveUploadedFileWithMask=Guardar archivo en el servidor con el nombre "<strong>%s</strong>" (de lo contrario "%s") +OriginFileName=Nombre de archivo original +SetDemandReason=Establecer fuente +SetBankAccount=Definir Cuenta Bancaria +AccountCurrency=Moneda de la cuenta +PublicUrl=URL Público +AddBox=Agregar casilla +SelectElementAndClick=Seleccionar un elemento y hacer click en %s +ShowTransaction=Mostrar entrada en cuenta bancaria +ShowContract=Mostrar contacto +GoIntoSetupToChangeLogo=Ir a Inicio - Configuración - Compañía para cambiar el logo o ir a Inicio - Configuración - Mostrar para esconderlo. +Denied=Negado +ListOfTemplates=Lista de plantillas +Gender=Género +ViewList=Vista de lista +Mandatory=Mandatorio +Sincerely=Sinceramente +ConfirmDeleteObject=¿Está seguro que quiere eliminar este objeto? +DeleteLine=Eliminar línea +ConfirmDeleteLine=¿Está seguro que quiere eliminar esta línea? +NoPDFAvailableForDocGenAmongChecked=No hay disponible ningún PDF para la generación del documento entre los registros chequeados +TooManyRecordForMassAction=Se eligió demasiados documentos para una acción en masa. La acción tiene una restricción de %s registros. +NoRecordSelected=No se eligió registros +MassFilesArea=Área para archivos construidos desde acciones en masa +ShowTempMassFilesArea=Mostrar área de archivos construidos por acción en masa +ConfirmMassDeletion=Confirmar Eliminar en Masa +ConfirmMassDeletionQuestion=¿Esta seguro que quiere eliminar %s registro(s) seleccionado(s)? +RelatedObjects=Objetos Relacionados +ClassifyBilled=Clasificar como facturado +ClassifyUnbilled=Clasificar como sin facturar +FrontOffice=Oficina frontal +BackOffice=Oficina treasera +Exports=Exporta +ExportFilteredList=Exportar lista filtrada +ExportList=Exportar lista +ExportOptions=Exportar Opciones +ExportOfPiecesAlreadyExportedIsEnable=Exportar piezas que ya fueron exportadas está habilitado +ExportOfPiecesAlreadyExportedIsDisable=Exportar piezas que ya fueron exportadas está deshabilitado +AllExportedMovementsWereRecordedAsExported=Todos los movimientos de exportaciones fueron registrados como exportados +NotAllExportedMovementsCouldBeRecordedAsExported=No todos los movimientos de exportados pueden registrarse como exportados +Miscellaneous=Miscelanias +GroupBy=Agrupar por... +RemoveString=Quitar cadena '%s' +SomeTranslationAreUncomplete=Alguno de los idiomas ofertados pueden estar traducidos parcialmente o pueden contener errores. Por favor ayude a corregir su idioma registrándose en <a href="https://transifex.com/projects/p/dolibarr/" target="_blank">https://transifex.com/projects/p/dolibarr/</a> para agregar sus mejoras. +DirectDownloadLink=Enlace de descarga directa (público/externo) +DirectDownloadInternalLink=Enlace de descarga directa (necesita estar logeado y tener permisos) +DownloadDocument=Descargar documento +ActualizeCurrency=Actualizar tipo de cambio +ModuleBuilder=Constructor de Módulos y Aplicaciones +SetMultiCurrencyCode=Fijar moneda +BulkActions=Acciones a granel +ClickToShowHelp=Haga click para mostrar la herramienta de ayuda +WebSiteAccounts=Cuentas de sitio web +ExpenseReport=Informe de gasto ExpenseReports=Reporte de gastos +HRAndBank=HR y Banco +TitleSetToDraft=Volver a borrador +ConfirmSetToDraft=¿Está seguro que quiere volver al estado Borrador? +ImportId=Importar id +EMailTemplates=Plantillas de emails +FileNotShared=Archivo no compartido con público externo +Project=Projecto +Projects=Projectos +LineNb=Línea no. +IncotermLabel=Incotérminos +TabLetteringCustomer=Escritos de clientes +TabLetteringSupplier=Escritos de proveedores +TuesdayMin=Mar +WednesdayMin=Mie +ShortTuesday=Ma +SelectMailModel=Elegir plantilla de email +SetRef=Fijar ref +Select2ResultFoundUseArrows=Se encontró algunos resultados. Use las flechas para elegir. +Select2NotFound=No se encontró resultados +Select2Enter=Ingresar +Select2MoreCharacter=o un carácter más +Select2MoreCharactersMore=<strong> Buscar sintaxis: </strong><br><kbd><strong> |</strong></kbd><kbd> O</kbd> (alb)<br><kbd><strong>*</strong></kbd><kbd> Cualquier carácter </kbd> (a*b)<br><kbd><strong>^</strong></kbd><kbd> Comenzar con</kbd> (^ab)<br><kbd><strong> $</strong></kbd><kbd> Terminado con</kbd> (ab$)<br> +SearchIntoProjects=Projectos SearchIntoCustomerInvoices=Facturas de clientes SearchIntoSupplierInvoices=Facturas de proveedores +SearchIntoCustomerOrders=Ordenes de Venta SearchIntoSupplierOrders=Ordenes de compra SearchIntoCustomerProposals=Propuestas de clientes +SearchIntoSupplierProposals=Propuestas de proveedores SearchIntoContracts=Los contratos SearchIntoExpenseReports=Reporte de gastos +SearchIntoLeaves=Abandonar +CommentAdded=Comentario agregado +CommentDeleted=Comentario eliminado +Everybody=Todos +Quarterly=Cuatrimestral +LocalAndRemote=Local y Remoto +KeyboardShortcut=Acceso directo de teclado +AssignedTo=Asignado a +ConfirmMassDraftDeletion=Confirmar eliminación borradores en masa +FileSharedViaALink=Archivo compartido vía enlace +SelectAThirdPartyFirst=Elegir primero una tercera persona... +YouAreCurrentlyInSandboxMode=Ud. esta en este momento en el modo %s "sandbox" +ShowMoreInfos=Mostrar Más Info +NoFilesUploadedYet=Por favor cargue un documento primero +SeePrivateNote=Vea nota privada +PaymentInformation=Información de pago +ToClose=Para cerrar +ToProcess=Para procesar +ToApprove=Para aprobar +GlobalOpenedElemView=Visión global +NoArticlesFoundForTheKeyword=No se encontró artículo para la clave '<strong>%s</strong>' +NoArticlesFoundForTheCategory=Ningún artículo para la categoría +ToAcceptRefuse=Aceptar | rechazar +ContactDefault_agenda=Evento +ContactDefault_commande=Orden +ContactDefault_invoice_supplier=Factura de Proveedor +ContactDefault_order_supplier=Orden de Compra +ContactDefault_project=Projecto +ContactDefault_propal=Propuesta +ContactDefault_supplier_proposal=Propuesta de proveedor +ContactAddedAutomatically=Contacto agregado desde roles de terceros +CustomReports=Informes de clientes diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang index 02bd9beb325..00418e48cfe 100644 --- a/htdocs/langs/es_CL/admin.lang +++ b/htdocs/langs/es_CL/admin.lang @@ -147,7 +147,6 @@ FeatureDisabledInDemo=Característica deshabilitada en demostración FeatureAvailableOnlyOnStable=Característica solo disponible en versiones estables oficiales BoxesDesc=Los widgets son componentes que muestran información que puede agregar para personalizar algunas páginas. Puede elegir entre mostrar el widget o no seleccionando la página de destino y haciendo clic en 'Activar', o haciendo clic en la papelera para deshabilitarla. OnlyActiveElementsAreShown=Solo se muestran los elementos de los <a href="%s"> módulos habilitados </a>. -ModulesDesc=Los módulos / aplicaciones determinan qué funciones están disponibles en el software. Algunos módulos requieren que se otorguen permisos a los usuarios después de activar el módulo. Haga clic en el botón de encendido / apagado (al final de la línea del módulo) para habilitar / deshabilitar un módulo / aplicación. ModulesDeployDesc=Si los permisos en su sistema de archivos lo permiten, puede utilizar esta herramienta para implementar un módulo externo. El módulo será visible en la pestaña <strong>%s</strong> . ModulesMarketPlaces=Buscar aplicaciones / módulos externos ModulesDevelopYourModule=Desarrolla tu propia aplicación / módulos @@ -333,7 +332,6 @@ LinkToTest=Enlace de clic generado para el usuario <strong>%s</strong>(haga clic KeepEmptyToUseDefault=Manténgalo vacío para usar el valor predeterminado DefaultLink=Enlace predeterminado ValueOverwrittenByUserSetup=Advertencia, este valor puede ser sobrescrito por la configuración específica del usuario (cada usuario puede establecer su propia URL de clicktodial) -ExternalModule=Módulo externo: instalado en el directorio %s BarcodeInitForthird-parties=Inicio masivo de código de barras para terceros. BarcodeInitForProductsOrServices=Inicialización o reinicio masivo del código de barras para productos o servicios CurrentlyNWithoutBarCode=Actualmente, tiene <strong>%s</strong> registros en <strong>%s</strong> %s sin código de barras definido. @@ -701,7 +699,6 @@ DictionaryCompanyType=Tipos de terceros DictionaryCompanyJuridicalType=Entidades legales de terceros DictionaryProspectLevel=Potencial de prospecto DictionaryCanton=Estados / Provincias -DictionaryCivility=Título de civilidad DictionarySocialContributions=Tipos de impuestos sociales o fiscales. DictionaryVAT=Tipos de IVA o tasas de impuestos a las ventas DictionaryRevenueStamp=Cantidad de estampillas fiscales @@ -810,8 +807,6 @@ Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Depósito de cheques no hecho Delays_MAIN_DELAY_EXPENSEREPORTS=Informe de gastos para aprobar SetupDescription1=Antes de comenzar a utilizar Dolibarr, se deben definir algunos parámetros iniciales y habilitar / configurar los módulos. SetupDescription2=Las siguientes dos secciones son obligatorias (las dos primeras entradas en el menú de configuración): -SetupDescription3=<a href="%s">%s -> %s</a> <br> Parámetros básicos utilizados para personalizar el comportamiento predeterminado de su aplicación (por ejemplo, para funciones relacionadas con el país). -SetupDescription4=<a href="%s">%s -> %s</a> <br> Este software es un conjunto de muchos módulos / aplicaciones, todos más o menos independientes. Los módulos relevantes a sus necesidades deben estar habilitados y configurados. Los nuevos elementos / opciones se agregan a los menús con la activación de un módulo. SetupDescription5=Otras entradas del menú de configuración manejan parámetros opcionales. LogEvents=Eventos de auditoría de seguridad InfoDolibarr=Sobre Dolibarr @@ -825,7 +820,6 @@ ListOfSecurityEvents=Lista de eventos de seguridad de Dolibarr LogEventDesc=Habilitar el registro para eventos de seguridad específicos. Administradores el registro a través del menú <b>%s - %s</b> . Advertencia, esta característica puede generar una gran cantidad de datos en la base de datos. AreaForAdminOnly=Los parámetros de configuración solo pueden modificarse por <b>usuarios administradores</b>. SystemInfoDesc=La información del sistema es información técnica miscelánea que obtienes en modo solo lectura y visible solo para los administradores. -CompanyFundationDesc=Edite la información de la empresa / entidad. Click en el botón "%s" en el fondo de la página. AccountantDesc=Si tiene un contador / contador externo, puede editar aquí su información. AvailableModules=Aplicación / módulos disponibles ToActivateModule=Para activar los módulos, vaya al Área de configuración (Inicio-> Configuración-> Módulos). @@ -955,7 +949,6 @@ BillsPDFModules=Modelos de documentos de factura BillsPDFModulesAccordindToInvoiceType=Documentos de facturas de modelos según tipo de factura. PaymentsPDFModules=Modelos de documentos de pago ForceInvoiceDate=Forzar fecha de factura a fecha de validación -SuggestedPaymentModesIfNotDefinedInInvoice=Modo de pago sugerido en la factura por defecto si no está definido para la factura SuggestPaymentByRIBOnAccount=Sugerir pago por retiro en cuenta SuggestPaymentByChequeToAddress=Sugerir pago por cheque a FreeLegalTextOnInvoices=Texto libre en las facturas @@ -966,7 +959,6 @@ SupplierPaymentSetup=Configuración de pagos de proveedores PropalSetup=Configuración del módulo Cotizaciones ProposalsNumberingModules=Módulos de numeración de cotizaciones ProposalsPDFModules=Modelos de documentos de cotizaciones -SuggestedPaymentModesIfNotDefinedInProposal=Modo de pago sugerido en la propuesta por defecto si no está definido para la propuesta FreeLegalTextOnProposal=Texto libre en cotizaciones WatermarkOnDraftProposal=Marca de agua en cotizaciones borrador (en caso de estar vacío) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Preguntar por el destino de la cuenta bancaria diff --git a/htdocs/langs/es_CL/bills.lang b/htdocs/langs/es_CL/bills.lang index 002ed8b69e6..aeb6b873638 100644 --- a/htdocs/langs/es_CL/bills.lang +++ b/htdocs/langs/es_CL/bills.lang @@ -43,8 +43,8 @@ CustomersInvoices=Facturas de clientes SupplierInvoice=Factura del proveedor SupplierBill=Factura del proveedor SupplierBills=facturas de proveedores -PaymentBack=Pago de vuelta -CustomerInvoicePaymentBack=Pago de vuelta +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund paymentInInvoiceCurrency=en la moneda de las facturas DeletePayment=Eliminar pago ConfirmDeletePayment=¿Seguro que quieres eliminar este pago? @@ -383,11 +383,10 @@ ToMakePayment=Paga ToMakePaymentBack=Pagar ListOfYourUnpaidInvoices=Lista de facturas impagas NoteListOfYourUnpaidInvoices=Nota: Esta lista contiene solo facturas para terceros a los que está vinculado como representante de ventas. -RevenueStamp=Sello de ingresos YouMustCreateInvoiceFromThird=Esta opción solo está disponible cuando se crea una factura desde la pestaña "Cliente" de un tercero YouMustCreateInvoiceFromSupplierThird=Esta opción solo está disponible cuando se crea una factura desde la pestaña "Proveedor" de un tercero YouMustCreateStandardInvoiceFirstDesc=Primero debe crear una factura estándar y convertirla en "plantilla" para crear una nueva factura de plantilla -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Factura PDF plantilla de esponja. Una plantilla de factura completa. PDFCrevetteDescription=Plantilla de factura en PDF Crevette. Una plantilla de factura completa para facturas de situación TerreNumRefModelDesc1=Número de devolución con formato %saaam-nnnn para facturas estándar y %saaam-nnnn para notas de crédito donde yy es año, mm es mes y nnnn es una secuencia sin interrupción y sin retorno a 0 diff --git a/htdocs/langs/es_CL/compta.lang b/htdocs/langs/es_CL/compta.lang index 9fb429628b9..4a4fb6fe85e 100644 --- a/htdocs/langs/es_CL/compta.lang +++ b/htdocs/langs/es_CL/compta.lang @@ -134,9 +134,7 @@ SeeReportInInputOutputMode=Consulte %sanálisis de pagos%s para obtener un cálc SeeReportInDueDebtMode=Consulte %sanálisis de facturas %s para un cálculo basado en facturas registradas conocidas, incluso si aún no se contabilizaron en Libro mayor. SeeReportInBookkeepingMode=Consulte <b>%sInforme de facturación%s</b> para realizar un cálculo en <b>Tabla Libro mayor contable</b> RulesAmountWithTaxIncluded=- Las cantidades que se muestran son con todos los impuestos incluidos -RulesResultDue=- Incluye facturas pendientes, gastos, IVA, donaciones ya sean pagadas o no. También incluye salarios pagados. <br> - Se basa en la fecha de validación de facturas e IVA y en la fecha de vencimiento de los gastos. Para los salarios definidos con el módulo Salario, se usa la fecha de valor del pago. RulesResultInOut=- Incluye los pagos reales realizados en facturas, gastos, IVA y salarios. <br> - Se basa en las fechas de pago de las facturas, gastos, IVA y salarios. La fecha de donación para la donación. -RulesCADue=- Incluye las facturas debidas del cliente, ya sean pagadas o no. <br> - Se basa en la fecha de validación de estas facturas. <br> RulesCAIn=- Incluye todos los pagos efectivos de las facturas recibidas de los clientes. <br> - Se basa en la fecha de pago de estas facturas. <br> RulesCATotalSaleJournal=Incluye todas las líneas de crédito del diario Sale. RulesAmountOnInOutBookkeepingRecord=Incluye registro en su Libro mayor con cuentas de contabilidad que tiene el grupo "GASTOS" o "INGRESOS" diff --git a/htdocs/langs/es_CL/other.lang b/htdocs/langs/es_CL/other.lang index aa0e3ce2f9a..0d92dd33451 100644 --- a/htdocs/langs/es_CL/other.lang +++ b/htdocs/langs/es_CL/other.lang @@ -171,6 +171,5 @@ LibraryUsed=Biblioteca utilizada LibraryVersion=Versión de biblioteca NoExportableData=No se pueden exportar datos (no hay módulos con datos exportables cargados o sin permisos) WebsiteSetup=Configuración del sitio web del módulo -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. WEBSITE_KEYWORDS=Palabras clave LinesToImport=Líneas para importar diff --git a/htdocs/langs/es_CL/products.lang b/htdocs/langs/es_CL/products.lang index ef999f10803..62693a1c76b 100644 --- a/htdocs/langs/es_CL/products.lang +++ b/htdocs/langs/es_CL/products.lang @@ -109,7 +109,6 @@ CustomerPrices=Precios de cliente SuppliersPrices=Precios del proveedor SuppliersPricesOfProductsOrServices=Precios de venta (de productos o servicios). CustomCode=Código de Aduanas / Productos / HS -Nature=Naturaleza del producto (material / acabado) ProductCodeModel=Plantilla de referencia de producto ServiceCodeModel=Plantilla de referencia de servicio AlwaysUseNewPrice=Utilice siempre el precio actual del producto/servicio diff --git a/htdocs/langs/es_CL/projects.lang b/htdocs/langs/es_CL/projects.lang index b21b59af6e9..c6ee5dbe200 100644 --- a/htdocs/langs/es_CL/projects.lang +++ b/htdocs/langs/es_CL/projects.lang @@ -51,7 +51,6 @@ ProgressCalculated=Progreso calculado Time=Hora ListOfTasks=Lista de tareas GoToListOfTimeConsumed=Ir a la lista de tiempo consumido -GoToListOfTasks=Mostrar como lista ListProposalsAssociatedProject=Listado de las propuestas comerciales relacionadas con el proyecto. ListOrdersAssociatedProject=Lista de pedidos relacionados con el proyecto. ListInvoicesAssociatedProject=Listado de facturas de clientes relacionadas con el proyecto. @@ -132,7 +131,6 @@ DocumentModelTimeSpent=Plantilla de informe de proyecto para el tiempo empleado. PlannedWorkload=Carga de trabajo planificada ProjectReferers=Artículos relacionados ProjectMustBeValidatedFirst=El proyecto debe ser validado primero -FirstAddRessourceToAllocateTime=Asignar un recurso de usuario a la tarea para asignar tiempo TimeAlreadyRecorded=Este es el tiempo que ya se ha registrado para esta tarea / día y el usuario %s NoUserAssignedToTheProject=No hay usuarios asignados a este proyecto. TimeSpentBy=Tiempo consumido por diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang index e85460ffd30..5ae76dc82e1 100644 --- a/htdocs/langs/es_CO/admin.lang +++ b/htdocs/langs/es_CO/admin.lang @@ -66,7 +66,6 @@ NoMaxSizeByPHPLimit=Nota: en la configuración de su PHP no está definido un l MaxSizeForUploadedFiles=Tamaño máximo para archivos importados (0 para desactivar cualquier importación) UseCaptchaCode=Usar código gráfico (CAPTCHA) en la página de inicio de sesión AntiVirusCommand=Ruta completa para el comando del antivirus -AntiVirusCommandExample=Ejemplo para ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br> Ejemplo para ClamAv: /usr/bin/clamscan AntiVirusParam=Más parámetros en la línea de comando ComptaSetup=Configuración del módulo contable UserSetup=Configuración de la administración de usuarios @@ -138,7 +137,6 @@ FeatureDisabledInDemo=Función deshabilitada en demo FeatureAvailableOnlyOnStable=Característica solo disponible en versiones oficiales estables BoxesDesc=Los widgets son componentes que muestran información que puede agregar para personalizar algunas páginas. Puede elegir entre mostrar el widget o no seleccionando la página de destino y haciendo clic en 'Activar', o haciendo clic en la papelera para desactivarla. OnlyActiveElementsAreShown=Solo se muestran los elementos de <a href="%s"> módulos habilitados </a>. -ModulesDesc=Los módulos / aplicaciones determinan qué funciones están disponibles en el software. Algunos módulos requieren permisos para ser otorgados a los usuarios después de activar el módulo. Haga clic en el botón de encendido / apagado (al final de la línea del módulo) para habilitar / deshabilitar un módulo / aplicación. ModulesDeployDesc=Si los permisos en su sistema de archivos lo permiten, puede usar esta herramienta para implementar un módulo externo. El módulo será visible en la pestaña <strong> %s </strong>. ModulesMarketPlaces=Encuentra aplicaciones / módulos externos ModulesDevelopYourModule=Desarrolle su propia aplicación / módulos @@ -744,7 +742,6 @@ BillsPDFModules=Modelos de documentos de facturas. BillsPDFModulesAccordindToInvoiceType=La factura documenta los modelos según el tipo de factura. PaymentsPDFModules=Modelos de documentos de pago. ForceInvoiceDate=Forzar fecha de factura a fecha de validación -SuggestedPaymentModesIfNotDefinedInInvoice=Modo de pago sugerido en la factura por defecto si no está definido para la factura FreeLegalTextOnInvoices=Texto libre en las facturas. WatermarkOnDraftInvoices=Marca de agua en los proyectos de factura (ninguno si está vacío) PaymentsNumberingModule=Modelo de numeración de pagos. diff --git a/htdocs/langs/es_CO/bills.lang b/htdocs/langs/es_CO/bills.lang index 7ca34488db8..b2c2ff15057 100644 --- a/htdocs/langs/es_CO/bills.lang +++ b/htdocs/langs/es_CO/bills.lang @@ -38,8 +38,8 @@ InvoiceCustomer=Factura del cliente CustomerInvoice=Factura del cliente CustomersInvoices=Facturas de clientes SupplierBills=proveedores facturas -PaymentBack=Devolución de pago -CustomerInvoicePaymentBack=Devolución de pago +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund paymentInInvoiceCurrency=en facturas moneda DeletePayment=Eliminar pago ConfirmDeletePayment=¿Estás seguro de que quieres eliminar este pago? @@ -336,9 +336,8 @@ ToMakePayment=Paga ToMakePaymentBack=Pagar ListOfYourUnpaidInvoices=Lista de facturas impagadas NoteListOfYourUnpaidInvoices=Nota: Esta lista solo contiene facturas para terceros a los que está vinculado como representante de ventas. -RevenueStamp=Sello de ingresos YouMustCreateStandardInvoiceFirstDesc=Primero debe crear una factura estándar y convertirla en "plantilla" para crear una nueva factura de plantilla -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Factura PDF plantilla de esponja. Una plantilla de factura completa. PDFCrevetteDescription=Plantilla PDF factura Crevette. Una plantilla de factura completa para facturas de situación. TerreNumRefModelDesc1=Número de devolución con formato %syymm-nnnn para facturas estándar y %syymm-nnnn para notas de crédito donde yy es año, mm es mes y nnnn es una secuencia sin interrupción y sin retorno a 0 diff --git a/htdocs/langs/es_CO/compta.lang b/htdocs/langs/es_CO/compta.lang index be705a0bacc..a8bd33a6a73 100644 --- a/htdocs/langs/es_CO/compta.lang +++ b/htdocs/langs/es_CO/compta.lang @@ -135,7 +135,6 @@ SeeReportInInputOutputMode=Consulte %sanálisis de pagos%s para obtener un cálc SeeReportInDueDebtMode=Consulte %sanálisis de facturas%s para un cálculo basado en facturas registradas conocidas, incluso si aún no se han contabilizado en el Libro mayor. SeeReportInBookkeepingMode=Consulte <b> %sRestauración report%s </b> para obtener un cálculo de la <b> tabla del Libro mayor de contabilidad </b> RulesAmountWithTaxIncluded=- Las cantidades mostradas están con todos los impuestos incluidos. -RulesResultDue=- Incluye facturas pendientes, gastos, IVA, donaciones ya sean pagadas o no. También incluye salarios pagados. <br> - Se basa en la fecha de validación de las facturas y el IVA y en la fecha de vencimiento de los gastos. Para los salarios definidos con el módulo Salario, se utiliza la fecha de valor del pago. RulesResultInOut=- Incluye los pagos reales realizados en facturas, gastos, IVA y salarios. <br> - Se basa en las fechas de pago de las facturas, gastos, IVA y salarios. La fecha de donación para la donación. RulesCATotalSaleJournal=Incluye todas las líneas de crédito del diario Sale. RulesAmountOnInOutBookkeepingRecord=Incluye el registro en su Libro mayor con cuentas contables que tiene el grupo "GASTOS" o "INGRESOS" diff --git a/htdocs/langs/es_EC/admin.lang b/htdocs/langs/es_EC/admin.lang index 15b828ed627..c73942cac1e 100644 --- a/htdocs/langs/es_EC/admin.lang +++ b/htdocs/langs/es_EC/admin.lang @@ -69,9 +69,7 @@ NoMaxSizeByPHPLimit=Nota: No hay límite en tu configuración de PHP MaxSizeForUploadedFiles=Tamaño máximo de los archivos cargados (0 para rechazar cualquier subida) UseCaptchaCode=Utilizar código gráfico (CAPTCHA) en la página de inicio de sesión AntiVirusCommand= Ruta completa al comando antivirus -AntiVirusCommandExample= Ejemplo para ClamWin: c:\\Progra ~ 1\\ClamWin\\bin\\clamscan.exe <br> Ejemplo para ClamAv: / usr / bin / clamscan AntiVirusParam= Más parámetros de línea de comandos -AntiVirusParamExample= Ejemplo para ClamWin: --database ComptaSetup=Configuración del módulo de contabilidad UserSetup=Configuración de gestión de usuarios MultiCurrencySetup=Configuración de múltiples divisas @@ -146,7 +144,6 @@ FeatureDisabledInDemo=Función desactivada en demostración FeatureAvailableOnlyOnStable=Característica sólo está disponible en las versiones oficiales estables BoxesDesc=Los widgets son componentes que muestran información que puede agregar para personalizar algunas páginas. Puede elegir entre mostrar el widget o no seleccionando la página de destino y haciendo clic en 'Activar', o haciendo clic en la papelera para deshabilitarla. OnlyActiveElementsAreShown=Solo se muestran elementos de <a href -ModulesDesc=Los módulos / aplicaciones determinan qué funciones están disponibles en el software. Algunos módulos requieren permisos para ser otorgados a los usuarios después de activar el módulo. Haga clic en el botón de encendido / apagado (al final de la línea del módulo) para habilitar / deshabilitar un módulo / aplicación. ModulesDeployDesc=Si los permisos en su sistema de archivos lo permiten, puede utilizar esta herramienta para implementar un módulo externo. El módulo estará visible en la pestaña <strong> %s </strong>. ModulesMarketPlaces=Buscar aplicaciones / módulos externos ModulesDevelopYourModule=Desarrolle su propia aplicación / módulos @@ -155,6 +152,7 @@ DOLISTOREdescriptionLong=En lugar de encender <a href CompatibleUpTo=Compatible con la versión 1 %s. NotCompatible=Este módulo no parece compatible con Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Ver en el mercado +SeeSetupOfModule=Consulte la configuración del módulo%s AchatTelechargement=Comprar / Descargar GoModuleSetupArea=Para implementar / instalar un nuevo módulo, vaya al área de configuración del módulo: <a href="%s"> %s </a>. DoliStoreDesc=DoliStore, el mercado oficial de módulos externos ERP / CRM de Dolibarr @@ -921,7 +919,6 @@ BillsPDFModules=Modelos de documentos de factura BillsPDFModulesAccordindToInvoiceType=La factura documenta los modelos según el tipo de factura. PaymentsPDFModules=Modelos de documentos de pago ForceInvoiceDate=Forzar la fecha de la factura a la fecha de validación -SuggestedPaymentModesIfNotDefinedInInvoice=Modo de pagos sugerido en la factura por defecto si no se define para la factura SuggestPaymentByRIBOnAccount=Sugerir pago por retiro en cuenta SuggestPaymentByChequeToAddress=Sugerir pago con cheque a FreeLegalTextOnInvoices=Texto libre en las facturas diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index c3ea6b5330e..b334bd80e13 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Nota: Su PHP limita el tamaño máximo de archivos a sub NoMaxSizeByPHPLimit=Ninguna limitación interna en su servidor PHP MaxSizeForUploadedFiles=Tamaño máximo de los documentos a subir (0 para prohibir la subida) UseCaptchaCode=Utilización de código gráfico (CAPTCHA) en la página de inicio de sesión -AntiVirusCommand= Ruta completa hacia el comando del antivirus -AntiVirusCommandExample= Ejemplo para ClamWin: c:\\Program Files (x86)\\ClamWin\\bin\\clamscan.exe<br>Ejemplo para ClamAv: /usr/bin/clamscan +AntiVirusCommand=Ruta completa hacia el comando del antivirus +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Parámetros complementarios en la línea de comandos -AntiVirusParamExample= Ejemplo para ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Configuración del módulo Contabilidad UserSetup=Configuración gestión de los usuarios MultiCurrencySetup=Configuración del módulo multidivisa @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Opción deshabilitada en demo FeatureAvailableOnlyOnStable=Funcionaliad disponible únicamente en versiones oficiales estables BoxesDesc=Los paneles son componentes que muestran algunos datos que pueden añadirse para personalizar algunas páginas. Puede elegir entre mostrar o no el panel mediante la selección de la página de destino y haciendo clic en 'Activar', o haciendo clic en la papelera para desactivarlo. OnlyActiveElementsAreShown=Sólo los elementos de <a href="%s">módulos activados</a> son mostrados. -ModulesDesc=Los módulos/aplicaciones definen qué funcionalidad está habilitada en el software. Algunos módulos requieren permisos que se deben conceder a los usuarios después de activar el módulo. Haga clic en el botón de encendido/apagado (al final de la línea del módulo) para activar/desactivar un módulo/aplicación. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Puede encontrar más módulos para descargar en sitios web externos en Internet ... ModulesDeployDesc=Si los permisos en su sistema de archivos lo permiten, puede utilizar esta herramienta para instalar un módulo externo. El módulo estará entonces visible en la pestaña <strong>%s</strong>. ModulesMarketPlaces=Buscar módulos externos... @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible con la versión %s NotCompatible=Este módulo no parece compatible con su Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=Este módulo requiere una actualización de su Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Ver en la tienda +SeeSetupOfModule=Vea la configuración del módulo %s Updated=Actualizado Nouveauté=Novedad AchatTelechargement=Comprar/Descargar @@ -221,6 +222,7 @@ DoliPartnersDesc=Lista de empresas que ofrecen módulos y desarrollos a medida.< WebSiteDesc=Sitios web de referencia para encontrar más módulos (no core)... DevelopYourModuleDesc=Algunas soluciones para desarrollar su propio módulo ... URL=URL +RelativeURL=Relative URL BoxesAvailable=Paneles disponibles BoxesActivated=Paneles activados ActivateOn=Activar en @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Deje este campo vacío para usar el valor por defecto DefaultLink=Enlace por defecto SetAsDefault=Establecer por defecto ValueOverwrittenByUserSetup=Atención: Este valor puede ser sobreescrito por un valor específico de la configuración del usuario (cada usuario puede tener su propia url clicktodial) -ExternalModule=Módulo externo - Instalado en el directorio %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Inicialización masiva de códigos de barras para terceros BarcodeInitForProductsOrServices=Inicio masivo de código de barras para productos o servicios CurrentlyNWithoutBarCode=Actualmente tiene <strong>%s</strong> registros de <strong>%s</strong> %s sin código de barras definido. @@ -947,7 +950,7 @@ DictionaryCanton=Provincias DictionaryRegion=Regiones DictionaryCountry=Países DictionaryCurrency=Monedas -DictionaryCivility=Tratamiento (Sr. Sra. etc.) +DictionaryCivility=Honorific titles DictionaryActions=Tipos de eventos de la agenda DictionarySocialContributions=Tipos de impuestos sociales o fiscales DictionaryVAT=Tasa de IVA (Impuesto sobre ventas en EEUU) @@ -988,6 +991,7 @@ VATIsNotUsedDesc=El tipo de IVA propuesto por defecto es 0. Este es el caso de a VATIsUsedExampleFR=En Francia, se trata de las sociedades u organismos que eligen un régimen fiscal general (General simplificado o General normal), régimen en el cual se declara el IVA. VATIsNotUsedExampleFR=En Francia, se trata de asociaciones exentas de IVA o sociedades, organismos o profesiones liberales que han elegido el régimen fiscal de módulos (IVA en franquicia), pagando un IVA en franquicia sin hacer declaración de IVA. Esta elección hace aparecer la anotación "IVA no aplicable - art-293B del CGI" en las facturas. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Tasa LocalTax1IsNotUsed=No sujeto LocalTax1IsUsedDesc=Uso de un 2º tipo de impuesto (Distinto del IVA) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=El tipo de IRPF propuesto por defecto en las creaciones de LocalTax2IsNotUsedDescES=El tipo de IRPF propuesto por defecto es 0. Final de regla. LocalTax2IsUsedExampleES=En España, se trata de personas físicas: autónomos y profesionales independientes que prestan servicios y empresas que han elegido el régimen fiscal de módulos. LocalTax2IsNotUsedExampleES=En España, se trata de empresas no sujetas al régimen fiscal de módulos. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Informes de impuestos locales CalcLocaltax1=Ventas - Compras CalcLocaltax1Desc=Los informes se calculan con la diferencia entre las ventas y las compras @@ -1018,6 +1025,7 @@ CalcLocaltax2=Compras CalcLocaltax2Desc=Los informes se basan en el total de las compras CalcLocaltax3=Ventas CalcLocaltax3Desc=Los informes se basan en el total de las ventas +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax 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 @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Informe de gastos no aprobado Delays_MAIN_DELAY_HOLIDAYS=Días libres a aprobar SetupDescription1=Antes de comenzar a usar Dolibarr, se deben definir algunos parámetros iniciales y habilitar/configurar los módulos. SetupDescription2=Las siguientes dos secciones son obligatorias (las dos primeras entradas en el menú Configuración): -SetupDescription3=<a href="%s">%s->%s</a> <br>Parámetros básicos para personalizar el comportamiento por defecto de Dolibarr (por ejemplo características relacionadas con el país) -SetupDescription4=<a href="%s">%s -> %s</a> <br>Este software 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Las otras entradas de configuración gestionan parámetros opcionales. LogEvents=Auditoría de la seguridad de eventos Audit=Auditoría @@ -1128,7 +1136,7 @@ LogEventDesc=Activa el registro de eventos de seguridad aquí. Los administrador AreaForAdminOnly=Los parámetros de configuración solamente pueden ser tratados por <b>usuarios administrador</b> SystemInfoDesc=La información del sistema es información técnica accesible solamente en solo lectura a los administradores. SystemAreaForAdminOnly=Esta área está disponible solo para usuarios administradores. Los permisos de usuario de Dolibarr no pueden cambiar esta restricción. -CompanyFundationDesc=Edite la información de la empresa o institución. Haga clic en el botón "%s" a pié de página. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Si tiene un contable/asesor externo, puede editar aquí su información. AccountantFileNumber=Código contable DisplayDesc=Los parámetros que afectan el aspecto y el comportamiento de Dolibarr se pueden modificar aquí. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Reglas para generar y validar contraseñas. DisableForgetPasswordLinkOnLogonPage=No mostrar el vínculo "Contraseña olvidada" en la página de login UsersSetup=Configuración del módulo usuarios UserMailRequired=E-Mail necesario para crear un usuario nuevo +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Setup del módulo RRHH ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Modelo de documento de facturas BillsPDFModulesAccordindToInvoiceType=Modelos de documentos de facturas según tipo de factura PaymentsPDFModules=Modelo de documentos de pago ForceInvoiceDate=Forzar la fecha de factura a la fecha de validación -SuggestedPaymentModesIfNotDefinedInInvoice=Formas de pago sugeridas para las facturas si no están definidas explícitamente +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Sugerir el pago por domiciliación en la cuenta SuggestPaymentByChequeToAddress=Sugerir el pago por cheque a FreeLegalTextOnInvoices=Texto libre en facturas @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Configuración de pagos a proveedores PropalSetup=Configuración del módulo Presupuestos ProposalsNumberingModules=Módulos de numeración de presupuestos ProposalsPDFModules=Modelos de documentos de presupuestos -SuggestedPaymentModesIfNotDefinedInProposal=Formas de pago sugeridas en presupuestos si no están definidas para los mismos +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Texto libre en presupuestos WatermarkOnDraftProposal=Marca de agua en presupuestos borrador (en caso de estar vacío) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Preguntar por cuenta bancaria a usar en el presupuesto @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Almacén a utilizar para el pedido ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Preguntar por cuenta bancaria a usar en el pedido a proveedor ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Configuración de Gestión de Pedidos OrdersNumberingModules=Módulos de numeración de los pedidos OrdersModelModule=Modelos de documentos de pedidos @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Advertencia, los valores altos ralentiz ModuleActivated=El módulo %s está activado y ralentiza dramáticamente la interfaz EXPORTS_SHARE_MODELS=Los modelos de exportación son compartidos con todos. ExportSetup=Configuración del módulo de exportación. +ImportSetup=Setup of module Import InstanceUniqueID=ID única de la instancia SmallerThan=Menor que LargerThan=Mayor que @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Realice un Ping anónimo '+1' al servidor de la base Dolibarr FeatureNotAvailableWithReceptionModule=Función no disponible cuando el módulo Recepción está activado EmailTemplate=Plantilla para e-mail EMailsWillHaveMessageID=Los correos electrónicos tendrán una etiqueta 'Referencias' que coincida con esta sintaxis -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/es_ES/bills.lang b/htdocs/langs/es_ES/bills.lang index 8e7f5965969..e482f089e54 100644 --- a/htdocs/langs/es_ES/bills.lang +++ b/htdocs/langs/es_ES/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Facturas de proveedores SupplierBill=Factura proveedor SupplierBills=Facturas de proveedores Payment=Pago -PaymentBack=Reembolso -CustomerInvoicePaymentBack=Reembolso +PaymentBack=Devolución +CustomerInvoicePaymentBack=Devolución Payments=Pagos PaymentsBack=Reembolsos paymentInInvoiceCurrency=en la divisa de las facturas PaidBack=Reembolsado DeletePayment=Eliminar el pago ConfirmDeletePayment=¿Está seguro de querer eliminar este pago? -ConfirmConvertToReduc=¿Desea convertir este %s en un descuento absoluto? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=El importe se guardará entre todos los descuentos y podría utilizarse como un descuento para una factura actual o futura para este cliente. -ConfirmConvertToReducSupplier=¿Desea convertir este %s en un descuento absoluto? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=El importe se guardará entre todos los descuentos y podría utilizarse como un descuento para una factura actual o futura de este proveedor. SupplierPayments=Pagos a proveedor ReceivedPayments=Pagos recibidos @@ -219,7 +219,10 @@ ShowInvoiceSituation=Ver situación factura UseSituationInvoices=Permitir factura de situación UseSituationInvoicesCreditNote=Permitir factura de situación de abono Retainedwarranty=Garantía retenida +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Porcentaje predeterminado de garantía retenida +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=Para pagar en %s toPayOn=pagar en %s RetainedWarranty=Garantía retenida @@ -509,11 +512,11 @@ ToMakePayment=Pagar ToMakePaymentBack=Reembolsar ListOfYourUnpaidInvoices=Listado de facturas impagadas NoteListOfYourUnpaidInvoices=Nota: Este listado incluye solamente los terceros de los que usted es comercial. -RevenueStamp=Timbre fiscal +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Esta opción solo está disponible al crear una factura desde la pestaña 'cliente' del tercero YouMustCreateInvoiceFromSupplierThird=Esta opción solo está disponible al crear una factura desde la pestaña 'proveedor' del tercero YouMustCreateStandardInvoiceFirstDesc=Tiene que crear una factura estandar antes de convertirla a "plantilla" para crear una nueva plantilla de factura -PDFCrabeDescription=Factura PDF plantilla Crabe. Una plantilla de factura completa (antigua implementación de la plantilla Sponge) +PDFCrabeDescription=Factura PDF plantilla Crabe. Una plantilla de factura completa PDFSpongeDescription=Modelo de factura Esponja. Una plantilla de factura completa. PDFCrevetteDescription=Modelo PDF de factura Crevette. Un completo modelo de facturas de situación TerreNumRefModelDesc1=Devuelve el número bajo el formato %syymm-nnnn para las facturas, %syymm-nnnn para las facturas rectificativas y %syymm-nnnn para los abonos donde yy es el año, mm. el mes y nnnn un contador secuencial sin ruptura y sin permanencia a 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Establecer fecha de finalización para la línea de servicio con AutoFillDateToShort=Definir fecha de finalización MaxNumberOfGenerationReached=Máximo número de generaciones alcanzado BILL_DELETEInDolibarr=Factura eliminada +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/es_ES/blockedlog.lang b/htdocs/langs/es_ES/blockedlog.lang index d3e4fc44d0a..d18c47c2657 100644 --- a/htdocs/langs/es_ES/blockedlog.lang +++ b/htdocs/langs/es_ES/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Registros inalterables ShowAllFingerPrintsMightBeTooLong=Mostrar todos los registros archivados (puede ser largo) ShowAllFingerPrintsErrorsMightBeTooLong=Mostrar todos los registros de archivo no válidos (puede ser largo) DownloadBlockChain=Descargar huellas dactilares -KoCheckFingerprintValidity=El registro archivado no es válido. Significa que alguien (¿un pirata informático?) Modificó algunos datos de este registro archivado después de que se grabó, o borró el registro archivado anterior (verifique que exista la línea con el # anterior). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=El registro archivado es válido. Significa que no se modificó ningún dato en esta línea y el registro sigue a la anterior. OkCheckFingerprintValidityButChainIsKo=El registro archivado parece válido en comparación con el anterior, pero la cadena se dañó anteriormente. AddedByAuthority=Almacenado en autoridad remota diff --git a/htdocs/langs/es_ES/cashdesk.lang b/htdocs/langs/es_ES/cashdesk.lang index 3ed336cddc7..c348ec90580 100644 --- a/htdocs/langs/es_ES/cashdesk.lang +++ b/htdocs/langs/es_ES/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Añadir este artículo RestartSelling=Retomar la venta SellFinished=Venta completada PrintTicket=Imprimir +SendTicket=Send ticket NoProductFound=Ningún artículo encontrado ProductFound=Producto encontrado NoArticle=Ningún artículo @@ -48,6 +49,7 @@ Footer=Pié de página AmountAtEndOfPeriod=Importe al final del período (día, mes o año) TheoricalAmount=Importe teórico RealAmount=Importe real +CashFence=Cash fence CashFenceDone=Cierre de caja realizado para el período. NbOfInvoices=Nº de facturas Paymentnumpad=Tipo de Pad para introducir el pago. @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS necesita categorías de productos para trabajar OrderNotes=Pedidos CashDeskBankAccountFor=Cuenta por defecto a usar para cobros en NoPaimementModesDefined=No hay modo de pago definido en la configuración de TakePOS -TicketVatGrouped=Agrupar por tipo de IVA en los tickets -AutoPrintTickets=Imprimir tickets automáticamente +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Habilitar características para Bar o Restaurante ConfirmDeletionOfThisPOSSale=¿Está seguro de querer eliminar la venta actual? ConfirmDiscardOfThisPOSSale=¿Quiere descartar esta venta? @@ -87,7 +90,19 @@ HeadBar=Cabecera SortProductField=Field for sorting products Browser=Navegador BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/es_ES/companies.lang b/htdocs/langs/es_ES/companies.lang index 3beee367458..0a98814f97f 100644 --- a/htdocs/langs/es_ES/companies.lang +++ b/htdocs/langs/es_ES/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=La empresa "%s" ha sido eliminada ListOfContacts=Listado de contactos ListOfContactsAddresses=Listado de contactos ListOfThirdParties=Listado de terceros -ShowCompany=Mostrar tercero ShowContact=Mostrar contacto ContactsAllShort=Todos (sin filtro) ContactType=Tipo de contacto @@ -447,6 +446,7 @@ 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=Código de cliente o proveedor ya utilizado, se sugiere un nuevo código +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Tipo de pago - Cliente PaymentTermsCustomer=Condiciones de pago - Cliente diff --git a/htdocs/langs/es_ES/compta.lang b/htdocs/langs/es_ES/compta.lang index c2c829d861d..19261fa227b 100644 --- a/htdocs/langs/es_ES/compta.lang +++ b/htdocs/langs/es_ES/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Consulte %sanálisis de pagos%s para obtener un cálc SeeReportInDueDebtMode=Consulte %sanálisis de facturas %s para un cálculo basado en facturas registradas conocidas, incluso si aún no se han contabilizado en Libro mayor. SeeReportInBookkeepingMode=Consulte el <b>%sInforme de facturación%s</b> para realizar un cálculo en la <b>Tabla Libro mayor</b> RulesAmountWithTaxIncluded=- Los importes mostrados son con todos los impuestos incluídos. -RulesResultDue=- Incluye las facturas pendientes, los gastos, el IVA, las donaciones pagadas o no. También se incluyen los salarios pagados.<br>- Se basa en la fecha de la validación de las facturas e IVA y en la fecha de vencimiento de los gastos. Para los salarios definidos con el módulo de Salarios, se usa la fecha de valor del pago. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Incluye los pagos realizados sobre las facturas, las gastos y el IVA. <br>- Se basa en las fechas de pago de las facturas, gastos e IVA. La fecha de donación para las donaciones -RulesCADue=- Incluye las facturas a clientes, estén pagadas o no.<br>- Se basa en la fecha de validación de las mismas.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Incluye los pagos efectuados de las facturas a clientes.<br>- Se basa en la fecha de pago de las mismas<br> RulesCATotalSaleJournal=Incluye todas las líneas de crédito del diario de ventas. RulesAmountOnInOutBookkeepingRecord=Incluye registro en su libro mayor con cuentas contables que tiene el grupo "GASTOS" o "INGRESOS" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Volumen de ventas emitidas por tipo de impuesto TurnoverCollectedbyVatrate=Volumen de ventas cobradas por tipo de impuesto PurchasebyVatrate=Compra por tasa de impuestos LabelToShow=Etiqueta corta +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index 4c32a8ed7a8..9d8bb8cf2dd 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Archivo no recibido íntegramente por el servidor. ErrorNoTmpDir=Directorio temporal de recepción %s inexistente ErrorUploadBlockedByAddon=Subida bloqueada por un plugin PHP/Apache. ErrorFileSizeTooLarge=El tamaño del fichero es demasiado grande. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Longitud del campo demasiado largo para el tipo int (máximo %s cifras) ErrorSizeTooLongForVarcharType=Longitud del campo demasiado largo para el tipo cadena (máximo %s cifras) ErrorNoValueForSelectType=Los valores de la lista deben ser indicados @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=El parámetro PHP upload_max_filesize (%s) es más alto que el parámetro PHP post_max_size (%s). Esta no es una configuración consistente. WarningPasswordSetWithNoAccount=Se fijó una contraseña para este miembro. Sin embargo, no se ha creado ninguna cuenta de usuario. Así que esta contraseña no se puede utilizar para acceder a Dolibarr. Puede ser utilizada por un módulo/interfaz externo, pero si no necesitar definir accesos de un miembro, puede desactivar la opción "Administrar un inicio de sesión para cada miembro" en la configuración del módulo miembros. Si necesita administrar un inicio de sesión, pero no necesita ninguna contraseña, puede dejar este campo vacío para evitar esta advertencia. Nota: También puede usarse el correo electrónico como inicio de sesión si el miembro está vinculada a un usuario. diff --git a/htdocs/langs/es_ES/install.lang b/htdocs/langs/es_ES/install.lang index 462b4d627af..17812d15fbd 100644 --- a/htdocs/langs/es_ES/install.lang +++ b/htdocs/langs/es_ES/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Este PHP soporta Curl PHPSupportCalendar=Este PHP admite extensiones de calendarios. PHPSupportUTF8=Este PHP soporta las funciones UTF8. PHPSupportIntl=Este PHP soporta las funciones Intl. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=Este PHP soporta las funciones %s. PHPMemoryOK=Su memoria máxima de sesión PHP esta definida a <b>%s</b>. Esto debería ser suficiente. PHPMemoryTooLow=Su memoria máxima de sesión PHP está definida en <b>%s</b> bytes. Esto es muy poco. Se recomienda modificar el parámetro <b>memory_limit</b> de su archivo <b>php.ini</b> a por lo menos <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Su PHP no soporta Curl. ErrorPHPDoesNotSupportCalendar=Su instalación de PHP no admite extensiones de calendario. ErrorPHPDoesNotSupportUTF8=Este PHP no soporta las funciones UTF8. Resuelva el problema antes de instalar Dolibarr ya que no podrá funcionar correctamente. ErrorPHPDoesNotSupportIntl=Este PHP no soporta las funciones Intl. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Su instalación de PHP no soporta las funciones %s. ErrorDirDoesNotExists=El directorio <b>%s</b> no existe o no es accesible. ErrorGoBackAndCorrectParameters=Vuelva atrás y corrija los parámetros inválidos... @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=La aplicación intenta instalar la actualización YouTryInstallDisabledByFileLock=La aplicación intenta instalar la actualización, pero las páginas de instalación/actualización se han desactivado por razones de seguridad (mediante el archivo de bloqueo <strong>install.lock</strong> del directorio de documentos de dolibarr). <br> ClickHereToGoToApp=Haga clic aquí para ir a su aplicación ClickOnLinkOrRemoveManualy=Haga clic en el siguiente enlace y si siempre llega a esta página, debe eliminar manualmente el archivo install.lock del directorio de documentos +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/es_ES/link.lang b/htdocs/langs/es_ES/link.lang index 1f9c077de3a..7bfa0b17d00 100644 --- a/htdocs/langs/es_ES/link.lang +++ b/htdocs/langs/es_ES/link.lang @@ -8,3 +8,4 @@ LinkRemoved=El vínculo %s ha sido eliminado ErrorFailedToDeleteLink= Error al eliminar el vínculo '<b>%s</b>' ErrorFailedToUpdateLink= Error al actualizar el vínculo '<b>%s</b>' URLToLink=URL a enlazar +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/es_ES/mails.lang b/htdocs/langs/es_ES/mails.lang index a8d72baaba2..a8930d2dd3d 100644 --- a/htdocs/langs/es_ES/mails.lang +++ b/htdocs/langs/es_ES/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No se han encontrado contactos/direcciones con alguna NoContactLinkedToThirdpartieWithCategoryFound=No se han encontrado contactos/direcciones con alguna categoría OutGoingEmailSetup=Configuración del correo saliente InGoingEmailSetup=Configuración del correo entrante -OutGoingEmailSetupForEmailing=Configuración de correo saliente (para correo masivo) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Configuración de correo saliente predeterminada Information=Información ContactsWithThirdpartyFilter=Contactos con filtro de terceros. diff --git a/htdocs/langs/es_ES/main.lang b/htdocs/langs/es_ES/main.lang index d72146a9945..026de108ad1 100644 --- a/htdocs/langs/es_ES/main.lang +++ b/htdocs/langs/es_ES/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Guardar y permanecer SaveAndNew=Guardar y nuevo TestConnection=Probar la conexión ToClone=Copiar +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Seleccione los datos que desea copiar: NoCloneOptionsSpecified=No hay datos definidos para copiar Of=de @@ -829,6 +830,8 @@ Gender=Sexo Genderman=Hombre Genderwoman=Mujer ViewList=Vista de listado +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obligatorio Hello=Hola GoodBye=Adiós @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Seleccione sus opciones de gráfico para construir u Measures=Medidas XAxis=Eje X YAxis=Eje Y +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/es_ES/other.lang b/htdocs/langs/es_ES/other.lang index d74254a2e71..9ede964857b 100644 --- a/htdocs/langs/es_ES/other.lang +++ b/htdocs/langs/es_ES/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Actualmente solo es posible 1 campo como X-Axis. Solo se ha seleccionado el primer campo seleccionado. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Validación pedido de cliente Notify_ORDER_SENTBYMAIL=Envío pedido de cliente por e-mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Envío pedido a proveedor por e-mail @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL de la página WEBSITE_TITLE=Título WEBSITE_DESCRIPTION=Descripción WEBSITE_IMAGE=Imagen -WEBSITE_IMAGEDesc=Ruta relativa de las imágenes. Puede mantenerla vacía, 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). Use __WEBSITEKEY__ en la ruta si depende del nombre del sitio web. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Claves LinesToImport=Líneas a importar diff --git a/htdocs/langs/es_ES/products.lang b/htdocs/langs/es_ES/products.lang index 2ed6f756286..83090c479e6 100644 --- a/htdocs/langs/es_ES/products.lang +++ b/htdocs/langs/es_ES/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=¡Esta herramienta actualiza la tasa de IVA definida en MassBarcodeInit=Inicialización masiva de códigos de barra MassBarcodeInitDesc=Puede usar esta página para inicializar el código de barras en los objetos que no tienen un código de barras definido. Compruebe antes que el módulo de códigos de barras esté configurado correctamente. ProductAccountancyBuyCode=Código contable (compras) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Código contable (ventas) ProductAccountancySellIntraCode=Código contable (venta intracomunitaria) ProductAccountancySellExportCode=Código de contabilidad (venta de exportación) @@ -165,7 +167,7 @@ SuppliersPrices=Precios de proveedores SuppliersPricesOfProductsOrServices=Precios de proveedores (productos o servicios) CustomCode=Código aduanero CountryOrigin=País de origen -Nature=Naturaleza del producto (materia prima/acabado) +Nature=Nature of product (material/finished) ShortLabel=Etiqueta corta Unit=Unidad p=u. diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index c4298377e9e..89bfa4e3b90 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=que estoy vinculado al proyecto Time=Tiempo ListOfTasks=Listado de tareas GoToListOfTimeConsumed=Ir al listado de tiempos consumidos -GoToListOfTasks=Mostrar como listado -GoToGanttView=mostrar como Gantt GanttView=Vista de Gantt ListProposalsAssociatedProject=Listado de presupuestos asociados al proyecto ListOrdersAssociatedProject=Listado de pedidos de clientes asociados al proyecto @@ -188,7 +186,7 @@ PlannedWorkload=Carga de trabajo prevista PlannedWorkloadShort=Carga de trabajo ProjectReferers=Items relacionados ProjectMustBeValidatedFirst=El proyecto debe validarse primero -FirstAddRessourceToAllocateTime=Asignar un usuario a la tarea para asignar tiempo +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Entrada por día InputPerWeek=Entrada por semana InputPerMonth=Entrada por mes @@ -240,6 +238,7 @@ LatestModifiedProjects=Últimos %s proyectos modificados OtherFilteredTasks=Otras tareas filtradas NoAssignedTasks=Sin tareas asignadas ( Asigne proyectos/tareas al usuario actual desde el selector superior para indicar tiempos en ellas) ThirdPartyRequiredToGenerateInvoice=Se debe definir un tercero en el proyecto para poder facturarlo. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Permitir comentarios de los usuarios sobre las tareas AllowCommentOnProject=Permitir comentarios de los usuarios en los proyectos @@ -265,3 +264,4 @@ InvoiceToUse=Borrador de factura para usar NewInvoice=Nueva factura OneLinePerTask=Una línea por tarea OneLinePerPeriod=Una línea por período +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/es_ES/receiptprinter.lang b/htdocs/langs/es_ES/receiptprinter.lang index f72e8676fd9..4876103a07b 100644 --- a/htdocs/langs/es_ES/receiptprinter.lang +++ b/htdocs/langs/es_ES/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Impresora de pruebas CONNECTOR_NETWORK_PRINT=Impresora de red CONNECTOR_FILE_PRINT=Impresora Local CONNECTOR_WINDOWS_PRINT=Impresora local de Windows +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Impresora falsa para pruebas CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Perfil por defecto PROFILE_SIMPLE=Perfil simple PROFILE_EPOSTEP=Perfil Epos Tep @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Ref. factura +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Número de IVA intracomunitario +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/es_ES/stripe.lang b/htdocs/langs/es_ES/stripe.lang index b7f92f55d9d..d34c8786689 100644 --- a/htdocs/langs/es_ES/stripe.lang +++ b/htdocs/langs/es_ES/stripe.lang @@ -32,6 +32,7 @@ VendorName=Nombre del vendedor CSSUrlForPaymentForm=Url de la hoja de estilo CSS para el formulario de pago NewStripePaymentReceived=Nuevo pago de Stripe recibido NewStripePaymentFailed=Nuevo pago de Stripe intentado, pero ha fallado +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Clave secreta test STRIPE_TEST_PUBLISHABLE_KEY=Clave de test publicable STRIPE_TEST_WEBHOOK_KEY=Clave de prueba Webhook @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Enlace para configurar Stripe WebHook para llamar a l ToOfferALinkForLiveWebhook=Enlace para configurar Stripe WebHook para llamar a la IPN (modo real) PaymentWillBeRecordedForNextPeriod=El pago se registrará para el próximo período. ClickHereToTryAgain=<a href="%s">Haga clic aquí para volver a intentarlo ...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Debido a las fuertes reglas de autenticación del cliente, la creación de una tarjeta debe realizarse desde la oficina administrativa de Stripe. Puede hacer clic aquí para activar el registro de cliente de Stripe: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/es_ES/users.lang b/htdocs/langs/es_ES/users.lang index 62e0d03710c..b843c3e6ba4 100644 --- a/htdocs/langs/es_ES/users.lang +++ b/htdocs/langs/es_ES/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Usuarios y sus propiedades. DomainUser=Usuario de dominio Reactivate=Reactivar CreateInternalUserDesc=Este formulario le permite crear un usuario interno para su empresa/organización. Para crear un usuario externo (cliente, proveedor, etc), use el botón "Crear una cuenta de usuario" desde la ficha de un contacto del tercero. -InternalExternalDesc=Un usuario <b>interno</b> es un usuario que pertenece a su empresa/organización.<br>Un usuario <b>externo</b> es un usuario cliente, proveedor u otro.<br><br>En los 2 casos, los permisos de usuarios definen los derechos de acceso, pero el usuario externo puede además tener un gestor de menús diferente al usuario interno (véase Inicio - Configuración - Entorno) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=El permiso se concede ya que lo hereda de un grupo al cual pertenece el usuario. Inherited=Heredado UserWillBeInternalUser=El usuario creado será un usuario interno (ya que no está ligado a un tercero en particular) @@ -113,3 +113,5 @@ CantDisableYourself=No puede deshabilitar su propio registro de usuario ForceUserExpenseValidator=Forzar validador de informes de gastos ForceUserHolidayValidator=Forzar validador de solicitud de días libres ValidatorIsSupervisorByDefault=Por defecto, el validador es el supervisor del usuario. Mantener vacío para mantener este comportamiento. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/es_ES/website.lang b/htdocs/langs/es_ES/website.lang index fdbed999abc..f0b7e73215f 100644 --- a/htdocs/langs/es_ES/website.lang +++ b/htdocs/langs/es_ES/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Ver página en una pestaña nueva SetAsHomePage=Establecer como Página de inicio RealURL=URL Real ViewWebsiteInProduction=Ver sitio web usando la URL de inicio -SetHereVirtualHost=Si puede crear, en su servidor web (Apache, Nginx...), un Host Virtual con PHP activado y un directorio Root en <br><strong>%s</strong> <br>introduzca aquí el nombre del host virtual que ha creado, así que la previsualización puede verse usando este acceso directo al servidor, y no solo usando el servidor de Dolibarr +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=En el entorno de desarrollo, es posible que prefiera probar el sitio con el servidor web incrustado de PHP (se requiere PHP 5.5) ejecutando <br><strong> php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Ejecute su sitio web con otro proveedor de alojamiento Dolibarr</u> <br> Si no tiene un servidor web como Apache o NGinx disponible en Internet, puede exportar e importar su sitio web a otra instancia de Dolibarr proporcionada por otro proveedor de alojamiento de Dolibarr que brinde una integración completa con el módulo del sitio web. Puede encontrar una lista de algunos proveedores de hosting Dolibarr en <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Compruebe también que el host virtual tiene <strong>%s</strong> en archivos en <strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Lo sentimos, este sitio web está actualmente fue 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=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.<br>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) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. 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 @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=Para buenas prácticas de SEO, use un texto de entre 5 MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang index 9673e5b8955..02dbd732725 100644 --- a/htdocs/langs/es_MX/admin.lang +++ b/htdocs/langs/es_MX/admin.lang @@ -70,9 +70,7 @@ NoMaxSizeByPHPLimit=Nota: No hay límite establecido en la configuración de PHP MaxSizeForUploadedFiles=El tamaño máximo para los archivos subidos (0 para no permitir ninguna carga) UseCaptchaCode=Utilizar el código gráfico (CAPTCHA) en la página de inicio de sesión AntiVirusCommand=Ruta completa del comando del antivirus -AntiVirusCommandExample=Ejemplo para ClamWin: c:\\ Progra~1\\ClamWin\\bin\\clamscan.exe<br>Ejemplo para ClamAV: /usr/bin/clamscan AntiVirusParam=Más parámetros de línea de comandos -AntiVirusParamExample=Ejemplo para ClamWin: --database="C:\\Archivos de programa (x86)\\ClamWin\\lib" ComptaSetup=Establecer modulo de Contabilidad UserSetup=Establecer usuario Administrador MultiCurrencySetup=Configurar multidivisas @@ -153,7 +151,6 @@ FeatureDisabledInDemo=Característica deshabilitada en versión demo FeatureAvailableOnlyOnStable=Característica unicamente disponible en versiones oficiales estables BoxesDesc=Widgets son componentes mostrando alguna información que tu puedes agregar para personalizar algunas páginas. Tu puedes elegir entre mostrar el widget o no al seleccionar la página objetivo y haciendo click en 'Activar', o haciendo click en la papelera de reciclaje para deshabilitarlos. OnlyActiveElementsAreShown=Solo elementos de <a href="%s">\nmodulos habilitados</a> son\n mostrados. -ModulesDesc=Los módulos/aplicaciones determinan qué funciones están disponibles en el software. Algunos módulos requieren que se otorguen permisos a los usuarios después de activar el módulo. Haga clic en el botón de encendido/apagado (al final de la línea del módulo) para habilitar/deshabilitar un módulo/aplicación. ModulesMarketPlaceDesc=Tu puedes encontrar mas módulos para descargar en sitios web externos en el Internet ModulesDeployDesc=Si los permisos en tu sistema de archivos lo permiten, puedes usar esta herramienta para utilizar un módulo externo. El módulo entonces sera visible en la pestaña <strong>%s</strong>. ModulesMarketPlaces=Encontrar App/módulos externos diff --git a/htdocs/langs/es_MX/bills.lang b/htdocs/langs/es_MX/bills.lang index a6ee51cba02..63ece735923 100644 --- a/htdocs/langs/es_MX/bills.lang +++ b/htdocs/langs/es_MX/bills.lang @@ -26,6 +26,8 @@ NoInvoiceToCorrect=Ninguna factura para corregir InvoiceHasAvoir=Fue fuente de una o varias notas de crédito InvoiceCustomer=Factura del cliente CustomerInvoice=Factura del cliente +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund ConfirmDeletePayment=Are you sure you want to delete this payment ? PaymentAmount=Importe de pago BillStatusPaid=Pagado @@ -43,5 +45,5 @@ CreditNote=Nota de crédito ReasonDiscount=Razón PaymentTypeCB=Tarjeta de crédito PaymentTypeShortCB=Tarjeta de crédito -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template situationInvoiceShortcode_S=D diff --git a/htdocs/langs/es_MX/companies.lang b/htdocs/langs/es_MX/companies.lang index 72b4040e785..4ffbf46023e 100644 --- a/htdocs/langs/es_MX/companies.lang +++ b/htdocs/langs/es_MX/companies.lang @@ -7,8 +7,8 @@ DeleteContact=Eliminar un contacto/dirección ConfirmDeleteContact=¿Estás seguro que quieres borrar este contacto y toda la información heredada? MenuNewProspect=Nuevo prospecto MenuNewSupplier=Nuevo vendedor -NewCompany=Nueva compañía (prospecto, cliente, vendedor) -NewThirdParty=Nuevo tercero (prospecto, cliente, vendedor) +NewCompany=Nueva compañía (cliente potencial, cliente, proveedor) +NewThirdParty=Nuevo tercero (cleinte potencial, cliente, proveedor) CreateThirdPartyAndContact=Crear un tercero + un contacto hijo IdThirdParty=ID de tercero IdCompany=ID de empresa @@ -24,6 +24,7 @@ PriceFormatInCurrentLanguage=Formato de visualización de precios en el idioma y ThirdPartyEmail=Correo electrónico del tercero ThirdPartyCustomersWithIdProf12=Clientes con %s o %s ThirdPartySuppliers=Vendedores +ToCreateContactWithSameName=Creará automáticamente un contacto/dirección con la misma información en tercero. En la mayoría de los casos, incluso si su tercero es una persona física, la creación de un tercero solo es suficiente. ParentCompany=Empresa matriz ReportByQuarter=Reporte por tasa CivilityCode=Código de civilidad @@ -119,8 +120,18 @@ CompanyHasRelativeDiscount=Éste cliente tiene un descuento por defecto de <b>%s CompanyHasNoRelativeDiscount=Este cliente no tiene ningún descuento relativo por defecto HasRelativeDiscountFromSupplier=Tiene un descuento predeterminado de <b> %s%% </b> de este proveedor HasNoRelativeDiscountFromSupplier=No tiene un descuento relativo predeterminado de este proveedor. +CompanyHasAbsoluteDiscount=Este cliente aún tiene descuentos disponibles (notas de crédito o pagos) por <b>%s</b> %s +CompanyHasDownPaymentOrCommercialDiscount=Este cliente aún tiene descuentos disponibles (notas de crédito o pagos) por <b>%s</b> %s CompanyHasCreditNote=Este cliente aún tiene notas de crédito por <b>%s</b> %s +HasNoAbsoluteDiscountFromSupplier=No se tiene un descuento disponible con este proveedor +HasAbsoluteDiscountFromSupplier=Se tiene descuentos disponibles (notas de credito o pagos) por <b>%s</b>%s para este proveedor +HasDownPaymentOrCommercialDiscountFromSupplier=Se tiene descuentos disponibles (notas de credito o pagos) por <b>%s</b>%s para este proveedor +HasCreditNoteFromSupplier=Se tienen notas de crédito por <b>%s</b>%s para este proveedor CompanyHasNoAbsoluteDiscount=Este cliente no tiene descuentos fijos disponibles +CustomerAbsoluteDiscountAllUsers=Descuento absoluto para el cliente (autorizado para todos los usuarios) +CustomerAbsoluteDiscountMy=Descuento absoluto para el cliente (autorizado por usted mismo) +SupplierAbsoluteDiscountAllUsers=Descuento absoluto con proveedor (dado por todos los usuarios) +SupplierAbsoluteDiscountMy=Descuento absoluto con proveedor (dado por usted mismo) DiscountNone=Ninguno ContactId=ID de contacto NoContactDefinedForThirdParty=No se ha definido un contacto para este tercero @@ -128,16 +139,33 @@ NoContactDefined=No hay contacto definido DefaultContact=Contacto/dirección por defecto DeleteACompany=Eliminar empresa PersonalInformations=Datos personales +CustomerCode=Código de cliente +SupplierCode=Código de proveedor +CustomerCodeShort=Código de cliente +SupplierCodeShort=Código de proveedor +CustomerCodeDesc=Código de cliente, único para todos los clientes +SupplierCodeDesc=Código de proveedor, único para todos los proveedores RequiredIfCustomer=Requerido si el tercero es un cliente o cliente potencial +RequiredIfSupplier=Requerido si el tercero es un proveedor +ValidityControledByModule=Validez controlada por el módulo +ThisIsModuleRules=Reglas para este módulo CompanyDeleted=Empresa "%s" eliminada de la base de datos. ListOfContacts=Lista de contactos/direcciones ListOfContactsAddresses=Lista de contactos/direcciones +ListOfThirdParties=Lista de terceros ContactsAllShort=Todos (Sin filtro) ContactForOrdersOrShipments=Contacto de la orden o del envío ContactForInvoices=Contacto de facturación NoContactForAnyOrderOrShipments=Este contacto no es un contacto para cualquier pedido o envío +NewContactAddress=Nuevo contacto/dirección EditCompany=Editar empresa +ThisUserIsNot=Este usuario no es un cliente potencial, cliente ni proveedor +VATIntraCheckDesc=El numero de control de IVA intracomunitario debe incluir el prefijo del país. El enlace <b>%s</b> permite consultar al servicio de control de números de IVA intracomunitario (VIES). Se requiere acceso a Internet desde el servidor para que este servicio funcione. +VATIntraCheckableOnEUSite=Verificar el numero de control de IVA intracomunitario en la web de la Comisión Europea +VATIntraManualCheck=También puedes verificar manualmente desde el sitio web de la comision europea <a href="%s" target="_blank">%s</a> ErrorVATCheckMS_UNAVAILABLE=No es posible realizar la verificación. El servicio de comprobación no es prestado por el país miembro (%s). +NorProspectNorCustomer=No es cliente potencial, ni cliente +JuridicalStatus=Tipo de entidad legal OthersNotLinkedToThirdParty=Otros, no vinculado a un tercero ProspectStatus=Estatus del cliente potencial TE_MEDIUM=Mediana empresa @@ -152,22 +180,37 @@ ChangeContactInProcess=Cambiar estado a 'Contacto en proceso' ChangeContactDone=Cambiar estado a 'Contacto realizado' NoParentCompany=Ninguno DolibarrLogin=Login de usuario +ExportDataset_company_1=Terceros (Empresas/fundaciones/personas físicas) y sus propiedades +ExportDataset_company_2=Contactos y propiedades +ImportDataset_company_1=Terceros y sus propiedades +ImportDataset_company_2=Contactos/Direcciones adicionales del tercero +ImportDataset_company_3=Cuentas de banco del tercero +ImportDataset_company_4=Representante de ventas del tercero (asigna representantes de ventas/usuarios de companias) +PriceLevel=Nivel de precio +PriceLevelLabels=Etiquetas de nivel de precios DeleteFile=Borrar archivo ConfirmDeleteFile=¿Seguro que quieres borrar este archivo? AllocateCommercial=Asignado al representante de ventas Organization=Organización +FiscalYearInformation=Año fiscal FiscalMonthStart=Més de inicio del año fiscal +YouMustAssignUserMailFirst=Debe crear un correo electrónico para este usuario primero para poder agregarle notificaciones de correo electrónico. YouMustCreateContactFirst=Para poder agregar notificaciones por correo electrónico, primero debe definir contactos con correos electrónicos válidos para el tercero +ListSuppliersShort=Lista de proveedores +ListProspectsShort=Lista de clientes potenciales +ListCustomersShort=Lista de clientes ThirdPartiesArea=Terceros/Contactos LastModifiedThirdParties=Últimos %s Terceros modificados UniqueThirdParties=Total de terceros InActivity=Abierta OutstandingBillReached=Max. para la cuenta pendiente alcanzada OrderMinAmount=Cantidad mínima por pedido +MonkeyNumRefModelDesc=Devuelve un número con formato %syymm-nnnn para el código de cliente y %syymm-nnnn para código de proveedor donde yy es el año, mm el mes y nnnn una secuencia numérica sin ruptura y sin regresar a 0. LeopardNumRefModelDesc=El código es libre. Este código puede ser modificado en cualquier momento. ManagingDirectors=Administrador(es) (CEO, Director, Presidente...) MergeOriginThirdparty=Tercero duplicado (tercero que deseas eliminar) MergeThirdparties=Combinar terceros +ConfirmMergeThirdparties=¿Seguro que deseas combinar este tercero con el tercero actual? Todos los objetos vinculados (facturas, pedidos, ...) de este tercero serán trasladados al tercero actual y despues se eliminara el tercero. ThirdpartiesMergeSuccess=Se han fusionado los terceros SaleRepresentativeLogin=Inicio de sesión del representante de ventas SaleRepresentativeFirstname=Nombre del representante de ventas diff --git a/htdocs/langs/es_MX/other.lang b/htdocs/langs/es_MX/other.lang index 3404c216e5d..ac900b15595 100644 --- a/htdocs/langs/es_MX/other.lang +++ b/htdocs/langs/es_MX/other.lang @@ -2,4 +2,3 @@ Tools=Herramientas TMenuTools=Herramientas Notify_COMPANY_CREATE=Tercero creado -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. diff --git a/htdocs/langs/es_PE/admin.lang b/htdocs/langs/es_PE/admin.lang index ed1fa38ddd0..659e7e79f39 100644 --- a/htdocs/langs/es_PE/admin.lang +++ b/htdocs/langs/es_PE/admin.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - admin VersionProgram=Versión del programa VersionLastInstall=Instalar versión inicial -AntiVirusCommandExample=Ejemplo para ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Ejemplo para ClamAv: /usr/bin/clamscan ExampleOfDirectoriesForModelGen=Ejemplo de sintaxis:<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir Module30Name=Facturas Permission91=Consultar impuestos e IGV diff --git a/htdocs/langs/es_PE/bills.lang b/htdocs/langs/es_PE/bills.lang index 3267ce16011..688939af29d 100644 --- a/htdocs/langs/es_PE/bills.lang +++ b/htdocs/langs/es_PE/bills.lang @@ -5,9 +5,11 @@ InvoiceAvoir=Nota de crédito InvoiceAvoirAsk=Nota de crédito para corregir factura InvoiceCustomer=Factura de cliente CustomerInvoice=Factura de cliente +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund BillShortStatusClosedUnpaid=Cerrado ConfirmClassifyPaidPartiallyReasonDiscountNoVat=El resto a pagar <b>(%s %s)</b> es un descuento acordado después de la factura. Acepto perder el IGV de este descuento AmountOfBillsByMonthHT=Importe de las facturas por mes (Sin IGV) CreditNote=Nota de crédito VATIsNotUsedForInvoice=* IGV no aplicable art-293B del CGI -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template diff --git a/htdocs/langs/es_PE/mrp.lang b/htdocs/langs/es_PE/mrp.lang index 14a870e357b..a699d3a726f 100644 --- a/htdocs/langs/es_PE/mrp.lang +++ b/htdocs/langs/es_PE/mrp.lang @@ -1,14 +1,55 @@ # Dolibarr language file - Source file is en_US - mrp +Mrp=Órdenes de Fabricación +MO=Orden de Fabricación +MRPDescription=Modulo para gestionar la producción y órdenes de fabricación (OF). MRPArea=Área PRM -MenuBOM=Listas de material +MrpSetupPage=Configuración del modulo PRM +MenuBOM=Lista de materiales LatestBOMModified=Últimas%s Lista de materiales modificados +LatestMOModified=Últimas %s Órdenes de Fabricación modificadas BillOfMaterials=Lista de Material ListOfBOMs=Listado de Lista De Material - BOM +ListOfManufacturingOrders=Lista de Órdenes de Fabricación NewBOM=Nueva lista de material +ProductBOMHelp=Producto para crear con este BOM. <br>Nota: Productos con la propiedad 'Naturaleza del producto'= 'Materia prima' no serán visibles en esta lista. BOMsNumberingModules=Plantillas de numeración BOM +BOMsModelModule=Plantillas de documento BOM +MOsNumberingModules=Numeración de plantillas MO +MOsModelModule=Plantillas de documento MO FreeLegalTextOnBOMs=Texto libre en documento BOM WatermarkOnDraftBOMs=Marca de agua en BOM borrador +FreeLegalTextOnMOs=Texto libre en documento MO +WatermarkOnDraftMOs=Marca de agua en borrador MO +ConfirmCloneBillOfMaterials=Está seguro de clonar esta lista de materiales %s? +ConfirmCloneMo=Está seguro de clonar la Orden de Fabricación %s? ValueOfMeansLoss=Valor de 0.95 significa un promedio de 5%% pérdidas durante la producción -DeleteBillOfMaterials=Borrar Lista De Materiales +DeleteBillOfMaterials=Eliminar Lista De Materiales ConfirmDeleteBillOfMaterials=Está seguro de borrar esta Lista de Materiales ConfirmDeleteMo=Está seguro de borrar esta Lista de Materiales +NewMO=Nueva Orden de Fabricación +QtyToProduce=Cantidad a producir +DateEndPlannedMo=Fecha de fin planeada +KeepEmptyForAsap=Vacío si es 'Tan pronto como sea posible' +EstimatedDurationDesc=Duración estimada a fabricar el producto usando este BOM +ConfirmValidateBom=Está seguro de validar el BOM con la referencia <strong>%s</strong> (Usted podrá usarlo para crear nuevas órdenes de fabricación) +ConfirmCloseBom=Está seguro de cancelar este BOM (Ya no podrá usarlo para crear nuevas órdenes de fabricación) +ConfirmReopenBom=Está seguro de re-abrir este BOM (Podrá usarlo para crear nuevas órdenes de fabricación) +QtyFrozen=Cant. Congelada +QuantityFrozen=Cantidad congelada +QuantityConsumedInvariable=Cuando está marcada, la cantidad consumida es siempre el valor asignado y no depende de la cantidad producida +DisableStockChangeHelp=Cuando está marcada, el stock no cambia en este producto, cualquiera que sea la cantidad consumida. +BomAndBomLines=Lista de materiales y lineas +BOMLine=Linea de BOM +CreateMO=Crear MO +ToConsume=Consumir +ToProduce=Producir +QtyAlreadyConsumed=Cant. consumida +QtyAlreadyProduced=Cant. producida +ConsumeOrProduce=Consumir o Producir +ConsumeAndProduceAll=Consumir y Producir Todo +TheProductXIsAlreadyTheProductToProduce=El producto a agregar es el producto a producir +ForAQuantityOf1=Para una cantidad a producir de 1 BOM +ConfirmValidateMo=Está seguro de validar esta Orden de Fabricación? +AddNewConsumeLines=Agregar nueva linea para consumir +ProductsToConsume=Productos para consumir +ProductsToProduce=Productos para producir diff --git a/htdocs/langs/es_VE/bills.lang b/htdocs/langs/es_VE/bills.lang index 753248eaf0d..e5e74735485 100644 --- a/htdocs/langs/es_VE/bills.lang +++ b/htdocs/langs/es_VE/bills.lang @@ -1,5 +1,7 @@ # Dolibarr language file - Source file is en_US - bills BillsCustomersUnpaid=Facturas a clientes pendientes de cobro +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund CreateCreditNote=Crear factura de abono BillShortStatusConverted=Pagada CustomerBillsUnpaid=Facturas a clientes pendientes de cobro @@ -8,5 +10,5 @@ PaymentConditionShortPT_ORDER=Pedido PaymentTypeShortTRA=A validar VATIsNotUsedForInvoice=- LawApplicationPart1=- -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template situationInvoiceShortcode_S=D diff --git a/htdocs/langs/es_VE/other.lang b/htdocs/langs/es_VE/other.lang index 74603c3a3e3..6f639e2a2ca 100644 --- a/htdocs/langs/es_VE/other.lang +++ b/htdocs/langs/es_VE/other.lang @@ -1,4 +1,3 @@ # Dolibarr language file - Source file is en_US - other SourcesRepository=Repositorio de fuentes WEBSITE_DESCRIPTION=Descripcion -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. diff --git a/htdocs/langs/et_EE/admin.lang b/htdocs/langs/et_EE/admin.lang index 7e62c9545de..61216902bb9 100644 --- a/htdocs/langs/et_EE/admin.lang +++ b/htdocs/langs/et_EE/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Märkus: PHP seadistustes pole piiri määratletud MaxSizeForUploadedFiles=Üleslaetava faili maksimaalne suurus (0 keelab failide üleslaadimise) UseCaptchaCode=Kasuta sisselogimise lehel graafilist koodi (CAPTCHA) -AntiVirusCommand= Täielik süsteemi rada antiviiruse käsuni -AntiVirusCommandExample= ClamWini põhine näide: C:\\Program~1\\ClamWin\\bin\\clamscan.exe<br>ClamAV põhine näide: /usr/bin/clamscan +AntiVirusCommand=Täielik süsteemi rada antiviiruse käsuni +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Lisaparameetrid, mida käsureal edastada -AntiVirusParamExample= ClamWini põhine näide: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Raamatupidamise mooduli seadistamine UserSetup=Kasutajate haldamise seadistamine MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Demoversioonis blokeeritud funktsionaalsus 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. OnlyActiveElementsAreShown=Näidatakse ainult elemente <a href="%s">sisse lülitatud moodulitest</a>. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Alla laadimiseks leiad rohkem mooduleid Internetist. 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 <strong>%s</strong>. ModulesMarketPlaces=Otsi katsetuskärgus rakendusi/mooduleid @@ -212,6 +212,7 @@ CompatibleUpTo=Ühilduv versioooniga %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Uuendatud Nouveauté=Novelty AchatTelechargement=Osta / Laadi alla @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Saadaolevad vidinad BoxesActivated=Aktiveeritud vidinad ActivateOn=Aktiveeri lehel @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Jäta tühjaks vaikeväärtuse kasutamiseks DefaultLink=Vaikimisi link SetAsDefault=Määra vaikimisi ValueOverwrittenByUserSetup=Hoiatus: kasutaja võib selle väärtuse üle kirjutada oma seadetega (iga kasutaja saab määratleda isikliku clicktodial URLi) -ExternalModule=Väline moodul - paigaldatud kausta %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass-vöötkoodi loomine kolmandatele osapooltele BarcodeInitForProductsOrServices=Toodete/teenuste jaoks massiline vöötkoodide loomine või lähtestamine CurrentlyNWithoutBarCode=Praegu on teil <strong>%s</strong> kirje <strong>%s</strong> %s kohta ilma vöötkoodi määramata. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Piirkonnad DictionaryCountry=Riigid DictionaryCurrency=Valuutad -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=Käibe- või müügimaksumäärad @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Määr LocalTax1IsNotUsed=Ära kasuta teist maksu LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=Vaikimisi pakutud IRPF on 0. Reegli lõpp. LocalTax2IsUsedExampleES=Hispaanias on nad vabakutselised ja spetsialistid, kes pakuvad teenuseid ja ettevõtted, kes on valinud moodulipõhise maksusüsteemi. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Müügid - Ostud CalcLocaltax1Desc=Kohalike maksude aruannete arvutamiseks kasutatakse kohalike maksude müügi ja kohalike maksude ostude vahet @@ -1018,6 +1025,7 @@ CalcLocaltax2=Ostud CalcLocaltax2Desc=Kohalike maksude aruanded on kohalike maksude ostude summas CalcLocaltax3=Müügid CalcLocaltax3Desc=Kohalike maksude aruanded on kohalike maksude müükide summas +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Vaikimisi kasutatav silt, kui koodile ei leitud tõlke vastet LabelOnDocuments=Dokumentide silt LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Sündmuste turvaaudit Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=Süsteemi info sisaldab mitmesugust tehnilist infot, mida ei saa muuta ning mis on nähtav vaid administraatoritele. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Kasutajate mooduli seadistamine UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Arve dokumentide mudelid BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Sunni arve kuupäevaks arve kinnitamise kuupäev -SuggestedPaymentModesIfNotDefinedInInvoice=Soovitatav vaikimisi makseviis arvel, kui seda pole arvel määratletud +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Vaba tekst arvetel @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Pakkumiste mooduli seadistamine ProposalsNumberingModules=Pakkumiste numeratsiooni mudelid ProposalsPDFModules=Pakkumiste dokumentatsiooni mudelid -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Vaba tekst pakkumistel WatermarkOnDraftProposal=Vesimärk pakkumiste mustanditel (puudub, kui tühi) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Tellimuste numeratsiooni mudelid OrdersModelModule=Tellimuste dokumentide mudelid @@ -1471,7 +1482,7 @@ LDAPFieldCompanyExample=Example: o LDAPFieldSid=SID LDAPFieldSidExample=Example: objectsid LDAPFieldEndLastSubscription=Tellimuse lõpu kuupäev -LDAPFieldTitle=Job position +LDAPFieldTitle=Ametikoht LDAPFieldTitleExample=Näide: tiitel LDAPFieldGroupid=Group id LDAPFieldGroupidExample=Exemple : gidnumber @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/et_EE/bills.lang b/htdocs/langs/et_EE/bills.lang index e866e640b5e..8cba62107af 100644 --- a/htdocs/langs/et_EE/bills.lang +++ b/htdocs/langs/et_EE/bills.lang @@ -66,9 +66,9 @@ paymentInInvoiceCurrency=in invoices currency PaidBack=Tagasi makstud DeletePayment=Kustuta makse ConfirmDeletePayment=Kas olete kindel, et soovite selle makse kustutada? -ConfirmConvertToReduc=Kas soovite selle %s konverteerida absoluutseks allahindluseks? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=Summa salvestatakse kõigi allahindluste hulka ja seda saab kasutada selle kliendi jooksva või tulevase arve allahindlusena. -ConfirmConvertToReducSupplier=Kas soovite selle %s konverteerida absoluutseks allahindluseks? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Tarnija maksed ReceivedPayments=Laekunud maksed @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Maksa ToMakePaymentBack=Maksa tagasi ListOfYourUnpaidInvoices=Maksmata arvete nimekiri NoteListOfYourUnpaidInvoices=Märkus: see nimekiri sisaldab vaid nende kolmandate isikute arveid, kelle jaoks Sa oled märgitud müügiesindajaks. -RevenueStamp=Maksumärk +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Tagastab numbri formaadiga %syymm-nnnn tavaliste arvete jaoks ja %syymm-nnnn kreeditarvete jaoks, kus yy on aasta, mm on kuu ja nnnn on katkestusteta jada, mis ei lähe kunagi 0 tagasi. @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Arve kustutatud +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/et_EE/blockedlog.lang b/htdocs/langs/et_EE/blockedlog.lang index 1da7967fe88..ac567943c5c 100644 --- a/htdocs/langs/et_EE/blockedlog.lang +++ b/htdocs/langs/et_EE/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/et_EE/cashdesk.lang b/htdocs/langs/et_EE/cashdesk.lang index c9c6fd87412..0a680f21d67 100644 --- a/htdocs/langs/et_EE/cashdesk.lang +++ b/htdocs/langs/et_EE/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Lisa see artikkel RestartSelling=Mine müümisel tagasi SellFinished=Sale complete PrintTicket=Trüki tšekk +SendTicket=Send ticket NoProductFound=Artiklit ei leitud ProductFound=toodet leitud NoArticle=Artiklid puuduvad @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Arveid Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Veebilehitseja BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/et_EE/companies.lang b/htdocs/langs/et_EE/companies.lang index 99c3f2219cf..7e172d130b8 100644 --- a/htdocs/langs/et_EE/companies.lang +++ b/htdocs/langs/et_EE/companies.lang @@ -2,16 +2,16 @@ ErrorCompanyNameAlreadyExists=Ettevõte nimega %s on juba olemas. Vali mõni muu. ErrorSetACountryFirst=Esmalt vali riik SelectThirdParty=Vali kolmas isik -ConfirmDeleteCompany=Are you sure you want to delete this company and all inherited information? +ConfirmDeleteCompany=Kas soovite kindlasti selle ettevõtte ja kogu päritud teabe kustutada? DeleteContact=Kustuta kontakt/aadress -ConfirmDeleteContact=Are you sure you want to delete this contact and all inherited information? -MenuNewThirdParty=New Third Party -MenuNewCustomer=New Customer -MenuNewProspect=New Prospect -MenuNewSupplier=New Vendor +ConfirmDeleteContact=Kas soovite kindlasti selle kontakti ja kogu päritud teabe kustutada? +MenuNewThirdParty=Uus kolmas osapool +MenuNewCustomer=Uus klient +MenuNewProspect=Uus huviline +MenuNewSupplier=Uus tarnija MenuNewPrivateIndividual=Uus eraisik -NewCompany=New company (prospect, customer, vendor) -NewThirdParty=New Third Party (prospect, customer, vendor) +NewCompany=Uus ettevõte (huviline, klient, müüja) +NewThirdParty=Uus kolmas osapool (huviline, klient, müüja) CreateDolibarrThirdPartySupplier=Create a third party (vendor) CreateThirdPartyOnly=Uus kolmas isik CreateThirdPartyAndContact=Create a third party + a child contact @@ -25,7 +25,7 @@ ThirdPartyContact=Third-party contact/address Company=Ettevõte CompanyName=Ettevõtte nimi AliasNames=Hüüdnimi (ärinimi, kaubamärk, ...) -AliasNameShort=Alias Name +AliasNameShort=Varjunimi Companies=Ettevõtted CountryIsInEEC=Country is inside the European Economic Community PriceFormatInCurrentLanguage=Price display format in the current language and currency @@ -41,17 +41,17 @@ ThirdPartyCustomersWithIdProf12=Klient koos %s või %s ThirdPartySuppliers=Tarnijad ThirdPartyType=Third-party type Individual=Eraisik -ToCreateContactWithSameName=Will automatically create a contact/address with same information as the third party under the third party. In most cases, even if your third party is a physical person, creating a third party alone is enough. +ToCreateContactWithSameName=Loob automaatselt kontakti / aadressi, millel on sama teave kui kolmanda osapoole all. Enamikul juhtudel, isegi kui teie kolmas osapool on füüsiline isik, piisab ainult kolmanda osapoole loomisest. ParentCompany=Emaettevõte Subsidiaries=Tütarettevõtted -ReportByMonth=Report by month -ReportByCustomers=Report by customer +ReportByMonth=Aruanne kuude kaupa +ReportByCustomers=Kliendi aruanne ReportByQuarter=Aruanne määra alusel CivilityCode=Sisekorraeeskiri RegisteredOffice=Peakontor Lastname=Perekonnanimi Firstname=Eesnimi -PostOrFunction=Job position +PostOrFunction=Ametikoht UserTitle=Tiitel NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact @@ -78,18 +78,18 @@ Zip=Postiindeks Town=Linn Web=Veeb Poste= Ametikoht -DefaultLang=Language default +DefaultLang=Keele vaikeseade 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=Sales tax is not used +VATIsNotUsed=Käibemaksu ei kasutata CopyAddressFromSoc=Copy address from third-party details ThirdpartyNotCustomerNotSupplierSoNoRef=Third party neither customer nor vendor, no available referring objects ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Third party neither customer nor vendor, discounts are not available -PaymentBankAccount=Payment bank account +PaymentBankAccount=Makse pangakonto OverAllProposals=Pakkumised OverAllOrders=Tellimused OverAllInvoices=Arved -OverAllSupplierProposals=Price requests +OverAllSupplierProposals=Hinnapäringud ##### Local Taxes ##### LocalTax1IsUsed=Kasuta teist maksu LocalTax1IsUsedES= RE on kasutuses @@ -98,9 +98,9 @@ LocalTax2IsUsed=Kasuta kolmandat maksu LocalTax2IsUsedES= IRPF on kasutuses LocalTax2IsNotUsedES= IRPF pole kasutuses WrongCustomerCode=Vigane kliendi kood -WrongSupplierCode=Vendor code invalid +WrongSupplierCode=Tarnija kood on vale CustomerCodeModel=Kliendi koodi mudel -SupplierCodeModel=Vendor code model +SupplierCodeModel=Tarnija koodimudel Gencod=Vöötkood ##### Professional ID ##### ProfId1Short=Reg nr 1 @@ -108,7 +108,7 @@ ProfId2Short=Reg nr 2 ProfId3Short=Reg nr 3 ProfId4Short=Reg nr 4 ProfId5Short=Reg nr 5 -ProfId6Short=Prof. id 6 +ProfId6Short=Reg nr 6 ProfId1=Registrikood ProfId2=Registrikood 2 ProfId3=Registrikood 3 @@ -263,8 +263,8 @@ ProfId1DZ=RC ProfId2DZ=Art. ProfId3DZ=NIF ProfId4DZ=NIS -VATIntra=VAT ID -VATIntraShort=VAT ID +VATIntra=KMKR number +VATIntraShort=KMKR number VATIntraSyntaxIsValid=Süntaks on kehtiv VATReturn=VAT return ProspectCustomer=Huviline/klient @@ -292,8 +292,8 @@ CustomerAbsoluteDiscountMy=Absolute customer discounts (granted by yourself) SupplierAbsoluteDiscountAllUsers=Absolute vendor discounts (entered by all users) SupplierAbsoluteDiscountMy=Absolute vendor discounts (entered by yourself) DiscountNone=Pole -Vendor=Vendor -Supplier=Vendor +Vendor=Tarnija +Supplier=Tarnija AddContact=Uus kontakt AddContactAddress=Uus kontakt/aadress EditContact=Muuda kontakti @@ -301,31 +301,30 @@ EditContactAddress=Muuda kontakti/aadressi Contact=Kontakt ContactId=Contact id ContactsAddresses=Kontaktid/aadressid -FromContactName=Name: +FromContactName=Nimi: NoContactDefinedForThirdParty=Antud kolmanda isikuga pole ühtki kontakti seotud NoContactDefined=Kontakti pole määratud DefaultContact=Vaikimisi kontakt/aadress -ContactByDefaultFor=Default contact/address for +ContactByDefaultFor=Vaikekontakti / aadress AddThirdParty=Uus kolmas isik DeleteACompany=Kustuta ettevõte PersonalInformations=Isikuandmed AccountancyCode=Accounting account -CustomerCode=Customer Code -SupplierCode=Vendor Code -CustomerCodeShort=Customer Code -SupplierCodeShort=Vendor Code -CustomerCodeDesc=Customer Code, unique for all customers -SupplierCodeDesc=Vendor Code, unique for all vendors +CustomerCode=Kliendi kood +SupplierCode=Tarnija kood +CustomerCodeShort=Kliendi kood +SupplierCodeShort=Tarnija kood +CustomerCodeDesc=Kliendi kood, unikaalne igal kliendil +SupplierCodeDesc=Tarnija kood, unikaalne igal kliendil RequiredIfCustomer=Nõutud, kui kolmas isik on klient või huviline RequiredIfSupplier=Required if third party is a vendor ValidityControledByModule=Validity controlled by module -ThisIsModuleRules=Rules for this module +ThisIsModuleRules=Selle mooduli reeglid ProspectToContact=Huviline, kellega ühendust võtta CompanyDeleted=Ettevõte "%s" on andmebaasist kustutatud. ListOfContacts=Kontaktide/aadresside nimekiri ListOfContactsAddresses=Kontaktide/aadresside nimekiri -ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party +ListOfThirdParties=Kolmandate osapoolte nimekiri ShowContact=Näita kontakti ContactsAllShort=Kõik (filtrita) ContactType=Kontakti liik @@ -340,7 +339,7 @@ NoContactForAnyProposal=See kontakt ei ole ühegi pakkumisega seotud NoContactForAnyContract=See kontakt ei ole ühegi lepinguga seotud NoContactForAnyInvoice=See kontakt ei ole ühegi arvega seotud NewContact=Uus kontaktisik -NewContactAddress=New Contact/Address +NewContactAddress=Uus kontakt/aadress MyContacts=Minu kontaktid Capital=Kapital CapitalOf=%s kapital @@ -354,7 +353,7 @@ VATIntraManualCheck=You can also check manually on the European Commission websi ErrorVATCheckMS_UNAVAILABLE=Kontrollida pole võimalik. Kontrolli, et liikmesriik (%s) võimaldab teenust kasutada. NorProspectNorCustomer=Not prospect, nor customer JuridicalStatus=Legal Entity Type -Staff=Employees +Staff=Töötajad ProspectLevelShort=Potentsiaalne ProspectLevel=Huvilise potentsiaal ContactPrivate=Era- @@ -375,19 +374,19 @@ TE_MEDIUM=Keskmise suurusega ettevõte TE_ADMIN=Valitsusasutus TE_SMALL=Väikeettevõte TE_RETAIL=Jaemüüja -TE_WHOLE=Wholesaler +TE_WHOLE=Hulgimüüja TE_PRIVATE=Eraisik TE_OTHER=Muu StatusProspect-1=Ära kontakteeru StatusProspect0=Pole kunagi kontakteerutud -StatusProspect1=To be contacted +StatusProspect1=Tuleb ühendust võtta StatusProspect2=Kontakteerumine teoksil StatusProspect3=Kontakteerumine lõpetatud -ChangeDoNotContact=Muuda staatuseks "Ära kontakteeru" -ChangeNeverContacted=Muuda staatuseks "Pole kunagi kontakteerutud" -ChangeToContact=Change status to 'To be contacted' -ChangeContactInProcess=Muuda staatuseks "Kontakteerumine teoksil" -ChangeContactDone=Muuda staatuseks "Kontakteerumine teostatud" +ChangeDoNotContact=Muuda staatuseks 'Ära kontakteeru' +ChangeNeverContacted=Muuda staatuseks 'Pole kunagi kontakteerutud' +ChangeToContact=Muuda staatuseks 'Tuleb ühendust võtta' +ChangeContactInProcess=Muuda staatuseks 'Kontakteerumine teoksil' +ChangeContactDone=Muuda staatuseks 'Kontakteerumine teostatud' ProspectsByStatus=Huvilised staatuse järgi NoParentCompany=Mitte ükski ExportCardToFormat=Ekspordi kaart formaati @@ -404,15 +403,15 @@ PriceLevel=Price Level PriceLevelLabels=Price Level Labels DeliveryAddress=Tarneaadress AddAddress=Lisa aadress -SupplierCategory=Vendor category +SupplierCategory=Tarnija kategooria JuridicalStatus200=Sõltumatu DeleteFile=Kustuta fail ConfirmDeleteFile=Oled sa kindel, et soovid selle faili kustutada? AllocateCommercial=Assigned to sales representative Organization=Organisatsioon -FiscalYearInformation=Fiscal Year +FiscalYearInformation=Eelarveaasta FiscalMonthStart=Majandusaasta esimene kuu -SocialNetworksInformation=Social networks +SocialNetworksInformation=Sotsiaalvõrgud SocialNetworksFacebookURL=Facebook URL SocialNetworksTwitterURL=Twitter URL SocialNetworksLinkedinURL=Linkedin URL @@ -421,25 +420,25 @@ SocialNetworksYoutubeURL=Youtube URL SocialNetworksGithubURL=Github URL YouMustAssignUserMailFirst=You must create an email for this user prior to being able to add an email notification. YouMustCreateContactFirst=To be able to add email notifications, you must first define contacts with valid emails for the third party -ListSuppliersShort=List of Vendors -ListProspectsShort=List of Prospects -ListCustomersShort=List of Customers -ThirdPartiesArea=Third Parties/Contacts -LastModifiedThirdParties=Last %s modified Third Parties -UniqueThirdParties=Total of Third Parties +ListSuppliersShort=Tarnijate nimekiri +ListProspectsShort=Huviliste nimekiri +ListCustomersShort=Klientide nimekiri +ThirdPartiesArea=Kolmandad isikud/Kontaktid +LastModifiedThirdParties=Viimati muudetud %s kolmandad isikud +UniqueThirdParties=Kolmandaid isikuid kokku InActivity=Ava ActivityCeased=Suletud -ThirdPartyIsClosed=Third party is closed -ProductsIntoElements=List of products/services into %s +ThirdPartyIsClosed=Kolmas osapool on suletud +ProductsIntoElements=Toodete / teenuste loetelu %s CurrentOutstandingBill=Hetkel maksmata summa OutstandingBill=Suurim võimalik maksmata arve OutstandingBillReached=Max. for outstanding bill reached -OrderMinAmount=Minimum amount for order +OrderMinAmount=Minimaalne tellimuse summa 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=Kood on vaba, seda saab igal ajal muuta. ManagingDirectors=Haldaja(te) nimi (CEO, direktor, president...) MergeOriginThirdparty=Duplicate third party (third party you want to delete) -MergeThirdparties=Merge third parties +MergeThirdparties=Kolmandate osapoolte ühendamine 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 SaleRepresentativeLogin=Login of sales representative @@ -447,9 +446,10 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports -PaymentTypeCustomer=Payment Type - Customer -PaymentTermsCustomer=Payment Terms - Customer +PaymentTypeCustomer=Makse tüüp - klient +PaymentTermsCustomer=Maksetingimused - klient PaymentTypeSupplier=Payment Type - Vendor PaymentTermsSupplier=Payment Term - Vendor PaymentTypeBoth=Payment Type - Customer and Vendor diff --git a/htdocs/langs/et_EE/compta.lang b/htdocs/langs/et_EE/compta.lang index 7b481d6ec18..51037afab90 100644 --- a/htdocs/langs/et_EE/compta.lang +++ b/htdocs/langs/et_EE/compta.lang @@ -78,15 +78,15 @@ MenuNewSocialContribution=New social/fiscal tax NewSocialContribution=New social/fiscal tax AddSocialContribution=Add social/fiscal tax ContributionsToPay=Social/fiscal taxes to pay -AccountancyTreasuryArea=Billing and payment area +AccountancyTreasuryArea=Arveldused ja maksed NewPayment=Uus makse PaymentCustomerInvoice=Müügiarve makse -PaymentSupplierInvoice=vendor invoice payment +PaymentSupplierInvoice=Ostuarve makse PaymentSocialContribution=Social/fiscal tax payment PaymentVat=KM makse ListPayment=Maksete nimekiri ListOfCustomerPayments=Klientide maksete nimekiri -ListOfSupplierPayments=List of vendor payments +ListOfSupplierPayments=Tarnija maksete nimekiri DateStartPeriod=Perioodi alguse kuupäev DateEndPeriod=Perioodi lõpu kuupäev newLT1Payment=New tax 2 payment @@ -106,7 +106,7 @@ VATPayments=Sales tax payments VATRefund=Sales tax refund NewVATPayment=New sales tax payment NewLocalTaxPayment=New tax %s payment -Refund=Refund +Refund=Tagasimakse SocialContributionsPayments=Social/fiscal taxes payments ShowVatPayment=Näita käibemaksu makset TotalToPay=Kokku maksta @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Näidatud summad sisaldavad kõiki makse -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/et_EE/errors.lang b/htdocs/langs/et_EE/errors.lang index 1c9d5419603..caaab19cf77 100644 --- a/htdocs/langs/et_EE/errors.lang +++ b/htdocs/langs/et_EE/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Fail ei jõudnud täielikult serverisse. ErrorNoTmpDir=Ajutist kausta %s ei ole olemas. ErrorUploadBlockedByAddon=PHP/Apache pistik blokeeris üleslaadimise. ErrorFileSizeTooLarge=Fail on liiga suur. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Liiga pikk täisarvu tüübi jaoks (maksimaalselt %s numbrit) ErrorSizeTooLongForVarcharType=Liiga pikk sõne tüübi jaoks (maksimaalselt %s tähemärki) ErrorNoValueForSelectType=Palun sisesta nimekirja väärtused @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/et_EE/install.lang b/htdocs/langs/et_EE/install.lang index c09d2515759..4a90a8ebd5b 100644 --- a/htdocs/langs/et_EE/install.lang +++ b/htdocs/langs/et_EE/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Antud PHP poolt kasutatav sessiooni maksimaalne mälu on <b>%s</b>. See peaks olema piisav. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Kausta %s ei ole olemas. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/et_EE/link.lang b/htdocs/langs/et_EE/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/et_EE/link.lang +++ b/htdocs/langs/et_EE/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/et_EE/mails.lang b/htdocs/langs/et_EE/mails.lang index 124100ca5fc..3df50cb7057 100644 --- a/htdocs/langs/et_EE/mails.lang +++ b/htdocs/langs/et_EE/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Informatsioon ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/et_EE/main.lang b/htdocs/langs/et_EE/main.lang index 2cfc2cf6a14..47507ee7b1b 100644 --- a/htdocs/langs/et_EE/main.lang +++ b/htdocs/langs/et_EE/main.lang @@ -31,7 +31,7 @@ Translation=Tõlge EmptySearchString=Enter a non empty search string NoRecordFound=Kirjet ei leitud NoRecordDeleted=No record deleted -NotEnoughDataYet=Not enough data +NotEnoughDataYet=Pole piisavalt andmeid NoError=Vigu ei tekkinud Error=Viga Errors=Vead @@ -65,19 +65,19 @@ ErrorNoVATRateDefinedForSellerCountry=Viga: riigi '%s' jaoks ei ole käibemaksum ErrorNoSocialContributionForSellerCountry=Error, no social/fiscal taxes type defined for country '%s'. ErrorFailedToSaveFile=Viga: faili salvestamine ebaõnnestus. ErrorCannotAddThisParentWarehouse=You are trying to add a parent warehouse which is already a child of a existing warehouse -MaxNbOfRecordPerPage=Max. number of records per page -NotAuthorized=You are not authorized to do that. +MaxNbOfRecordPerPage=Maksimaalne kirjete arv ühel lehel +NotAuthorized=Teil pole selleks õigusi. SetDate=Sea kuupäev SelectDate=Vali kuupäev SeeAlso=Vaata lisaks %s SeeHere=Vaata siia ClickHere=Klõpsa siia -Here=Here +Here=Siin Apply=Rakenda BackgroundColorByDefault=Vaikimisi taustavärv -FileRenamed=The file was successfully renamed -FileGenerated=The file was successfully generated -FileSaved=The file was successfully saved +FileRenamed=Fail nimetati edukalt ümber +FileGenerated=Fail loodi edukalt +FileSaved=Fail salvestati edukalt FileUploaded=Fail on edukalt üles laetud FileTransferComplete=File(s) uploaded successfully FilesDeleted=File(s) successfully deleted @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Kontrolli ühendust ToClone=Klooni +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Kloonitavad andmed pole määratletud. Of=/ @@ -213,7 +214,7 @@ Parameter=Parameeter Parameters=Parameetrid Value=Väärtus PersonalValue=Isiklik väärtus -NewObject=New %s +NewObject=Uus %s NewValue=Uus väärtus CurrentValue=Praegune väärtus Code=Kood @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=Nimekirja vaade +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Tere GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/et_EE/other.lang b/htdocs/langs/et_EE/other.lang index b90544436d0..45f1f704e4f 100644 --- a/htdocs/langs/et_EE/other.lang +++ b/htdocs/langs/et_EE/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Tiitel WEBSITE_DESCRIPTION=Kirjeldus 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/et_EE/products.lang b/htdocs/langs/et_EE/products.lang index a84a75db6e5..1334c8a4108 100644 --- a/htdocs/langs/et_EE/products.lang +++ b/htdocs/langs/et_EE/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Päritolumaa -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Ühik p=u. diff --git a/htdocs/langs/et_EE/projects.lang b/htdocs/langs/et_EE/projects.lang index fa8050496d3..a95136a3c6f 100644 --- a/htdocs/langs/et_EE/projects.lang +++ b/htdocs/langs/et_EE/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Aeg ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planeeritav koormus PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Esmalt peab projekti kinnitama -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Uus arve OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/et_EE/receiptprinter.lang b/htdocs/langs/et_EE/receiptprinter.lang index 105d6ae26db..243c2ee59e4 100644 --- a/htdocs/langs/et_EE/receiptprinter.lang +++ b/htdocs/langs/et_EE/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Arve viide +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Kapital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/et_EE/stripe.lang b/htdocs/langs/et_EE/stripe.lang index bbac6d5d366..748df85ac20 100644 --- a/htdocs/langs/et_EE/stripe.lang +++ b/htdocs/langs/et_EE/stripe.lang @@ -32,6 +32,7 @@ VendorName=Müüja nim CSSUrlForPaymentForm=Maksmise vormi CSS stiililehtede URL NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/et_EE/users.lang b/htdocs/langs/et_EE/users.lang index d1dbbce4de2..df908040ddf 100644 --- a/htdocs/langs/et_EE/users.lang +++ b/htdocs/langs/et_EE/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domeeni kasutaja %s Reactivate=Aktiveeri uuesti CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Õigus on antud, kuna see pärineb mõnest grupist, kuhu kasutaja kuulub Inherited=Päritud UserWillBeInternalUser=Loodav kasutaja on sisemine kasutaja (kuna ei ole seotud mõne kolmanda isikuga) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/et_EE/website.lang b/htdocs/langs/et_EE/website.lang index 36c1396735d..e4e7e3df2e9 100644 --- a/htdocs/langs/et_EE/website.lang +++ b/htdocs/langs/et_EE/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/eu_ES/admin.lang b/htdocs/langs/eu_ES/admin.lang index 5bda14433c6..c9419be95f2 100644 --- a/htdocs/langs/eu_ES/admin.lang +++ b/htdocs/langs/eu_ES/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Oharra: zure PHP konfigurazioan ez da limiterik ezarri MaxSizeForUploadedFiles=Igotako fitxategien tamaina maximoa (0 fitxategiak igotzea ezgaitzeko) UseCaptchaCode=Sarrera orrian kode grafikoa (CAPTCHA) erabili -AntiVirusCommand= Biruskontrako komandoaren kokapen osoa -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Biruskontrako komandoaren kokapen osoa +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Kontabilitate moduluaren konfigurazia UserSetup=Erabiltzaileen kudeaketaren konfigurazioa MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Demo-an ezgaitutako aukera 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Aktibatu on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/eu_ES/bills.lang b/htdocs/langs/eu_ES/bills.lang index 10f4d1b487c..394296e5cce 100644 --- a/htdocs/langs/eu_ES/bills.lang +++ b/htdocs/langs/eu_ES/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Ordainketak PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Ordainketa ezabatu ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Jasotako ordainketak @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/eu_ES/blockedlog.lang b/htdocs/langs/eu_ES/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/eu_ES/blockedlog.lang +++ b/htdocs/langs/eu_ES/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/eu_ES/cashdesk.lang b/htdocs/langs/eu_ES/cashdesk.lang index f18207ff5d1..13240b9b76e 100644 --- a/htdocs/langs/eu_ES/cashdesk.lang +++ b/htdocs/langs/eu_ES/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/eu_ES/companies.lang b/htdocs/langs/eu_ES/companies.lang index b5af0e3f49c..dc4f4bcc2c2 100644 --- a/htdocs/langs/eu_ES/companies.lang +++ b/htdocs/langs/eu_ES/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/eu_ES/compta.lang b/htdocs/langs/eu_ES/compta.lang index ab097bae3e3..2d8e20c7ec2 100644 --- a/htdocs/langs/eu_ES/compta.lang +++ b/htdocs/langs/eu_ES/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/eu_ES/errors.lang b/htdocs/langs/eu_ES/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/eu_ES/errors.lang +++ b/htdocs/langs/eu_ES/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/eu_ES/install.lang b/htdocs/langs/eu_ES/install.lang index bf9c08c4ba7..f67dff57184 100644 --- a/htdocs/langs/eu_ES/install.lang +++ b/htdocs/langs/eu_ES/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/eu_ES/link.lang b/htdocs/langs/eu_ES/link.lang index 35732927962..d3a0fc9370e 100644 --- a/htdocs/langs/eu_ES/link.lang +++ b/htdocs/langs/eu_ES/link.lang @@ -8,3 +8,4 @@ LinkRemoved=%s esteka ezabatua izan da ErrorFailedToDeleteLink= Ezin izan da '<b>%s</b>' esteka ezabatu ErrorFailedToUpdateLink= Ezin izan da '<b>%s</b>' esteka berritu URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/eu_ES/mails.lang b/htdocs/langs/eu_ES/mails.lang index b5947e9b94d..3c35c12be7a 100644 --- a/htdocs/langs/eu_ES/mails.lang +++ b/htdocs/langs/eu_ES/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Informazioa ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/eu_ES/main.lang b/htdocs/langs/eu_ES/main.lang index 16b1a073b36..c46d4569b13 100644 --- a/htdocs/langs/eu_ES/main.lang +++ b/htdocs/langs/eu_ES/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/eu_ES/other.lang b/htdocs/langs/eu_ES/other.lang index 28e88cf2a2f..83e9970fedc 100644 --- a/htdocs/langs/eu_ES/other.lang +++ b/htdocs/langs/eu_ES/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title WEBSITE_DESCRIPTION=Deskribapena 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/eu_ES/products.lang b/htdocs/langs/eu_ES/products.lang index 473c0b334b0..6cf471d7350 100644 --- a/htdocs/langs/eu_ES/products.lang +++ b/htdocs/langs/eu_ES/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/eu_ES/projects.lang b/htdocs/langs/eu_ES/projects.lang index 7ff3b979bd9..51753eb8d14 100644 --- a/htdocs/langs/eu_ES/projects.lang +++ b/htdocs/langs/eu_ES/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/eu_ES/receiptprinter.lang b/htdocs/langs/eu_ES/receiptprinter.lang index 3df49b9fe67..896eaa313dd 100644 --- a/htdocs/langs/eu_ES/receiptprinter.lang +++ b/htdocs/langs/eu_ES/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/eu_ES/stripe.lang b/htdocs/langs/eu_ES/stripe.lang index da7fcd95ebd..4696e5b8128 100644 --- a/htdocs/langs/eu_ES/stripe.lang +++ b/htdocs/langs/eu_ES/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/eu_ES/users.lang b/htdocs/langs/eu_ES/users.lang index b61662c49ce..2d4f828a737 100644 --- a/htdocs/langs/eu_ES/users.lang +++ b/htdocs/langs/eu_ES/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/eu_ES/website.lang b/htdocs/langs/eu_ES/website.lang index 73ffbc30aa4..edc9561faea 100644 --- a/htdocs/langs/eu_ES/website.lang +++ b/htdocs/langs/eu_ES/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/fa_IR/admin.lang b/htdocs/langs/fa_IR/admin.lang index 4da03d6d6b7..48a9b656aa4 100644 --- a/htdocs/langs/fa_IR/admin.lang +++ b/htdocs/langs/fa_IR/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=نکته: پیکربندی PHP <b>شما</b> حداکث NoMaxSizeByPHPLimit=توجه: هیچ محدودیتی در پیکربندی PHP شما وجود ندارد MaxSizeForUploadedFiles=حداکثر اندازۀ فایل بارگذاری شده ( برای عدم اجازۀ ارسال فایل عدد 0 را وارد نمائید) UseCaptchaCode=استفاده از کدهای گرافیکی (CAPTCHA) در صفحۀ ورود -AntiVirusCommand= مسیر کامل خط‌فرمان ویروس‌کش -AntiVirusCommandExample= مثال برای ClamWin این نشانی: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe <br> برای ClamAv این نشانی: /usr/bin/clamscan +AntiVirusCommand=مسیر کامل خط‌فرمان ویروس‌کش +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= پارامترهای بیشتر در خط فرمان -AntiVirusParamExample= مثال برای ClamWin به این شکل : --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=برپاسازی واحد حساب‌داری UserSetup=برپاسازی مدیریت کاربر MultiCurrencySetup=برپاسازی چندگانگی-واحدپولی @@ -199,7 +199,7 @@ FeatureDisabledInDemo=ویژگی غیرفعال در نسخۀ نمایشی FeatureAvailableOnlyOnStable=این ویژگی فقط در نسخه‌های رسمی پایدار در دسترس است BoxesDesc=وسایل یا widgets اجزائی هستند که به شما اطلاعاتی برای شخصی‌سازی برخی صفحات نمایش می‌دهند.شما می‌توانید برای نمایش یا عدم نمایش این وسیله در صفحۀ مورد نظر صفحۀ هدف را انتخاب کرده و کلید "فعال‌سازی" را فشار دهید، یا این‌که بر روی سطل‌آشغال کلیک کرده یا آن را فعال نمائید. OnlyActiveElementsAreShown=تنها عناصیر مربوط به <a href="%s">واحد‌های فعال</a> نمایش داده می‌شوند. -ModulesDesc=این واحد‌ها/برنامه‌ها تعیین می‌کنند کدام قابلیت‌ها در نرم‌افزار فعال شوند. برخی واحد‌ها نیازمند مجوزدادن به کاربرن هستند تا امکان دسترسی به آن‌ها فراهم باشد. (در انتهای سطر مربوط به واحد) روی کلید روش/خاموش کلیک کنید تا واحد/برنامۀ مورد نظر را فعال/غیرفعال نمائید. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=می‌توانید واحد‌های بیشتری برای دریافت در سایت‌های موجود روی اینترنت پیدا کنید... ModulesDeployDesc=اگر مجوزهای موجود روی سرویس‌دهندۀ شما اجازه دهد، شما می‌توانید این ابزار را برای به کار گرفتن یک واحد بیرونی استفاده نمائید. این واحد در زبانۀ <strong>%s</strong> قابل نمایش خواهد بود. ModulesMarketPlaces=پیدا کردن واحد‌ها/برنامه‌های بیرونی @@ -212,6 +212,7 @@ CompatibleUpTo=سازگار با نسخۀ %s NotCompatible=به نظر نمی‌رسد این واحد با نسخۀ %s Dolibarr  نصب شده سازگار باشد (سازگاری حداقل با %s و حداکثر با %s ). CompatibleAfterUpdate=این واحد نیازمند روزآمدسازی Dolibarr نسخۀ %s است (حداقل %s - حداکثر %s) SeeInMarkerPlace=نمایش در بازارچه +SeeSetupOfModule=See setup of module %s Updated=روزآمد شده Nouveauté=تازگی AchatTelechargement=خرید / بارگیری @@ -221,6 +222,7 @@ DoliPartnersDesc=فهرست شرکت‌هائی که واحد‌ها یا قاب WebSiteDesc=سایت‌های دیگر برای واحد‌های افزودنی (غیر هسته‌) دیگر... DevelopYourModuleDesc=چند راه برای توسعه دادن و ایجاد واحد دل‌خواه.... URL=نشانی‌اینترنتی +RelativeURL=Relative URL BoxesAvailable=وسایل در دسترس BoxesActivated=وسایل فعال شده ActivateOn=فعال کردن در @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=برای استفاده از مقدار پیش‌فرض چ DefaultLink=پیوند پیش‌فرض SetAsDefault=ثبت پیش‌فرض ValueOverwrittenByUserSetup=هشدار! این مقدار ممکناست با تغییر تنظیمات برپاسازی کاربر بازنویسی شود (هر کاربر می‌تواند نشانی مخصوص به خود را برای clicktodial تولید کند) -ExternalModule=واحد خارجی - نصب شده در پوشه %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=ایجاد دستجمعی بارکد برای اشخاص‌سوم BarcodeInitForProductsOrServices=ایجاد یا بازسازی بارکد برای محصولات یا خدمات CurrentlyNWithoutBarCode=در حال حاضر شما <strong>%s</strong> ردیف در <strong>%s</strong> %s دارید که برای آن‌ها بارکد تعریف نشده. @@ -947,7 +950,7 @@ DictionaryCanton=ایالت‌ها/استان‌ها DictionaryRegion=مناطق DictionaryCountry=کشورها DictionaryCurrency=واحد پول -DictionaryCivility=عنوان اجتماعی +DictionaryCivility=Honorific titles DictionaryActions=انواع برگزاری جلسات DictionarySocialContributions=انواع مالیات‌های اجتماعی یا مالیات‌های مرتبط با سیاست‌های مالی DictionaryVAT=نرخ مالیات‌بر‌ارزش‌افزوده یا مالیات‌بر‌فروش @@ -988,6 +991,7 @@ VATIsNotUsedDesc=مالیات بر فروش مطروحه به طور پیش‌ VATIsUsedExampleFR=در فرانسه، به این معناست که شرکت‌ها و موسسات یک سامانۀ سیاست‌مالی حقیقی دارند (حقیقی ساده یا حقیقی عادی). سامانه‌ای که در آن مالیات بر ارزش افزوده تعریف می‌شود. VATIsNotUsedExampleFR=در فرانسه، این بدان معناست که مؤسساتی که برای آن‌ها مالیات بر فروش تعریف نشده یا شرکت‌ها، سازمان‌ها یا مشاغل آزادی که سامانۀ سیاست مالی ریزسازمانی برگزیده‌اند (مالیات بر فروش طی فرانچایز-فرداد-حق‌امتیاز) و بدون تعریف مالیات برفروش مبلغ مالیات فروش فرانچایز را پرداخت کرده‌اند. این انتخاب به صورت مراجع "مالیات بر فروش اختصاص داده نمی‌شود - art-293B of CGI" در صورت‌حساب نمایش داده خواهد شد. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=نرخ LocalTax1IsNotUsed=آیا مالیات دوم استفاده نشود LocalTax1IsUsedDesc=استفاده از نوع دوم مالیات (غیر از نوع اول) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=نرخ پیش‌فرض IRPF در هنگام ساخت مش LocalTax2IsNotUsedDescES=به طور پیش‌فرض IRPF  مطروحه برابر با 0 است. پایان قاعده. LocalTax2IsUsedExampleES=در اسپانیا، خوداشتغالان، و متخصصین مستقل که ارائه دهندۀ خدمات هستند و شرکت‌هائی که سامانۀ مالیاتی modules را برگزیده‌اند. LocalTax2IsNotUsedExampleES=در اسپانیا مشاغلی هستند که درسامانۀ مالیاتی modules موضوعیت ندارند. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=گزارش مالیات‌های محلی CalcLocaltax1=فروش‌ها - خرید‌ها CalcLocaltax1Desc=گزارش مالیات‌های محلی با محاسبۀ تفاوت مالیات‌برفروش محلی و مالیات‌‌برخرید محلی به دست می‌آید @@ -1018,6 +1025,7 @@ CalcLocaltax2=خریدها CalcLocaltax2Desc=گزارش مالیات‌های محلی جمع مالیات‌برفروش‌های محلی است CalcLocaltax3=فروش‌ها CalcLocaltax3Desc=گزارش مالیات محلی جمع مالیات‌برفروش محلی است +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=این برچسب در حالتی که هیچ ترجمه‌ای برای کد یافت نشود استفاده خواهد شد LabelOnDocuments=برچسب روی مستندات LabelOrTranslationKey=برچسب یا کلید ترجمه @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=گزارش‌هزینه‌های منتظر ت Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=پیش از شروع استفاده از Dolibarr ابتدا باید مقادیر مختلفی را تعریف کنید و واحد‌های مختلف فعال/پیکربندی شوند SetupDescription2=دو واحد بعدی الزامی هستند (دو ورودی اول در فهرست برپاسازی): -SetupDescription3=<a href="%s">%s->%s</a><br> مؤلفه‌های بنیادین مورد استفاده برای تعیین‌ رفتار پیش‌فرض برنامۀ شما (مثلا برای قابلیت‌های مربوط به کشور). -SetupDescription4=<a href="%s">%s->%s</a><br> این نرم‌افزار مجموعه‌ای از برنامه‌ها/واحدهای متنوع است که همگی کم و بیش از یکدیگر مستقل هستند. واحدهای مربوط به نیاز شما باید فعال و پیکربندی شوند. با فعال کردن این واحدها گزینه‌ها/عناوین مربوطه به فهرست‌ها اضافه خواهد شد. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=سایر عناوین فهرست برپاسازی برای مدیریت مقادیر اختیاری. LogEvents=رویدادهای بازرسی امنیتی Audit=بازرسی @@ -1128,7 +1136,7 @@ LogEventDesc=فعال کردن گزارش‌گیری برای روی‌داده AreaForAdminOnly=مقادیر برپاسازی تنها توسط <b>کاربران مدیر</b> قابل تنظیم است. SystemInfoDesc=اطلاعات سامانه، اطلاعاتی فنی است که در حالت فقط خواندنی است و تنها برای مدیران قابل نمایش است. SystemAreaForAdminOnly=این ناحیه تنها برای کاربران مدیر در دسترس است. مجوزهای کاربران Dolibarr  این محدودیت‌ها را تغییر نمی‌دهد. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=در صورتی‌که شما یک حساب‌دار/دفتردار بیرونی دارید، می‌توانید اطلاعات وی را این‌جا ویرایش نمائید AccountantFileNumber=کد حساب‌دار DisplayDesc=مقادیری که بر شکل و رفتار Dolibarr اثرگذارند از این‌جا قابل تغییرند. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=قواعد تولید و اعتبارسنجی گذرو DisableForgetPasswordLinkOnLogonPage=در صفحۀ ورود پیوند "فراموشی گذرواژه" نمایش داده نشود UsersSetup=برپاسازی واحد کاربران UserMailRequired=برای ایجاد یک کاربر جدید یک رایانامه لازم است +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=برپاسازی واحد مدیریت منابع انسانی ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=شکل مستندهای صورت‌حساب BillsPDFModulesAccordindToInvoiceType=شکل مستندهای صورت‌حساب با توجه به نوع صورت‌حساب PaymentsPDFModules=شکل مستندات پرداخت ForceInvoiceDate=الزام تاریخ صورت‌حساب به تاریخ تائیداعتبار -SuggestedPaymentModesIfNotDefinedInInvoice=حالت‌های پیشنهادی و پیش‌فرض پرداخت در صورت‌حساب در صورتی که تعیین نشده باشد +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=پیشنهاد پرداخت در صرف‌نظر کردن از حساب SuggestPaymentByChequeToAddress=پیشنهاد پرداخت با چک به FreeLegalTextOnInvoices=متن دل‌خواه بر روی صورت‌حساب‌ها @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=برپاسازی پرداخت‌های فروشندگان PropalSetup=راه اندازی ماژول طرح های تجاری ProposalsNumberingModules=مدل شماره طرح تجاری ProposalsPDFModules=شکل‌های مستندات پیشنهاد‌های تجاری -SuggestedPaymentModesIfNotDefinedInProposal=روش پرداخت پشنهادی پیش‌فرض در پیشنهاد در صورتی که در صفحۀ ایجاد آن تعریف نشده باشد +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=متن دل‌خواه بر روی پیشنهادات تجاری WatermarkOnDraftProposal=نقش پس‌زمینه بر روی پیشنهادات تجاری پیش‌نویس (هیچ در صورت خالی بودن) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=درخواست مقصد حساب‌بانکی پیشنهاد @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=پرسش انبار منبع در خصوص ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=پرسش حساب بانکی مقصد در مورد سفارش خرید ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=برپاسازی مدیریت سفارشات فروش OrdersNumberingModules=روش‌های شماره‌گذاری سفارشات OrdersModelModule=شکل‌های مستندات سفارش @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=هشدار! مقادیر بزرگ خر ModuleActivated=واحد %s فعال شده و باعث کاهش سرعت رابط کاربری می‌شود EXPORTS_SHARE_MODELS=اشکال صادارات با همگان به اشتراک گذاشته شدند ExportSetup=برپاسازی واحد صادرات +ImportSetup=Setup of module Import InstanceUniqueID=شناسۀ منحصر به‌فرد نمونه SmallerThan=کوچک‌تر از LargerThan=بزرگتر از @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/fa_IR/bills.lang b/htdocs/langs/fa_IR/bills.lang index 32d7c870906..1d081bbe11c 100644 --- a/htdocs/langs/fa_IR/bills.lang +++ b/htdocs/langs/fa_IR/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=صورت‌حاسب‌های فروشنده SupplierBill=صورت‌حساب فروشنده SupplierBills=صور‌ت‌حساب تامین‌کنندگان Payment=پرداخت -PaymentBack=برگشت پرداخت -CustomerInvoicePaymentBack=برگشت پرداخت +PaymentBack=بازپس‌گیری +CustomerInvoicePaymentBack=بازپس‌گیری Payments=پرداخت‌ها PaymentsBack=Refunds paymentInInvoiceCurrency=به واحد‌پولی صورت‌حساب PaidBack=پرداخت برگردانده شد DeletePayment=حذف پرداخت ConfirmDeletePayment=آیا مطمئنید که می‌خواهید این پرداخت را حذف کنید؟ -ConfirmConvertToReduc=آیا می‌خواهید این %s را به یک تخفیفت مطلق تبدیل کنید؟ +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=این مبلغ در میان همۀ تخفیف‌ها ذخیره خواهد شد و می‌تواند به‌عنوان یک صورت‌حساب فعلی یا آینده برای این مشتری مورد استفاده قرار گیرد. -ConfirmConvertToReducSupplier=آیا می‌خواهید این %s را به یک تخفیفت مطلق تبدیل کنید؟ +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=این مبلغ در میان همۀ تخفیف‌ها ذخیره خواهد شد و می‌تواند به‌عنوان یک صورت‌حساب فعلی یا آینده برای این فروشنده مورد استفاده قرار گیرد. SupplierPayments=پرداخت‌های فروشندگان ReceivedPayments=پول‌های دریافتی @@ -219,7 +219,10 @@ ShowInvoiceSituation=نمایش صورت‌حساب وضعیت UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=پرداخت ToMakePaymentBack=پس‌دادن‌پرداخت ListOfYourUnpaidInvoices=فهرست صورت‌حساب‌های پرداخت نشده NoteListOfYourUnpaidInvoices=نکته: این فهرست تنها دربردارندۀ صورت‌حساب‌های شخص‌سوم‌هائی است که شما آن‌ها را به‌عنوان نمایندۀ فروش پیوند کرده‌اید. -RevenueStamp=تمبر درآمد +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=این گزینه تنها وقتی فعال است که شما صورت‌حساب را از زبانۀ "مشتری" یک شخص سوم می‌سازید YouMustCreateInvoiceFromSupplierThird=این گزینه تنها وقتی فعال است که شما صورت‌حساب را از زبانۀ "فروشنده" یک شخص سوم می‌سازید YouMustCreateStandardInvoiceFirstDesc=شما باید ابتدا یک صورت‌حساب استاندارد ساخته و سپس آن را تبدیل به "قالب" کنید تا یک صورت‌حساب قالبی ساخته باشید -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=قالب PDF صورت‌حساب Sponge. یک قالب کامل صورت‌حساب PDFCrevetteDescription=قالب PDF صورت‌حساب Crevette. یک قالب کامل صورت‌حساب برای صورت‌حساب‌های وضعیت TerreNumRefModelDesc1=بازگرداندن عدد با شکل %syymm-nnnn برای صورت‌حساب‌های استاندارد و %syymm-nnnn برای یادداشت‌های اعتباری که در آن yy نمایندۀ سال، mm ماه و nnnn یک شمارنده بدون توقف و بدون بازگشت به 0 است @@ -575,3 +578,4 @@ AutoFillDateTo=تنظیم تاریخ پایان برای سطر خدمات با AutoFillDateToShort=تنظیم تاریخ پایان MaxNumberOfGenerationReached=حداکثر تعداد تولید به‌سررسیده BILL_DELETEInDolibarr=صورت‌حساب حذف شد +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/fa_IR/blockedlog.lang b/htdocs/langs/fa_IR/blockedlog.lang index 231855e54eb..116a6acbb42 100644 --- a/htdocs/langs/fa_IR/blockedlog.lang +++ b/htdocs/langs/fa_IR/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=گزارش‌کارهای غیرقابل‌تغییر ShowAllFingerPrintsMightBeTooLong=نمایش همۀ گزارش‌کار‌های بایگانی شده (ممکن است طولانی باشد) ShowAllFingerPrintsErrorsMightBeTooLong=نمایش همۀ گزارش‌کارهای نامعتبر بایگانی (ممکن است طولانی باشد) DownloadBlockChain=دریافت اثرانگشت‌ها -KoCheckFingerprintValidity=ورودی گزارش‌کاری بایگانی شده معتبر نیست. این به آن معناست که کس (یک هکر؟) بخشی از داده‌ها را پس از ذخیره دست‌کاری کرده است و یا ردیف‌های بایگانی‌های قدیمی را حذف کرده است. (بررسی کنید سطر با # پیشین وجود داشته باشد). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=ردیف گزارش‌کار بایگانی شده معتبر است. داده‌های این سطر ویرایش نشده و ورودی به‌دنبال ورودی قبل است. OkCheckFingerprintValidityButChainIsKo=گزارش‌کار بایگانی شده در قیاس با قبلی معتبر است اما زنجیره قبلا خراب شده است. AddedByAuthority=ذخیره شده برای مقام دوردست diff --git a/htdocs/langs/fa_IR/cashdesk.lang b/htdocs/langs/fa_IR/cashdesk.lang index ff05973a452..c9b346240f6 100644 --- a/htdocs/langs/fa_IR/cashdesk.lang +++ b/htdocs/langs/fa_IR/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=اضافه کردن این مقاله RestartSelling=بازگشت در فروش SellFinished=فروش تکمیل شد PrintTicket=چاپ بلیط +SendTicket=Send ticket NoProductFound=مقاله ای یافت نشد. ProductFound=محصول یافته شده NoArticle=هیچ مقاله ای یافت نشد @@ -48,6 +49,7 @@ Footer=پاورقی AmountAtEndOfPeriod=مبلغ در انتهای دوره (روز، ماه یا سال) TheoricalAmount=مبلغ نظری RealAmount=مقدار واقعی +CashFence=Cash fence CashFenceDone=حصار نقدی برای دوره تعیین شده NbOfInvoices=Nb و از فاکتورها Paymentnumpad=نوع بخش‌کناری @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS نیازمند کار با دسته‌بندی م OrderNotes=مرتب کردن یادداشت‌ها CashDeskBankAccountFor=حساب پیش‌فرض برای ذخیرۀ پرداخت‌ها NoPaimementModesDefined=در پیکربندی TakePOS هیچ حالت پرداختی تعریف نشده است -TicketVatGrouped=در قبض م.ب.ا.ا توسط نرخ گروه‌بندی شو -AutoPrintTickets=چاپ خودکار قبوض +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=فعال‌کردن موارد مربوط به کافه و رستوران ConfirmDeletionOfThisPOSSale=آیا مطمئن هستید می‌خواهید این فروش را حذف کنید؟ ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=مرورگر BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/fa_IR/companies.lang b/htdocs/langs/fa_IR/companies.lang index 5b6ec1024b6..46ef83419ac 100644 --- a/htdocs/langs/fa_IR/companies.lang +++ b/htdocs/langs/fa_IR/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted= شرکت "%s" از پایگاه داده حذف شد. ListOfContacts=فهرست طرف‌های‌تماس/نشانی‌ها ListOfContactsAddresses=فهرست طرف‌های‌تماس/نشانی‌ها ListOfThirdParties=فهرست شخص‌سوم‌ها -ShowCompany=نمایش شخص‌سوم ShowContact=نمایش طرف‌تماس ContactsAllShort=همه (بدون صافی) ContactType=نوع طرف‌تماس @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=نام نمایندۀ فروش SaleRepresentativeLastname=نام خانوادگی نمایندۀ فروش ErrorThirdpartiesMerge=در هنگام حذف شخص‌سوم‌ها یک اشکال پیش آمد. لطفا گزارش‌کار را ببینید. تغییرات انجام نشد. NewCustomerSupplierCodeProposed=کد فروشنده یا کد مشتری قبلا استفاده شده است، یک کد جدید پیشنهاد می‌شود +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=نوع پرداخت - مشتری PaymentTermsCustomer=شرایط پرداخت - مشتری diff --git a/htdocs/langs/fa_IR/compta.lang b/htdocs/langs/fa_IR/compta.lang index ff0da8dc752..530a5514a9f 100644 --- a/htdocs/langs/fa_IR/compta.lang +++ b/htdocs/langs/fa_IR/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=برای محاسبۀ پرداخت‌های حقیق SeeReportInDueDebtMode=برای محاسبۀ صورت‌حساب‌های ثبت شده که حتی هنوز در دفترکل حساب نشده‌اند به %sتحلیل صورت‌حساب‌ها %s نگاه کنید. SeeReportInBookkeepingMode=برای محاسبه‌ای بر روی <b>جدول حساب‌داری دفترکل</b> به <b>%sگزارش حساب‌داری%s</b> مراجعه کنید. RulesAmountWithTaxIncluded=- تمام مالیات‌ها در مقادیر نمایش داده شده، گنجانده شده‌اند -RulesResultDue=- این شامل همۀ صورت‌حساب‌های پرداخت‌نشده، هزینه‌ها، مالیات بر ارزش افزوده، کمک‌های مالی پرداخت شده و نشده است. همچنین شامل حقوق‌های پرداخت شده می‌باشد. <br> - بسته به تاریخ تائید اعتبار در خصوص صورت‌حساب‌ها و مالیات بر ارزش افزوده و بر حسب تاریخ سررسید هزینه‌ها می‌باشد. برای حقوق‌هائی که در واحد حقوق‌ها تعریف شده است، از مقدار تاریخ پرداخت استفاده می‌شود. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- این شامل همۀ پرداخت‌های واقعی صورت‌حساب‌ها، هزینه‌ها، مالیات بر ارزش افزوده و حقوق‌ها است. <br>- بر حسب تاریخ پرداخت صورت‌حساب‌ها، هزینه‌ها، مالیات بر ارزش افزوده و حقوق‌ها می‌باشد. تاریخ کمک‌مالی برای کمک‌های مالی -RulesCADue=- شامل صورت‌حساب‌های به موعد رسیدۀ مشتری، چه پرداخت شده باشند یا نه می‌باشد. <br> این بر حسب تاریخ تائید اعتبار این صورت‌حساب‌ها است. <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- شامل همۀ پرداخت‌های دریافت‌شدۀ مؤثر صورت‌حساب‌های مشتریان است. <br> -این بسته به تاریخ پرداخت این صورت‌حساب‌هاست<br> RulesCATotalSaleJournal=شامل همۀ سطور بستانکار دفترفروش‌روزانه است RulesAmountOnInOutBookkeepingRecord=شامل همۀ ردیف‌های دفترکل دارای حساب‌حساب‌داری است که در گروه‌های "هزینه" یا "درآمد" باشند @@ -255,3 +255,10 @@ TurnoverbyVatrate=گردش‌مالی صورت‌حساب‌شده بر حسب TurnoverCollectedbyVatrate=گردش‌مالی دریافت‌شده بر حسب نرخ مالیات بر فروش PurchasebyVatrate=خریدها بر اساس نرخ مالیات بر فروش LabelToShow=برچسب کوتاه +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/fa_IR/errors.lang b/htdocs/langs/fa_IR/errors.lang index 8fba2849bbc..15b5c27c05d 100644 --- a/htdocs/langs/fa_IR/errors.lang +++ b/htdocs/langs/fa_IR/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=فایل به طور کامل توسط سرور دریافت ن ErrorNoTmpDir=پوشۀ موقت %s وجود ندارد. ErrorUploadBlockedByAddon=امکان ارسال توسط یک افزونۀ PHP/Apache مسدود شده است ErrorFileSizeTooLarge=حجم فایل بسیار بزرگ است. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=برای این نوع عددصحیح اندازه بسیار بلند است (حداکثر %s رقم) ErrorSizeTooLongForVarcharType=برای این نوع رشتۀ حروقی اندازه بسیار بزرگ است (حداکثر %s نویسه) ErrorNoValueForSelectType=لطفا مقدار مربوط به فهرست انتخاب را وارد کنید @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=یک گذرواژه برای این عضو تنظیم شده است. با این‌حال هیچ حساب کاربری‌ای ساخته نشده است. بنابراین این گذرواژه برای ورود به Dolibarr قابل استفاده نیست. ممکن است برای یک رابط/واحد بیرونی قابل استفاده باشد، اما اگر شما نخواهید هیچ نام کاربری ورود و گذرواژه‌ای برای یک عضو استفاده کنید، شما می‌توانید گزینۀ "ایجاد یک نام‌ورد برای هر عضو" را از برپاسازی واحد اعضاء غیرفعال کنید. در صورتی که نیاز دارید که نام‌ورود داشته باشید اما گذرواژه نداشته باشید، می‌توانید این بخش را خالی گذاشته تا از این هشدار بر حذر باشید. نکته: همچنین نشانی رایانامه می‌تواند در صورتی که عضو به یک‌کاربر متصل باشد، می‌‌تواند مورد استفاده قرار گیرد diff --git a/htdocs/langs/fa_IR/install.lang b/htdocs/langs/fa_IR/install.lang index 9444eb76c8f..40f4347659e 100644 --- a/htdocs/langs/fa_IR/install.lang +++ b/htdocs/langs/fa_IR/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=این PHP از Curl پشتیبان می‌کند. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=این PHP از توابع UTF8 پشتیبانی می‌کند. PHPSupportIntl=این PHP از توابع Intl پشتیبانی می‌کند +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=حداکثر حافظۀ اختصاص داده شده به نشست به <b>%s</b> تنظیم شده است. این باید کافی باشد. PHPMemoryTooLow=حداکثر حافظۀ مورد استفاده در یک نشست در PHP شما در حد <b>%s</b> بایت تنظیم شده است. این میزان بسیار کمی است. فایل <b>php.ini</b> را ویرایش نموده و مقدار <b>memory_limit</b> را حداقل برابر <b>%s</b> بایت تنظیم کنید @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=نسخۀ PHP نصب شدۀ شما از Curl پشتی ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=نسخۀ PHP نصب شدۀ شما از توابع UTF8 پشتیبانی نمی‌کند. Dolibarr نمی‌تواند به درستی کار کند. قبل از نصب Dolibarr این مشکل را حل کنید. ErrorPHPDoesNotSupportIntl=نسخۀ نصب شدۀ PHP شما از توابع Intl پشتیبانی نمی‌کند. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=پوشۀ %s وجود ندارد. ErrorGoBackAndCorrectParameters=به عقب برگردید و مقادیر را بررسی/اصلاح کنید. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=برنامه تلاش کرده است که خود YouTryInstallDisabledByFileLock=برنامه تلاش کرده است خود را ارتقا دهد، اما صفحات نصب/ارتقا به دلایل امنیتی غیر فعال شده است ( چون فایل قفل <strong>install.lock</strong> در پوشۀ documents دلیبار وجود دارد).<br> ClickHereToGoToApp=برای مراجعه به برنامه این‌جا کلیک کنید ClickOnLinkOrRemoveManualy=روی پیوند مقابل کلیک کنید. اگر همیشه شما همین صفحه را می‌بینید شما باید فایل install.lock را از پوشۀ document حذف کرده یا تغییر نام دهید. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/fa_IR/link.lang b/htdocs/langs/fa_IR/link.lang index 130af3f943a..012040c2baa 100644 --- a/htdocs/langs/fa_IR/link.lang +++ b/htdocs/langs/fa_IR/link.lang @@ -8,3 +8,4 @@ LinkRemoved=پیوند %s برداشته شد ErrorFailedToDeleteLink= امکان حذف پیوند '<b>%s</b>' نبود ErrorFailedToUpdateLink= امکان روزآمدسازی پیوند '<b>%s</b>' نبود URLToLink=نشانی برای پیوند کردن +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/fa_IR/mails.lang b/htdocs/langs/fa_IR/mails.lang index 944ec850582..b25c03b7177 100644 --- a/htdocs/langs/fa_IR/mails.lang +++ b/htdocs/langs/fa_IR/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=اطلاعات ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/fa_IR/main.lang b/htdocs/langs/fa_IR/main.lang index dfe1207edd1..cc1cc21575b 100644 --- a/htdocs/langs/fa_IR/main.lang +++ b/htdocs/langs/fa_IR/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=آزمایش اتصال ToClone=نسخه‌برداری +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=تاریخی که برای نسخه‌برداری مد نظر دارید: NoCloneOptionsSpecified=هیچ داده‌ای برای نسخه‌برداری پیدا نشد Of=از @@ -829,6 +830,8 @@ Gender=جنسیت Genderman=مرد Genderwoman=زن ViewList=نمای فهرستی +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=الزامی Hello=سلام GoodBye=خدانگهدار @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/fa_IR/other.lang b/htdocs/langs/fa_IR/other.lang index 975f18a065c..f374ef2619e 100644 --- a/htdocs/langs/fa_IR/other.lang +++ b/htdocs/langs/fa_IR/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=عنوان WEBSITE_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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/fa_IR/products.lang b/htdocs/langs/fa_IR/products.lang index 35c11214236..e7d131c8f2a 100644 --- a/htdocs/langs/fa_IR/products.lang +++ b/htdocs/langs/fa_IR/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=این ابزار نرخ مالیات بر ارزش ا MassBarcodeInit=تعریف دستجمعی بارکد MassBarcodeInitDesc=این صفحه می‌تواند برای تعریف بارکد اشیائی که برای آن‌ها بارکد تعریف نشده استفاده شود. قبل از استفاده، مطمئن شوید واحد بارکد به خوبی نصب و برپاسازی شده است. ProductAccountancyBuyCode=کد حساب‌داری (خرید) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=کد حساب‌داری (فروش) ProductAccountancySellIntraCode=کد حساب‌داری (فروش داخل جامعه‌ای-اروپا) ProductAccountancySellExportCode=کد حساب‌داری (فروش صادرات) @@ -165,7 +167,7 @@ SuppliersPrices=قیمت‌های فروشنده SuppliersPricesOfProductsOrServices=قیمت‌های فروشنده (مربوط به محصولات و خدمات) CustomCode=گمرک / کالا / کدبندی هماهنگ کالا CountryOrigin=کشور مبدا -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=برچسب کوتاه Unit=واحد p=واحد diff --git a/htdocs/langs/fa_IR/projects.lang b/htdocs/langs/fa_IR/projects.lang index 30cc3fbfbc8..5327af215ec 100644 --- a/htdocs/langs/fa_IR/projects.lang +++ b/htdocs/langs/fa_IR/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=زمان ListOfTasks=فهرست وظایف GoToListOfTimeConsumed=رجوع به فهرست زمان صرف شده -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=نمای گانت ListProposalsAssociatedProject=فهرست پیشنهادهای تجاری مرتبط با طرح ListOrdersAssociatedProject=فهرست سفارش‌های فروش مربوط به طرح @@ -188,7 +186,7 @@ PlannedWorkload=حجم‌کار برنامه‌ریزی‌شده PlannedWorkloadShort=حجم‌کار ProjectReferers=موارد مربوط ProjectMustBeValidatedFirst=ابتدا باید طرح تائیداعتبار شود -FirstAddRessourceToAllocateTime=نسبت دادن منابع کاربر برای اختصاص زمان +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=ورودی در روز InputPerWeek=ورودی در هفته InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=آخرین %s طرح تغییر یافته OtherFilteredTasks=سایر وظایف گُزیده شده NoAssignedTasks=هیچ وظیفه‌ای نسبت داده نشده ( طرح/وظیفه را از بالا به کاربر فعلی نسبت دهید تا زمان را روی آن وارد کنید) ThirdPartyRequiredToGenerateInvoice=یک طرف سوم باید روی طرح تعریف شود تا امکان صورت‌حساب درست کردن برای آن وجود داشته باشد +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=اجازۀ یادداشت نویسی کاربران روی وظایف AllowCommentOnProject=امکان توضیح نویسی بر روی طرح‌ها @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=صورت‌حساب جدید OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/fa_IR/receiptprinter.lang b/htdocs/langs/fa_IR/receiptprinter.lang index d022c499690..c7a819dbe8a 100644 --- a/htdocs/langs/fa_IR/receiptprinter.lang +++ b/htdocs/langs/fa_IR/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=ارجاع صورت‌حساب +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=شناسۀ داخل-جامعه‌ای م.ب.ا.ا. -اروپا +DOL_VALUE_MYSOC_CAPITAL=سرمایه +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/fa_IR/stripe.lang b/htdocs/langs/fa_IR/stripe.lang index 2c086aeb584..aa5ed9a19f9 100644 --- a/htdocs/langs/fa_IR/stripe.lang +++ b/htdocs/langs/fa_IR/stripe.lang @@ -32,6 +32,7 @@ VendorName=نام فروشنده CSSUrlForPaymentForm=آدرس شیوه نامه CSS برای فرم پرداخت NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/fa_IR/users.lang b/htdocs/langs/fa_IR/users.lang index 909a1ebbb82..012f6b0d90a 100644 --- a/htdocs/langs/fa_IR/users.lang +++ b/htdocs/langs/fa_IR/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=کاربران و مشخصات آنها DomainUser=کاربر دامنه %s Reactivate=دوباره فعال کردن CreateInternalUserDesc=این برگه به شما امکان ایجاد یک کاربر داخلی در شرکت/مؤسسۀ شما را می‌دهد. برای ساخت یک کاربر خارجی (مشتری، فروشنده، غیره) از گزینۀ "ساخت کاربر Dolibarr" از برگۀ تماس شخص سوم وی اقدام نمائید. -InternalExternalDesc=یک کاربر <b>داخلی</b> کاربری است که عضوی از شرکت/سازمان است. <br> یک کاربر <b>خارجی</b> یک مشتری، فروشنده یا از این دست است. <br><br> در هر دو حالت، مجوزها، دسترسی‌های موجود در Dolibarr را تعریف خواهد کرد. همچنین کاربر خارجی می‌تواند مدیریت فهرست متفاوتی از کاربر داخلی داشته باشد (به خانه - برپاسازی - نمایش ) مراجعه نمائید. +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=اجازه‌ها اعطا شده زیرا از یک گروه‌کاربری ارث‌گرفته شده است Inherited=ارث‌گرفته UserWillBeInternalUser=کاربری که ایجاد می‌شود یک کاربر داخلی خواهد بود (زیرا به یک شخص‌سوم معین پیوند نشده است) @@ -110,3 +110,8 @@ UserLogged=کاربر وارد شده DateEmployment=تاریخ شروع استخدام DateEmploymentEnd=تاریخ پایان استخدام CantDisableYourself=شما نمی‌توانید ردیف کاربری خود را غیرفعال کنید +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/fa_IR/website.lang b/htdocs/langs/fa_IR/website.lang index 545ff8cf12e..5269bce74f7 100644 --- a/htdocs/langs/fa_IR/website.lang +++ b/htdocs/langs/fa_IR/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/fi_FI/admin.lang b/htdocs/langs/fi_FI/admin.lang index 018aa0ec393..fbfd6d12524 100644 --- a/htdocs/langs/fi_FI/admin.lang +++ b/htdocs/langs/fi_FI/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Huom:<b>Nykyiset </b> PHP-asetukset rajoittavat tiedosto NoMaxSizeByPHPLimit=Huom: Rajaa ei ole asetettu PHP-asetuksissa MaxSizeForUploadedFiles=Lähetettävien tiedostojen enimmäiskoko (0 estää lähetykset) UseCaptchaCode=Käytä graafista koodia (CAPTCHA) kirjautumissivulla -AntiVirusCommand= Virustorjuntaohjelman polku -AntiVirusCommandExample= Esim. ClamWin: C:\\Program Files (x86)\\ClamWin\\bin\\clamscan.exe <br>Esim. ClamAV: /usr/bin/clamscan +AntiVirusCommand=Virustorjuntaohjelman polku +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Lisää parametreja komentorivillä -AntiVirusParamExample= Esimerkki ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Kirjanpitomoduulin asetukset UserSetup=Käyttäjien hallinta-asetukset MultiCurrencySetup=Multi-valuutta asetukset @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Ominaisuus on poistettu käytöstä demossa FeatureAvailableOnlyOnStable=Ominaisuus käytettävissä vain virallisissa vakaissa versioissa 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Etsi ulkoisia sovelluksia/moduuleja @@ -212,6 +212,7 @@ CompatibleUpTo=Yhteensopiva version %s kanssa NotCompatible=Moduuli ei ole yhteensopiva Dolibarr - version %s kanssa. (Min %s - Max %s) CompatibleAfterUpdate=Moduuli vaatii Dolibarr - version %s päivittämisen. (Min %s - Max %s) SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Päivitetty Nouveauté=Novelty AchatTelechargement=Osta / Lataa @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=Osoite +RelativeURL=Relative URL BoxesAvailable=Widgetit saatavilla BoxesActivated=Widget aktivoitu ActivateOn=Aktivoi @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Pidä tyhjänä käyttääksesi oletusarvoa DefaultLink=Oletuslinkki SetAsDefault=Aseta oletukseksi ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=Ulkoinen moduuli - asennettu hakemistoon %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Alueiden DictionaryCountry=Maat DictionaryCurrency=Valuutat -DictionaryCivility=Siviilisääty +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=ALV- ja Myyntiveroprosentit @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Kurssi LocalTax1IsNotUsed=Älä käytä toista veroa LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=Oletuksena ehdotettu IRPF on 0. Loppu sääntö. LocalTax2IsUsedExampleES=Espanjassa, freelancer ja itsenäisten ammatinharjoittajien, jotka tarjoavat palveluja ja yrityksiä, jotka ovat valinneet verojärjestelmän moduuleja. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Raportit paikallisista veroista CalcLocaltax1=Myynnit - Ostot CalcLocaltax1Desc=Paikallisten verojen raportit on laskettu paikallisverojen myyntien ja ostojen erotuksena @@ -1018,6 +1025,7 @@ CalcLocaltax2=Ostot CalcLocaltax2Desc=Veroraportit on laskettu hankintojen veroista CalcLocaltax3=Myynti CalcLocaltax3Desc=Veroraportit on laskettu myyntien veroista +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label käyttää oletusarvoisesti, jos ei ole käännös löytyy koodi LabelOnDocuments=Label asiakirjoihin LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Hyväksyttävissä olevat kuluraportit Delays_MAIN_DELAY_HOLIDAYS=Hyväksyttävissä olevat vapaa-anomukset SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security Audit tapahtumat Audit=Auditointi @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=Järjestelmän tiedot ovat erinäiset tekniset tiedot saavat lukea vain tila ja näkyvissä vain järjestelmänvalvojat. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Käyttäjät moduuli setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Henkilöstöhallinta moduulin asetukset ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Laskun asiakirjojen malleja BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force laskun päivämäärästä validointiin päivämäärä -SuggestedPaymentModesIfNotDefinedInInvoice=Ehdotetut maksut tilassa lasku automaattisesti, jos ei ole määritetty lasku +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Laskun viesti @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Toimittajamaksujen asetukset PropalSetup=Kaupalliset ehdotuksia moduulin asetukset ProposalsNumberingModules=Kaupalliset ehdotus numerointiin modules ProposalsPDFModules=Kaupalliset ehdotus asiakirjojen malleja -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Vapaa tekstihaku kaupallisiin ehdotuksia WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Tilaukset numerointiin modules OrdersModelModule=Tilaa asiakirjojen malleja @@ -1823,7 +1834,7 @@ MailToSendInvoice=Asiakkaiden laskut MailToSendShipment=Lähetykset MailToSendIntervention=Interventions MailToSendSupplierRequestForQuotation=Tarjouspyyntö -MailToSendSupplierOrder=Purchase orders +MailToSendSupplierOrder=Ostotilaukset MailToSendSupplierInvoice=Vendor invoices MailToSendContract=Sopimukset MailToThirdparty=Sidosryhmät @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Varoitus, suuremmat arvot hidastavat me ModuleActivated=Moduuli %son aktiivinen ja hidastaa ohjelmaa EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Vienti-moduulin asetukset +ImportSetup=Setup of module Import InstanceUniqueID=Instanssin ID SmallerThan=Pienempi kuin LargerThan=Suurempi kuin @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Ominaisuus ei käytettävissä kun moduuli Vastaanotto on aktiivinen EmailTemplate=Mallisähköposti EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/fi_FI/bills.lang b/htdocs/langs/fi_FI/bills.lang index c7e0beebf89..b13aef1031d 100644 --- a/htdocs/langs/fi_FI/bills.lang +++ b/htdocs/langs/fi_FI/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Toimittajien laskut SupplierBill=Vendor invoice SupplierBills=tavarantoimittajien laskut Payment=Maksu -PaymentBack=Maksun -CustomerInvoicePaymentBack=Maksun +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Maksut PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Takaisin maksu DeletePayment=Poista maksu ConfirmDeletePayment=Oletko varma, että haluat poistaa tämän suorituksen? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Maksut toimittajille ReceivedPayments=Vastaanotetut maksut @@ -219,7 +219,10 @@ ShowInvoiceSituation=Näytä tilannetilasku UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Maksa ToMakePaymentBack=Takaisin maksu ListOfYourUnpaidInvoices=Luettelo maksamattomista laskuista NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -528,8 +531,8 @@ TypeContact_facture_external_BILLING=Asiakkaan lasku yhteystiedot TypeContact_facture_external_SHIPPING=Asiakas merenkulku yhteystiedot TypeContact_facture_external_SERVICE=Asiakaspalvelu ottaa yhteyttä TypeContact_invoice_supplier_internal_SALESREPFOLL=Representative following-up vendor invoice -TypeContact_invoice_supplier_external_BILLING=Vendor invoice contact -TypeContact_invoice_supplier_external_SHIPPING=Vendor shipping contact +TypeContact_invoice_supplier_external_BILLING=Toimittajan laskun kontakti +TypeContact_invoice_supplier_external_SHIPPING=Toimittajan toimitus kontakti TypeContact_invoice_supplier_external_SERVICE=Vendor service contact # Situation invoices InvoiceFirstSituationAsk=First situation invoice @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Lasku poistettu +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/fi_FI/blockedlog.lang b/htdocs/langs/fi_FI/blockedlog.lang index cc69e90c513..f9a07298706 100644 --- a/htdocs/langs/fi_FI/blockedlog.lang +++ b/htdocs/langs/fi_FI/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/fi_FI/cashdesk.lang b/htdocs/langs/fi_FI/cashdesk.lang index 5bbd311f27a..81fe61276e5 100644 --- a/htdocs/langs/fi_FI/cashdesk.lang +++ b/htdocs/langs/fi_FI/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Lisää tämä artikkeli RestartSelling=Mene takaisin myydä SellFinished=Myynti valmis PrintTicket=Tulosta lippu +SendTicket=Send ticket NoProductFound=Ei artikkeli löydetty ProductFound=Tuote löytyy NoArticle=Ei artikkeli @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb laskuista Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Selain BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/fi_FI/companies.lang b/htdocs/langs/fi_FI/companies.lang index 6bcc497776c..db7da866e5b 100644 --- a/htdocs/langs/fi_FI/companies.lang +++ b/htdocs/langs/fi_FI/companies.lang @@ -54,10 +54,10 @@ Firstname=Etunimi PostOrFunction=Asema UserTitle=Titteli NatureOfThirdParty=Sidosryhmän luonne -NatureOfContact=Nature of Contact +NatureOfContact=Yhteyshenkilön luonne Address=Osoite -State=Valtio / Lääni -StateCode=State/Province code +State=Postialue +StateCode=Postinumero StateShort=Valtio Region=Alue Region-State=Alue - Osavaltio @@ -79,7 +79,7 @@ Town=Postitoimipaikka Web=Kotisivut Poste= Asema DefaultLang=Oletuskieli -VATIsUsed=Myyntivero +VATIsUsed=Käytettävä myyntivero VATIsUsedWhenSelling=Määrittää sisällyttääkö sidosryhmä myyntiveron omien asiakkaidensa laskuun. VATIsNotUsed=Myyntivero ei käytössä CopyAddressFromSoc=Kopioi osoite sidosryhmän tiedoista @@ -100,7 +100,7 @@ LocalTax2IsNotUsedES= IRPF ei käytössä WrongCustomerCode=Asiakastunnus vihreellinen WrongSupplierCode=Toimittajan tunnus virheellinen CustomerCodeModel=Asiakastunnuksen malli -SupplierCodeModel=Vendor code model +SupplierCodeModel=Toimittajakoodin malli Gencod=Viivakoodi ##### Professional ID ##### ProfId1Short=Prof id 1 @@ -310,12 +310,12 @@ AddThirdParty=Luo sidosryhmä DeleteACompany=Poista yritys PersonalInformations=Henkilötiedot AccountancyCode=Kirjanpito tili -CustomerCode=Asiakastunnua +CustomerCode=Asiakastunnus SupplierCode=Toimittajatunnus -CustomerCodeShort=Asiakastunnua +CustomerCodeShort=Asiakastunnus SupplierCodeShort=Toimittajatunnus -CustomerCodeDesc=Customer Code, unique for all customers -SupplierCodeDesc=Vendor Code, unique for all vendors +CustomerCodeDesc=Asiakaskohtainen koodi, uniikki jokaiselle asiakkaalle +SupplierCodeDesc=Toimittajakohtainen koodi, uniikki jokaiselle toimittajalle RequiredIfCustomer=Vaaditaan, jos sidosryhmä on asiakas tai mahdollinen asiakas RequiredIfSupplier=Vaadittu jos sidosryhmä on toimittaja ValidityControledByModule=Validity controlled by module @@ -325,16 +325,15 @@ CompanyDeleted=Yritys " %s" poistettu tietokannasta. ListOfContacts=Yhteystietoluettelo ListOfContactsAddresses=Yhteystietoluettelo ListOfThirdParties=Sidosryhmäluettelo -ShowCompany=Näytä sidosryhmä ShowContact=Näytä yhteystiedot ContactsAllShort=Kaikki (Ei suodatinta) ContactType=Yhteystiedon tyyppi ContactForOrders=Tilauksen yhteystiedon ContactForOrdersOrShipments=Tilauksen tai lähetyksen yhteystiedot -ContactForProposals=Tarjouksen yhteystiedon -ContactForContracts=Sopimukset yhteystiedot +ContactForProposals=Tarjouksen yhteyshenkilö +ContactForContracts=Sopimuksen yhteyshenkilö ContactForInvoices=Laskut yhteystiedot -NoContactForAnyOrder=Tämä yhteyshenkilö ei ole yhteyttä mihinkään jotta +NoContactForAnyOrder=Tämä yhteyshenkilö ei ole yhteyshenkilönä yhdessäkään tilauksessa. NoContactForAnyOrderOrShipments=Tämä yhteystieto ei ole yhteystietona missään tilauksessa tai toimituksessa NoContactForAnyProposal=Tämä yhteys ei ole yhteyttä mihinkään kaupalliseen ehdotus NoContactForAnyContract=Tämä yhteys ei ole yhteyttä mihinkään sopimukseen @@ -345,7 +344,7 @@ MyContacts=Omat yhteystiedot Capital=Pääoma CapitalOf=%s:n pääoma EditCompany=Muokkaa yritystä -ThisUserIsNot=This user is not a prospect, customer or vendor +ThisUserIsNot=Tämä ei ole prospekti, asiakas tai toimittaja VATIntraCheck=Shekki VATIntraCheckDesc=ALV-tunnuksen täytyy sisältää maatunnus. Linkki <b>%s</b> käyttää European VAT checker service (VIES)  - palvelua ja tarvii internet-yhteyden Dolibarr-palvelimeen VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do @@ -353,7 +352,7 @@ VATIntraCheckableOnEUSite=Tarkasta ALV-tunnus E.U: n sivuilta VATIntraManualCheck=Voit tehdä tarkastuksen myös käsin E.U: n sivuilla <a href="%s" target="_blank">%s</a> ErrorVATCheckMS_UNAVAILABLE=Tarkistaminen ei mahdollista. Jäsenvaltio ei toimita tarkastuspalvelua ( %s). NorProspectNorCustomer=Ei mahdollinen asiakas eikä asiakas -JuridicalStatus=Legal Entity Type +JuridicalStatus=Yritysmuoto Staff=Työntekijät ProspectLevelShort=Potenttiaali ProspectLevel=Prospekti potentiaali @@ -363,7 +362,7 @@ ContactVisibility=Näkyvyys ContactOthers=Muu OthersNotLinkedToThirdParty=Toiset, jotka eivät liity kolmasosaa osapuoli ProspectStatus=Prospektin tila -PL_NONE=Aucun +PL_NONE=Ei mitään PL_UNKNOWN=Tuntematon PL_LOW=Matala PL_MEDIUM=Keskitaso @@ -399,16 +398,16 @@ ExportDataset_company_2=Contacts and their properties ImportDataset_company_1=Third-parties and their properties ImportDataset_company_2=Third-parties additional contacts/addresses and attributes ImportDataset_company_3=Sidosryhmien pankkitilit -ImportDataset_company_4=Third-parties Sales representatives (assign sales representatives/users to companies) +ImportDataset_company_4=Kolmansien osapuolten myyjät (lisää myyjät/käyttäjät yrityskohtaisesti) PriceLevel=Hintataso -PriceLevelLabels=Price Level Labels +PriceLevelLabels=Hintaryhmät DeliveryAddress=Toimitusosoite AddAddress=Lisää osoite -SupplierCategory=Vendor category +SupplierCategory=Toimittaja kategoria JuridicalStatus200=Itsenäinen DeleteFile=Poista tiedosto ConfirmDeleteFile=Oletko varma, että haluat poistaa tämän tiedoston? -AllocateCommercial=Liitä myyntiedustajaan +AllocateCommercial=Liitetty myyntiedustajaan Organization=Organisaatio FiscalYearInformation=Tilikausi FiscalMonthStart=Tilikauden aloituskuukausi @@ -419,14 +418,14 @@ SocialNetworksLinkedinURL=Linkedin URL SocialNetworksInstagramURL=Instagram URL SocialNetworksYoutubeURL=Youtube URL SocialNetworksGithubURL=Github URL -YouMustAssignUserMailFirst=You must create an email for this user prior to being able to add an email notification. +YouMustAssignUserMailFirst=Aseta sähköposti että voi lisätä sähköpostimuistukset käyttöön YouMustCreateContactFirst=Voidaksesi lisätä sähköposti muistutukset, täytyy ensin täyttää yhteystiedot sidosryhmän oikealla sähköpostiosoitteella ListSuppliersShort=Toimittajaluettelo ListProspectsShort=Luettelo mahdollisista asiakkaista ListCustomersShort=Asiakasluettelo ThirdPartiesArea=Sidosryhmät/yhteystiedot LastModifiedThirdParties=Last %s modified Third Parties -UniqueThirdParties=Total of Third Parties +UniqueThirdParties=Yhteensä sidosryhmiä InActivity=Avoinna ActivityCeased=Kiinni ThirdPartyIsClosed=Sidosryhmä on suljettu @@ -446,7 +445,8 @@ SaleRepresentativeLogin=Myyntiedustajan kirjautuminen SaleRepresentativeFirstname=Myyntiedustajan etunimi SaleRepresentativeLastname=Myyntiedustajan sukunimi ErrorThirdpartiesMerge=Sidosryhmän poistossa tapahtui virhe. Tarkista virhe lokitiedostosta. Muutoksia ei tehty -NewCustomerSupplierCodeProposed=Customer or Vendor code already used, a new code is suggested +NewCustomerSupplierCodeProposed=Tuotekoodi käytössä, käytä uutta koodia +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Maksutapa - Asiakas PaymentTermsCustomer=Maksuehdot - Asiakas diff --git a/htdocs/langs/fi_FI/compta.lang b/htdocs/langs/fi_FI/compta.lang index c193b43978e..88b914cd030 100644 --- a/htdocs/langs/fi_FI/compta.lang +++ b/htdocs/langs/fi_FI/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/fi_FI/errors.lang b/htdocs/langs/fi_FI/errors.lang index f568deeb469..f2f1ba0fb15 100644 --- a/htdocs/langs/fi_FI/errors.lang +++ b/htdocs/langs/fi_FI/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Tiedosto ei saanut kokonaan palvelimelta. ErrorNoTmpDir=Tilapäinen directy %s ei ole. ErrorUploadBlockedByAddon=Lähetä estetty PHP / Apache plugin. ErrorFileSizeTooLarge=Tiedoston koko on liian suuri. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Koko liian pitkä int tyyppi (%s merkkiä maksimi) ErrorSizeTooLongForVarcharType=Koko liian pitkä jono tyyppi (%s merkkiä maksimi) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/fi_FI/install.lang b/htdocs/langs/fi_FI/install.lang index f01edcad905..03c084676eb 100644 --- a/htdocs/langs/fi_FI/install.lang +++ b/htdocs/langs/fi_FI/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Sinun PHP max istuntojakson muisti on <b>asetettu %s.</b> Tämän pitäisi olla tarpeeksi. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Sinun PHP asennuksesi ei tue Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Hakemiston %s ei ole olemassa. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/fi_FI/link.lang b/htdocs/langs/fi_FI/link.lang index e794e091a48..2db365c6329 100644 --- a/htdocs/langs/fi_FI/link.lang +++ b/htdocs/langs/fi_FI/link.lang @@ -8,3 +8,4 @@ LinkRemoved=%s linkki on poistettu ErrorFailedToDeleteLink= Linkin '<b>%s</b>' poisto ei onnistunut ErrorFailedToUpdateLink= Linkin '<b>%s</b>' päivitys ei onnistunut URLToLink=URL linkiksi +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/fi_FI/mails.lang b/htdocs/langs/fi_FI/mails.lang index 77d9cde2195..005cf01f18a 100644 --- a/htdocs/langs/fi_FI/mails.lang +++ b/htdocs/langs/fi_FI/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/fi_FI/main.lang b/htdocs/langs/fi_FI/main.lang index e38ede431d7..779f8b5c519 100644 --- a/htdocs/langs/fi_FI/main.lang +++ b/htdocs/langs/fi_FI/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Testaa yhteys ToClone=Klooni +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Ei tietoja kloonata määritelty. Of=ja @@ -829,6 +830,8 @@ Gender=Sukupuoli Genderman=Mies Genderwoman=Nainen ViewList=Näytä lista +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Pakollinen Hello=Terve GoodBye=Näkemiin @@ -954,7 +957,7 @@ SearchIntoTasks=Tehtävät SearchIntoCustomerInvoices=Asiakkaiden laskut SearchIntoSupplierInvoices=Vendor invoices SearchIntoCustomerOrders=Asiakkaan tilaukset -SearchIntoSupplierOrders=Purchase orders +SearchIntoSupplierOrders=Ostotilaukset SearchIntoCustomerProposals=Tarjoukset asiakkaille SearchIntoSupplierProposals=Vendor proposals SearchIntoInterventions=Interventions @@ -969,7 +972,7 @@ CommentPage=Comments space CommentAdded=Kommentti lisätty CommentDeleted=Kommentti poistettu Everybody=Yhteiset hanke -PayedBy=Paid by +PayedBy=Maksettu toimesta PayedTo=Paid to Monthly=Monthly Quarterly=Quarterly @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/fi_FI/orders.lang b/htdocs/langs/fi_FI/orders.lang index 9eb16bfb4cb..6ad75f3c205 100644 --- a/htdocs/langs/fi_FI/orders.lang +++ b/htdocs/langs/fi_FI/orders.lang @@ -141,7 +141,7 @@ OrderByEMail=Sähköposti OrderByWWW=Online OrderByPhone=Puhelin # Documents models -PDFEinsteinDescription=A complete order model (old implementation of Eratosthene template) +PDFEinsteinDescription=A complete order model PDFEratostheneDescription=A complete order model PDFEdisonDescription=Yksinkertainen tilausmalli PDFProformaDescription=A complete Proforma invoice template diff --git a/htdocs/langs/fi_FI/other.lang b/htdocs/langs/fi_FI/other.lang index 3e05eb44a04..5cd5ddd1758 100644 --- a/htdocs/langs/fi_FI/other.lang +++ b/htdocs/langs/fi_FI/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Titteli WEBSITE_DESCRIPTION=Kuvaus 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/fi_FI/products.lang b/htdocs/langs/fi_FI/products.lang index 91ccfbb1d6f..15cb4c2d1e9 100644 --- a/htdocs/langs/fi_FI/products.lang +++ b/htdocs/langs/fi_FI/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Kirjanpitotili (ostot) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Kirjanpitotili (myynti) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Kirjanpitotili (Vientimyynti) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Alkuperä maa -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Yksikkö p=u. diff --git a/htdocs/langs/fi_FI/projects.lang b/htdocs/langs/fi_FI/projects.lang index 54314312026..f21074d9938 100644 --- a/htdocs/langs/fi_FI/projects.lang +++ b/htdocs/langs/fi_FI/projects.lang @@ -4,92 +4,90 @@ ProjectRef=Project ref. ProjectId=Project Id ProjectLabel=Project label ProjectsArea=Projects Area -ProjectStatus=Project status +ProjectStatus=Projektin tila SharedProject=Yhteiset hanke PrivateProject=Hankkeen yhteystiedot -ProjectsImContactFor=Projects for I am explicitly a contact -AllAllowedProjects=All project I can read (mine + public) +ProjectsImContactFor=Omat projektit +AllAllowedProjects=Omat ja muiden projektit AllProjects=Kaikki hankkeet MyProjectsDesc=This view is limited to projects you are a contact for -ProjectsPublicDesc=Tämä näkemys esitetään kaikki hankkeet sinulla voi lukea. +ProjectsPublicDesc=Tässä näkymässä esitetään kaikki hankkeet joita sinulla on oikaus katsoa. TasksOnProjectsPublicDesc=This view presents all tasks on projects you are allowed to read. -ProjectsPublicTaskDesc=Tämä näkemys esitetään kaikki hankkeet ja tehtävät sinulla voi lukea. +ProjectsPublicTaskDesc=Tässä näkymässä esitetään kaikki tehtävät joita sinulla on oikaus katsoa. ProjectsDesc=Tämä näkemys esitetään kaikki hankkeet (käyttäjäoikeuksien antaa sinulle luvan katsella kaikkea). TasksOnProjectsDesc=This view presents all tasks on all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for OnlyOpenedProject=Only open projects are visible (projects in draft or closed status are not visible). -ClosedProjectsAreHidden=Closed projects are not visible. +ClosedProjectsAreHidden=Suljetut projektit eivät ole nähtävissä. TasksPublicDesc=Tämä näkemys esitetään kaikki hankkeet ja tehtävät sinulla voi lukea. TasksDesc=Tämä näkemys esitetään kaikki hankkeet ja tehtävät (käyttäjäoikeuksien antaa sinulle luvan katsella kaikkea). AllTaskVisibleButEditIfYouAreAssigned=All tasks for qualified projects are visible, but you can enter time only for task assigned to selected user. Assign task if you need to enter time on it. OnlyYourTaskAreVisible=Only tasks assigned to you are visible. Assign task to yourself if it is not visible and you need to enter time on it. -ImportDatasetTasks=Tasks of projects -ProjectCategories=Project tags/categories +ImportDatasetTasks=Projektien tehtävät +ProjectCategories=Projektien/Tehtävien kategoriat NewProject=Uusi projekti -AddProject=Create project +AddProject=Perusta projekti DeleteAProject=Poista hanke DeleteATask=Poista tehtävä -ConfirmDeleteAProject=Are you sure you want to delete this project? -ConfirmDeleteATask=Are you sure you want to delete this task? -OpenedProjects=Open projects -OpenedTasks=Open tasks +ConfirmDeleteAProject=Oletko varma että haluat poistaa tämän projektin? +ConfirmDeleteATask=Oletko varma että haluat poistaa tämän tehtävän? +OpenedProjects=Avoimet projektit +OpenedTasks=Avoimet tehtävät OpportunitiesStatusForOpenedProjects=Leads amount of open projects by status OpportunitiesStatusForProjects=Leads amount of projects by status -ShowProject=Näytä hankkeen +ShowProject=Näytä projekti ShowTask=Näytä tehtävä -SetProject=Aseta hankkeen +SetProject=Aseta projekti NoProject=Ei hanke määritellään -NbOfProjects=Number of projects -NbOfTasks=Number of tasks +NbOfProjects=Projektien määrä +NbOfTasks=Tehtävien määrä TimeSpent=Käytetty aika TimeSpentByYou=Time spent by you TimeSpentByUser=Time spent by user TimesSpent=Käytetty aika -TaskId=Task ID -RefTask=Task ref. -LabelTask=Task label +TaskId=Tehtävän ID +RefTask=Tehtävän viittaus +LabelTask=Tehtävän merkki TaskTimeSpent=Time spent on tasks TaskTimeUser=Käyttäjä TaskTimeNote=Huomautus -TaskTimeDate=Date +TaskTimeDate=Päivämäärä TasksOnOpenedProject=Tasks on open projects WorkloadNotDefined=Workload not defined NewTimeSpent=Käytetty aika MyTimeSpent=Oma käytetty aika -BillTime=Bill the time spent -BillTimeShort=Bill time -TimeToBill=Time not billed -TimeBilled=Time billed +BillTime=Laskuta käytetty aika +BillTimeShort=Laskutettava aika +TimeToBill=Laskuttamaton aika +TimeBilled=Laskutettu aika Tasks=Tehtävät Task=Tehtävä -TaskDateStart=Task start date -TaskDateEnd=Task end date -TaskDescription=Task description +TaskDateStart=Tehtävän alkupäivä +TaskDateEnd=Tehtävän loppupäivä +TaskDescription=Tehtävän kuvaus NewTask=Uusi tehtävä -AddTask=Create task -AddTimeSpent=Create time spent -AddHereTimeSpentForDay=Add here time spent for this day/task -AddHereTimeSpentForWeek=Add here time spent for this week/task +AddTask=Perusta tehtävä +AddTimeSpent=Kirjaa käytetty aika +AddHereTimeSpentForDay=Lisää tähän käytetty aika tälle päivälle/tehtävälle +AddHereTimeSpentForWeek=Lisää tähän käytetty aika tälle viikolle/tehtävälle Activity=Toiminto Activities=Tehtävät / toiminnot MyActivities=Omat tehtävät / toiminnot -MyProjects=Omat hankkeet -MyProjectsArea=My projects Area -DurationEffective=Todellisen keston -ProgressDeclared=Declared progress -TaskProgressSummary=Task progress -CurentlyOpenedTasks=Curently open tasks +MyProjects=Omat projektit +MyProjectsArea=Omat projektit - alue +DurationEffective=Todellisen kesto +ProgressDeclared=Julkaistu eteneminen +TaskProgressSummary=Tehtien eteneminen +CurentlyOpenedTasks=Avoimet tehtävät TheReportedProgressIsLessThanTheCalculatedProgressionByX=The declared progress is less %s than the calculated progression TheReportedProgressIsMoreThanTheCalculatedProgressionByX=The declared progress is more %s than the calculated progression -ProgressCalculated=Calculated progress +ProgressCalculated=Lasketut projektit WhichIamLinkedTo=which I'm linked to WhichIamLinkedToProject=which I'm linked to project Time=Aika -ListOfTasks=List of tasks +ListOfTasks=Tehtävälista GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt -GanttView=Gantt View +GanttView=GANTT näkymä ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project ListInvoicesAssociatedProject=List of customer invoices related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Liittyvät tuotteet ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Uusi lasku OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/fi_FI/receiptprinter.lang b/htdocs/langs/fi_FI/receiptprinter.lang index f50113846a2..72c80718a92 100644 --- a/htdocs/langs/fi_FI/receiptprinter.lang +++ b/htdocs/langs/fi_FI/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy tulostin CONNECTOR_NETWORK_PRINT=Verkkotulostin CONNECTOR_FILE_PRINT=Paikallinen tulostin CONNECTOR_WINDOWS_PRINT=Paikallinen Windows tulostin +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Olematon tulostin testiä varten, ei tee mitään CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Oletus profiili PROFILE_SIMPLE=Yksinkertainen profiili PROFILE_EPOSTEP=Epos Tep profiili @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Laskun ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Pääoma +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/fi_FI/stripe.lang b/htdocs/langs/fi_FI/stripe.lang index 8ca2b1b040f..c14c2d42860 100644 --- a/htdocs/langs/fi_FI/stripe.lang +++ b/htdocs/langs/fi_FI/stripe.lang @@ -32,6 +32,7 @@ VendorName=Nimi myyjä CSSUrlForPaymentForm=CSS-tyylisivu url maksun muodossa NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/fi_FI/users.lang b/htdocs/langs/fi_FI/users.lang index a4c8f7b7cec..780bb758259 100644 --- a/htdocs/langs/fi_FI/users.lang +++ b/htdocs/langs/fi_FI/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain käyttäjän %s Reactivate=Uudelleenaktivoi CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Lupa myönnettiin, koska periytyy yhden käyttäjän ryhmä. Inherited=Peritty UserWillBeInternalUser=Luotu käyttäjä on sisäinen käyttäjä (koska ei liity erityistä kolmannelle osapuolelle) @@ -113,3 +113,5 @@ CantDisableYourself=You can't disable your own user record ForceUserExpenseValidator=Force expense report validator ForceUserHolidayValidator=Force leave request validator ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/fi_FI/website.lang b/htdocs/langs/fi_FI/website.lang index 2a68da89c30..3685a0886b6 100644 --- a/htdocs/langs/fi_FI/website.lang +++ b/htdocs/langs/fi_FI/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Aseta kotisivuksi RealURL=Lue URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/fr_BE/admin.lang b/htdocs/langs/fr_BE/admin.lang index 6fe29d6202b..fa89f84c97c 100644 --- a/htdocs/langs/fr_BE/admin.lang +++ b/htdocs/langs/fr_BE/admin.lang @@ -14,8 +14,16 @@ WarningModuleNotActive=Le module <b>%s</b> doit être activé WarningOnlyPermissionOfActivatedModules=Seules les permissions liées à des modules activés sont montrées ici. Vous pouvez activer d'autres modules sur la page Accueil->Configuration->Modules. FormToTestFileUploadForm=Formulaire pour tester l'upload de fichiers (selon la configuration) IfModuleEnabled=Note: oui ne fonctionne que si le module <b>%s</b> est activé +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +YouCanSubmitFile=You can upload the .zip file of module package from here: Module20Name=Propales Module30Name=Factures +Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). +ValueOfConstantKey=Value of a configuration constant +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. Target=Objectif SuppliersCommandModel=Complete template of Purchase Order SuppliersInvoiceModel=Complete template of Vendor Invoice diff --git a/htdocs/langs/fr_BE/bills.lang b/htdocs/langs/fr_BE/bills.lang index bffa158d338..21de194f376 100644 --- a/htdocs/langs/fr_BE/bills.lang +++ b/htdocs/langs/fr_BE/bills.lang @@ -14,8 +14,12 @@ UsedByInvoice=Utilisée pour payer la facture %s PredefinedInvoices=Factures prédéfinies SupplierBills=factures fournisseurs Payment=Paiement +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Paiements DeletePayment=Supprimer paiement +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ReceivedPayments=Paiements reçus ReceivedCustomersPayments=Paiements reçus de clients ReceivedCustomersPaymentsToValid=Paiements à valider de clients @@ -39,5 +43,5 @@ PaymentTypeShortLIQ=En espèces PaymentTypeCB=Carte de crédit PaymentTypeShortCB=Carte de crédit Cash=En espèces -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template TerreNumRefModelDesc1=Renvoie le numéro sous la forme %syymm-nnnn pour les factures et %syymm-nnnn pour les notes de crédits où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0 diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang index 0e082ab6de8..b933b9d4c2e 100644 --- a/htdocs/langs/fr_CA/admin.lang +++ b/htdocs/langs/fr_CA/admin.lang @@ -19,6 +19,8 @@ UploadNewTemplate=Télécharger un nouveau modèle (s) SecurityFilesDesc=Définissez ici les options liées à la sécurité concernant le téléchargement de fichiers. AllowToSelectProjectFromOtherCompany=Sur le document d'un tiers, peut choisir un projet lié à un autre tiers NextValueForDeposit=Valeur suivante (acompte) +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" MultiCurrencySetup=Configuration multi-devises NotConfigured=Module / Application non configuré AllWidgetsWereEnabled=Tous les widgets disponibles sont activés @@ -57,6 +59,7 @@ ModuleFamilyInterface=Interfaces avec les systèmes externes ThisIsAlternativeProcessToFollow=Il s'agit d'une configuration alternative à traiter manuellement: NotExistsDirect=Le répertoire racine alternatif n'est pas défini dans un répertoire existant. InfDirAlt=Depuis la version 3, il est possible de définir un autre répertoire racine. Cela vous permet de stocker, dans un répertoire dédié, des plug-ins et des modèles personnalisés. <br> Créez simplement un répertoire à la racine de Dolibarr (par exemple: personnalisé). +YouCanSubmitFile=You can upload the .zip file of module package from here: LastStableVersion=Dernière version stable LastActivationDate=Dernière date d'activation LastActivationAuthor=Dernier auteur d'activation @@ -98,6 +101,7 @@ Module2610Desc=Activer le serveur REST de services API de les services Module2660Name=WebServices appel ( client SOAP ) Module4000Name=Gestion des ressources humaines Module10000Name=Sites Internet +Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). Module55000Name=Sondage, enquête ou vote Permission45=Exportation de projets Permission76=Exporter des données @@ -125,16 +129,20 @@ DictionaryVAT=Taux de TPS/TVH ou de Taxes de Ventes DictionaryAccountancyJournal=Revues comptables DictionaryProspectStatus=Status prospection SetupNotSaved=Le programme d'installation n'a pas été enregistré +ValueOfConstantKey=Value of a configuration constant CurrentNext=Actuel / Suivant DefaultMaxSizeList=Longueur maximale des listes CompanyObject=Objet de la compagnie ShowBugTrackLink=Afficher le lien "Signaler un défaut" +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. InfoDolibarr=À propos de Dolibarr InfoBrowser=À propos du navigateur InfoWebServer=À propos du serveur Web InfoPHP=À propos de PHP InfoPerf=À propos des performances AreaForAdminOnly=Les paramètres d'installation peuvent être définis par <b> utilisateurs d'administrateur </ b> uniquement. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. DictionaryDesc=Insérez toutes les données de référence. Vous pouvez ajouter vos valeurs par défaut. MiscellaneousDesc=Tous les autres paramètres liés à la sécurité sont définis ici. UnitPriceOfProduct=Prix unitaire (no tax) d'un produit diff --git a/htdocs/langs/fr_CA/bills.lang b/htdocs/langs/fr_CA/bills.lang index 910c77067a3..eaa8825ba8a 100644 --- a/htdocs/langs/fr_CA/bills.lang +++ b/htdocs/langs/fr_CA/bills.lang @@ -5,8 +5,12 @@ InvoiceDepositDesc=Ce type de facture se fait lorsque l'acompte a été reçu. invoiceAvoirWithLines=Créer l'avoir avec les même lignes que la factures dont il est issu InvoiceHasAvoir=Était une source d'une ou de plusieurs notes de crédit PredefinedInvoices=Facture prédéfinie +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund paymentInInvoiceCurrency=en factures de devises ConfirmDeletePayment=Êtes-vous sûr de vouloir supprimer ce paiement? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? PaymentTypeDC=Carte de débit / crédit PaymentTypePP=Pay Pal CreateCreditNote=Créer avoir @@ -83,7 +87,7 @@ PaymentTypeShortTRA=Brouillon ChequeMaker=Émetteur du chèque/transfert DepositId=Identifiant de dépot YouMustCreateStandardInvoiceFirstDesc=Vous devez d'abord créer une facture standard et la convertir en «modèle» pour créer une nouvelle facture modèle -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFCrevetteDescription=Facture modèle PDF Crevette. Un modèle de facture complet pour les factures de situation MarsNumRefModelDesc1=Numéro de retour avec le format %syymm-nnnn pour les factures standard, %syymm-nnnn pour les factures de remplacement, %syymm-nnnn pour les factures de versement et %syymm-nnnn pour les notes de crédit où il est année, mm est le mois et nnnn est une séquence sans interruption et non Retourner à 0 CactusNumRefModelDesc1=Numéro de retour avec le format %syymm-nnnn pour les factures standard, %syymm-nnnn pour les notes de crédit et %syymm-nnnn pour les factures de versement de paiement où yy est l'année, mm est le mois et nnnn est une séquence sans interruption et aucun retour à 0 diff --git a/htdocs/langs/fr_CA/cashdesk.lang b/htdocs/langs/fr_CA/cashdesk.lang index 2f3da52b1f5..7b351fd210f 100644 --- a/htdocs/langs/fr_CA/cashdesk.lang +++ b/htdocs/langs/fr_CA/cashdesk.lang @@ -2,3 +2,5 @@ NoVAT=Pas de TVA (TAXE) pour cette vente BankToPay=Compte pour le paiement DolibarrReceiptPrinter=Imprimante de reçu Dolibarr +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts diff --git a/htdocs/langs/fr_CA/compta.lang b/htdocs/langs/fr_CA/compta.lang index d90041a728d..9426cca9d08 100644 --- a/htdocs/langs/fr_CA/compta.lang +++ b/htdocs/langs/fr_CA/compta.lang @@ -45,7 +45,6 @@ ConfirmDeleteSocialContribution=Êtes-vous sûr de vouloir supprimer cette charg ExportDataset_tax_1=Charges sociales et paiements CalcModeVATDebt=Mode <b>%sTPS/TVH sur débit%s</b>. CalcModeVATEngagement=Mode <b>%s TPS/TVH sur encaissement%s</b>. -RulesResultDue=- Il comprend les factures, les dépenses, la TVA, les dons, qu'ils soient payés ou non. Comprend également les salaires payés. <br> - Il est basé sur la date de validation des factures et la TVA et à la date d'échéance des dépenses. Pour les salaires définis avec le module Salaire, la date de valeur du paiement est utilisée. RulesResultInOut=- Il comprend les paiements réels effectués sur les factures, les dépenses, la TVA et les salaires. <br> - Il est basé sur les dates de paiement des factures, des dépenses, de la TVA et des salaires. La date de donation pour le don. DepositsAreIncluded=- Les factures de versement sont incluses LT1ReportByCustomersES=Rapport par tiers des RE (TVA) diff --git a/htdocs/langs/fr_CA/errors.lang b/htdocs/langs/fr_CA/errors.lang index 967bf583d1c..9df16a4655b 100644 --- a/htdocs/langs/fr_CA/errors.lang +++ b/htdocs/langs/fr_CA/errors.lang @@ -59,6 +59,7 @@ ErrorSpecialCharNotAllowedForField=Les caractères spéciaux ne sont pas autoris ErrorNumRefModel=Une référence existe dans la base de données (%s) et n'est pas compatible avec cette règle de numérotation. Supprimez l'enregistrement ou la renommée référence pour activer ce module. ErrorBadMaskBadRazMonth=Erreur, mauvaise valeur de réinitialisation ErrorCounterMustHaveMoreThan3Digits=Le compteur doit avoir plus de 3 chiffres +ErrorSelectAtLeastOne=Error, select at least one entry. ErrorProdIdAlreadyExist=%s est affecté à un autre tiers ErrorFailedToLoadRSSFile=Impossible d'obtenir un flux RSS. Essayez d'ajouter constante MAIN_SIMPLEXMLLOAD_DEBUG si les messages d'erreur ne fournissent pas suffisamment d'informations. ErrorForbidden=Accès refusé. <br> Vous essayez d'accéder à une page, zone ou fonctionnalité d'un module désactivé ou sans être dans une session authentifiée ou non autorisée pour votre utilisateur. diff --git a/htdocs/langs/fr_CA/main.lang b/htdocs/langs/fr_CA/main.lang index 212af6e5318..fdb14636cb9 100644 --- a/htdocs/langs/fr_CA/main.lang +++ b/htdocs/langs/fr_CA/main.lang @@ -114,6 +114,7 @@ RelatedObjects=Objets associés FrontOffice=Front Office ExportFilteredList=Export liste filtrée ExportList=Liste des exportations +ExportOptions=Options d'exportation GroupBy=Par groupe... ViewFlatList=Afficher la liste forfaitaire RemoveString=Supprimer la chaîne '%s' diff --git a/htdocs/langs/fr_CA/other.lang b/htdocs/langs/fr_CA/other.lang index e19e7944a15..ba425feb946 100644 --- a/htdocs/langs/fr_CA/other.lang +++ b/htdocs/langs/fr_CA/other.lang @@ -110,4 +110,3 @@ LibraryVersion=Version de la bibliothèque ExportableDatas=Données à l'exportation NoExportableData=Aucune donnée exportable (aucun module avec des données exportables chargées ou des autorisations manquantes) WebsiteSetup=Site de configuration du module -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. diff --git a/htdocs/langs/fr_CA/projects.lang b/htdocs/langs/fr_CA/projects.lang index 7b2d5aad08b..f92612aa8bf 100644 --- a/htdocs/langs/fr_CA/projects.lang +++ b/htdocs/langs/fr_CA/projects.lang @@ -88,7 +88,6 @@ AddElement=Lien vers l'élément PlannedWorkload=Charge de travail planifiée ProjectReferers=Articles connexes ProjectMustBeValidatedFirst=Le projet doit d'abord être validé -FirstAddRessourceToAllocateTime=Affectez une ressource utilisateur à la tâche pour allouer du temps InputPerDay=Entrée par jour InputPerWeek=Entrée par semaine TimeAlreadyRecorded=Il s'agit du temps passé déjà enregistré pour cette tâche / jour et utilisateur %s diff --git a/htdocs/langs/fr_CA/users.lang b/htdocs/langs/fr_CA/users.lang index 81db7ef3370..a6633222cdc 100644 --- a/htdocs/langs/fr_CA/users.lang +++ b/htdocs/langs/fr_CA/users.lang @@ -7,6 +7,7 @@ ConfirmEnableUser=Êtes-vous sûr de vouloir activer l'utilisateur <b>%s</b>? ConfirmReinitPassword=Êtes-vous sûr de vouloir générer un nouveau mot de passe pour l'utilisateur <b>%s</b>? ConfirmSendNewPassword=Êtes-vous sûr de vouloir générer et envoyer un nouveau mot de passe pour l'utilisateur <b> %s</b>? LastUsersCreated=Derniers %s utilisateurs créés +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) ConfirmCreateContact=Êtes-vous sûr de vouloir créer un compte Dolibarr pour ce contact? ConfirmCreateLogin=Êtes-vous sûr de vouloir créer un compte Dolibarr pour ce membre? ConfirmCreateThirdParty=Êtes-vous sûr de vouloir créer un tiers pour ce membre? diff --git a/htdocs/langs/fr_CA/website.lang b/htdocs/langs/fr_CA/website.lang index 5255b2f9da5..5aefcc130d6 100644 --- a/htdocs/langs/fr_CA/website.lang +++ b/htdocs/langs/fr_CA/website.lang @@ -7,3 +7,5 @@ EditMenu=Menu Edition ViewSiteInNewTab=Afficher le site dans un nouvel onglet ViewPageInNewTab=Afficher la page dans un nouvel onglet ViewWebsiteInProduction=Afficher le site Web à l'aide d'URL d'accueil +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index d905a9513f7..6363b8b710d 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Remarque : Votre PHP limite la taille des envois à <b> NoMaxSizeByPHPLimit=Aucune limite configurée dans votre serveur PHP MaxSizeForUploadedFiles=Taille maximum des fichiers envoyés (0 pour interdire l'envoi) UseCaptchaCode=Utilisation du code graphique (CAPTCHA) sur la page de connexion -AntiVirusCommand= Chemin complet vers la commande antivirus -AntiVirusCommandExample= Exemple pour ClamWin : c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Exemple pour ClamAv : /usr/bin/clamscan +AntiVirusCommand=Chemin complet vers la commande antivirus +AntiVirusCommandExample=Exemple pour ClamAv Daemon (nécessite clamav-daemon): /usr/bin/clamdscan <br> Exemple pour ClamWin (très très lent): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Paramètres supplémentaires sur la ligne de commande -AntiVirusParamExample= Exemple pour ClamWin : --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Exemple pour le démon ClamAv: --fdpass <br> Exemple pour ClamWin: --database = "C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Configuration du module Comptabilité UserSetup=Configuration de la gestion des utilisateurs MultiCurrencySetup=Configuration du module Multi-devise @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Fonction désactivée dans la démo FeatureAvailableOnlyOnStable=Fonction disponible uniquement sur les versions officielles stables BoxesDesc=Les widgets sont des composants montrant des informations que vous pouvez ajouter à vos pages pour les personnaliser. Vous pouvez choisir de les afficher ou non en sélectionnant la page cible et en cliquant sur "Activer" ou "Désactiver". OnlyActiveElementsAreShown=Seuls les éléments en rapport avec un <a href="%s">module actif</a> sont présentés. -ModulesDesc=Les modules Dolibarr définissent quelles fonctionnalités sont disponibles dans le logiciel. Certains modules / applications nécessitent, après activation, d'accorder des autorisations aux utilisateurs. Cliquez sur le bouton activé/désactivé (en fin de ligne) pour activer un module/application. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=D'autres modules/extensions sont disponibles en téléchargement sur des sites externes sur Internet... ModulesDeployDesc=Si les permissions de votre système de fichier le permettent , vous pouvez utiliser cet outil pour déployer un module externe. Le module sera alors visible dans l'onglet <strong>%s</strong>. ModulesMarketPlaces=Rechercher un module/application externe @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible avec la version %s NotCompatible=Ce module n'est pas compatible avec votre version %s de Dolibarr (version min. %s - version max. %s). CompatibleAfterUpdate=Ce module nécessite une mise à jour de Dolibarr %s (Version min. %s - Version max. %s). SeeInMarkerPlace=Voir dans la boutique +SeeSetupOfModule=Voir la configuration du module %s Updated=Mise à jour effectuée Nouveauté=Nouveauté AchatTelechargement=Acheter/télécharger @@ -221,6 +222,7 @@ DoliPartnersDesc=Liste de quelques sociétés qui peuvent fournir/développer de WebSiteDesc=Sites fournisseurs à consulter pour trouver plus de modules (extensions)... DevelopYourModuleDesc=Quelques pistes pour développer votre propre module/application... URL=URL +RelativeURL=URL relative BoxesAvailable=Widgets disponibles BoxesActivated=Widgets activés ActivateOn=Activer sur @@ -328,7 +330,7 @@ SetupIsReadyForUse=L"installation du module est terminée. Il est cependant néc NotExistsDirect=Le dossier racine alternatif n'est pas défini.<br> InfDirAlt=Depuis les versions 3, il est possible de définir un dossier racine alternatif. Cela permet d'installer modules et thèmes additionnels dans un répertoire dédié.<br>Créer un dossier racine alternatif à Dolibarr (ex : custom).<br> InfDirExample=<br>Ensuite, déclarez le dans le fichier <strong>conf.php</strong><br>$dolibarr_main_url_root_alt='/custom'<br>$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'<br>Si ces lignes sont commentées avec un symbole "#" ou "//", activer les en supprimant le caractère "#" ou "//". -YouCanSubmitFile=You can upload the .zip file of module package from here: +YouCanSubmitFile=Vous pouvez téléverser le fichier .zip du package du module à partir d'ici: CurrentVersion=Version actuelle de Dolibarr CallUpdatePage=Aller à la page de mise à jour de la structure et des données de la base : %s. LastStableVersion=Dernière version stable disponible @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Laisser ce champ vide pour utiliser la valeur par défaut DefaultLink=Lien par défaut SetAsDefault=Définir par défaut ValueOverwrittenByUserSetup=Attention, cette valeur peut être écrasée par une valeur spécifique à la configuration de l'utilisateur (chaque utilisateur pouvant avoir sa propre URL « clicktodial ») -ExternalModule=Module externe - Installé dans le répertoire %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Initialisation du code-barre en masse pour les tiers BarcodeInitForProductsOrServices=Initialisation ou purge en masse des codes-barre des produits ou services CurrentlyNWithoutBarCode=Actuellement, vous avez <strong>%s</strong> enregistrements sur <strong>%s</strong> %s sans code barre défini. @@ -546,7 +549,7 @@ Module58Desc=Intégration d'un système de « ClickToDial » (Asterisk, …) Module59Name=Bookmark4u Module59Desc=Ajoute une fonction pour générer un compte Bookmark4u depuis un compte Dolibarr Module60Name=Autocollants -Module60Desc=Gestion des autocollants +Module60Desc=Gestion des pages d'autocollants Module70Name=Interventions Module70Desc=Gestion des interventions chez les tiers Module75Name=Notes de frais @@ -642,7 +645,7 @@ Module50000Desc=Module permettant d'offrir une page de paiement en ligne par car Module50100Name=PdV SimplePOS Module50100Desc=Point de vente SimplePOS (caisse enregistreuse simple) Module50150Name=PdV TakePOS -Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). +Module50150Desc=Point de Vente TakePOS (Caisse enregistreuse à écran tactile, pour magasins, bars, restaurants, etc). Module50200Name=Paypal Module50200Desc=Module permettant d'offrir une page de paiement en ligne par carte de crédit avec PayBox. Ceci peut être utilisé par les clients pour faire des paiements de montants libre ou pour des paiements d'un objet particulier de Dolibarr (facture, commande, ...) Module50300Name=Stripe @@ -881,7 +884,7 @@ Permission1251=Lancer des importations en masse dans la base (chargement de donn Permission1321=Exporter les factures clients, attributs et règlements Permission1322=Rouvrir une facture payée Permission1421=Exporter les commandes clients et attributs -Permission2401=Lire les actions (événements ou tâches) liées à son compte utilisateur (si propriétaire de l’événement ou lui est assigné) +Permission2401=Lire les actions (événements ou tâches) liées à son compte utilisateur (si propriétaire de l’événement ou simplement assigné à l'événement) Permission2402=Créer/modifier des actions (événements ou tâches) liées à son compte utilisateur (si propriétaire de l'événement) Permission2403=Supprimer des actions (événements ou tâches) liées à son compte utilisateur (si propriétaire de l'événement) Permission2411=Lire les actions (événements ou tâches) des autres @@ -947,7 +950,7 @@ DictionaryCanton=Etats/Province DictionaryRegion=Régions DictionaryCountry=Pays DictionaryCurrency=Monnaies -DictionaryCivility=Titres de civilité +DictionaryCivility=Honorific titles DictionaryActions=Liste des types d'événements de l'agenda DictionarySocialContributions=Types de charges sociales ou fiscales DictionaryVAT=Taux de TVA ou de Taxes de Ventes @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Le taux de TVA proposé par défaut est 0. C'est le cas d'assoc VATIsUsedExampleFR=En France, cela signifie que les entreprises ou les organisations sont assujetis à la tva (réel ou normal). VATIsNotUsedExampleFR=En France, il s'agit des associations ne déclarant pas de TVA ou sociétés, organismes ou professions libérales ayant choisi le régime fiscal micro entreprise (TVA en franchise) et payant une TVA en franchise sans faire de déclaration de TVA. Ce choix fait de plus apparaître la mention "TVA non applicable - art-293B du CGI" sur les factures. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Taux LocalTax1IsNotUsed=Non assujeti LocalTax1IsUsedDesc=Utilisation d'un 2ème type taxe (autre que le premier) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=Le IRPF proposé par défaut lors de la création de propa LocalTax2IsNotUsedDescES=L'IRPF proposé par défaut est 0. Fin de règle. LocalTax2IsUsedExampleES=En Espagne, ce sont des professionnels autonomes et indépendants qui offrent des services, et des sociétés qui ont choisi le système fiscal du module. LocalTax2IsNotUsedExampleES=En Espagne, ce sont des sociétés qui ne sont pas soumises au système fiscal du module. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Rapports sur les taxes locales CalcLocaltax1=Ventes - Achats CalcLocaltax1Desc=Les rapports des Taxes locales sont calculées avec la différence entre les taxes locales de ventes et les taxes locales d'achats @@ -1018,10 +1025,11 @@ CalcLocaltax2=Achats CalcLocaltax2Desc=Le Rapport des Taxes locales sont le total des taxes locales d'achats CalcLocaltax3=Ventes CalcLocaltax3Desc=Le Rapports des Taxes locales sont le total des taxes locales de ventes +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Libellé qui sera utilisé si aucune traduction n'est trouvée pour ce code LabelOnDocuments=Libellé sur les documents LabelOrTranslationKey=Libellé ou clé de traduction -ValueOfConstantKey=Value of a configuration constant +ValueOfConstantKey=Valeur de constante de configuration NbOfDays=Nb. de jours AtEndOfMonth=En fin de mois CurrentNext=Current/Next @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Note de frais à approuver Delays_MAIN_DELAY_HOLIDAYS=Demandes de congés à approuver SetupDescription1=L'espace configuration permet de réaliser le paramétrage initial afin de pouvoir commencer à utiliser l'application. SetupDescription2=Les deux étapes obligatoires sont les deux premières entrées dans le menu de configuration, soit -SetupDescription3=<a href="%s">%s -> %s</a><br>Paramètres basiques pour personnaliser le comportement par défaut du logiciel (comportement lié au pays par exemple). -SetupDescription4=<a href="%s"> %s -> %s </a><br> Ce logiciel est un ensemble de plusieurs modules/applications, tous plus ou moins indépendants. Les fonctionnalités en rapport avec vos besoins doivent être activées et configurées. De nouvelles entrées/options seront ajoutés aux menus avec l'activation d'un module. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Paramètres basiques pour personnaliser le comportement par défaut du logiciel (comportement lié au pays par exemple). +SetupDescription4=<a href="%s"> %s -> %s </a><br> <br>Ce logiciel est un ensemble de plusieurs modules/applications. Les fonctionnalités en rapport avec vos besoins doivent être activées et configurées. Les entrées menus seront ajoutées avec l'activation de ces modules. SetupDescription5=Les autres entrées de configuration gèrent des paramètres facultatifs. LogEvents=Événements d'audit de sécurité Audit=Audit de sécurité @@ -1128,7 +1136,7 @@ LogEventDesc=Vous pouvez activer ici l'historique des événements d'audit de s AreaForAdminOnly=Les paramètres d'installation ne peuvent être remplis que par les <b>utilisateurs administrateurs</b> uniquement. SystemInfoDesc=Les informations systèmes sont des informations techniques diverses accessibles en lecture seule aux administrateurs uniquement. SystemAreaForAdminOnly=Cet espace n'est accessible qu'aux utilisateurs de type administrateur. Aucune permission Dolibarr ne permet d'étendre le cercle des utilisateurs autorisés à cet espace. -CompanyFundationDesc=Modifiez les informations de la société/organisation. Cliquez sur le bouton "%s" en bas de la page. +CompanyFundationDesc=Modifiez les informations de votre société/organisation. Cliquez sur le bouton "%s" en bas de page pour sauvegarder. AccountantDesc=Si vous avez un comptable externe, vous pouvez saisir ici ses informations. AccountantFileNumber=Code comptable DisplayDesc=Vous pouvez choisir ici tous les paramètres liés à l'apparence de Dolibarr @@ -1144,7 +1152,7 @@ TriggerAlwaysActive=Déclencheurs de ce fichier toujours actifs, quels que soien TriggerActiveAsModuleActive=Déclencheurs de ce fichier actifs car le module <b>%s</b> est actif. GeneratedPasswordDesc=Définissez ici quelle règle vous voulez utiliser pour générer les mots de passe quand vous demandez à générer un nouveau mot de passe DictionaryDesc=Définissez ici les données de référence. Vous pouvez compléter/modifier les données prédéfinies avec les vôtres. -ConstDesc=Cette page vous permet d'éditer (remplacer) des paramètres non disponibles dans d'autres pages. Il s'agit principalement de paramètres réservés pour les développeurs et dépannage avancé uniquement. +ConstDesc=Cette page vous permet d'éditer (remplacer) des paramètres non disponibles dans d'autres pages. Il s'agit principalement de paramètres réservés pour les développeurs et dépannage avancé uniquement. <a href="https://wiki.dolibarr.org/index.php/Setup_Other#List_of_known_hidden_options" title="External Site - opens in a new window" target="_blank">Consultez ici</a> la liste des options. MiscellaneousDesc=Définissez ici les autres paramètres en rapport avec la sécurité. LimitsSetup=Configuration des limites et précisions LimitsDesc=Vous pouvez définir ici les limites, précisions et optimisations utilisées par Dolibarr @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Règle pour la génération des mots de passe proposé DisableForgetPasswordLinkOnLogonPage=Cacher le lien "Mot de passe oublié" sur la page de connexion UsersSetup=Configuration du module utilisateurs UserMailRequired=Email requis pour créer un nouvel utilisateur +UsersDocModules=Modèles de documents pour les documents générés à partir de la fiche utilisateur +GroupsDocModules=Modèles de documents pour les documents générés à partir de la fiche d'un groupe ##### HRM setup ##### HRMSetup=Configuration du module GRH ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Modèle de document de factures BillsPDFModulesAccordindToInvoiceType=Modèles de documents de facturation en fonction du type de facture PaymentsPDFModules=Modèle de document pour les règlements ForceInvoiceDate=Forcer la date de facturation à la date de validation (seulement de Brouillon à Impayée) -SuggestedPaymentModesIfNotDefinedInInvoice=Mode de paiement suggéré par défaut si non défini au niveau de la facture +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Proposer paiement par virement sur le compte SuggestPaymentByChequeToAddress=Proposer paiement par chèque à l'ordre et adresse de FreeLegalTextOnInvoices=Mention complémentaire sur les factures @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Configuration des règlements fournisseurs PropalSetup=Configuration du module Propositions Commerciales ProposalsNumberingModules=Modèles de numérotation des propositions commerciales ProposalsPDFModules=Modèles de documents de propositions commerciales -SuggestedPaymentModesIfNotDefinedInProposal=Mode de paiement suggéré sur le document proposition par défaut s'il n'est pas défini au niveau de la proposition +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Mention complémentaire sur les propositions commerciales WatermarkOnDraftProposal=Filigrane sur les brouillons de propositions commerciales (aucun si vide) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Saisir le compte bancaire cible lors de la proposition commerciale @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Demander pour l'entrepôt-source pour la co ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Demandez le compte bancaire destination de commande fournisseur ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Configuration du module Commandes OrdersNumberingModules=Modèles de numérotation des commandes OrdersModelModule=Modèles de document des commandes @@ -1686,9 +1697,9 @@ CashDeskIdWareHouse=Forcer et restreindre l'emplacement/entrepôt à utiliser po StockDecreaseForPointOfSaleDisabled=Réduction de stock lors de l'utilisation du Point de Vente désactivée StockDecreaseForPointOfSaleDisabledbyBatch=La décrémentation de stock depuis ce module Point de Vente n'est pas encore compatible avec la gestion des numéros de lots/série. CashDeskYouDidNotDisableStockDecease=Vous n'avez pas désactivé la réduction de stock lors d'une vente depuis le Point de vente. Par conséquent, un entrepôt est nécessaire. -CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. -CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +CashDeskForceDecreaseStockLabel=La diminution des stocks de produits soumis à numéros de lots a été forcée. +CashDeskForceDecreaseStockDesc=Diminuez d'abord par les dates de DMD/DLUO ou DLC les plus anciennes +CashDeskReaderKeyCodeForEnter=Code clé pour "Entrée" défini dans le lecteur de code-barres (exemple: 13) ##### Bookmark ##### BookmarkSetup=Configuration du module Marque-pages BookmarkDesc=Ce module vous permet de gérer des liens et raccourcis. Il permet aussi d'ajouter n'importe quelle page de Dolibarr ou lien web dans le menu d'accès rapide sur la gauche. @@ -1720,7 +1731,7 @@ MultiCompanySetup=Configuration du module Multi-société ##### Suppliers ##### SuppliersSetup=Configuration du module Fournisseurs SuppliersCommandModel=Modèle de commande fournisseur complet -SuppliersCommandModelMuscadet=Modèle de commande fournisseur complet (ancienne implémentation du modèle Cornas) +SuppliersCommandModelMuscadet=Modèle de commande fournisseur complet SuppliersInvoiceModel=Modèle de facture fournisseur complet SuppliersInvoiceNumberingModel=Modèles de numérotation des factures fournisseur IfSetToYesDontForgetPermission=Si positionné sur une valeur non nulle, n'oubliez pas de donner les permissions aux groupes ou utilisateurs qui auront le droit de cette seconde approbation. @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Attention, les valeurs élevées ralent ModuleActivated=Le module %s est activé et ralentit l'interface EXPORTS_SHARE_MODELS=Les modèles d'exportation sont partagés avec tout le monde ExportSetup=Configuration du module Export +ImportSetup=Configuration du module Import InstanceUniqueID=ID unique de l'instance SmallerThan=Plus petit que LargerThan=Plus grand que @@ -1978,6 +1990,8 @@ NotAPublicIp=Pas une IP publique MakeAnonymousPing=Effectuez un ping «+1» anonyme sur le serveur de la fondation Dolibarr (une seule fois après l’installation) pour permettre à la fondation de compter le nombre d’installations de Dolibarr. FeatureNotAvailableWithReceptionModule=Fonction non disponible lorsque le module Réception est activée EmailTemplate=Modèle d'e-mail -EMailsWillHaveMessageID=Les e-mails auront une étiquette 'Références' correspondant à cette syntaxe -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. -FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +EMailsWillHaveMessageID=Les e-mails auront une étiquette 'References' correspondant à cette syntaxe +PDF_USE_ALSO_LANGUAGE_CODE=Si vous souhaitez que certains textes de votre PDF soient dupliqués dans 2 langues différentes dans le même PDF généré, vous devez définir ici cette deuxième langue pour que le PDF généré contienne 2 langues différentes dans la même page, celle choisie lors de la génération du PDF et celle-ci (seuls quelques modèles PDF prennent en charge cette fonction). Gardez vide pour 1 langue par PDF. +FafaIconSocialNetworksDesc=Entrez ici le code d'une icône FontAwesome. Si vous ne savez pas ce qu'est FontAwesome, vous pouvez utiliser la valeur générique fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index 03d1b95b879..6ad3faba02d 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -58,8 +58,8 @@ SuppliersInvoices=Factures fournisseurs SupplierBill=Facture fournisseur SupplierBills=Factures fournisseurs Payment=Règlement -PaymentBack=Remboursement -CustomerInvoicePaymentBack=Remboursement +PaymentBack=Rembourser +CustomerInvoicePaymentBack=Rembourser Payments=Règlements PaymentsBack=Remboursements paymentInInvoiceCurrency=Dans la devise des factures @@ -219,7 +219,10 @@ ShowInvoiceSituation=Afficher la facture de situation UseSituationInvoices=Autoriser les factures de situation UseSituationInvoicesCreditNote=Autoriser les avoirs de factures de situation Retainedwarranty=Retenue de garantie +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Pourcentage par défaut de la retenue de garantie +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=A payer sur %s toPayOn=à payer sur %s RetainedWarranty=Retenue de garantie @@ -509,11 +512,11 @@ ToMakePayment=Payer ToMakePaymentBack=Rembourser ListOfYourUnpaidInvoices=Liste des factures impayées NoteListOfYourUnpaidInvoices=Remarque: Cette liste ne contient que les factures des Tiers pour lesquels vous êtes le commercial affecté. -RevenueStamp=Timbre fiscal +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Cette option est disponible uniquement lors de la création de factures depuis l'onglet "client" du tiers YouMustCreateInvoiceFromSupplierThird=Cette option est disponible uniquement lors de la création d'une facture depuis l'onglet "fournisseur" d'un tiers YouMustCreateStandardInvoiceFirstDesc=Pour créer une facture modèle, vous devez d'abord créer une facture standard brouillon et la convertir en modèle. -PDFCrabeDescription=Modèle de facture PDF Crabe. Un modèle de facture complet (ancienne implémentation du modèle Sponge) +PDFCrabeDescription=Modèle de facture PDF Crabe. Un modèle de facture complet PDFSpongeDescription=Modèle de facture PDF Sponge. Un modèle de facture complet PDFCrevetteDescription=Modèle de facture PDF Crevette (modèle complet pour les factures de situation) TerreNumRefModelDesc1=Renvoie le numéro sous la forme %syymm-nnnn pour les factures et factures de remplacement, %syymm-nnnn pour les avoirs et %syymm-nnnn pour les acomptes où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Définir la date de fin de la ligne de service avec la date de la AutoFillDateToShort=Définir la date de fin MaxNumberOfGenerationReached=Nb maximum de gén. atteint BILL_DELETEInDolibarr=Facture supprimée +BILL_SUPPLIER_DELETEInDolibarr=Facture fournisseur supprimée diff --git a/htdocs/langs/fr_FR/blockedlog.lang b/htdocs/langs/fr_FR/blockedlog.lang index 2588df90cee..c0619d33371 100644 --- a/htdocs/langs/fr_FR/blockedlog.lang +++ b/htdocs/langs/fr_FR/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Logs inaltérables ShowAllFingerPrintsMightBeTooLong=Afficher tous les journaux archivés (peut être long) ShowAllFingerPrintsErrorsMightBeTooLong=Afficher tous les journaux d'archives non valides (peut être long) DownloadBlockChain=Télécharger les empreintes -KoCheckFingerprintValidity=Le journal archivé n'est pas valide. Cela signifie que quelqu'un (un pirate informatique ?) a modifié certaines données de ce journal archivé après son enregistrement ou a effacé l'enregistrement archivé précédent (vérifiez que la ligne avec le # précédent existe). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Le journal archivé est valide. Les données de cette ligne n'ont pas été modifiées et l'enregistrement suit le précédent. OkCheckFingerprintValidityButChainIsKo=Le journal archivé semble valide par rapport au précédent mais la chaîne était corrompue auparavant. AddedByAuthority=Stocké dans une autorité distante diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang index 6ea67258a45..fa3f3098389 100644 --- a/htdocs/langs/fr_FR/cashdesk.lang +++ b/htdocs/langs/fr_FR/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Ajouter cet article RestartSelling=Reprendre la vente SellFinished=Vente complète PrintTicket=Imprimer ticket +SendTicket=Envoyer le ticket NoProductFound=Aucun article trouvé ProductFound=produit trouvé NoArticle=Aucun article @@ -48,6 +49,7 @@ Footer=Bas de page AmountAtEndOfPeriod=Montant en fin de période (jour, mois ou année) TheoricalAmount=Montant théorique RealAmount=Montant réel +CashFence=Cash fence CashFenceDone=Clôture de caisse faite pour la période NbOfInvoices=Nb de factures Paymentnumpad=Type de pavé pour entrer le paiement @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS a besoin des catégories de produits pour fonctio OrderNotes=Notes de commande CashDeskBankAccountFor=Compte par défaut à utiliser pour les paiements en NoPaimementModesDefined=Aucun mode de paiement défini dans la configuration de TakePOS -TicketVatGrouped=Grouper la TVA par taux sur les tickets -AutoPrintTickets=Imprimer automatiquement les tickets +TicketVatGrouped=Grouper la TVA par taux sur les tickets / reçus +AutoPrintTickets=Imprimer automatiquement les tickets / reçus +PrintCustomerOnReceipts=Imprimer le client sur les tickets|reçus EnableBarOrRestaurantFeatures=Activer les fonctionnalités pour bar ou restaurant ConfirmDeletionOfThisPOSSale=Confirmez-vous la suppression de cette vente en cours? ConfirmDiscardOfThisPOSSale=Voulez-vous écarter cette vente en cours? @@ -81,13 +84,25 @@ CustomReceipt=Reçu personnalisé ReceiptName=Nom du reçu ProductSupplements=Suppléments de produit SupplementCategory=Catégorie des suppléments -ColorTheme=Color theme +ColorTheme=Couleur du thème Colorful=Coloré -HeadBar=Head Bar -SortProductField=Field for sorting products +HeadBar=Bandeau du haut +SortProductField=Champ de tri des produits Browser=Navigateur -BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. -PrintMethod=Print method -ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. -ByTerminal=By terminal +BrowserMethodDescription=Impression simple et facile des reçus. Seuls quelques paramètres pour configurer le reçu. Impression via le navigateur. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. +PrintMethod=Méthode d'impression +ReceiptPrinterMethodDescription=Méthode puissante avec beaucoup de paramètres. Entièrement personnalisable avec des modèles. Impossible d'imprimer à partir du cloud. +ByTerminal=Par terminal +TakeposNumpadUsePaymentIcon=Utiliser l'icône de paiement sur le pavé numérique +CashDeskRefNumberingModules=Module de numérotation pour le POS +CashDeskGenericMaskCodes6 = <br>La balise <b> {TN} </b> est utilisée pour ajouter le numéro de terminal +TakeposGroupSameProduct=Regrouper les mêmes lignes de produits +StartAParallelSale=Lancer une nouvelle vente en parallèle +ControlCashOpening=Popup d'ouverture de caisse à l'ouverture +CloseCashFence=Clôturer la caisse +CashReport=Rapport de caisse +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang index 9945859c16b..850f1e99263 100644 --- a/htdocs/langs/fr_FR/companies.lang +++ b/htdocs/langs/fr_FR/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=La société "%s" a été supprimée de la base. ListOfContacts=Liste des contacts ListOfContactsAddresses=Liste des contacts/adresses ListOfThirdParties=Liste des tiers -ShowCompany=Afficher tiers ShowContact=Afficher contact ContactsAllShort=Tous (pas de filtre) ContactType=Type de contact @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Prénom du commercial SaleRepresentativeLastname=Nom du commercial ErrorThirdpartiesMerge=Une erreur est survenue lors de la suppression de ce tiers. Consultez les log. La modification a été annulée. NewCustomerSupplierCodeProposed=Code client ou fournisseur déjà utilisé, un nouveau code est suggéré +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Type de paiement - Client PaymentTermsCustomer=Conditions de paiement - Client diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang index 8252a1cb29f..c60c79513c5 100644 --- a/htdocs/langs/fr_FR/compta.lang +++ b/htdocs/langs/fr_FR/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Voir %sanalyse des paiements%s pour un calcul sur les SeeReportInDueDebtMode=Voir %sanalyse des factures%s pour un calcul basé sur les factures enregistrées connues même si elles ne sont pas encore comptabilisées dans le Grand Livre. SeeReportInBookkeepingMode=Voir le <b> %sRapport sur le Grand Livre%s </b> pour un calcul sur les <b> tables du Grand Livre</b> RulesAmountWithTaxIncluded=- Les montants affichés sont les montants taxe incluse -RulesResultDue=- Il comprend les factures impayées, les dépenses, la TVA, les dons, qu'ils soient payées ou non. Il comprend également les salaires versés. <br> - Il est basé sur la date de validation des factures et de la TVA et à la date prévue pour les dépenses. Pour les salaires définis avec le module de salaire, la date de paiement de la valeur est utilisée. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Il comprend les paiements réels effectués sur les factures, les dépenses, la TVA et les salaires. <br> - Il est basé sur les dates de paiement des factures, les dépenses, la TVA et les salaires. La date du don pour le don. -RulesCADue=- Il inclut les factures clients dues, qu'elles soient payées ou non.<br>- Il se base sur la date de validation de ces factures.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Il inclut les règlements effectivement reçus des factures clients.<br>- Il se base sur la date de règlement de ces factures<br> RulesCATotalSaleJournal=Il comprend toutes les lignes du journal de vente. RulesAmountOnInOutBookkeepingRecord=Cela inclut les enregistrements dans votre Grand Livre ayant les comptes de comptabilité qui ont le groupe "EXPENSE" ou "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Chiffre d'affaire facturé par taux de TVA TurnoverCollectedbyVatrate=Chiffre d'affaires encaissé par taux de TVA PurchasebyVatrate=Achat par taux de TVA LabelToShow=Libellé court +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 267364de216..6fdaed0fe48 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Fichier non reçu intégralement par le serveur. ErrorNoTmpDir=Répertoire temporaire de réception %s inexistant. ErrorUploadBlockedByAddon=Upload bloqué par un plugin PHP/Apache. ErrorFileSizeTooLarge=La taille du fichier est trop grande. +ErrorFieldTooLong=Le champ %s est trop long. ErrorSizeTooLongForIntType=Longueur de champ trop longue pour le type int (%s chiffres maximum) ErrorSizeTooLongForVarcharType=Longueur de champ trop longue pour le type chaine (%s caractères maximum) ErrorNoValueForSelectType=Les valeurs de la liste de sélection doivent être renseignées @@ -96,7 +97,7 @@ ErrorBadMaskFailedToLocatePosOfSequence=Erreur, masque sans numéro de séquence ErrorBadMaskBadRazMonth=Erreur, mauvais valeur de remise à zéro ErrorMaxNumberReachForThisMask=Nombre maximum atteint pour ce masque ErrorCounterMustHaveMoreThan3Digits=Le compteur doit avoir au moins 3 positions -ErrorSelectAtLeastOne=Error, select at least one entry. +ErrorSelectAtLeastOne=Erreur, sélectionnez au moins une entrée. ErrorDeleteNotPossibleLineIsConsolidated=Suppression impossible car l'enregistrement porte sur au moins une transaction bancaire rapprochée ErrorProdIdAlreadyExist=%s est attribué à un autre tiers ErrorFailedToSendPassword=Échec de l'envoi du mot de passe @@ -117,9 +118,9 @@ ErrorLoginDoesNotExists=Le compte utilisateur identifié par <b>%s</b> n'a pu ê ErrorLoginHasNoEmail=Cet utilisateur n'a pas d'email. Impossible de continuer. ErrorBadValueForCode=Mauvaise valeur saisie pour le code. Réessayez avec une nouvelle valeur... ErrorBothFieldCantBeNegative=Les champs %s et %s ne peuvent être tous deux négatifs -ErrorFieldCantBeNegativeOnInvoice=Field <strong>%s</strong> cannot be negative on this type of invoice. If you need to add a discount line, just create the discount first (from field '%s' in thirdparty card) and apply it to the invoice. -ErrorLinesCantBeNegativeForOneVATRate=Total of lines can't be negative for a given VAT rate. -ErrorLinesCantBeNegativeOnDeposits=Lines can't be negative in a deposit. You will face problems when you will need to consume the deposit in final invoice if you do so. +ErrorFieldCantBeNegativeOnInvoice=Le champ <strong> %s </strong> ne peut pas être négatif sur ce type de facture. Si vous devez ajouter une ligne de remise, créez d'abord la remise (à partir du champ '%s' dans la fiche du tiers) et appliquez-la à la facture. +ErrorLinesCantBeNegativeForOneVATRate=Le total des lignes ne peut pas être négatif pour un taux de TVA donné. +ErrorLinesCantBeNegativeOnDeposits=Les lignes ne peuvent pas être négatives dans un acompte. Si vous le faites, vous rencontrerez des problèmes lorsque vous devrez consommer l'acompte dans la facture finale. ErrorQtyForCustomerInvoiceCantBeNegative=La quantité d'une ligne ne peut pas être négative dans les factures clients ErrorWebServerUserHasNotPermission=Le compte d'exécution du serveur web <b>%s</b> n'a pas les permissions pour cela ErrorNoActivatedBarcode=Aucun type de code-barres activé @@ -229,12 +230,13 @@ ErrorFieldRequiredForProduct=Le champ '%s' est obligatoire pour le produit %s ProblemIsInSetupOfTerminal=Le problème est dans la configuration du terminal %s. ErrorAddAtLeastOneLineFirst=Ajouter d'abord au moins une ligne ErrorRecordAlreadyInAccountingDeletionNotPossible=Erreur, l'enregistrement est déjà transféré dans la comptabilité, la suppression n'est pas possible. -ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=Error, language is mandatory if you set the page as a translation of another one. -ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated page is same than this one. -ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". -ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". -ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=Erreur, la langue est obligatoire si vous définissez la page comme une traduction d'une autre. +ErrorLanguageOfTranslatedPageIsSameThanThisPage=Erreur, la langue de la page traduite est la même que celle-ci. +ErrorBatchNoFoundForProductInWarehouse=Aucun lot / série trouvé pour le produit "%s" dans l'entrepôt "%s". +ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=Pas assez de quantité pour ce lot / série pour le produit "%s" dans l'entrepôt "%s". +ErrorOnlyOneFieldForGroupByIsPossible=1 seul champ pour le 'Grouper par' est possible (les autres sont supprimés) +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Votre paramètre PHP upload_max_filesize (%s) est supérieur au paramètre PHP post_max_size (%s). Ceci n'est pas une configuration cohérente. WarningPasswordSetWithNoAccount=Un mot de passe a été fixé pour cet adhérent. Cependant, aucun compte d'utilisateur n'a été créé. Donc, ce mot de passe est stocké, mais ne peut être utilisé pour accéder à Dolibarr. Il peut être utilisé par un module/interface externe, mais si vous n'avez pas besoin de définir ni login ni mot de passe pour un adhérent, vous pouvez désactiver l'option «Gérer un login pour chaque adhérent" depuis la configuration du module Adhérents. Si vous avez besoin de gérer un login, mais pas de mot de passe, vous pouvez laisser ce champ vide pour éviter cet avertissement. Remarque: L'email peut également être utilisé comme login si l'adhérent est lié à un utilisateur. diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang index af9016d25c6..9e0084ef7e4 100644 --- a/htdocs/langs/fr_FR/install.lang +++ b/htdocs/langs/fr_FR/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=PHP supporte l'extension Curl PHPSupportCalendar=Ce PHP supporte les extensions calendar. PHPSupportUTF8=Ce PHP prend en charge les fonctions UTF8. PHPSupportIntl=Ce PHP supporte les fonctions Intl. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=Ce PHP prend en charge les fonctions %s. PHPMemoryOK=Votre mémoire maximum de session PHP est définie à <b>%s</b>. Ceci devrait être suffisant. PHPMemoryTooLow=Votre mémoire maximum de session PHP est définie à <b>%s</b> octets. Ceci est trop faible. Il est recommandé de modifier le paramètre <b>memory_limit</b> de votre fichier <b>php.ini</b> à au moins <b>%s</b> octets. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Votre version de PHP ne supporte pas l'extension Curl ErrorPHPDoesNotSupportCalendar=Votre installation de PHP ne supporte pas les extensions php calendar. ErrorPHPDoesNotSupportUTF8=Ce PHP ne prend pas en charge les fonctions UTF8. Résolvez le problème avant d'installer Dolibarr car il ne pourra pas fonctionner correctement. ErrorPHPDoesNotSupportIntl=Votre installation de PHP ne supporte pas les fonctions Intl. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Votre installation PHP ne prend pas en charge les fonctions %s. ErrorDirDoesNotExists=Le répertoire <b>%s</b> n'existe pas ou n'est pas accessible. ErrorGoBackAndCorrectParameters=Revenez en arrière et vérifiez / corrigez les paramètres. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=L'application essaie de se mettre à jour, mais l YouTryInstallDisabledByFileLock=L'application a tenté de se mettre à niveau automatiquement, mais les pages d'installation / de mise à niveau ont été désactivées pour des raisons de sécurité (grâce à l'existence d'un fichier de verrouillage <strong> install.lock </strong> dans le répertoire de documents dolibarr). <br> ClickHereToGoToApp=Cliquez ici pour aller sur votre application ClickOnLinkOrRemoveManualy=Cliquez sur le lien suivant et si vous atteignez toujours cette page, vous devez supprimer manuellement le fichier install.lock dans le répertoire documents +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/fr_FR/link.lang b/htdocs/langs/fr_FR/link.lang index 8257300ada2..4534b8420e7 100644 --- a/htdocs/langs/fr_FR/link.lang +++ b/htdocs/langs/fr_FR/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Le lien %s a été supprimé ErrorFailedToDeleteLink= Impossible de supprimer le lien '<b>%s</b>' ErrorFailedToUpdateLink= Impossible de modifier le lien '<b>%s</b>' URLToLink=URL à lier +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index 178b3dd421d..59999521019 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -25,7 +25,7 @@ ShowEMailing=Afficher emailing ListOfEMailings=Liste des emailings NewMailing=Nouvel emailing EditMailing=Éditer emailing -ResetMailing=Nouvel envoi +ResetMailing=Ré-envoyer emailing DeleteMailing=Supprimer emailing DeleteAMailing=Supprimer un emailing PreviewMailing=Prévisualiser emailing @@ -132,7 +132,7 @@ AddNewNotification=Activer un nouveau couple cible/évènement pour notification ListOfActiveNotifications=Liste des cibles/évènements actifs pour notification par emails ListOfNotificationsDone=Liste des notifications emails envoyées MailSendSetupIs=La configuration d'envoi d'emails a été définir sur '%s'. Ce mode ne peut pas être utilisé pour envoyer des e-mailing en masse. -MailSendSetupIs2=Vous devez d'abord aller, avec un compte d'administrateur, dans le menu %sAccueil - Configuration - EMails%s pour changer le paramètre <strong>'%s'</strong> pour utiliser le mode '%s'. Avec ce mode, vous pouvez accéder à la configuration du serveur SMTP fourni par votre fournisseur de services Internet et utiliser la fonction d'envoi d'email en masse. +MailSendSetupIs2=Vous devez d'abord aller, avec un compte d'administrateur, dans le menu %sAccueil - Configuration - EMails%s pour changer le paramètre <strong>'%s'</strong> pour utiliser le mode '%s'. Avec ce mode, vous pouvez entrer le paramétrage du serveur SMTP fourni par votre fournisseur de services Internet et utiliser la fonction d'envoi d'email en masse. MailSendSetupIs3=Si vous avez des questions sur la façon de configurer votre serveur SMTP, vous pouvez demander à %s. YouCanAlsoUseSupervisorKeyword=Vous pouvez également ajouter le mot-clé <strong>__SUPERVISOREMAIL__</strong> pour avoir les emails envoyés au responsable hiérarchique de l'utilisateur (ne fonctionne que si un email est défini pour ce responsable) NbOfTargetedContacts=Nombre courant d'emails de contacts cibles @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Pas de contact/adresses avec cette catégorie NoContactLinkedToThirdpartieWithCategoryFound=Pas de contact/adresses associés à un ters avec cette catégorie OutGoingEmailSetup=Configuration email sortant InGoingEmailSetup=Configuration email entrant -OutGoingEmailSetupForEmailing=Configuration des e-mail sortant (pour les e-mails de masse) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Configuration des emails sortant Information=Information ContactsWithThirdpartyFilter=Contacts ayant pour tiers diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index d3f86678f25..611d27d7723 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Enregistrer et rester SaveAndNew=Enregistrer et nouveau TestConnection=Tester la connexion ToClone=Cloner +ConfirmCloneAsk=Voulez-vous vraiment cloner l'objet <b> %s </b>? ConfirmClone=Veuillez choisir votre option de clonage : NoCloneOptionsSpecified=Aucun option de clonage n'a été spécifiée. Of=du @@ -352,8 +353,8 @@ PriceUTTC=P.U TTC Amount=Montant AmountInvoice=Montant facture AmountInvoiced=Montant facturé -AmountInvoicedHT=Amount invoiced (incl. tax) -AmountInvoicedTTC=Amount invoiced (excl. tax) +AmountInvoicedHT=Montant facturé (TTC) +AmountInvoicedTTC=Montant facturé (HT) AmountPayment=Montant paiement AmountHTShort=Montant HT AmountTTCShort=Montant TTC @@ -829,6 +830,8 @@ Gender=Genre Genderman=Homme Genderwoman=Femme ViewList=Vue liste +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obligatoire Hello=Bonjour GoodBye=Au revoir @@ -856,7 +859,7 @@ Export=Exporter Exports=Exports ExportFilteredList=Exporter liste filtrée ExportList=Exporter liste -ExportOptions=Options d'exportation +ExportOptions=Options d'export IncludeDocsAlreadyExported=Inclure les documents déjà exportés ExportOfPiecesAlreadyExportedIsEnable=L'exportation de pièces déjà exportées est activée ExportOfPiecesAlreadyExportedIsDisable=L'exportation des pièces déjà exportées est désactivée @@ -884,7 +887,7 @@ WebSiteAccounts=Comptes de site web ExpenseReport=Note de frais ExpenseReports=Notes de frais HR=HR -HRAndBank=HR et banque +HRAndBank=Salarié AutomaticallyCalculated=Calculé automatiquement TitleSetToDraft=Retour à l'état de brouillon ConfirmSetToDraft=Etes vous sûr de vouloir revenir à l'état Brouillon ? @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Sélectionnez vos options de graphique pour construi Measures=Mesures XAxis=Axe X YAxis=Axe Y +StatusOfRefMustBe=Le statut de %s doit être %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index e1a9a124f7e..022e9f0207e 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -30,11 +30,11 @@ PreviousYearOfInvoice=Année précédente de la date de facturation NextYearOfInvoice=Année suivante de la date de facturation DateNextInvoiceBeforeGen=Date de la prochaine génération (avant génération) DateNextInvoiceAfterGen=Date de la prochaine facture (après génération) -GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mode. The mode 'Lines' was automatically selected instead. +GraphInBarsAreLimitedToNMeasures=Les graphiques sont limités à %s mesures en mode 'Bars'. Le mode "Lignes" a été automatiquement sélectionné à la place. OnlyOneFieldForXAxisIsPossible=1 seul champ est actuellement possible en tant qu'axe X. Seul le premier champ sélectionné a été choisi. -AtLeastOneMeasureIsRequired=At least 1 field for measure is required -AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +AtLeastOneMeasureIsRequired=Au moins 1 champ de mesure est requis +AtLeastOneXAxisIsRequired=Au moins 1 champ pour l'axe X est requis +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Validation commande client Notify_ORDER_SENTBYMAIL=Envoi commande client par email Notify_ORDER_SUPPLIER_SENTBYMAIL=Envoi commande fournisseur par email @@ -108,7 +108,7 @@ DemoFundation=Gestion des adhérents d'une association DemoFundation2=Gestion des adhérents et trésorerie d'une association DemoCompanyServiceOnly=Société ou indépendant faisant du service uniquement DemoCompanyShopWithCashDesk=Gestion d'un magasin avec caisse -DemoCompanyProductAndStocks=Magasin de vente de produits avec point de vente +DemoCompanyProductAndStocks=Magasin vendant des produits via points de vente DemoCompanyManufacturing=Société de fabrication de produits DemoCompanyAll=Société avec de multiples activités (tous les modules principaux) CreatedBy=Créé par %s @@ -190,7 +190,7 @@ NumberOfSupplierProposals=Nombre de demandes de prix NumberOfSupplierOrders=Nombre de commandes fournisseurs NumberOfSupplierInvoices=Nombre de factures fournisseurs NumberOfContracts=Nombre de contrats -NumberOfMos=Number of manufacturing orders +NumberOfMos=Nombre d'ordres de fabrication NumberOfUnitsProposals=Quantités présentes dans les propositions commerciales NumberOfUnitsCustomerOrders=Quantités présentes dans les commandes clients NumberOfUnitsCustomerInvoices=Quantités présentes dans les factures clients @@ -198,7 +198,7 @@ NumberOfUnitsSupplierProposals=Quantités présentes dans les demande de prix NumberOfUnitsSupplierOrders=Quantités présentes dans les commandes fournisseurs NumberOfUnitsSupplierInvoices=Quantités présentes dans les factures fournisseurs NumberOfUnitsContracts=Nombre d'unités en contrat -NumberOfUnitsMos=Number of units to produce in manufacturing orders +NumberOfUnitsMos=Nombre d'unités à produire dans les ordres de fabrication EMailTextInterventionAddedContact=Une nouvelle intervention %s vous a été assignée EMailTextInterventionValidated=La fiche intervention %s vous concernant a été validée. EMailTextInvoiceValidated=La facture %s vous concernant a été validée. @@ -274,13 +274,13 @@ WEBSITE_PAGEURL=URL de la page WEBSITE_TITLE=Titre WEBSITE_DESCRIPTION=Description WEBSITE_IMAGE=Image -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"). Utilisez la chaine __WEBSITEKEY__ dans le chemin si le chemin dépend du nom du site web. +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"). Utilisez la chaîne __WEBSITE_KEY__ dans le chemin si le chemin dépend du nom du site web (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Mots clés LinesToImport=Lignes à importer MemoryUsage=Utilisation de la mémoire RequestDuration=Durée de la demande -PopuProp=Products/Services by popularity in Proposals -PopuCom=Products/Services by popularity in Orders -ProductStatistics=Products/Services Statistics -NbOfQtyInOrders=Qty in orders +PopuProp=Produits / services par popularité dans les propositions +PopuCom=Produits/services par popularité dans les commandes +ProductStatistics=Statistiques sur les produits / services +NbOfQtyInOrders=Qté en commandes diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index 02e4378f24d..9219eb2d1cd 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Cette page permet de modifier les taux de TVA définis MassBarcodeInit=Initialisation codes-barre MassBarcodeInitDesc=Cette page peut être utilisée pour initialiser un code-barre sur des objets qui ne disposent pas de code-barre défini. Vérifiez avant que l'installation du module code-barres est complète. ProductAccountancyBuyCode=Code comptable (achat) +ProductAccountancyBuyIntraCode=Code comptable (achat intra-communautaire) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Code comptable (vente) ProductAccountancySellIntraCode=Code comptable (vente intra-communautaire) ProductAccountancySellExportCode=Code comptable (vente à l'export) @@ -165,7 +167,7 @@ SuppliersPrices=Prix fournisseurs SuppliersPricesOfProductsOrServices=Prix fournisseurs (des produits ou services) CustomCode=Nomenclature douanière / Code SH CountryOrigin=Pays d'origine -Nature=Nature du produit (matière première / produit fini) +Nature=Nature of product (material/finished) ShortLabel=Libellé court Unit=Unité p=u. @@ -331,9 +333,9 @@ PossibleValues=Valeurs possibles GoOnMenuToCreateVairants=Allez sur le menu %s - %s pour ajouter les attributs de variantes (comme les couleurs, tailles, ...) UseProductFournDesc=Ajouter une fonctionnalité pour définir les descriptions des produits définies par les fournisseurs en plus des descriptions pour les clients ProductSupplierDescription=Description du fournisseur du produit -UseProductSupplierPackaging=Use packaging on supplier prices (recalculate quantities according to packaging set on supplier price when adding/updating line in supplier documents) -PackagingForThisProduct=Packaging -QtyRecalculatedWithPackaging=The quantity of the line were recalculated according to supplier packaging +UseProductSupplierPackaging=Utiliser le conditionnement/emballage sur les prix fournisseur (recalculer les quantités en fonction de l'emballage défini sur le prix fournisseur lors de l'ajout / mise à jour de la ligne dans les documents fournisseurs) +PackagingForThisProduct=Emballage +QtyRecalculatedWithPackaging=La quantité de la ligne a été recalculée en fonction de l'emballage du fournisseur #Attributes VariantAttributes=Attributs de variante @@ -367,7 +369,7 @@ UsePercentageVariations=Utiliser les pourcentages de variation PercentageVariation=Variation de pourcentage ErrorDeletingGeneratedProducts=Une erreur s'est produite lors de la suppression des variantes existante de produits NbOfDifferentValues=Nb de valeurs différentes -NbProducts=Number of products +NbProducts=Nb de produits ParentProduct=Produit parent HideChildProducts=Cacher les variantes de produits ShowChildProducts=Afficher les variantes de produits @@ -380,4 +382,4 @@ ErrorProductCombinationNotFound=Variante du produit non trouvé ActionAvailableOnVariantProductOnly=Action disponible uniquement sur la variante du produit ProductsPricePerCustomer=Prix produit par clients ProductSupplierExtraFields=Attributs supplémentaires (Prix fournisseur) -DeleteLinkedProduct=Delete the child product linked to the combination +DeleteLinkedProduct=Supprimer le produit enfant lié à la combinaison diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 92a1bc069a5..21ad286ff51 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -39,8 +39,8 @@ ShowProject=Afficher projet ShowTask=Afficher tâche SetProject=Définir projet NoProject=Aucun projet défini ou responsable -NbOfProjects=Number of projects -NbOfTasks=Number of tasks +NbOfProjects=Nombre de projets +NbOfTasks=Nb de tâches TimeSpent=Temps consommé TimeSpentByYou=Temps consommé par vous TimeSpentByUser=Temps consommé par utilisateur @@ -87,8 +87,6 @@ WhichIamLinkedToProject=dont je suis contact de projet Time=Temps ListOfTasks=Liste de tâches GoToListOfTimeConsumed=Aller à la liste des temps consommés -GoToListOfTasks=Vue liste -GoToGanttView=Vue Gantt GanttView=Vue Gantt ListProposalsAssociatedProject=Liste des propositions commerciales associées au projet ListOrdersAssociatedProject=Liste des commandes clients associées au projet @@ -104,7 +102,7 @@ ListDonationsAssociatedProject=Liste des dons associés au projet ListVariousPaymentsAssociatedProject=Liste des paiements divers liés au projet ListSalariesAssociatedProject=Liste des paiements de salaires liés au projet ListActionsAssociatedProject=Liste des événements associés au projet -ListMOAssociatedProject=List of manufacturing orders related to the project +ListMOAssociatedProject=Liste des ordres de fabrication liées au projet ListTaskTimeUserProject=Liste du temps consommé sur les tâches d'un projet ListTaskTimeForTask=Liste du temps consommé sur les tâches ActivityOnProjectToday=Activité projet aujourd'hui @@ -164,8 +162,8 @@ OpportunityProbability=Probabilité d'opportunité OpportunityProbabilityShort=Prob. opp. OpportunityAmount=Montant opportunité OpportunityAmountShort=Montant opportunité -OpportunityWeightedAmount=Opportunity weighted amount -OpportunityWeightedAmountShort=Opp. weighted amount +OpportunityWeightedAmount=Montant pondéré par opportunité +OpportunityWeightedAmountShort=Montant pondéré opp. OpportunityAmountAverageShort=montant moyen des opportunités OpportunityAmountWeigthedShort=Montant pondéré des opportunités WonLostExcluded=hors opportunités remportées/perdues @@ -188,7 +186,7 @@ PlannedWorkload=Charge de travail prévue PlannedWorkloadShort=Charge de travail ProjectReferers=Objets associés ProjectMustBeValidatedFirst=Le projet doit être validé d'abord -FirstAddRessourceToAllocateTime=Affecter un utilisateur pour saisir des temps +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Saisie par jour InputPerWeek=Saisie par semaine InputPerMonth=Saisie par mois @@ -240,6 +238,7 @@ LatestModifiedProjects=Les %s derniers projets modifiés OtherFilteredTasks=Autres tâches filtrées NoAssignedTasks=Aucune tâche assignée (assignez un projet/tâche à l'utilisateur depuis la liste déroulante utilisateur en haut pour pouvoir saisir du temps dessus) ThirdPartyRequiredToGenerateInvoice=Un tiers doit être défini sur le projet pour pouvoir le facturer. +ChooseANotYetAssignedTask=Choisissez une tâches qui ne vous pas encore assignée # Comments trans AllowCommentOnTask=Autoriser les utilisateurs à ajouter des commentaires sur les tâches AllowCommentOnProject=Autoriser les commentaires utilisateur sur les projets @@ -265,3 +264,4 @@ InvoiceToUse=Facture brouillon à utiliser NewInvoice=Nouvelle facture OneLinePerTask=Une ligne par tâche OneLinePerPeriod=Une ligne par période +RefTaskParent=Réf. Tâche parent diff --git a/htdocs/langs/fr_FR/propal.lang b/htdocs/langs/fr_FR/propal.lang index d9e40866689..4cdb1b05cb3 100644 --- a/htdocs/langs/fr_FR/propal.lang +++ b/htdocs/langs/fr_FR/propal.lang @@ -76,7 +76,7 @@ TypeContact_propal_external_BILLING=Contact client facturation proposition TypeContact_propal_external_CUSTOMER=Contact client suivi proposition TypeContact_propal_external_SHIPPING=Contact client pour la livraison # Document models -DocModelAzurDescription=Un modèle de proposition complet (ancienne implémentation du modèle Cyan) +DocModelAzurDescription=Un modèle de proposition complet DocModelCyanDescription=Un modèle de proposition complet DefaultModelPropalCreate=Modèle par défaut à la création DefaultModelPropalToBill=Modèle par défaut lors de la clôture d'une proposition commerciale (à facturer) diff --git a/htdocs/langs/fr_FR/receiptprinter.lang b/htdocs/langs/fr_FR/receiptprinter.lang index 23970db5ed7..8ed2664fa67 100644 --- a/htdocs/langs/fr_FR/receiptprinter.lang +++ b/htdocs/langs/fr_FR/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Imprimante Test CONNECTOR_NETWORK_PRINT=Imprimante réseau CONNECTOR_FILE_PRINT=Imprimante locale CONNECTOR_WINDOWS_PRINT=Imprimante Windows local +CONNECTOR_CUPS_PRINT=Imprimante Cups CONNECTOR_DUMMY_HELP=Fausse imprimante pour le test, ne fait rien CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=Nom de l'imprimante CUPS, exemple: HPRT_TP805L PROFILE_DEFAULT=Profil par défaut PROFILE_SIMPLE=Profil standard PROFILE_EPOSTEP=Profil Epos Tep @@ -55,9 +57,39 @@ DOL_UNDERLINE_DISABLED=Désactiver le souligné DOL_BEEP=Bruit de fond DOL_PRINT_TEXT=Imprimer le texte DOL_VALUE_DATE=Date facturation -DOL_VALUE_DATE_TIME=Invoice date and time -DOL_VALUE_YEAR=Invoice year -DOL_VALUE_MONTH_LETTERS=Invoice month in letters -DOL_VALUE_MONTH=Invoice month -DOL_VALUE_DAY=Invoice day -DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_VALUE_DATE_TIME=Date et heure de facturation +DOL_VALUE_YEAR=Année de facturation +DOL_VALUE_MONTH_LETTERS=Mois de facturation en lettres +DOL_VALUE_MONTH=Mois de facturation +DOL_VALUE_DAY=Jour de facturation +DOL_VALUE_DAY_LETTERS=Jour de facturation en lettres +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Réf facture +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Numéro de TVA intracommunautaire +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/fr_FR/stripe.lang b/htdocs/langs/fr_FR/stripe.lang index 27c220f7ec5..57b5c7e29ca 100644 --- a/htdocs/langs/fr_FR/stripe.lang +++ b/htdocs/langs/fr_FR/stripe.lang @@ -32,6 +32,7 @@ VendorName=Nom du vendeur CSSUrlForPaymentForm=URL feuille style css pour le formulaire de paiement NewStripePaymentReceived=Nouveau paiement Stripe reçu NewStripePaymentFailed=Nouveau paiement Stripe tenté mais en échec +FailedToChargeCard=Échec d'encaissement de la carte STRIPE_TEST_SECRET_KEY=Clé secrète de test STRIPE_TEST_PUBLISHABLE_KEY=Clé plublique de test STRIPE_TEST_WEBHOOK_KEY=Clé test des Webhooks @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Lien pour la configuration de Stripe WebHook pour app ToOfferALinkForLiveWebhook=Lien pour la configuration de Stripe WebHook pour appeler l'IPN (mode actif) PaymentWillBeRecordedForNextPeriod=Le paiement sera enregistré pour la prochaine période. ClickHereToTryAgain=<a href="%s">Cliquez ici pour essayer à nouveau...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/fr_FR/users.lang b/htdocs/langs/fr_FR/users.lang index 332306735cc..36c16959e50 100644 --- a/htdocs/langs/fr_FR/users.lang +++ b/htdocs/langs/fr_FR/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Utilisateurs et attributs DomainUser=Utilisateur du domaine %s Reactivate=Réactiver CreateInternalUserDesc=Ce formulaire permet de créer un utilisateur interne à votre société/institution. Pour créer un utilisateur externe (client, fournisseur, ...), utilisez le bouton 'Créer compte utilisateur' qui se trouve sur la fiche du contact du tiers. -InternalExternalDesc=Un utilisateur <b>interne</b> est un utilisateur qui fait partie de votre société/institution.<br>Un utilisateur <b>externe</b> est un compte utilisateur pour une client, fournisseur ou autre. <br><br>Dans les deux cas, les permissions déterminent les accès aux fonctionnalités de Dolibarr. De plus, les utilisateurs externes peuvent avoir un gestionnaire de menu différent des utilisateurs internes (Voir Accueil > configuration > Affichage) +InternalExternalDesc=Un utilisateur <b>interne</b> est un utilisateur qui fait partie de votre société/institution.<br>Un utilisateur <b>externe</b> est un compte utilisateur pour un client, fournisseur ou autre (La création d'un utilisateur externe pour un tiers peut etre fait depuis la fiche d'un contact de tiers). <br><br>Dans les deux cas, les permissions déterminent les accès aux fonctionnalités. De plus, les utilisateurs externes peuvent avoir un gestionnaire de menu différent des utilisateurs internes (Voir Accueil > configuration > Affichage) PermissionInheritedFromAGroup=La permission est accordée car héritée d'un groupe auquel appartient l'utilisateur. Inherited=Hérité UserWillBeInternalUser=L'utilisateur créé sera un utilisateur interne (car non lié à un tiers en particulier) @@ -110,3 +110,8 @@ UserLogged=Utilisateur connecté DateEmployment=Date d'embauche DateEmploymentEnd=Date de fin d'emploi CantDisableYourself=Vous ne pouvez pas désactiver votre propre compte utilisateur +ForceUserExpenseValidator=Forcer le valideur des notes de frais +ForceUserHolidayValidator=Forcer le valideur des congés +ValidatorIsSupervisorByDefault=Par défaut, le valideur est le responsable hiérarchique de l'utilisateur. Gardez vide pour conserver ce comportement. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/fr_FR/website.lang b/htdocs/langs/fr_FR/website.lang index 0ffa73a567c..ab903c9bc6a 100644 --- a/htdocs/langs/fr_FR/website.lang +++ b/htdocs/langs/fr_FR/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Pré-visualiser la page dans un nouvel onglet SetAsHomePage=Définir comme page d'accueil RealURL=URL réelle ViewWebsiteInProduction=Pré-visualiser le site web en utilisant l'URL de la page d'accueil -SetHereVirtualHost=<u> Utilisation avec Apache/NGinx/...</u> <br> Si vous pouvez créer sur votre serveur Web (Apache, Nginx, ...) un hôte virtuel dédié avec PHP activé et un répertoire racine sur <br> <strong> %s </strong> <br> alors entrez le nom de l'hôte virtuel que vous avez créé dans les propriétés du site, ainsi l'aperçu pourra être fait en utilisant cette URL pour un accès via le serveur Web dédié plutôt que via le serveur interne Dolibarr. +SetHereVirtualHost=<u> Utilisation avec Apache/NGinx/...</u> <br> Créez sur votre serveur Web (Apache, Nginx, ...) un hôte virtuel dédié avec PHP activé et un répertoire racine sur <br> <strong> %s </strong> +ExampleToUseInApacheVirtualHostConfig=Exemple à utiliser dans la configuration de l'hôte virtuel Apache: YouCanAlsoTestWithPHPS=<u> Utilisation avec un serveur PHP incorporé </u> <br> Sous environnement de développement, vous pouvez préférer tester le site avec le serveur Web PHP intégré (PHP 5.5 requis) en exécutant <br> <strong> php -S 0.0.0.0:8080 -t %s </strong> YouCanAlsoDeployToAnotherWHP=<u>Exécutez votre site Web avec un autre fournisseur d'hébergement Dolibarr</u> <br> Si vous ne disposez pas d'un serveur Web tel qu'Apache ou NGinx sur Internet, vous pouvez exporter et importer votre site Web vers une autre instance de Dolibarr fournie par un autre fournisseur d'hébergement Dolibarr offrant une intégration complète avec le module de site Web. Vous pouvez trouver une liste de certains hébergeurs Dolibarr sur <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Vérifiez également que le virtual host a la permission <strong> %s </strong> sur les fichiers dans <strong> %s </strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Désolé, ce site est actuellement hors ligne. Me 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 web / tiers YouMustDefineTheHomePage=Vous devez d'abord définir la page d'accueil par défaut -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é. <br> Notez également que seule l’édition de la source HTML sera possible lorsqu’un contenu de page aura été initialisé par une capture d'une page externe (l'éditeur "en ligne" ne sera PAS disponible) +OnlyEditionOfSourceForGrabbedContentFuture=Avertissement: La création d'une page Web en important une page Web externe est réservée aux utilisateurs expérimentés. 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 en conflit 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 de créer une nouvelle page, mais il est recommandé de créer votre nouvelle page à partir de rien ou à partir d’un modèle de page suggéré. <br> Notez également que seule l’éditeur en ligne peut ne pas fonctionner correctement quand il est utilisé sur une page créée par aspiration. 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 @@ -121,6 +122,9 @@ BackToHomePage=Retour à la page d'accueil... TranslationLinks=Liens de traduction YouTryToAccessToAFileThatIsNotAWebsitePage=Vous tentez d'accéder à une page qui n'est pas une page du site web UseTextBetween5And70Chars=Pour les bonnes pratiques de référencement, utilisez un texte de 5 à 70 caractères -MainLanguage=Main language -OtherLanguages=Other languages -UseManifest=Provide a manifest.json file +MainLanguage=Langage principal +OtherLanguages=Autres langues +UseManifest=Fournir un fichier manifest.json +PublicAuthorAlias=Alias publique de l'auteur +AvailableLanguagesAreDefinedIntoWebsiteProperties=Les langues disponibles sont définies dans les propriétés du site Web +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/he_IL/admin.lang b/htdocs/langs/he_IL/admin.lang index 6f2a807d99a..854aae23e84 100644 --- a/htdocs/langs/he_IL/admin.lang +++ b/htdocs/langs/he_IL/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=הערה: אין גבול מוגדר בתצורת שלך PHP MaxSizeForUploadedFiles=הגודל המקסימלי של קבצים שאפשר להעלות (0 לאסור על כל ההעלאה) UseCaptchaCode=השתמש בקוד גרפי (CAPTCHA) בדף הכניסה -AntiVirusCommand= הנתיב המלא האנטי וירוס הפקודה -AntiVirusCommandExample= דוגמה ClamWin: c: \\ progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe <br> דוגמה ClamAV: / usr / bin / clamscan +AntiVirusCommand=הנתיב המלא האנטי וירוס הפקודה +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= פרמטרים נוספים על שורת הפקודה -AntiVirusParamExample= דוגמה עבור ClamWin: - מסד נתונים = "C: \\ קבצי תוכניות (x86) \\ ClamWin \\ lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=מודול הנהלת חשבונות ההתקנה UserSetup=התקנה וניהול של המשתמש MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=התכונה זמינה ב דמו 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. OnlyActiveElementsAreShown=האלמנטים היחידים של <a href="%s">מודולים המאפשרים</a> מוצגים. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=הפעל על @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=אזורים DictionaryCountry=מדינות DictionaryCurrency=מטבעות -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=שיעורי מע"מ או מכירות שיעורי מס @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=כברירת מחדל IRPF המוצע הוא 0. קץ שלטון. LocalTax2IsUsedExampleES=בספרד, פרילנסרים ובעלי מקצוע עצמאיים המספקים שירותים וחברות אשר בחרו במערכת המס של מודולים. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=לייבל שימוש כברירת מחדל אם לא התרגום ניתן למצוא את קוד LabelOnDocuments=התווית על מסמכים LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=ביקורת אבטחה אירועים Audit=ביקורת @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=מערכת מידע הוא מידע טכני שונות נכנסת למצב קריאה בלבד ונראה לעין עבור מנהלי בלבד. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=משתמשים מודול ההתקנה UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=חשבוניות ומסמכים מודלים BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=להכריח את תאריך החשבונית עד כה אימות -SuggestedPaymentModesIfNotDefinedInInvoice=תשלומים שהציע מצב בחשבונית כברירת מחדל, אם לא הוגדרו עבור חשבונית +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=טקסט חופשי על חשבוניות @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=מודול הצעות מסחרי ההתקנה ProposalsNumberingModules=הצעה מסחרית המונה מודולים ProposalsPDFModules=מסמכי ההצעה מודלים מסחריים -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=טקסט חופשי על הצעות מסחריות WatermarkOnDraftProposal=סימן מים על הצעות טיוטה מסחריים (כל אם ריק) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=הזמנות מספור מודולים OrdersModelModule=מסמכים הזמנת דגמים @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/he_IL/bills.lang b/htdocs/langs/he_IL/bills.lang index f5cef2fe190..758cad0418b 100644 --- a/htdocs/langs/he_IL/bills.lang +++ b/htdocs/langs/he_IL/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/he_IL/blockedlog.lang b/htdocs/langs/he_IL/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/he_IL/blockedlog.lang +++ b/htdocs/langs/he_IL/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/he_IL/cashdesk.lang b/htdocs/langs/he_IL/cashdesk.lang index 211154918de..d1fd7b33150 100644 --- a/htdocs/langs/he_IL/cashdesk.lang +++ b/htdocs/langs/he_IL/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/he_IL/companies.lang b/htdocs/langs/he_IL/companies.lang index 8fe6ed3f84e..26a5eb3958e 100644 --- a/htdocs/langs/he_IL/companies.lang +++ b/htdocs/langs/he_IL/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/he_IL/compta.lang b/htdocs/langs/he_IL/compta.lang index 6a854e6fa80..bea3663aff1 100644 --- a/htdocs/langs/he_IL/compta.lang +++ b/htdocs/langs/he_IL/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/he_IL/errors.lang b/htdocs/langs/he_IL/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/he_IL/errors.lang +++ b/htdocs/langs/he_IL/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/he_IL/install.lang b/htdocs/langs/he_IL/install.lang index 637f67fbab7..42f8f5149de 100644 --- a/htdocs/langs/he_IL/install.lang +++ b/htdocs/langs/he_IL/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/he_IL/link.lang b/htdocs/langs/he_IL/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/he_IL/link.lang +++ b/htdocs/langs/he_IL/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/he_IL/mails.lang b/htdocs/langs/he_IL/mails.lang index 97db492d7e8..6da35178dd2 100644 --- a/htdocs/langs/he_IL/mails.lang +++ b/htdocs/langs/he_IL/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/he_IL/main.lang b/htdocs/langs/he_IL/main.lang index b4865808ee6..caa57ce5e5a 100644 --- a/htdocs/langs/he_IL/main.lang +++ b/htdocs/langs/he_IL/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/he_IL/other.lang b/htdocs/langs/he_IL/other.lang index f6e81db4cc1..580d977179a 100644 --- a/htdocs/langs/he_IL/other.lang +++ b/htdocs/langs/he_IL/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title WEBSITE_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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/he_IL/products.lang b/htdocs/langs/he_IL/products.lang index 3e5d6cac9c1..f883b0823e1 100644 --- a/htdocs/langs/he_IL/products.lang +++ b/htdocs/langs/he_IL/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/he_IL/projects.lang b/htdocs/langs/he_IL/projects.lang index be41a714872..dd2e3b9d0f2 100644 --- a/htdocs/langs/he_IL/projects.lang +++ b/htdocs/langs/he_IL/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/he_IL/receiptprinter.lang b/htdocs/langs/he_IL/receiptprinter.lang index 3df49b9fe67..896eaa313dd 100644 --- a/htdocs/langs/he_IL/receiptprinter.lang +++ b/htdocs/langs/he_IL/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/he_IL/stripe.lang b/htdocs/langs/he_IL/stripe.lang index eb77441d2cd..844762040af 100644 --- a/htdocs/langs/he_IL/stripe.lang +++ b/htdocs/langs/he_IL/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/he_IL/users.lang b/htdocs/langs/he_IL/users.lang index 990140b3232..107e604ded1 100644 --- a/htdocs/langs/he_IL/users.lang +++ b/htdocs/langs/he_IL/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/he_IL/website.lang b/htdocs/langs/he_IL/website.lang index 9e5c4ba3ff8..c802b2d2ae8 100644 --- a/htdocs/langs/he_IL/website.lang +++ b/htdocs/langs/he_IL/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/hr_HR/admin.lang b/htdocs/langs/hr_HR/admin.lang index 00393affd11..b8fe65b6f57 100644 --- a/htdocs/langs/hr_HR/admin.lang +++ b/htdocs/langs/hr_HR/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Napomena: Limit nije podešen u vašoj PHP konfiguraciji MaxSizeForUploadedFiles=Maksimalna veličina datoteka za upload (0 onemogučuje bilokakav upload) UseCaptchaCode=Koristi grafički kod (CAPTCHA) na stranici za prijavu -AntiVirusCommand= Puna putanja do antivirusne komande -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Puna putanja do antivirusne komande +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Dodatni parametri za komandnu liniju -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Podešavanje modula računovodstva UserSetup=Podešavanje upravljanja korisnicima MultiCurrencySetup=Podešavanje više valuta @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Mogućnost onemogućena u demo verziji 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. OnlyActiveElementsAreShown=Prikazani su samo elementi sa <a href="%s">omogučenih modula</a> -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Možete pronaći više modula za download na vanjskim internet web lokacijama 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 <strong>%s</strong>. ModulesMarketPlaces=Nađi vanjske aplikacije/module @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Dostupni dodaci BoxesActivated=Aktivirani dodaci ActivateOn=Aktiviraj na @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Ostavite prazno za zadane vrijednosti DefaultLink=Default link SetAsDefault=Postavi kao zadano ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=Vanjski modul - Instaliran u mapi %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Masovno postavljanje ili promjena barkodova usluga i proizvoda CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regije DictionaryCountry=Zemlje DictionaryCurrency=Valute -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Tipovi događaja agende DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=Stope PDV-a ili stope prodajnih poreza @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Stopa LocalTax1IsNotUsed=Nemoj koristit drugi porez LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=Kao zadano preporučeni IRPF je 0. Kraj prvila. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Izvještaji o lokalnim porezima CalcLocaltax1=Prodaja - Nabava CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Nabava CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Prodaja CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Oznake korištene kao zadane ako ne postoji prijevoda za kod LabelOnDocuments=Oznake na dokumentima LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Pregled sigurnosnih događaja Audit=Revizija @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Podešavanje modula korisnka UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Podešavanje modula HRM ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Model dokumenata računa BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Forsiraj datum računa kao datum ovjere -SuggestedPaymentModesIfNotDefinedInInvoice=Predloženi način plačanja na računu kao zadano ako nije definirano za račun +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Slobodan unos teksta na računu @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Podešavanje modula ponuda ProposalsNumberingModules=Modeli brojeva ponuda ProposalsPDFModules=Modeli dokumenta ponuda -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Slobodan unos teksta na ponudi WatermarkOnDraftProposal=Vodeni žig na skici ponude (ako nije prazno) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Traži odredišni bankovni račun ponude @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Upitaj za izvorno skladište za narudžbe ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Postavke upravljanja narudžbenicama OrdersNumberingModules=Način označavanja narudžba OrdersModelModule=Model dokumenata narudžba @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/hr_HR/bills.lang b/htdocs/langs/hr_HR/bills.lang index 6783733932e..5631061f309 100644 --- a/htdocs/langs/hr_HR/bills.lang +++ b/htdocs/langs/hr_HR/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Ulazni računi SupplierBill=Ulazni račun SupplierBills=Ulazni računi Payment=Plaćanja -PaymentBack=Isplata -CustomerInvoicePaymentBack=Isplata +PaymentBack=Povrat +CustomerInvoicePaymentBack=Povrat Payments=Plaćanja PaymentsBack=Refunds paymentInInvoiceCurrency=u valuti računa PaidBack=Uplaćeno natrag DeletePayment=Izbriši plaćanje ConfirmDeletePayment=Sigurno želite izbrisati ovo plaćanje? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Primljene uplate @@ -219,7 +219,10 @@ ShowInvoiceSituation=Prikaži račun etape UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Plati ToMakePaymentBack=Povrat ListOfYourUnpaidInvoices=Popis neplaćenih računa NoteListOfYourUnpaidInvoices=Napomena: Ovaj popis sadrži samo račune za komitente kojima ste vi prodajni predstavnik -RevenueStamp=Prihodovna markica +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=Kako biste izradili novi predložak računa morate prvo izraditi običan račun i onda ga promijeniti u "predložak" -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=PDF račun prema Crevette predlošku. Kompletan predložak računa za etape TerreNumRefModelDesc1=Vraća broj u formatu %syymm-nnnn za standardne račune i %syymm-nnnn za odobrenja gdje je yy godina, mm je mjesec i nnnn je sljedni broj bez prekida i bez mogučnosti povratka na 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Račun obrisan +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/hr_HR/blockedlog.lang b/htdocs/langs/hr_HR/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/hr_HR/blockedlog.lang +++ b/htdocs/langs/hr_HR/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/hr_HR/cashdesk.lang b/htdocs/langs/hr_HR/cashdesk.lang index 200a99c3d40..efcc63b0adc 100644 --- a/htdocs/langs/hr_HR/cashdesk.lang +++ b/htdocs/langs/hr_HR/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Dodaj ovu stavku RestartSelling=Povratak na prodaju SellFinished=Sale complete PrintTicket=Ispis računa +SendTicket=Send ticket NoProductFound=Stavka nije pronađena ProductFound=Proizvod pronađen NoArticle=Nema stavke @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Broj računa Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Preglednik BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/hr_HR/companies.lang b/htdocs/langs/hr_HR/companies.lang index 691cbe562de..7606871ab5c 100644 --- a/htdocs/langs/hr_HR/companies.lang +++ b/htdocs/langs/hr_HR/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Tvrtka "%s" izbrisana iz baze. ListOfContacts=Popis kontakata/adresa ListOfContactsAddresses=Popis kontakata/adresa ListOfThirdParties=Popis trećih osoba -ShowCompany=Show Third Party ShowContact=Prikaži kontakt ContactsAllShort=Sve(bez filtera) ContactType=Vrsta kontakta @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Ime prodajnog predstavnika SaleRepresentativeLastname=Prezime prodajnog predstavnika ErrorThirdpartiesMerge=Došlo je do greške tijekom brisanja treće osobe. Molim provjerite zapis. Izmjene su povraćene. NewCustomerSupplierCodeProposed=Customer or Vendor code already used, a new code is suggested +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Rok plaćanja - kupac diff --git a/htdocs/langs/hr_HR/compta.lang b/htdocs/langs/hr_HR/compta.lang index 897da7b6b27..ba2536a8dba 100644 --- a/htdocs/langs/hr_HR/compta.lang +++ b/htdocs/langs/hr_HR/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=Prikazani iznosi su sa uključenim svim porezima -RulesResultDue=- Uključuje neplačene račune, troškove, PDV, donacije bez obzira da li su plaćene ili ne. Također uključuje isplačene plaće.<br>- Baziran je na datumu ovjere računa i PDV i po datumu dospjeća troškova. Za plaće definirane sa modulom Plaća, koristi se vrijednost datuma isplate. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Uključuje stvarne uplate po računima, troškove, PDV i plaće. <br>- Baziran je po datumu plaćanja računa, troškova, PDV-a i plaćama. Datum donacje za donacije. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Kratka oznaka +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/hr_HR/errors.lang b/htdocs/langs/hr_HR/errors.lang index 7c474631e5d..d6fc3f95da2 100644 --- a/htdocs/langs/hr_HR/errors.lang +++ b/htdocs/langs/hr_HR/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/hr_HR/install.lang b/htdocs/langs/hr_HR/install.lang index 35ae3c62b90..763892bfb5f 100644 --- a/htdocs/langs/hr_HR/install.lang +++ b/htdocs/langs/hr_HR/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/hr_HR/link.lang b/htdocs/langs/hr_HR/link.lang index 9e5eb0d2868..ee140b37440 100644 --- a/htdocs/langs/hr_HR/link.lang +++ b/htdocs/langs/hr_HR/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Veza %s je obrisana ErrorFailedToDeleteLink= Neuspješno brisanje veze '<b>%s</b>' ErrorFailedToUpdateLink= Neuspješna promjena veze '<b>%s</b>' URLToLink=URL prema vezi +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/hr_HR/mails.lang b/htdocs/langs/hr_HR/mails.lang index 89ef9388cf4..6595e1154c2 100644 --- a/htdocs/langs/hr_HR/mails.lang +++ b/htdocs/langs/hr_HR/mails.lang @@ -1,20 +1,20 @@ # Dolibarr language file - Source file is en_US - mails -Mailing=EMailing -EMailing=EMailing -EMailings=EMailings -AllEMailings=All eMailings -MailCard=EMailing card -MailRecipients=Recipients +Mailing=elektronička pošta +EMailing=elektronička pošta +EMailings=elektronička pošta +AllEMailings=Sva elektronička pošta +MailCard=Kartica elektroničke pošte +MailRecipients=Primatelji MailRecipient=Primatelj MailTitle=Opis MailFrom=Pošiljatelj -MailErrorsTo=Errors to -MailReply=Reply to -MailTo=Receiver(s) -MailToUsers=To user(s) -MailCC=Copy to -MailToCCUsers=Copy to users(s) -MailCCC=Cached copy to +MailErrorsTo=Pogreške +MailReply=Odgovoriti na +MailTo=Primatelj(i) +MailToUsers=Korisnicima +MailCC=Kopirajte u +MailToCCUsers=Kopirajte korisniku(cima) +MailCCC=Predmemorirana kopija u MailTopic=Email topic MailText=Poruka MailFile=Attached files @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Podatak ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/hr_HR/main.lang b/htdocs/langs/hr_HR/main.lang index 59aedeecba8..cbc8e21d8c2 100644 --- a/htdocs/langs/hr_HR/main.lang +++ b/htdocs/langs/hr_HR/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Provjera veze ToClone=Kloniraj +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Izaberite podatke koje želite klonirati: NoCloneOptionsSpecified=Podaci za kloniranje nisu izabrani. Of=od @@ -829,6 +830,8 @@ Gender=Spol Genderman=Muško Genderwoman=Žensko ViewList=Pregled popisa +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obavezno Hello=Pozdrav GoodBye=Doviđenja! @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/hr_HR/orders.lang b/htdocs/langs/hr_HR/orders.lang index 55004de52bb..3c704a81c68 100644 --- a/htdocs/langs/hr_HR/orders.lang +++ b/htdocs/langs/hr_HR/orders.lang @@ -141,7 +141,7 @@ OrderByEMail=E-pošta OrderByWWW=Online OrderByPhone=Telefon # Documents models -PDFEinsteinDescription=A complete order model (old implementation of Eratosthene template) +PDFEinsteinDescription=A complete order model PDFEratostheneDescription=A complete order model PDFEdisonDescription=Jednostavan model narudžbe PDFProformaDescription=A complete Proforma invoice template diff --git a/htdocs/langs/hr_HR/other.lang b/htdocs/langs/hr_HR/other.lang index 6b16495c105..eafd337d32b 100644 --- a/htdocs/langs/hr_HR/other.lang +++ b/htdocs/langs/hr_HR/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Naslov WEBSITE_DESCRIPTION=Opis 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/hr_HR/products.lang b/htdocs/langs/hr_HR/products.lang index 87fa7195895..cea95c3fd23 100644 --- a/htdocs/langs/hr_HR/products.lang +++ b/htdocs/langs/hr_HR/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Masovni init barkoda MassBarcodeInitDesc=Ova stranica se može koristiti za inicijalizaciju barkoda na objektima koji nemaju definiran barkod. Provjerite prije da li su postavke barcode modula podešene. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Zemlja porijekla -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Kratka oznaka Unit=Jedinica p=j. diff --git a/htdocs/langs/hr_HR/projects.lang b/htdocs/langs/hr_HR/projects.lang index 7bff5b50088..05b5aaff31a 100644 --- a/htdocs/langs/hr_HR/projects.lang +++ b/htdocs/langs/hr_HR/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=projekt s kojim sam povezan Time=Vrijeme ListOfTasks=Popis zadataka GoToListOfTimeConsumed=Idi na popis utrošenog vremena -GoToListOfTasks=Prikaži kao popis -GoToGanttView=Prikaži kao gantogram (vremenski plan) GanttView=Gantogram ListProposalsAssociatedProject=Popis komercijalnih prijedloga vezanih za projekt ListOrdersAssociatedProject=Popis narudžbenica vezanih za projekt @@ -188,7 +186,7 @@ PlannedWorkload=Planirano opterećenje PlannedWorkloadShort=Opterećenje ProjectReferers=Povezane stavke ProjectMustBeValidatedFirst=Projekt mora biti prvo ovjeren -FirstAddRessourceToAllocateTime=Dodjeli korisnka u zadatak za alokaciju vremena +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Unos po danu InputPerWeek=Unos po tjednu InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Najnoviji %s modificirani projekti OtherFilteredTasks=Ostali filtrirani zadaci NoAssignedTasks=Nisu pronađeni zadani zadaci (dodijelite projekt / zadatke trenutnom korisniku iz gornjeg okvira za odabir da biste unijeli vrijeme u njega) ThirdPartyRequiredToGenerateInvoice=Treća strana mora biti definirana na projektu kako bi mogli fakturirati. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Dopusti napomene korisnika na zadatke AllowCommentOnProject=Dopusti napomene korisnika na projekte @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Novi račun OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/hr_HR/propal.lang b/htdocs/langs/hr_HR/propal.lang index f9f9edf6dab..ed134477f08 100644 --- a/htdocs/langs/hr_HR/propal.lang +++ b/htdocs/langs/hr_HR/propal.lang @@ -76,7 +76,7 @@ TypeContact_propal_external_BILLING=Kontakt osoba pri kupcu za račun TypeContact_propal_external_CUSTOMER=Kontakt osoba pri kupcu za ponudu TypeContact_propal_external_SHIPPING=Customer contact for delivery # Document models -DocModelAzurDescription=A complete proposal model (old implementation of Cyan template) +DocModelAzurDescription=A complete proposal model DocModelCyanDescription=A complete proposal model DefaultModelPropalCreate=Izrada osnovnog modela DefaultModelPropalToBill=Osnovni predložak prilikom zatvaranja poslovne ponude (za naplatu) diff --git a/htdocs/langs/hr_HR/receiptprinter.lang b/htdocs/langs/hr_HR/receiptprinter.lang index 7c8379f37af..02eea48a645 100644 --- a/htdocs/langs/hr_HR/receiptprinter.lang +++ b/htdocs/langs/hr_HR/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Mrežni pisač CONNECTOR_FILE_PRINT=Lokalni pisač CONNECTOR_WINDOWS_PRINT=Lokalni Windows pisač +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Lažni pisač za test, ne radi ništa CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Predefinirani profil PROFILE_SIMPLE=Jednostavan profil PROFILE_EPOSTEP=EPOS TEP profil @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Broj računa +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Kapital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/hr_HR/stripe.lang b/htdocs/langs/hr_HR/stripe.lang index 1bb6a024d47..1aeada94d38 100644 --- a/htdocs/langs/hr_HR/stripe.lang +++ b/htdocs/langs/hr_HR/stripe.lang @@ -32,6 +32,7 @@ VendorName=Naziv pružatelja CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/hr_HR/users.lang b/htdocs/langs/hr_HR/users.lang index 4adcbad88a9..cf47e5c7710 100644 --- a/htdocs/langs/hr_HR/users.lang +++ b/htdocs/langs/hr_HR/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Korisnik na domeni %s Reactivate=Reaktiviraj CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Dozvola odobrena jer je nasljeđeno od jedne od korisničkih grupa. Inherited=Nasljeđeno UserWillBeInternalUser=Kreirani korisnik će biti interni korisnik (jer nije vezan za određenog komitenta) @@ -113,3 +113,5 @@ CantDisableYourself=You can't disable your own user record ForceUserExpenseValidator=Force expense report validator ForceUserHolidayValidator=Force leave request validator ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/hr_HR/website.lang b/htdocs/langs/hr_HR/website.lang index 66882d8ee7f..d7acd018105 100644 --- a/htdocs/langs/hr_HR/website.lang +++ b/htdocs/langs/hr_HR/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Pogledaj stranicu u novom tabu SetAsHomePage=Postavi kao početnu stranicu RealURL=Pravi URL ViewWebsiteInProduction=Pogledaj web lokaciju koristeći URL naslovnice -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/hu_HU/admin.lang b/htdocs/langs/hu_HU/admin.lang index e01ebc06bc2..bc4e1be3552 100644 --- a/htdocs/langs/hu_HU/admin.lang +++ b/htdocs/langs/hu_HU/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Megjegyzés: az <b> Ön </b> PHP konfigurációjában j NoMaxSizeByPHPLimit=Megjegyzés: A PHP konfigurációban nincs beállítva korlátozás MaxSizeForUploadedFiles=A feltöltött fájlok maximális mérete (0 megtiltja a feltöltést) UseCaptchaCode=Grafikus kód (CAPTCHA) használata a bejelentkezési oldalon -AntiVirusCommand= A vírusirtó parancs teljes elérési útvonala -AntiVirusCommandExample= Példa ClamWin esetére: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe <br> Példa ClamAV esetére: /usr/bin/clamscan +AntiVirusCommand=A vírusirtó parancs teljes elérési útvonala +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= A parancssor további paraméterei -AntiVirusParamExample= Példa ClamWin esetére: -database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Számviteli modul beállítása UserSetup=Felhasználói beállítások kezelése MultiCurrencySetup=Több valuta beállítása @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Demó módban kikapcsolva FeatureAvailableOnlyOnStable=A szolgáltatás csak a hivatalos stabil verziókban érhető el BoxesDesc=A modulok olyan összetevők, amelyek információkat mutatnak, s hozzáadhatóak az oldalak testreszabásához. Választhat úgy, hogy megjelenik-e a modul, vagy nem, ha kiválasztja a céloldalt és kattint az 'Aktiválás' gombra, vagy a kukára kattintva tilthatja le azt. OnlyActiveElementsAreShown=Csak a <a href="%s"> bekapcsolt modulok</a> elemei jelennek meg. -ModulesDesc=A modulok / alkalmazások határozzák meg, hogy mely szolgáltatások érhetők el a szoftverben. Néhány modulhoz engedély szükséges a felhasználók számára a modul aktiválása után. Kattintson a be / ki gombra (a modul sor végén) a modul / alkalmazás engedélyezéséhez / letiltásához. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Az interneten további modulokat találhat... ModulesDeployDesc=Ha a fájlrendszer engedélyei ezt lehetővé teszik, akkor ezt az eszközt használhatja egy külső modul telepítéséhez. A modul ezután a <strong>%s</strong> fülön lesz látható. ModulesMarketPlaces=Külső alkalmazások / modulok keresése @@ -212,6 +212,7 @@ CompatibleUpTo=Kompatibilis a(z) %s verzióval NotCompatible=Ez a modul nem tűnik kompatibilisnek a Dolibarr %s verzióval (Min %s - Max %s). CompatibleAfterUpdate=Ehhez a modulhoz frissíteni kell a Dolibarr %s-t (Min %s - Max %s). SeeInMarkerPlace=Lásd a piactéren +SeeSetupOfModule=Lásd a %s modul beállításait Updated=Frissítve Nouveauté=Újdonság AchatTelechargement=Vásárlás / Letöltés @@ -221,6 +222,7 @@ DoliPartnersDesc=Az egyedi fejlesztésű modulokat vagy funkciókat kínáló c WebSiteDesc=Külső webhelyek további kiegészítő (nem alapvető) modulokhoz ... DevelopYourModuleDesc=Néhány javaslat a saját modul fejlesztésére ... URL=URL elérési út +RelativeURL=Relative URL BoxesAvailable=Elérhető widgetek BoxesActivated=Aktivált widgetek ActivateOn=Aktiválás @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Az alapérték használatához hagyja üresen DefaultLink=Alapértelmezett hivatkozás SetAsDefault=Beállítás alapértelmezettként ValueOverwrittenByUserSetup=Figyelem, ezt az értéket a felhasználó-specifikus beállítás felülírhatja (minden felhasználó beállíthatja saját clicktodial URL-jét) -ExternalModule=Külső modul - Telepítve a(z) %s könyvtárba +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Tömeges vonalkód készítése partnereknek BarcodeInitForProductsOrServices=A termékek vagy szolgáltatások tömeges vonalkód-indítása vagy visszaállítása CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=Államok / Tartományok DictionaryRegion=Régiók DictionaryCountry=Országok DictionaryCurrency=Pénznemek -DictionaryCivility=Udvarias megszólítás +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=HÉA-kulcsok vagy Értékesítés adókulcsok @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Arány LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=Alapértelmezésben a javasolt IRPF 0. Vége a szabály. LocalTax2IsUsedExampleES=Spanyolországban, szabadúszók és független szakemberek, akik szolgáltatásokat nyújtanak és a vállalatok akik úgy döntöttek, az adórendszer a modulok. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Beszerzések CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Eladások CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label az alap, ha nincs fordítás megtalálható a kód LabelOnDocuments=Címke dokumentumok LabelOrTranslationKey=Címke vagy fordítási kulcs @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Az "Egyéb beállítás" menü az opcionális paramétereket tartalmazza. LogEvents=Biztonsági audit események Audit=Könyvvizsgálat @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=Rendszer információk különféle műszaki információkat kapunk a csak olvasható módban, és csak rendszergazdák számára látható. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Ha van külső könyvelője / könyvvizsgálója, itt szerkesztheti annak adatait. AccountantFileNumber=Könyvelői kód DisplayDesc=A Dolibarr kinézetét és viselkedését befolyásoló paraméterek itt módosíthatók. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=A jelszavak létrehozására és érvényesítésére DisableForgetPasswordLinkOnLogonPage=Ne jelenítse meg az "Elfelejtett jelszó" linket a Bejelentkezés oldalon UsersSetup=Felhasználók modul beállítása UserMailRequired=Új felhasználó létrehozásához e-mail szükséges +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM modul beállításai ##### Company setup ##### @@ -1282,10 +1292,10 @@ CompanyIdProfChecker=Rules for Professional IDs MustBeUnique=Egyedinek kell lennie? MustBeMandatory=Mandatory to create third parties (if VAT number or type of company defined) ? MustBeInvoiceMandatory=Mandatory to validate invoices? -TechnicalServicesProvided=Technical services provided +TechnicalServicesProvided=Technikai szolgáltatások #####DAV ##### WebDAVSetupDesc=This is the link to access the WebDAV directory. It contains a "public" dir open to any user knowing the URL (if public directory access allowed) and a "private" directory that needs an existing login account/password for access. -WebDavServer=Root URL of %s server: %s +WebDavServer=A(z) %s szerver gyökér URL-je: %s ##### Webcal setup ##### WebCalUrlForVCalExport=Az export linket <b>%s</b> formátumban elérhető a következő linkre: %s ##### Invoices ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Számla dokumentumok modellek BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Kényszer számla keltétől annak érvényességét -SuggestedPaymentModesIfNotDefinedInInvoice=Javasolt fizetési mód a számlát az alap, ha nincs meg a számla +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Szabad szöveg a számlán @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=A kereskedelmi modul beállítási javaslatok ProposalsNumberingModules=Üzleti ajánlat számozási modulok ProposalsPDFModules=Üzleti ajánlat dokumentumok modellek -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Szabad szöveg a kereskedelmi javaslatok WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Megrendelés számozási modulok OrdersModelModule=Rendelés dokumentumok modellek @@ -1417,69 +1428,69 @@ LDAPTestSynchroMemberType=Test member type synchronization LDAPTestSearch= Test a LDAP search LDAPSynchroOK=A szinkronizálás sikeres teszt LDAPSynchroKO=Nem sikerült a szinkronizálás teszt -LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that the connection to the server is correctly configured and allows LDAP updates +LDAPSynchroKOMayBePermissions=Nem sikerült a szinkronizálási teszt. Ellenőrizze, hogy a szerverrel való kapcsolat megfelelően van-e konfigurálva, és lehetővé teszi-e az LDAP frissítéseket LDAPTCPConnectOK=TCP csatlakozni az LDAP szerver sikeres (= %s Server, Port = %s) LDAPTCPConnectKO=TCP csatlakozni az LDAP kiszolgáló nem (Server = %s, Port = %s) -LDAPBindOK=Connect/Authenticate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) -LDAPBindKO=Connect/Authenticate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindOK=Csatlakozás/hitelesítés az LDAP szerverhez sikeres (Szerver = %s, Port = %s, Rendszergazda = %s, Jelszó = %s) +LDAPBindKO=Csatlakozás/hitelesítés az LDAP szerverhez sikertelen (Szerver = %s, Port = %s, Rendszergazda = %s, Jelszó = %s) LDAPSetupForVersion3=LDAP-kiszolgáló konfigurálva a 3-as verzió LDAPSetupForVersion2=LDAP-kiszolgáló konfigurálva a 2-es verziója LDAPDolibarrMapping=Dolibarr Mapping LDAPLdapMapping=LDAP Mapping LDAPFieldLoginUnix=Bejelentkezés (unix) -LDAPFieldLoginExample=Example: uid +LDAPFieldLoginExample=Példa: uid LDAPFilterConnection=Keresés szűrő -LDAPFilterConnectionExample=Example: &(objectClass=inetOrgPerson) +LDAPFilterConnectionExample=Példa: &(objectClass=inetOrgPerson) LDAPFieldLoginSamba=Bejelentkezés (samba, ActiveDirectoryba) -LDAPFieldLoginSambaExample=Example: samaccountname +LDAPFieldLoginSambaExample=Példa: samaccountname LDAPFieldFullname=Keresztnév -LDAPFieldFullnameExample=Example: cn -LDAPFieldPasswordNotCrypted=Password not encrypted -LDAPFieldPasswordCrypted=Password encrypted -LDAPFieldPasswordExample=Example: userPassword -LDAPFieldCommonNameExample=Example: cn +LDAPFieldFullnameExample=Példa: cn +LDAPFieldPasswordNotCrypted=A jelszó nincs titkosítva +LDAPFieldPasswordCrypted=A jelszó titkosítva +LDAPFieldPasswordExample=Példa: userPassword +LDAPFieldCommonNameExample=Példa: cn LDAPFieldName=Név -LDAPFieldNameExample=Example: sn +LDAPFieldNameExample=Példa: sn LDAPFieldFirstName=Keresztnév -LDAPFieldFirstNameExample=Example: givenName +LDAPFieldFirstNameExample=Példa: keresztnév LDAPFieldMail=E-mail cím -LDAPFieldMailExample=Example: mail +LDAPFieldMailExample=Példa: mail LDAPFieldPhone=Szakmai telefonszám -LDAPFieldPhoneExample=Example: telephonenumber +LDAPFieldPhoneExample=Példa: telefonszám LDAPFieldHomePhone=Személyes telefonszám -LDAPFieldHomePhoneExample=Example: homephone +LDAPFieldHomePhoneExample=Példa: otthonitelefon LDAPFieldMobile=Mobiltelefon -LDAPFieldMobileExample=Example: mobile +LDAPFieldMobileExample=Példa: mobil LDAPFieldFax=Faxszám -LDAPFieldFaxExample=Example: facsimiletelephonenumber +LDAPFieldFaxExample=Példa: telefaxtelefonszám LDAPFieldAddress=Utca -LDAPFieldAddressExample=Example: street +LDAPFieldAddressExample=Példa: utca LDAPFieldZip=Zip -LDAPFieldZipExample=Example: postalcode +LDAPFieldZipExample=Példa: irányítószám LDAPFieldTown=Város LDAPFieldTownExample=Example: l LDAPFieldCountry=Ország LDAPFieldDescription=Leírás -LDAPFieldDescriptionExample=Example: description -LDAPFieldNotePublic=Public Note -LDAPFieldNotePublicExample=Example: publicnote +LDAPFieldDescriptionExample=Példa: leírás +LDAPFieldNotePublic=Nyilvános jegyzet +LDAPFieldNotePublicExample=Példa: nyilvánosjegyzet LDAPFieldGroupMembers= A csoport tagjai LDAPFieldGroupMembersExample= Example: uniqueMember LDAPFieldBirthdate=Születésének LDAPFieldCompany=Vállalat -LDAPFieldCompanyExample=Example: o +LDAPFieldCompanyExample=Példa: o LDAPFieldSid=SID -LDAPFieldSidExample=Example: objectsid +LDAPFieldSidExample=Példa: objectsid LDAPFieldEndLastSubscription=Születési előfizetés vége LDAPFieldTitle=Állás pozíció -LDAPFieldTitleExample=Example: title -LDAPFieldGroupid=Group id -LDAPFieldGroupidExample=Exemple : gidnumber -LDAPFieldUserid=User id -LDAPFieldUseridExample=Exemple : uidnumber -LDAPFieldHomedirectory=Home directory -LDAPFieldHomedirectoryExample=Exemple : homedirectory -LDAPFieldHomedirectoryprefix=Home directory prefix +LDAPFieldTitleExample=Példa: cím +LDAPFieldGroupid=Csoportazonosító +LDAPFieldGroupidExample=Példa: gidnumber +LDAPFieldUserid=Felhasználói azonosító +LDAPFieldUseridExample=Példa: uidnumber +LDAPFieldHomedirectory=Kezdő könyvtár +LDAPFieldHomedirectoryExample=Példa: homedirectory +LDAPFieldHomedirectoryprefix=Kezdő könyvtár előtag LDAPSetupNotComplete=LDAP telepítés nem teljes (go másokra fül) LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Nem rendszergazdai jelszót vagy biztosított. LDAP hozzáférés lesz, névtelen és csak olvasható módba. LDAPDescContact=Ez az oldal lehetővé teszi, hogy meghatározza az LDAP attribútumok név LDAP fa minden egyes adat található Dolibarr kapcsolatok. @@ -1489,40 +1500,40 @@ LDAPDescMembers=Ez az oldal lehetővé teszi, hogy meghatározza az LDAP attrib LDAPDescMembersTypes=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members types. LDAPDescValues=Példaértékek tervezték <b>OpenLDAP</b> az alábbi betöltött sémák: <b>core.schema, cosine.schema, inetorgperson.schema).</b> Ha a thoose értékek és az OpenLDAP, módosíthatja az LDAP konfigurációs file <b>slapd.conf</b> hogy minden thoose sémák betöltve. ForANonAnonymousAccess=A hitelesített hozzáférés (egy írási például) -PerfDolibarr=Performance setup/optimizing report -YouMayFindPerfAdviceHere=This page provides some checks or advice related to performance. -NotInstalled=Not installed, so your server is not slowed down by this. -ApplicativeCache=Applicative cache -MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server.<br>More information here <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a>.<br>Note that a lot of web hosting provider does not provide such cache server. -MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete. -MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. -OPCodeCache=OPCode cache -NoOPCodeCacheFound=No OPCode cache found. Maybe you are using an OPCode cache other than XCache or eAccelerator (good), or maybe you don't have OPCode cache (very bad). +PerfDolibarr=Teljesítménybeállítás/optimalizálás jelentés +YouMayFindPerfAdviceHere=Ezen az oldalon található néhány ellenőrzés vagy tanácsadás a teljesítményhez kapcsolódóan. +NotInstalled=Nincs telepítve, így a szervert ez nem lassítja le. +ApplicativeCache=Alkalmazható gyorsítótár +MemcachedNotAvailable=Nem található alkalmazható gyorsítótár. A teljesítmény javításához telepítheti a Memcached gyorsítótár-kiszolgálót és egy modult, amely képes használni ezt a gyorsítótár-kiszolgálót. <br> További információ itt <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN"> http://wiki.dolibarr.org/index.php/Module_MemCached_EN </a>. <br> Vegye figyelembe, hogy sok webtárhely-szolgáltató nem nyújt ilyen gyorsítótár-kiszolgálót. +MemcachedModuleAvailableButNotSetup=Található memcached modul a gyorsítótár-kiszolgálóhoz, de a modul telepítése még nem fejeződött be. +MemcachedAvailableAndSetup=A memcached szerver használatához a memcached modul engedélyezve van. +OPCodeCache=OPCode gyorsítótár +NoOPCodeCacheFound=Nem található az OPCode gyorsítótár. Lehet, hogy egy másik OPCode gyorsítótárat használ, mint például az XCache-t vagy az eAccelerator-t (jó), vagy lehet, hogy nincs OPCode-gyorsítótár (nagyon rossz). HTTPCacheStaticResources=Statikus erőforrások (css, img, javascript) HTTP gyorsítótára FilesOfTypeCached=A HTTP szerver a %s típusú fájlok esetében használja a gyorsítótárat. FilesOfTypeNotCached=A HTTP szerver a %s típusú fájlok esetében nem használja a gyorsítótárat. FilesOfTypeCompressed=A HTTP szerver a %s típusú fájlokat tömöríti. FilesOfTypeNotCompressed=A HTTP szerver a %s típusú fájlokat nem tömöríti. -CacheByServer=Cache by server -CacheByServerDesc=For example using the Apache directive "ExpiresByType image/gif A2592000" +CacheByServer=Gyorsítótár kiszolgálónként +CacheByServerDesc=Például az "ExpiresByType image/gif A2592000" Apache irányelv használatával CacheByClient=Cache by browser CompressionOfResources=HTTP válaszok tömörítése -CompressionOfResourcesDesc=For example using the Apache directive "AddOutputFilterByType DEFLATE" -TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current browsers -DefaultValuesDesc=Here you may define the default value you wish to use when creating a new record, and/or default filters or the sort order when you list records. -DefaultCreateForm=Default values (to use on forms) -DefaultSearchFilters=Default search filters -DefaultSortOrder=Default sort orders +CompressionOfResourcesDesc=Például az "AddOutputFilterByType DEFLATE" Apache irányelv használatával +TestNotPossibleWithCurrentBrowsers=A jelenlegi böngészőknél nem lehetséges ilyen automatikus észlelés +DefaultValuesDesc=Meghatározhatja azt az alapértelmezett értéket, amelyet új rekord létrehozásakor használni kíván, és/vagy az alapértelmezett szűrőket, vagy a rendezési sorrendet a rekordok listázásakor. +DefaultCreateForm=Alapértelmezett értékek (űrlapok használatához) +DefaultSearchFilters=Alapértelmezett keresési szűrők +DefaultSortOrder=Alapértelmezett rendezési sorrendek DefaultFocus=Default focus fields -DefaultMandatory=Mandatory form fields +DefaultMandatory=Kötelező űrlapmezők ##### Products ##### ProductSetup=Termékek modul beállítása ServiceSetup=Szolgáltatások modul beállítása ProductServiceSetup=Termékek és szolgáltatások modulok beállítása -NumberOfProductShowInSelect=Maximum number of products to show in combo select lists (0=no limit) +NumberOfProductShowInSelect=A kombinált kiválasztási listákban megjelenítendő termékek maximális száma (0 = nincs korlátozás) ViewProductDescInFormAbility=Display product descriptions in forms (otherwise shown in a tooltip popup) MergePropalProductCard=Activate in product/service Attached Files tab an option to merge product PDF document to proposal PDF azur if product/service is in the proposal -ViewProductDescInThirdpartyLanguageAbility=Display products descriptions in the language of the third party +ViewProductDescInThirdpartyLanguageAbility=A termékleírások megjelenítése a partner nyelvén 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=Alapértelmezett típusú vonalkód használatát termékek @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/hu_HU/bills.lang b/htdocs/langs/hu_HU/bills.lang index ab8c59769af..f1aaa7a59e7 100644 --- a/htdocs/langs/hu_HU/bills.lang +++ b/htdocs/langs/hu_HU/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=beszállítók számlái Payment=Fizetés -PaymentBack=vissza fizetési -CustomerInvoicePaymentBack=vissza fizetési +PaymentBack=Visszatérítés +CustomerInvoicePaymentBack=Visszatérítés Payments=Kifizetések PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Visszafizetések DeletePayment=Fizetés törlése ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Fogadott befizetések @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Kifizetés ToMakePaymentBack=Visszafizetés ListOfYourUnpaidInvoices=Nyitott számlák listája NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Illetékbélyeg +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/hu_HU/blockedlog.lang b/htdocs/langs/hu_HU/blockedlog.lang index 28194fd21de..8a37fe90724 100644 --- a/htdocs/langs/hu_HU/blockedlog.lang +++ b/htdocs/langs/hu_HU/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/hu_HU/cashdesk.lang b/htdocs/langs/hu_HU/cashdesk.lang index d2c1b57f40b..c7ca149736d 100644 --- a/htdocs/langs/hu_HU/cashdesk.lang +++ b/htdocs/langs/hu_HU/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add hozzá ezt a cikket RestartSelling=Menj vissza eladni SellFinished=Értékesítés befejezte PrintTicket=Nyomtatás jegy +SendTicket=Send ticket NoProductFound=Nem találtam cikket ProductFound=termék található NoArticle=Nincs cikk @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Számlák száma Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Böngésző BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/hu_HU/companies.lang b/htdocs/langs/hu_HU/companies.lang index 32b0b049214..26f3995ee4c 100644 --- a/htdocs/langs/hu_HU/companies.lang +++ b/htdocs/langs/hu_HU/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted="%s" cég törölve az adatbázisból. ListOfContacts=Névjegyek / címek ListOfContactsAddresses=Névjegyek / címek ListOfThirdParties=Partnerek listája -ShowCompany=Mutasd a partnereket ShowContact=Kapcsolat mutatása ContactsAllShort=Minden (nincs szűrő) ContactType=Kapcsolat típusa @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Az értékesítési képviselő vezetékneve SaleRepresentativeLastname=Az értékesítési képviselő vezetékneve ErrorThirdpartiesMerge=Hiba történt a partner(ek) törlésekor. Kérjük, ellenőrizze a naplót. A változtatások visszavonva. NewCustomerSupplierCodeProposed=A vevő vagy az eladó kódja már használatban van, egy új kód javasolt +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Fizetés típusa - Ügyfél PaymentTermsCustomer=Fizetési feltételek - Ügyfél diff --git a/htdocs/langs/hu_HU/compta.lang b/htdocs/langs/hu_HU/compta.lang index 8a8efc62c29..1843b1372a1 100644 --- a/htdocs/langs/hu_HU/compta.lang +++ b/htdocs/langs/hu_HU/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Rövid címke +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/hu_HU/errors.lang b/htdocs/langs/hu_HU/errors.lang index 281f32104ac..f6bd16ca771 100644 --- a/htdocs/langs/hu_HU/errors.lang +++ b/htdocs/langs/hu_HU/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=A fájlt nem sikerült teljesen feltölteni. ErrorNoTmpDir=A %s ideiglenes könyvtár nem létezik. ErrorUploadBlockedByAddon=A feltöltést akadályozza valamilyen PHP / Apache plugin. ErrorFileSizeTooLarge=A fájl mérete túl nagy. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Túl nagy szám az int típushoz (maximum %s számjegy) ErrorSizeTooLongForVarcharType=Túl hosszú szöveg a string típushoz (%s karakter maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/hu_HU/install.lang b/htdocs/langs/hu_HU/install.lang index da1615f437a..c9b3e5ee4e5 100644 --- a/htdocs/langs/hu_HU/install.lang +++ b/htdocs/langs/hu_HU/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Ez a PHP támogatja a Curl-t. PHPSupportCalendar=Ez a PHP támogatja a naptár-kiterjesztéseket. PHPSupportUTF8=Ez a PHP támogatja az UTF8 funkciókat. PHPSupportIntl=Ez a PHP támogatja a többnyelvű funkciókat. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=Ez a PHP támogatja a(z) %s funkciókat. PHPMemoryOK=A munkamenetek maximális memóriája <b>%s</b>. Ennek elégnek kéne lennie. PHPMemoryTooLow=A PHP munkamenetmemóriája <b>%s</b> bájt maximumra van beállítva. Ez túl alacsony. Változtassa meg a <b>php.ini</b> fájlban a <b>memory_limit</b> paraméter értékét legalább <b>%s</b> bájtra. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=A PHP telepítése nem támogatja a Curl-t. ErrorPHPDoesNotSupportCalendar=A telepített PHP nem támogatja a php naptárkiterjesztéseket. ErrorPHPDoesNotSupportUTF8=A telepített PHP nem támogatja az UTF8 funkciókat. A Dolibarr nem működik megfelelően. A Dolibarr telepítése előtt oldja meg ezt. ErrorPHPDoesNotSupportIntl=A telepített PHP nem támogatja a többnyelvű funkciókat. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=A telepített PHP nem támogatja a(z) %s funkciókat. ErrorDirDoesNotExists=%s könyvtár nem létezik. ErrorGoBackAndCorrectParameters=Menjen vissza és ellenőrizze / javítsa ki a paramétereket. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Az alkalmazás megpróbált frissítést végreha YouTryInstallDisabledByFileLock=Az alkalmazás megpróbált frissítést végrehajtani, de a biztonságot szem előtt tartva letiltottuk a telepítési / frissítési oldalakat (az <strong>install.lock zárolási fájl létrehozásával a dolibarr dokumentumok könyvtárában</strong>). <br> ClickHereToGoToApp=Kattintson ide az alkalmazás eléréséhez ClickOnLinkOrRemoveManualy=Kattintson a következő linkre. Ha mindig ugyanazt az oldalt látja, el kell távolítania / át kell neveznie az install.lock fájlt a dokumentumok könyvtárban. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/hu_HU/link.lang b/htdocs/langs/hu_HU/link.lang index 32e8792ef16..4a300402b46 100644 --- a/htdocs/langs/hu_HU/link.lang +++ b/htdocs/langs/hu_HU/link.lang @@ -8,3 +8,4 @@ LinkRemoved=A %s hivatkozás törölve ErrorFailedToDeleteLink= A '<b>%s</b>' hivakozás törlése sikertelen ErrorFailedToUpdateLink= A '<b>%s</b>' hivakozás frissítése sikertelen URLToLink=A hivatkozás címe +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/hu_HU/mails.lang b/htdocs/langs/hu_HU/mails.lang index 068acc39b23..748b00764b6 100644 --- a/htdocs/langs/hu_HU/mails.lang +++ b/htdocs/langs/hu_HU/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Információ ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/hu_HU/main.lang b/htdocs/langs/hu_HU/main.lang index 4a57c743427..f6b07282fc3 100644 --- a/htdocs/langs/hu_HU/main.lang +++ b/htdocs/langs/hu_HU/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Mentés és maradj SaveAndNew=Mentés és új TestConnection=Kapcsolat tesztelése ToClone=Klónozás +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Válassza ki a klónozni kívánt adatokat: NoCloneOptionsSpecified=Nincs klónozandó adat meghatározva. Of=birtokában @@ -829,6 +830,8 @@ Gender=Nem Genderman=Férfi Genderwoman=Nő ViewList=Lista megtekintése +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Kötelező kitölteni Hello=Hello GoodBye=Viszontlátásra @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Válassza ki a grafikon beállításait a grafikon f Measures=Méretek XAxis=X-tengely YAxis=Y-tengely +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/hu_HU/orders.lang b/htdocs/langs/hu_HU/orders.lang index 3e21f863216..8b1b0ac0e74 100644 --- a/htdocs/langs/hu_HU/orders.lang +++ b/htdocs/langs/hu_HU/orders.lang @@ -141,7 +141,7 @@ OrderByEMail=E-mail OrderByWWW=Online OrderByPhone=Telefon # Documents models -PDFEinsteinDescription=Teljes megrendelési modell (az Eratosthene sablon régi megvalósítása) +PDFEinsteinDescription=Teljes megrendelési modell PDFEratostheneDescription=Teljes megrendelési modell PDFEdisonDescription=Egyszerű megrendelési sablon PDFProformaDescription=Teljes Proforma számlasablon diff --git a/htdocs/langs/hu_HU/other.lang b/htdocs/langs/hu_HU/other.lang index 2c84431663c..b070f06054a 100644 --- a/htdocs/langs/hu_HU/other.lang +++ b/htdocs/langs/hu_HU/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=A grafikák „Sávok” módban %s mértékre OnlyOneFieldForXAxisIsPossible=Jelenleg csak 1 mező lehetséges X-tengelyként. Csak az első kiválasztott mező került kiválasztásra. AtLeastOneMeasureIsRequired=Legalább 1 mező szükséges a méréshez AtLeastOneXAxisIsRequired=Legalább 1 mező szükséges az X-tengelyhez - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Az értékesítési megrendelés érvényes Notify_ORDER_SENTBYMAIL=Az értékesítési megrendelés postai úton elküldve Notify_ORDER_SUPPLIER_SENTBYMAIL=A beszerzési megrendelés e-mailben elküldve @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=Az oldal URL-je WEBSITE_TITLE=Cím WEBSITE_DESCRIPTION=Leírás WEBSITE_IMAGE=Kép -WEBSITE_IMAGEDesc=A képfájl relatív útja. Ezt üresen hagyhatja, mivel ezt ritkán használják (a dinamikus tartalom felhasználhatja miniatűr megjelenítésére a blogbejegyzések listájában). Használja a __WEBSITEKEY__ az elérési útban, ha az elérési út a webhely nevétől függ. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Kulcsszavak LinesToImport=Importálandó sorok diff --git a/htdocs/langs/hu_HU/products.lang b/htdocs/langs/hu_HU/products.lang index 014a4a9fccb..c28d41d5a08 100644 --- a/htdocs/langs/hu_HU/products.lang +++ b/htdocs/langs/hu_HU/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Ez az eszköz frissíti <b><u>MINDEN</u></b> termékre MassBarcodeInit=Tömeges vonalkód létrehozás MassBarcodeInitDesc=Ezen az oldalon lehet vonalkódot létrehozni azon objektumoknak, amelyeknél még nincs meghatározva vonalkód. Ellenőrizze a beállításokat, mielőtt a barcode modul befejeződik. ProductAccountancyBuyCode=Számviteli kód (vásárlás) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Számviteli kód (eladás) ProductAccountancySellIntraCode=Számviteli kód (Közösségen belüli eladás) ProductAccountancySellExportCode=Számviteli kód (export eladás) @@ -165,7 +167,7 @@ SuppliersPrices=Eladási árak SuppliersPricesOfProductsOrServices=Eladási árak (termékek vagy szolgáltatások) CustomCode=Vám / Áru / HS kód CountryOrigin=Származási ország -Nature=A termék természete (alapanyag / késztermék) +Nature=Nature of product (material/finished) ShortLabel=Rövid címke Unit=Egység p=db. diff --git a/htdocs/langs/hu_HU/projects.lang b/htdocs/langs/hu_HU/projects.lang index 8376020d283..0b9ee0449c2 100644 --- a/htdocs/langs/hu_HU/projects.lang +++ b/htdocs/langs/hu_HU/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Idő ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Kapcsolódó elemek ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Új számla OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/hu_HU/receiptprinter.lang b/htdocs/langs/hu_HU/receiptprinter.lang index 3d2c4e632ab..08d8836143b 100644 --- a/htdocs/langs/hu_HU/receiptprinter.lang +++ b/htdocs/langs/hu_HU/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Számla hiv. +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Tőke +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/hu_HU/stripe.lang b/htdocs/langs/hu_HU/stripe.lang index d88607e0c22..27845bc9ee2 100644 --- a/htdocs/langs/hu_HU/stripe.lang +++ b/htdocs/langs/hu_HU/stripe.lang @@ -32,6 +32,7 @@ VendorName=Neve eladó CSSUrlForPaymentForm=CSS stíluslapot url fizetési forma NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/hu_HU/users.lang b/htdocs/langs/hu_HU/users.lang index 63cd31fa91c..084d20b5834 100644 --- a/htdocs/langs/hu_HU/users.lang +++ b/htdocs/langs/hu_HU/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Felhasználók és tulajdonságaik DomainUser=Domain felhasználók %s Reactivate=Újra aktiválás CreateInternalUserDesc=Ez az űrlap lehetővé teszi belső felhasználó létrehozását a vállalatban/szervezetben. Külső felhasználó (vevő, eladó stb.) létrehozásához használja a 'Dolibarr felhasználó létrehozása' gombot a partner névjegykártyáján. -InternalExternalDesc=A <b>belső</b> felhasználó az a felhasználó, amely része a vállalatának/szervezetének. <br>Egy <b>külső</b> felhasználó vevő, eladó vagy más. <br> <br> Mindkét esetben az engedélyek meghatározzák a felhasználó Dolibarr jogait, a külső felhasználónak más menükezelője is lehet, mint a belső felhasználónál (lásd Kezdőlap - Beállítás - Kijelző) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Engedélyek megadva mert örökölte az egyik csoporttól. Inherited=Örökölve UserWillBeInternalUser=Létrehozta felhasználó lesz egy belső felhasználó (mivel nem kapcsolódik az adott harmadik fél) @@ -113,3 +113,5 @@ CantDisableYourself=Saját felhasználói rekordját nem tilthatja le ForceUserExpenseValidator=A költségjelentés érvényesítésének kényszerítése ForceUserHolidayValidator=A szabadságkérelem érvényesítése ValidatorIsSupervisorByDefault=Alapértelmezés szerint az érvényesítő a felhasználó vezetője. Hagyja üresen ha ez így van. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/hu_HU/website.lang b/htdocs/langs/hu_HU/website.lang index 27dc084c76f..4548cbdf7ed 100644 --- a/htdocs/langs/hu_HU/website.lang +++ b/htdocs/langs/hu_HU/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Az oldal megtekintése új lapon SetAsHomePage=Beállítás kezdőlapnak RealURL=Valódi URL ViewWebsiteInProduction=Tekintse meg a webhelyet otthoni URL-ek segítségével -SetHereVirtualHost=<u>Használja Apache / NGinx / ...</u> <br> Ha a webkiszolgálón (Apache, Nginx, ...) létrehozhat egy dedikált virtuális gazdagépet, amelyen a PHP engedélyezve van, és egy gyökérkönyvtárat <br> <strong>%s</strong> <br> majd állítsa be a webhely tulajdonságaiban létrehozott virtuális gazdagép nevét, így az előnézetet a belső Dolibarr szerver helyett ennek a dedikált webkiszolgálónak a hozzáférésével is el lehet végezni. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Használjon beépített PHP szerverrel</u> <br> Fejlesztői környezetben a futtatással inkább tesztelheti a webhelyet a beágyazott PHP szerverrel (PHP 5.5 szükséges) <br> <strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Futtassa weboldalát egy másik Dolibarr tárhely szolgáltatóval</u> <br> Ha még nem áll rendelkezésre internetes szerver, például Apache vagy NGinx, akkor exportálhatja és importálhatja webhelyét egy másik Dolibarr példányra, amelyet egy másik Dolibarr tárhely szolgáltató biztosít, és amely teljes mértékben integrálja a webhely modult. Néhány Dolibarr tárhely-szolgáltató felsorolását a <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org oldalon</a> találja CheckVirtualHostPerms=Ellenőrizze azt is, hogy a virtuális gazdagép rendelkezik-e <strong>%s</strong> engedéllyel a fájlokba <br> <strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sajnáljuk, ez a webhely jelenleg offline állapo WEBSITE_USE_WEBSITE_ACCOUNTS=Engedélyezze a webhely account tábláját WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Engedélyezze a táblát a webhely accountok (usernév / jelszó) tárolására minden weboldalon / harmadik félnél YouMustDefineTheHomePage=Először meg kell határoznia az alapértelmezett Kezdőlapot -OnlyEditionOfSourceForGrabbedContentFuture=Figyelem: A weboldal külső weboldal importálásával történő létrehozása a tapasztalt felhasználók számára van fenntartva. A forrásoldal összetettségétől függően az importálás eredménye eltérhet az eredetitől. Ha a forrásoldal is általános CSS stílusokat vagy ütköző javascriptet használ, akkor az megsemmisítheti a webhely szerkesztő megjelenését vagy funkcióit, amikor ezen az oldalon dolgozik. Ez a módszer gyorsabb módszer egy oldal létrehozására, de ajánlott az új oldal a nulláról vagy a javasolt oldalsablonból történő létrehozása. <br> Vegye figyelembe azt is, hogy a HTML forrás szerkesztése akkor lehetséges, ha az oldal tartalma inicializálva van, ha egy külső oldalról grabbeli azt (az "Online" szerkesztő NEM lesz elérhető) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Csak a HTML forrás kiadása lehetséges, ha a tartalmat egy külső webhelyről megragadták GrabImagesInto=Ragadja meg a css-ben és az oldalon található képeket is. ImagesShouldBeSavedInto=A képeket a könyvtárba kell menteni @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=A helyes SEO gyakorlat érdekében használjon 5 és 7 MainLanguage=Fő nyelv OtherLanguages=Más nyelvek UseManifest=Adjon meg egy manifest.json fájlt +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/id_ID/admin.lang b/htdocs/langs/id_ID/admin.lang index 8dea06a28ad..acbf3ab23a7 100644 --- a/htdocs/langs/id_ID/admin.lang +++ b/htdocs/langs/id_ID/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Catatan: Tidak ada batas diatur dalam konfigurasi PHP Anda MaxSizeForUploadedFiles=Ukuran maksimal untuk file upload (0 untuk melarang pengunggahan ada) UseCaptchaCode=Gunakan kode grafis (CAPTCHA) pada halaman login -AntiVirusCommand= Path lengkap ke perintah antivirus -AntiVirusCommandExample= Contoh untuk ClamWin: c: \\ progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe <br> Contoh untuk ClamAV: / usr / bin / clamscan +AntiVirusCommand=Path lengkap ke perintah antivirus +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Lebih lanjut tentang parameter baris perintah -AntiVirusParamExample= Contoh untuk ClamWin: - database = "C: \\ Program Files (x86) \\ ClamWin \\ lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Pengaturan modul Akuntansi UserSetup=Konfigurasi manajemen pengguna MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Link Standar SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=lebih besar dari @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/id_ID/bills.lang b/htdocs/langs/id_ID/bills.lang index 4b62c14cfb1..adafb4ff710 100644 --- a/htdocs/langs/id_ID/bills.lang +++ b/htdocs/langs/id_ID/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=semua tagihan untuk semua pemasok / supplier Payment=Pembayaran -PaymentBack=Pembayaran kembali -CustomerInvoicePaymentBack=Pembayaran kembali +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Semua pembayaran PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Dibayar kembali DeletePayment=Hapus pembayaran ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Semua pembayaran yang diterima @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/id_ID/blockedlog.lang b/htdocs/langs/id_ID/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/id_ID/blockedlog.lang +++ b/htdocs/langs/id_ID/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/id_ID/cashdesk.lang b/htdocs/langs/id_ID/cashdesk.lang index b040df0305d..4dcde5eda9f 100644 --- a/htdocs/langs/id_ID/cashdesk.lang +++ b/htdocs/langs/id_ID/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/id_ID/companies.lang b/htdocs/langs/id_ID/companies.lang index 4a2c3fa0599..a90e08ac188 100644 --- a/htdocs/langs/id_ID/companies.lang +++ b/htdocs/langs/id_ID/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/id_ID/compta.lang b/htdocs/langs/id_ID/compta.lang index 1e81d808167..37cf0356250 100644 --- a/htdocs/langs/id_ID/compta.lang +++ b/htdocs/langs/id_ID/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/id_ID/errors.lang b/htdocs/langs/id_ID/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/id_ID/errors.lang +++ b/htdocs/langs/id_ID/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/id_ID/install.lang b/htdocs/langs/id_ID/install.lang index bc6b7fc3e69..59457c8085f 100644 --- a/htdocs/langs/id_ID/install.lang +++ b/htdocs/langs/id_ID/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/id_ID/link.lang b/htdocs/langs/id_ID/link.lang index 600b2d930ff..1d10ffbad6e 100644 --- a/htdocs/langs/id_ID/link.lang +++ b/htdocs/langs/id_ID/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Tautan %s telah dihapus ErrorFailedToDeleteLink= gagal untuk menghapus tautan '<b>%s</b>' ErrorFailedToUpdateLink= Gagal untuk memperbaharui tautan '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/id_ID/mails.lang b/htdocs/langs/id_ID/mails.lang index c02d383c4fb..195055ba334 100644 --- a/htdocs/langs/id_ID/mails.lang +++ b/htdocs/langs/id_ID/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/id_ID/main.lang b/htdocs/langs/id_ID/main.lang index 3ef8d8605d4..9988de10e94 100644 --- a/htdocs/langs/id_ID/main.lang +++ b/htdocs/langs/id_ID/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=Tampilan daftar +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/id_ID/other.lang b/htdocs/langs/id_ID/other.lang index 8e8d51192cb..7cac2e06e63 100644 --- a/htdocs/langs/id_ID/other.lang +++ b/htdocs/langs/id_ID/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title WEBSITE_DESCRIPTION=Keterangan 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/id_ID/products.lang b/htdocs/langs/id_ID/products.lang index 9e8aff41e86..411bb7216ed 100644 --- a/htdocs/langs/id_ID/products.lang +++ b/htdocs/langs/id_ID/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/id_ID/projects.lang b/htdocs/langs/id_ID/projects.lang index 0a2900a8296..d207986f87c 100644 --- a/htdocs/langs/id_ID/projects.lang +++ b/htdocs/langs/id_ID/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Tagihan baru OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/id_ID/receiptprinter.lang b/htdocs/langs/id_ID/receiptprinter.lang index 3df49b9fe67..896eaa313dd 100644 --- a/htdocs/langs/id_ID/receiptprinter.lang +++ b/htdocs/langs/id_ID/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/id_ID/stripe.lang b/htdocs/langs/id_ID/stripe.lang index eb77441d2cd..844762040af 100644 --- a/htdocs/langs/id_ID/stripe.lang +++ b/htdocs/langs/id_ID/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/id_ID/users.lang b/htdocs/langs/id_ID/users.lang index d424b1f334e..a9498dec5ac 100644 --- a/htdocs/langs/id_ID/users.lang +++ b/htdocs/langs/id_ID/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/id_ID/website.lang b/htdocs/langs/id_ID/website.lang index 9e5c4ba3ff8..c802b2d2ae8 100644 --- a/htdocs/langs/id_ID/website.lang +++ b/htdocs/langs/id_ID/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/is_IS/admin.lang b/htdocs/langs/is_IS/admin.lang index 0b03d4da07f..a9a52b04b77 100644 --- a/htdocs/langs/is_IS/admin.lang +++ b/htdocs/langs/is_IS/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Ath: Ekki eru sett lágmörk á PHP uppsetningu þína MaxSizeForUploadedFiles=Hámarks stærð fyrir skrár (0 til banna allir senda) UseCaptchaCode=Nota myndræna kóða (Kapteinn) á innskráningarsíðu -AntiVirusCommand= Full slóð að antivirus stjórn -AntiVirusCommandExample= Dæmi um Samloka: c: \\ Program Files (x86) \\ Samloka \\ kassi \\ clamscan.exe <br> Dæmi um Samloka: / usr / bin / clamscan +AntiVirusCommand=Full slóð að antivirus stjórn +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Fleiri breytur á lína -AntiVirusParamExample= Dæmi um Samloka: - gagnasafn = "C: \\ Program Files (x86) \\ Samloka \\ lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Bókhald mát skipulag UserSetup=Stjórn notanda skipulag MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Lögun fatlaður í kynningu 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. OnlyActiveElementsAreShown=Aðeins atriði frá <a href="%s">virkt einingar</a> eru birtar. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Virkja á @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Svæði DictionaryCountry=Lönd DictionaryCurrency=Gjaldmiðlar -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VSK Verð @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Verð LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=Sjálfgefið er fyrirhuguð IRPF er 0. Lok reglu. LocalTax2IsUsedExampleES=Á Spáni freelancers og sjálfstæða sérfræðinga sem veita þjónustu og fyrirtæki sem hafa valið skatt kerfi eininga. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Innkaup CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Velta CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Merki notaður við vanræksla, ef ekki þýðingu er að finna í kóða LabelOnDocuments=Merki um skjöl LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Öryggi endurskoðun viðburðir Audit=Úttekt @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=Kerfi upplýsingar er ýmis tæknilegar upplýsingar sem þú færð í lesa aðeins háttur og sýnileg Aðeins kerfisstjórar. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Notendur mát skipulag UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice skjöl módel BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force dagsetningu reiknings staðfestingu dagsetningu -SuggestedPaymentModesIfNotDefinedInInvoice=Leiðbeinandi greiðslur háttur á reikning við vanræksla ef ekki er skilgreind fyrir reikning +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Frjáls texti á reikningum @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Auglýsing tillögur mát skipulag ProposalsNumberingModules=Auglýsing tillögu tala mát ProposalsPDFModules=Auglýsing tillögu skjöl módel -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Frjáls texti um viðskiptabanka tillögur WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Pantanir tala mát OrdersModelModule=Panta skjöl módel @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/is_IS/bills.lang b/htdocs/langs/is_IS/bills.lang index f4e78a6e916..87fd0e67073 100644 --- a/htdocs/langs/is_IS/bills.lang +++ b/htdocs/langs/is_IS/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=birgjum reikninga Payment=Greiðsla -PaymentBack=Greiðsla til baka -CustomerInvoicePaymentBack=Greiðsla til baka +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Greiðslur PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Eyða greiðslu ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Móttekin greiðslur @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/is_IS/blockedlog.lang b/htdocs/langs/is_IS/blockedlog.lang index 626f5821bcf..4a0e02851e2 100644 --- a/htdocs/langs/is_IS/blockedlog.lang +++ b/htdocs/langs/is_IS/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/is_IS/cashdesk.lang b/htdocs/langs/is_IS/cashdesk.lang index 11eb12c8b02..53d67608a08 100644 --- a/htdocs/langs/is_IS/cashdesk.lang +++ b/htdocs/langs/is_IS/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Bæta við þessa grein RestartSelling=Fara aftur á að selja SellFinished=Sale complete PrintTicket=Prenta miða +SendTicket=Send ticket NoProductFound=Engin grein fannst ProductFound=vara fannst NoArticle=Engin grein @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=NB af reikningum Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/is_IS/companies.lang b/htdocs/langs/is_IS/companies.lang index 8e2f1086cbe..699c424c082 100644 --- a/htdocs/langs/is_IS/companies.lang +++ b/htdocs/langs/is_IS/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Fyrirtæki " %s " eytt úr gagnagrunninum. ListOfContacts=Listi yfir tengiliði ListOfContactsAddresses=Listi yfir tengiliði ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show samband ContactsAllShort=Öll (síu) ContactType=Hafðu tegund @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/is_IS/compta.lang b/htdocs/langs/is_IS/compta.lang index bd1c8b64c46..82960faedfc 100644 --- a/htdocs/langs/is_IS/compta.lang +++ b/htdocs/langs/is_IS/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/is_IS/errors.lang b/htdocs/langs/is_IS/errors.lang index 6c5f33f419e..28f89d9d044 100644 --- a/htdocs/langs/is_IS/errors.lang +++ b/htdocs/langs/is_IS/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Skrá fékk ekki alveg við þjóninn. ErrorNoTmpDir=Tímabundin directy %s er ekki til. ErrorUploadBlockedByAddon=Hlaða læst með PHP / Apache tappi. ErrorFileSizeTooLarge=Skráarstærð er of stór. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Stærð of lengi fyrir int tegund (%s tölustafir hámark) ErrorSizeTooLongForVarcharType=Stærð of lengi fyrir gerð band (%s stafir hámark) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/is_IS/install.lang b/htdocs/langs/is_IS/install.lang index 4d44fcfc421..9c14f4b9435 100644 --- a/htdocs/langs/is_IS/install.lang +++ b/htdocs/langs/is_IS/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max fundur minnið er stillt <b>á %s .</b> Þetta ætti að vera nóg. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Listinn %s er ekki til. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/is_IS/link.lang b/htdocs/langs/is_IS/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/is_IS/link.lang +++ b/htdocs/langs/is_IS/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/is_IS/mails.lang b/htdocs/langs/is_IS/mails.lang index 23de4f9fad2..fd2e406a2e5 100644 --- a/htdocs/langs/is_IS/mails.lang +++ b/htdocs/langs/is_IS/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/is_IS/main.lang b/htdocs/langs/is_IS/main.lang index 85245ac028d..271416128f0 100644 --- a/htdocs/langs/is_IS/main.lang +++ b/htdocs/langs/is_IS/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Próf tengingu ToClone=Klóna +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Engin gögn til að afrita skilgreind. Of=á @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=Skoða lista +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/is_IS/other.lang b/htdocs/langs/is_IS/other.lang index ebaa25e6d3d..b81f0d0f77e 100644 --- a/htdocs/langs/is_IS/other.lang +++ b/htdocs/langs/is_IS/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Titill WEBSITE_DESCRIPTION=Lýsing 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/is_IS/products.lang b/htdocs/langs/is_IS/products.lang index 3ed2df6e56c..50494b9a623 100644 --- a/htdocs/langs/is_IS/products.lang +++ b/htdocs/langs/is_IS/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Uppruni land -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/is_IS/projects.lang b/htdocs/langs/is_IS/projects.lang index 883d21f7aab..7333330d5c4 100644 --- a/htdocs/langs/is_IS/projects.lang +++ b/htdocs/langs/is_IS/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Tími ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Nýr reikningur OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/is_IS/receiptprinter.lang b/htdocs/langs/is_IS/receiptprinter.lang index 76c8635765a..6ba804469a5 100644 --- a/htdocs/langs/is_IS/receiptprinter.lang +++ b/htdocs/langs/is_IS/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice dómari +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/is_IS/stripe.lang b/htdocs/langs/is_IS/stripe.lang index 66b0105ee29..8ba78b4df1e 100644 --- a/htdocs/langs/is_IS/stripe.lang +++ b/htdocs/langs/is_IS/stripe.lang @@ -32,6 +32,7 @@ VendorName=Nafn seljanda CSSUrlForPaymentForm=CSS stíll lak url fyrir formi greiðslu NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/is_IS/users.lang b/htdocs/langs/is_IS/users.lang index b0830affd55..3d4566f6abf 100644 --- a/htdocs/langs/is_IS/users.lang +++ b/htdocs/langs/is_IS/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Lén notanda %s Reactivate=Endurvekja CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Heimild veitt vegna þess að arfur frá einni í hópnum notanda. Inherited=Arf UserWillBeInternalUser=Búið notandi vilja vera innri notanda (vegna þess að ekki tengd við ákveðna þriðja aðila) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/is_IS/website.lang b/htdocs/langs/is_IS/website.lang index 738071eb4b4..a43243bd41a 100644 --- a/htdocs/langs/is_IS/website.lang +++ b/htdocs/langs/is_IS/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/it_IT/accountancy.lang b/htdocs/langs/it_IT/accountancy.lang index f924fd121c9..66b70b12ea1 100644 --- a/htdocs/langs/it_IT/accountancy.lang +++ b/htdocs/langs/it_IT/accountancy.lang @@ -168,10 +168,15 @@ DONATION_ACCOUNTINGACCOUNT=Conto di contabilità per registrare le donazioni ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Conto contabile per registrare gli abbonamenti ACCOUNTING_PRODUCT_BUY_ACCOUNT=Conto di contabilità predefinito per i prodotti acquistati (se non definito nella scheda prodotto) +ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Accounting account by default for the bought products in EEC (used if not defined in the product sheet) +ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Accounting account by default for the bought products and imported out of EEC (used if not defined in the product sheet) ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Conto di contabilità predefinito per i prodotti venduti (se non definito nella scheda prodotto) ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Conto contabile per impostazione predefinita per i prodotti venduti in CEE (utilizzato se non definito nella scheda prodotto) ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Conto contabile per impostazione predefinita per l'esportazione dei prodotti venduti fuori dalla CEE (utilizzato se non definito nella scheda prodotto) + ACCOUNTING_SERVICE_BUY_ACCOUNT=Conto di contabilità per impostazione predefinita per i servizi acquistati (utilizzato se non definito nel foglio di servizio) +ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Accounting account by default for the bought services in EEC (used if not defined in the service sheet) +ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Accounting account by default for the bought services and imported out of EEC (used if not defined in the service sheet) ACCOUNTING_SERVICE_SOLD_ACCOUNT=Conto di contabilità per impostazione predefinita per i servizi venduti (utilizzato se non definito nel foglio di servizio) ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Conto contabile predefinito per i servizi venduti nella CEE (solo se non definito nella scheda servizio) ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Conto contabile predefinito per i servizi venduti ed esportati fuori dalla CEE (solo se non definito nella scheda servizio) @@ -228,13 +233,15 @@ ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Third-party unkno ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Third-party account not defined or third party unknown. Blocking error. UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third-party account and waiting account not defined. Blocking error PaymentsNotLinkedToProduct=Payment not linked to any product / service -ShowOpeningBalance=Show opening balance -HideOpeningBalance=Hide opening balance +ShowOpeningBalance=Mostra bilancio di apertura +HideOpeningBalance=Nascondi bilancio di apertura Pcgtype=Gruppo di conto PcgtypeDesc=Group 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 +Reconcilable=Reconcilable + +TotalVente=Fatturato totale al lordo delle imposte TotalMarge=Margine totale sulle vendite DescVentilCustomer=Consult here the list of customer invoice lines bound (or not) to a product accounting account @@ -286,7 +293,7 @@ AccountingJournalType1=Miscellaneous operations AccountingJournalType2=Vendite AccountingJournalType3=Acquisti AccountingJournalType4=Banca -AccountingJournalType5=Expenses report +AccountingJournalType5=Rimborsi spese AccountingJournalType8=Inventario AccountingJournalType9=Has-new ErrorAccountingJournalIsAlreadyUse=Questo giornale è già in uso @@ -308,6 +315,7 @@ Modelcsv_ebp=Export for EBP Modelcsv_cogilog=Export for Cogilog Modelcsv_agiris=Export for Agiris Modelcsv_LDCompta=Export for LD Compta (v9 & higher) (Test) +Modelcsv_LDCompta10=Export for LD Compta (v10 & higher) Modelcsv_openconcerto=Export for OpenConcerto (Test) Modelcsv_configurable=Export CSV Configurable Modelcsv_FEC=Export FEC @@ -324,10 +332,14 @@ OptionModeProductSell=Modalità vendita OptionModeProductSellIntra=Mode sales exported in EEC OptionModeProductSellExport=Mode sales exported in other countries OptionModeProductBuy=Modalità acquisto +OptionModeProductBuyIntra=Mode purchases imported in EEC +OptionModeProductBuyExport=Mode purchased imported from other countries OptionModeProductSellDesc=Show all products with accounting account for sales. OptionModeProductSellIntraDesc=Show all products with accounting account for sales in EEC. OptionModeProductSellExportDesc=Show all products with accounting account for other foreign sales. OptionModeProductBuyDesc=Show all products with accounting account for purchases. +OptionModeProductBuyIntraDesc=Show all products with accounting account for purchases in EEC. +OptionModeProductBuyExportDesc=Show all products with accounting account for other foreign purchases. CleanFixHistory=Remove accounting code from lines that not exists into charts of account CleanHistory=Resetta tutti i collegamenti per l'anno corrente PredefinedGroups=Gruppi predefiniti @@ -338,6 +350,8 @@ AccountRemovedFromGroup=Account removed from group SaleLocal=Local sale SaleExport=Export sale SaleEEC=Sale in EEC +SaleEECWithVAT=Sale in EEC with a VAT not null, so we suppose this is NOT an intracommunautary sale and the suggested account is the standard product account. +SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fallback on the product account for standard sales. You can fix the VAT ID of thirdparty or the product account if needed. ## Dictionary Range=Range of accounting account diff --git a/htdocs/langs/it_IT/admin.lang b/htdocs/langs/it_IT/admin.lang index 7c938027e80..a0a16030215 100644 --- a/htdocs/langs/it_IT/admin.lang +++ b/htdocs/langs/it_IT/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Nota: nessun limite impostato nella configurazione PHP MaxSizeForUploadedFiles=Dimensione massima dei file caricati (0 per disabilitare l'upload) UseCaptchaCode=Utilizzare verifica captcha nella pagina di login -AntiVirusCommand= Percorso completo programma antivirus -AntiVirusCommandExample= Esempio per ClamWin: c:\\Program Files (x86)\\ClamWin\\bin\\clamscan.exe <br> Esempio per ClamAV: / usr/bin/clamscan +AntiVirusCommand=Percorso completo programma antivirus +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Più parametri sulla riga di comando -AntiVirusParamExample= Esempio per ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Impostazioni modulo contabilità UserSetup=Impostazioni per la gestione utenti MultiCurrencySetup=Impostazioni multi-valuta @@ -197,9 +197,9 @@ IgnoreDuplicateRecords=Ignora errori per record duplicati (INSERT IGNORE) AutoDetectLang=Rileva automaticamente (lingua del browser) FeatureDisabledInDemo=Funzione disabilitata in modalità demo FeatureAvailableOnlyOnStable=Feature disponibile solo nelle versioni stabili ufficiali -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=I Widgets sono componenti che personalizzano le pagine aggiungendo delle informazioni.\nPuoi scegliere se mostrare il widget o meno cliccando 'Attiva' sulla la pagina di destinazione, o cliccando sul cestino per disattivarlo. OnlyActiveElementsAreShown=Vengono mostrati solo gli elementi relativi ai <a href="%s">moduli attivi</a> . -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=I moduli / applicazioni determinano quali funzionalità sono disponibili nel software. Alcuni moduli richiedono autorizzazioni da concedere agli utenti dopo l'attivazione del modulo stesso. Fare clic sul pulsante on / off <span class="small valignmiddle">%s</span> (alla fine della riga del modulo) per abilitare / disabilitare un modulo / un'applicazione. ModulesMarketPlaceDesc=Potete trovare altri moduli da scaricare su siti web esterni... 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 <strong>%s</strong>. ModulesMarketPlaces=Trova app/moduli esterni... @@ -212,6 +212,7 @@ CompatibleUpTo=Compatibile con la versione %s NotCompatible=Questo modulo non sembra essere compatibile con la tua versione di Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=Questo modulo richiede un aggiornamento a Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=Vedi la configurazione del modulo %s Updated=Aggiornato Nouveauté=Novità AchatTelechargement=Aquista / Scarica @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=Siti web esterni per ulteriori moduli add-on (non essenziali)... DevelopYourModuleDesc=Spunti per sviluppare il tuo modulo... URL=Collegamento +RelativeURL=Relative URL BoxesAvailable=Widget disponibili BoxesActivated=Widget attivi ActivateOn=Attiva sul @@ -231,8 +233,8 @@ Required=Richiesto UsedOnlyWithTypeOption=Used by some agenda option only Security=Sicurezza Passwords=Password -DoNotStoreClearPassword=Encrypt passwords stored in database (NOT as plain-text). It is strongly recommended to activate this option. -MainDbPasswordFileConfEncrypted=Encrypt database password stored in conf.php. It is strongly recommended to activate this option. +DoNotStoreClearPassword=Non memorizzare le password in chiaro nel database (raccomandato) +MainDbPasswordFileConfEncrypted=Password del database crittata in conf.php (raccomandato) InstrucToEncodePass=Per avere la password codificata sostituisci nel file <b>conf.php</b> , la linea <br><b>$dolibarr_main_db_pass="...";</b><br>con<br><b>$dolibarr_main_db_pass="crypted:%s";</b> InstrucToClearPass=Per avere la password decodificata (in chiaro) sostituisci nel file<b>conf.php</b> la linea <br><b>$dolibarr_main_db_pass="crypted:...";</b><br>con<br><b>$dolibarr_main_db_pass="%s";</b> ProtectAndEncryptPdfFiles=Protect generated PDF files. This is NOT recommended as it breaks bulk PDF generation. @@ -248,7 +250,7 @@ OfficialMarketPlace=Market ufficiale per moduli esterni e addon OfficialWebHostingService=Servizi di hosting web referenziati (Hosting Cloud) ReferencedPreferredPartners=Preferred Partners OtherResources=Altre risorse -ExternalResources=External Resources +ExternalResources=Risorse esterne SocialNetworks=Social Networks ForDocumentationSeeWiki=La documentazione per utenti e sviluppatori e le FAQ sono disponibili sul wiki di Dolibarr: <br/>Dai un'occhiata a <a href="%s" target="_blank"><b> %s</b></a> ForAnswersSeeForum=Per qualsiasi altro problema/domanda, si può utilizzare il forum di Dolibarr: <br> <a href="%s" target="_blank"><b>%s</b></a> @@ -279,8 +281,8 @@ MAIN_MAIL_EMAIL_FROM=Indirizzo mittente per le email automatiche (predefinito in MAIN_MAIL_ERRORS_TO=Indirizzo a cui inviare eventuali errori (campi 'Errors-To' nelle email inviate) MAIN_MAIL_AUTOCOPY_TO= Indirizzo a cui inviare in copia Ccn tutte le mail in uscita MAIN_DISABLE_ALL_MAILS=Disabilita l'invio delle email (a scopo di test o demo) -MAIN_MAIL_FORCE_SENDTO=Send all emails to (instead of real recipients, for test purposes) -MAIN_MAIL_ENABLED_USER_DEST_SELECT=Add employee users with email into allowed recipient list +MAIN_MAIL_FORCE_SENDTO=Invia tutte le e-mail a (anziché ai destinatari reali, a scopo di test) +MAIN_MAIL_ENABLED_USER_DEST_SELECT=Suggerisci l'indirizzo e-mail dei dipendenti (se definiti) nell'elenco dei destinatari predefiniti durante l'invio una nuova e-mail MAIN_MAIL_SENDMODE=Metodo di invio email MAIN_MAIL_SMTPS_ID=Username SMTP (se il server richiede l'autenticazione) MAIN_MAIL_SMTPS_PW=Password SMTP (se il server richiede l'autenticazione) @@ -293,7 +295,7 @@ MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY=Private key for dkim signing MAIN_DISABLE_ALL_SMS=Disabilita l'invio di SMS (a scopo di test o demo) MAIN_SMS_SENDMODE=Metodo da utilizzare per inviare SMS MAIN_MAIL_SMS_FROM=Numero predefinito del mittente per gli SMS -MAIN_MAIL_DEFAULT_FROMTYPE=Default sender email for manual sending (User email or Company email) +MAIN_MAIL_DEFAULT_FROMTYPE=Email predefinita del mittente per l'invio manuale (email utente o email aziendale) UserEmail=Email utente CompanyEmail=Company Email FeatureNotAvailableOnLinux=Funzione non disponibile sui sistemi Linux. Viene usato il server di posta installato sul server (es. sendmail). @@ -302,9 +304,9 @@ SubmitTranslationENUS=Se la traduzione per questa lingua non è completa o trovi ModuleSetup=Impostazioni modulo ModulesSetup=Impostazione Modulo/Applicazione ModuleFamilyBase=Sistema -ModuleFamilyCrm=Customer Relationship Management (CRM) -ModuleFamilySrm=Vendor Relationship Management (VRM) -ModuleFamilyProducts=Product Management (PM) +ModuleFamilyCrm=Gestione delle relazioni con i clienti (CRM) +ModuleFamilySrm=Gestione delle relazioni con i fornitori (SRM / VRM) +ModuleFamilyProducts=Gestione dei prodotti (PM) ModuleFamilyHr=Gestione delle risorse umane (HR) ModuleFamilyProjects=Progetti/collaborazioni ModuleFamilyOther=Altro @@ -312,7 +314,7 @@ ModuleFamilyTechnic=Strumenti Multi-modulo ModuleFamilyExperimental=Moduli sperimentali ModuleFamilyFinancial=Moduli finanziari (Contabilità/Cassa) ModuleFamilyECM=ECM -ModuleFamilyPortal=Websites and other frontal application +ModuleFamilyPortal=Web sites ed altre applicazioni ModuleFamilyInterface=Interfacce con sistemi esterni MenuHandlers=Gestori menu MenuAdmin=Editor menu @@ -363,7 +365,7 @@ ConfirmPurge=Are you sure you want to execute this purge?<br>This will permanent MinLength=Durata minima LanguageFilesCachedIntoShmopSharedMemory=File Lang caricati nella memoria cache LanguageFile=File di Lingua -ExamplesWithCurrentSetup=Examples with current configuration +ExamplesWithCurrentSetup=Esempi di funzionamento secondo la configurazione attuale ListOfDirectories=Elenco delle directory dei modelli OpenDocument ListOfDirectoriesForModelGenODT=Lista di cartelle contenenti file modello in formato OpenDocument.<br><br>Inserisci qui il percorso completo delle cartelle.<br>Digitare un 'Invio' tra ciascuna cartella.<br>Per aggiungere una cartella del modulo GED, inserire qui <b>DOL_DATA_ROOT/ecm/yourdirectoryname</b>.<br><br>I file in quelle cartelle devono terminare con <b>.odt</b> o <b>.ods</b>. NumberOfModelFilesFound=Number of ODT/ODS template files found in these directories @@ -381,24 +383,24 @@ ResponseTimeout=Timeout della risposta SmsTestMessage=Prova messaggio da __PHONEFROM__ a __PHONETO__ ModuleMustBeEnabledFirst=Il modulo <b>%s</b> deve prima essere attivato per poter accedere a questa funzione. SecurityToken=Token di sicurezza -NoSmsEngine=No SMS sender manager available. A SMS sender manager is not installed with the default distribution because they depend on an external vendor, but you can find some on %s +NoSmsEngine=Nessun gestore mittente SMS disponibile. Un gestore mittente SMS non è installato con la distribuzione predefinita perché dipendono da un fornitore esterno, ma puoi trovarne alcuni su %s PDF=PDF -PDFDesc=Global options for PDF generation. -PDFAddressForging=Rules for address boxes -HideAnyVATInformationOnPDF=Hide all information related to Sales Tax / VAT +PDFDesc=Opzioni globali per la generazione di PDF. +PDFAddressForging=Regole per i box degli indirizzi sui documenti pdf +HideAnyVATInformationOnPDF=Nascondi tutte le informazioni relative all'IVA sui pdf generati. PDFRulesForSalesTax=Regole per tasse sulla vendita/IVA PDFLocaltax=Regole per %s HideLocalTaxOnPDF=Hide %s rate in column Tax Sale -HideDescOnPDF=Hide products description -HideRefOnPDF=Hide products ref. -HideDetailsOnPDF=Hide product lines details +HideDescOnPDF=Nascondi le descrizioni dei prodotti nel pdf generato +HideRefOnPDF=Nascondi il riferimento dei prodotti nel pdf generato +HideDetailsOnPDF=Nascondi dettagli linee prodotti sui PDF generati PlaceCustomerAddressToIsoLocation=Usa la posizione predefinita francese (La Poste) per l'indirizzo del cliente Library=Libreria UrlGenerationParameters=Parametri di generazione degli indirizzi SecurityTokenIsUnique=Utilizzare un unico parametro securekey per ogni URL EnterRefToBuildUrl=Inserisci la reference per l'oggetto %s GetSecuredUrl=Prendi URL calcolato -ButtonHideUnauthorized=Hide buttons for non-admin users for unauthorized actions instead of showing greyed disabled buttons +ButtonHideUnauthorized=Nascondi i pulsanti per azioni non autorizzate anziché mostrare i pulsanti disabilitati OldVATRates=Vecchia aliquota IVA NewVATRates=Nuova aliquota IVA PriceBaseTypeToChange=Modifica i prezzi con la valuta di base definita. @@ -423,7 +425,7 @@ ExtrafieldPassword=Password ExtrafieldRadio=Radio buttons (one choice only) ExtrafieldCheckBox=Checkboxes ExtrafieldCheckBoxFromList=Checkboxes from table -ExtrafieldLink=Link to an object +ExtrafieldLink=Collegamento ad un oggetto ComputedFormula=Campo calcolato ComputedFormulaDesc=You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: <strong>$db, $conf, $langs, $mysoc, $user, $object</strong>.<br><strong>WARNING</strong>: Only some properties of $object may be available. If you need a properties not loaded, just fetch yourself the object into your formula like in the second example.<br>Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.<br><br>Example of formula:<br>$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)<br><br>Example to reload object<br>(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'<br><br>Other example of formula to force load of object and its parent object:<br>(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Lasciare vuoto per utilizzare il valore di default DefaultLink=Link predefinito SetAsDefault=Imposta come predefinito ValueOverwrittenByUserSetup=Attenzione, questo valore potrebbe essere sovrascritto da un impostazione specifica dell'utente (ogni utente può settare il proprio url clicktodial) -ExternalModule=Modulo esterno - Installato nella directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -456,7 +459,7 @@ ConfirmEraseAllCurrentBarCode=Vuoi davvero eliminare tutti i valori attuali dei AllBarcodeReset=All barcode values have been removed NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled in the Barcode module setup. EnableFileCache=Abilita file di cache -ShowDetailsInPDFPageFoot=Add more details into footer, such as company address or manager names (in addition to professional ids, company capital and VAT number). +ShowDetailsInPDFPageFoot=Aggiungi più dettagli nel piè di pagina, come l'indirizzo dell'azienda o i nomi dei gestori (oltre agli ID professionali, al capitale aziendale e al numero di partita IVA). NoDetails=No additional details in footer DisplayCompanyInfo=Mostra indirizzo dell'azienda DisplayCompanyManagers=Visualizza nomi responsabili @@ -469,7 +472,7 @@ ModuleCompanyCodeDigitaria=Accounting code depends on third-party code. The code ModuleCompanyCodeCustomerDigitaria=%s seguito dal nome del cliente troncato dal numero di caratteri: %s per il codice contabile del cliente. ModuleCompanyCodeSupplierDigitaria=%s seguito dal nome del fornitore troncato dal numero di caratteri: %s per il codice contabile del fornitore. Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).<br>Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval (3 steps) is always required. -UseDoubleApproval=Use a 3 steps approval when amount (without tax) is higher than... +UseDoubleApproval=Utilizzare un'approvazione in 3 passaggi quando l'importo (senza tasse) è superiore a ... WarningPHPMail=WARNING: It is often better to setup outgoing emails to use the email server of your provider instead of the default setup. Some email providers (like Yahoo) do not allow you to send an email from another server than their own server. Your current setup uses the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not theirs, so few of your sent Emails may not be accepted (be careful also of your email provider's sending quota).<br>If your Email provider (like Yahoo) has this restriction, you must change Email setup to choose the other method "SMTP server" and enter the SMTP server and credentials provided by your Email provider. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: <strong>%s</strong>. WarningPHPMailSPF=If the domain name in your sender email address is protected by SPF (ask you email provider), you must include the following IPs in the SPF record of the DNS of your domain: <strong>%s</strong>. @@ -481,7 +484,7 @@ PageUrlForDefaultValues=You must enter the relative path of the page URL. If you PageUrlForDefaultValuesCreate=<br>Example:<br>For the form to create a new third party, it is <strong>%s</strong>.<br>For URL of external modules installed into custom directory, do not include the "custom/", so use path like <strong>mymodule/mypage.php</strong> and not custom/mymodule/mypage.php.<br>If you want default value only if url has some parameter, you can use <strong>%s</strong> PageUrlForDefaultValuesList=<br>Example:<br>For the page that lists third parties, it is <strong>%s</strong>.<br>For URL of external modules installed into custom directory, do not include the "custom/" so use a path like <strong>mymodule/mypagelist.php</strong> and not custom/mymodule/mypagelist.php.<br>If you want default value only if url has some parameter, you can use <strong>%s</strong> AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) -EnableDefaultValues=Enable customization of default values +EnableDefaultValues=Abilita l'utilizzo di valori predefiniti personalizzati EnableOverwriteTranslation=Abilita queste traduzioni personalizzate 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. @@ -492,7 +495,7 @@ WatermarkOnDraftExpenseReports=Bozze delle note spese filigranate AttachMainDocByDefault=Imposta a 1 se vuoi allegare il documento principale alle email come impostazione predefinita (se applicabile) FilesAttachedToEmail=Allega file SendEmailsReminders=Invia promemoria agenda via email -davDescription=Setup a WebDAV server +davDescription=Configurazione di un server WebDAV DAVSetup=Configurazione del modulo DAV DAV_ALLOW_PRIVATE_DIR=Enable the generic private directory (WebDAV dedicated directory named "private" - login required) DAV_ALLOW_PRIVATE_DIRTooltip=The generic private directory is a WebDAV directory anybody can access with its application login/pass. @@ -504,163 +507,163 @@ DAV_ALLOW_ECM_DIRTooltip=The root directory where all files are manually uploade Module0Name=Utenti e gruppi Module0Desc=Gestione utenti/impiegati e gruppi Module1Name=Soggetti terzi -Module1Desc=Companies and contacts management (customers, prospects...) +Module1Desc=Gestione aziende e soggetti terzi (clienti, fornitori e contatti) Module2Name=Commerciale Module2Desc=Gestione commerciale -Module10Name=Accounting (simplified) +Module10Name=Contabilità (semplificata) Module10Desc=Resoconti contabili semplici (spese, ricavi) basati sul contenuto del database. Non usa tabelle di contabilità generale. Module20Name=Proposte Module20Desc=Gestione proposte commerciali Module22Name=Mass Emailings -Module22Desc=Manage bulk emailing +Module22Desc=Gestione invii di posta massiva Module23Name=Energia Module23Desc=Monitoraggio del consumo energetico Module25Name=Ordini Cliente -Module25Desc=Sales order management +Module25Desc=Gestione ordini cliente Module30Name=Fatture -Module30Desc=Management of invoices and credit notes for customers. Management of invoices and credit notes for suppliers +Module30Desc=Gestione delle fatture e note di accredito per i clienti. Gestione di fatture e note di accredito per fornitori Module40Name=Fornitori -Module40Desc=Vendors and purchase management (purchase orders and billing of supplier invoices) +Module40Desc=Gestione fornitori e acquisti (ordini e fatture) Module42Name=Debug Logs Module42Desc=Strumenti di tracciamento (file, syslog, ...). Questi strumenti sono per scopi tecnici/correzione. Module49Name=Redazione Module49Desc=Gestione redattori Module50Name=Prodotti -Module50Desc=Management of Products +Module50Desc=Gestione prodotti Module51Name=Posta massiva Module51Desc=Modulo per la gestione dell'invio massivo di posta cartacea Module52Name=Magazzino -Module52Desc=Stock management (for products only) +Module52Desc=Gestione magazzino prodotti Module53Name=Servizi Module53Desc=Gestione servizi Module54Name=Contratti/Abbonamenti -Module54Desc=Management of contracts (services or recurring subscriptions) +Module54Desc=Gestione contratti (servizi o abbonamenti) Module55Name=Codici a barre Module55Desc=Gestione codici a barre Module56Name=Telefonia Module56Desc=Integrazione telefonia -Module57Name=Bank Direct Debit payments -Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries. +Module57Name=Ordini addebito diretto (SEPA) +Module57Desc=Gestione degli ordini di pagamento SEPA Direct Debit. Comprende anche la generazione di file SEPA per i paesi europei. Module58Name=ClickToDial Module58Desc=Integrazione di un sistema ClickToDial (per esempio Asterisk) Module59Name=Bookmark4u Module59Desc=Aggiungi la possibilità di generare account Bookmark4u da un account Dolibarr Module60Name=Stickers -Module60Desc=Management of stickers +Module60Desc=Gestione stickers Module70Name=Interventi Module70Desc=Gestione Interventi Module75Name=Spese di viaggio e note spese Module75Desc=Gestione spese di viaggio e note spese Module80Name=Spedizioni -Module80Desc=Shipments and delivery note management -Module85Name=Banche & Denaro +Module80Desc=Gestione spedizioni e bolla di consegna +Module85Name=Banche e cassa Module85Desc=Gestione di conti bancari o conti di cassa -Module100Name=External Site -Module100Desc=Add a link to an external website as a main menu icon. Website is shown in a frame under the top menu. +Module100Name=Sito esterno +Module100Desc=Aggiungi un collegamento ad un sito Web esterno come icona del menu principale. Il sito Web sarà visualizzato in un iframe. Module105Name=Mailman e SPIP Module105Desc=Interfaccia Mailman o SPIP per il modulo membri Module200Name=LDAP -Module200Desc=LDAP directory synchronization +Module200Desc=Sincronizzazione directory LDAP Module210Name=Postnuke Module210Desc=Integrazione Postnuke Module240Name=Esportazione dati Module240Desc=Strumento per esportare i dati di Dolibarr (con assistenti) Module250Name=Importazione dati -Module250Desc=Tool to import data into Dolibarr (with assistants) +Module250Desc=Strumento per importare dati in Dolibarr (con assistente) Module310Name=Membri Module310Desc=Gestione membri della fondazione Module320Name=Feed RSS -Module320Desc=Add a RSS feed to Dolibarr pages -Module330Name=Bookmarks & 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. +Module320Desc=Aggiungi un feed RSS alle pagine Dolibarr +Module330Name=Segnalibri e scorciatoie +Module330Desc=Crea collegamenti, sempre accessibili, alle pagine interne o esterne a cui accedi più frequentemente +Module400Name=Progetti o Opportunità +Module400Desc=Gestione di progetti ed opportunità. Puoi assegnare ogni elemento (fattura, ordini, proposte commerciali, interventi, ...) ad un progetto ed avere una vista trasversale dalla scheda del progetto Module410Name=Calendario web Module410Desc=Integrazione calendario web -Module500Name=Taxes & Special Expenses -Module500Desc=Management of other expenses (sale taxes, social or fiscal taxes, dividends, ...) +Module500Name=Tasse e spese speciali +Module500Desc=Amministrazione delle spese speciali quali tasse, contributi sociali, dividendi e salari. Module510Name=Stipendi -Module510Desc=Record and track employee payments +Module510Desc=Gestione salari e pagamenti dei dipendenti Module520Name=Prestiti Module520Desc=Gestione dei prestiti -Module600Name=Notifications on business event -Module600Desc=Send email notifications triggered by a business event: per user (setup defined on each user), per third-party contacts (setup defined on each third party) or by specific emails +Module600Name=Notifiche di eventi aziendali +Module600Desc=Inviare notifiche EMail (generate da eventi aziendali) ad utenti (impostazione definita per ogni utente) o contatti di terze parti (impostazione definita per ogni terza parte) o a email predefinite 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 for agenda events, go into the setup of module Agenda. Module610Name=Varianti prodotto -Module610Desc=Creation of product variants (color, size etc.) +Module610Desc=Creazione delle varianti di prodotto (colore, taglia etc.) Module700Name=Donazioni Module700Desc=Gestione donazioni -Module770Name=Expense Reports -Module770Desc=Manage expense reports claims (transportation, meal, ...) -Module1120Name=Vendor Commercial Proposals -Module1120Desc=Request vendor commercial proposal and prices +Module770Name=Rimborso spese +Module770Desc=Gestione delle richieste di rimborso spese (trasporti, pasti, ...) +Module1120Name=Richieste quotazioni fornitore +Module1120Desc=Gestione delle richieste di offerta e quotazioni verso i fornitori Module1200Name=Mantis Module1200Desc=Integrazione Mantis Module1520Name=Generazione dei documenti -Module1520Desc=Mass email document generation +Module1520Desc=Generazione di massa documenti di posta elettronica Module1780Name=Tag/categorie Module1780Desc=Crea tag / categorie (prodotti, clienti, fornitori, contatti o membri) Module2000Name=FCKeditor -Module2000Desc=Allow text fields to be edited/formatted using CKEditor (html) +Module2000Desc=Permette di usare un editor avanzato (CKEditor) per alcune aree di testo Module2200Name=Prezzi dinamici -Module2200Desc=Use maths expressions for auto-generation of prices +Module2200Desc=Utilizza espressioni matematiche per la generazione automatica dei prezzi Module2300Name=Processi pianificati Module2300Desc=Gestione delle operazioni pianificate Module2400Name=Eventi/Agenda -Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2400Desc=Gestione eventi/compiti e ordine del giorno. Registra manualmente eventi nell'agenda o consenti all'applicazione di registrare eventi automaticamente a scopo di monitoraggio. Questo è il modulo principale per una buona gestione delle relazioni con clienti e fornitori. Module2500Name=DMS / ECM -Module2500Desc=Document Management System / Electronic Content Management. Automatic organization of your generated or stored documents. Share them when you need. +Module2500Desc=Sistema di gestione documentale / Gestione elettronica dei contenuti. Organizzazione automatica dei documenti generati o archiviati. Condivisione con chi ne ha bisogno. Module2600Name=API/Web services (SOAP server) Module2600Desc=Attiva il server SOAP che fornisce i servizi di API Module2610Name=API/Web services (REST server) Module2610Desc=Attiva il server REST che fornisce i servizi di API Module2660Name=Chiamata WebServices (SOAP client) -Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Purchase orders are currently supported.) +Module2660Desc=Abilitare il client dei Web service Dolibarr (può essere utilizzato per inviare dati / richieste a server esterni. Attualmente sono supportati solo gli ordini di acquisto). Module2700Name=Gravatar -Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Needs Internet access +Module2700Desc=Usa il servizio online Gravatar (www.gravatar.com) per mostrare le foto degli utenti/membri. Necessita dell'accesso a Internet Module2800Desc=Client FTP Module2900Name=GeoIPMaxmind Module2900Desc=Localizzazione degli accessi tramite GeoIP Maxmind -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=Archivi inalterabili +Module3200Desc=Abilita un registro inalterabile degli eventi aziendali. Gli eventi sono archiviati in tempo reale. Il registro è una tabella di sola lettura degli eventi concatenati che possono essere esportati. Questo modulo potrebbe essere obbligatorio per alcuni paesi. Module4000Name=Risorse umane -Module4000Desc=Human resources management (management of department, employee contracts and feelings) +Module4000Desc=Gestione delle risorse umane (gestione dei dipartimenti e contratti dipendenti) Module5000Name=Multiazienda Module5000Desc=Permette la gestione di diverse aziende Module6000Name=Flusso di lavoro -Module6000Desc=Workflow management (automatic creation of object and/or automatic status change) +Module6000Desc=Gestione flussi di lavoro (creazione automatica di oggetti e / o cambio di stati automatico) Module10000Name=Siti web -Module10000Desc=Create websites (public) with a WYSIWYG 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=Leave Request Management -Module20000Desc=Define and track employee leave requests -Module39000Name=Product Lots -Module39000Desc=Lots, serial numbers, eat-by/sell-by date management for products +Module10000Desc=Crea siti Web (pubblici) con un editor WYSIWYG. Si tratta di un CMS orientato a webmaster o sviluppatori (richiesta conoscenza di linguaggio HTML e CSS). Basta configurare il proprio server Web (Apache, Nginx, ...) in modo che punti alla directory Dolibarr dedicata per averlo online su Internet con il proprio nome di dominio. +Module20000Name=Richieste ferie / permesso +Module20000Desc=Gestione delle richieste di ferie e permessi dei dipendenti aziendali +Module39000Name=Lotti di prodotto +Module39000Desc=Lotti, numeri seriali, gestione delle date di scadenza dei prodotti Module40000Name=Multicurrency -Module40000Desc=Use alternative currencies in prices and documents +Module40000Desc=Usa valute alternative in prezzi e documenti Module50000Name=PayBox -Module50000Desc=Offer customers a PayBox online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) +Module50000Desc=Modulo per offrire una pagina di pagamento che accetti pagamenti con carte di credito o debito via PayBox. Può essere usato per tutti i pagamenti dei clienti o solo per alcune specifiche tipologie di pagamenti in Dolibarr (fatture, ordini, ...) Module50100Name=Punti vendita SimplePOS Module50100Desc=Modulo per la creazione di un punto vendita SimplePOS (POS semplice) Module50150Name=Punti vendita TakePOS -Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). +Module50150Desc=Modulo Punto vendita TakePOS (touchscreen 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 ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) +Module50200Desc=Modulo per offrire una pagina di pagamento che accetti pagamenti PayPal (carte di credito/debito o credito PayPal). Può essere usato per tutti i pagamenti dei clienti o solo per alcune specifiche tipologie di pagamenti in Dolibarr (fatture, ordini, ...) Module50300Name=Stripe -Module50300Desc=Offer customers a Stripe online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) -Module50400Name=Accounting (double entry) -Module50400Desc=Accounting management (double entries, support general and auxiliary ledgers). Export the ledger in several other accounting software formats. +Module50300Desc=Offri ai clienti una pagina di pagamento online Stripe (carte di credito / debito). Questo modulo può essere usato per consentire ai tuoi clienti di effettuare pagamenti ad-hoc o pagamenti relativi a uno specifico oggetto Dolibarr (fattura, ordine ecc ...) +Module50400Name=Contabilità (partita doppia) +Module50400Desc=Gestione contabile (partita doppia, supporto per libri contabili principali e ausiliari). Esportazione del libro mastro in diversi altri formati per software contabili. Module54000Name=PrintIPP 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=Sondaggio, Indagine o Votazione -Module55000Desc=Create online polls, surveys or votes (like Doodle, Studs, RDVz etc...) +Module55000Desc=Modulo per creare sondaggi, indagini o feedback online (Doodle, Studs, Rdvz o simili) Module59000Name=Margini Module59000Desc=Modulo per gestire margini Module60000Name=Commissioni Module60000Desc=Modulo per gestire commissioni Module62000Name=Import-Export -Module62000Desc=Add features to manage Incoterms +Module62000Desc=Aggiunge funzioni per la gestione Incoterm Module63000Name=Risorse -Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events +Module63000Desc=Gestione risorse (stampanti, automobili, locali, ...) e loro utilizzo all'interno degli eventi Permission11=Vedere le fatture attive Permission12=Creare fatture attive Permission13=Annullare le fatture attive @@ -715,10 +718,10 @@ Permission109=Eliminare spedizioni Permission111=Vedere i conti bancari Permission112=Creare/modificare/cancellare e confrontare operazioni bancarie Permission113=Imposta conti finanziari (crea, gestire le categorie) -Permission114=Reconcile transactions +Permission114=Riconciliare transazioni Permission115=Operazioni di esportazione ed estratti conto Permission116=Trasferimenti tra conti -Permission117=Manage checks dispatching +Permission117=Gestire il deposito di assegni Permission121=Vedere soggetti terzi collegati all'utente Permission122=Creare/modificare terzi legati all'utente Permission125=Eliminare terzi legati all'utente @@ -737,7 +740,7 @@ Permission162=Crea/modifica contratti/abbonamenti Permission163=Attiva un servizio/sottoscrizione di un contratto Permission164=Disable a service/subscription of a contract Permission165=Elimina contratti / abbonamenti -Permission167=Esprta contratti +Permission167=Esportare contratti Permission171=Vedi viaggi e spese (propri e i suoi subordinati) Permission172=Crea/modifica nota spese Permission173=Elimina nota spese @@ -816,7 +819,7 @@ Permission401=Vedere sconti Permission402=Creare/modificare sconti Permission403=Convalidare sconti Permission404=Eliminare sconti -Permission430=Use Debug Bar +Permission430=Usa la barra di debug Permission511=Read payments of salaries Permission512=Create/modify payments of salaries Permission514=Delete payments of salaries @@ -838,11 +841,11 @@ Permission701=Vedere donazioni Permission702=Creare/modificare donazioni Permission703=Eliminare donazioni Permission771=Visualizzare le note spese (tue e dei tuoi subordinati) -Permission772=Create/modify expense reports -Permission773=Delete expense reports -Permission774=Read all expense reports (even for user not subordinates) -Permission775=Approve expense reports -Permission776=Pay expense reports +Permission772=Creare / modificare le note spese +Permission773=Eliminare le note spese +Permission774=Vedere tutte le note spese (anche per utenti non subordinati) +Permission775=Approvare le note spese +Permission776=Pagare le note spese Permission779=Esporta note spese Permission1001=Vedere magazzino Permission1002=Crea/modifica magazzini @@ -870,18 +873,18 @@ Permission1188=Delete purchase orders Permission1190=Approve (second approval) purchase orders Permission1201=Ottieni il risultato di un esportazione Permission1202=Creare/Modificare esportazioni -Permission1231=Read vendor invoices -Permission1232=Create/modify vendor invoices -Permission1233=Validate vendor invoices -Permission1234=Delete vendor invoices -Permission1235=Send vendor invoices by email +Permission1231=Visualizzare le fatture fornitori +Permission1232=Creare / modificare fatture fornitore +Permission1233=Convalidare fatture fornitore +Permission1234=Eliminare fatture fornitore +Permission1235=Inviare fatture fornitore tramite e-mail Permission1236=Export vendor invoices, attributes and payments Permission1237=Export purchase orders and their details Permission1251=Eseguire importazioni di massa di dati esterni nel database (data load) Permission1321=Esportare fatture attive, attributi e pagamenti Permission1322=Riaprire le fatture pagate Permission1421=Esporta Ordini Cliente e attributi -Permission2401=Read actions (events or tasks) linked to his user account (if owner of event or just assigned to) +Permission2401=Leggere le azioni (eventi o attività) collegate al suo account utente (se proprietario dell'evento) Permission2402=Creare/modificare azioni (eventi o compiti) personali Permission2403=Cancellare azioni (eventi o compiti) personali Permission2411=Vedere azioni (eventi o compiti) altrui @@ -908,7 +911,7 @@ Permission20002=Create/modify your leave requests (your leave and those of your Permission20003=Eliminare le richieste di ferie Permission20004=Read all leave requests (even of user not subordinates) Permission20005=Create/modify leave requests for everybody (even of user not subordinates) -Permission20006=Admin leave requests (setup and update balance) +Permission20006=Amministrazione richieste di ferie/permessi (impostazione e aggiornamento del bilancio) Permission20007=Approvare le richieste di ferie Permission23001=Leggi lavoro pianificato Permission23002=Crea / Aggiorna lavoro pianificato @@ -923,7 +926,7 @@ Permission50412=Write/Edit operations in ledger Permission50414=Delete operations in ledger Permission50415=Delete all operations by year and journal in ledger Permission50418=Export operations of the ledger -Permission50420=Report and export reports (turnover, balance, journals, ledger) +Permission50420=Report e report sulle esportazioni (fatturato, saldo, giornali, libro mastro) Permission50430=Define and close a fiscal period Permission50440=Manage chart of accounts, setup of accountancy Permission51001=Read assets @@ -943,25 +946,25 @@ Permission63004=Collega le risorse agli eventi DictionaryCompanyType=Tipo di soggetto terzo DictionaryCompanyJuridicalType=Entità legali di terze parti DictionaryProspectLevel=Liv. cliente potenziale -DictionaryCanton=States/Provinces +DictionaryCanton=Stati / Province DictionaryRegion=Regioni DictionaryCountry=Paesi DictionaryCurrency=Valute -DictionaryCivility=Title of civility +DictionaryCivility=Titoli personali e professionali DictionaryActions=Tipi di azioni/eventi DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=Aliquote IVA o Tasse di vendita -DictionaryRevenueStamp=Amount of tax stamps +DictionaryRevenueStamp=Ammontare dei valori bollati DictionaryPaymentConditions=Termini di Pagamento -DictionaryPaymentModes=Payment Modes +DictionaryPaymentModes=Tipi di pagamento DictionaryTypeContact=Tipi di contatti/indirizzi DictionaryTypeOfContainer=Website - Type of website pages/containers DictionaryEcotaxe=Ecotassa (WEEE) DictionaryPaperFormat=Formati di carta DictionaryFormatCards=Card formats -DictionaryFees=Expense report - Types of expense report lines +DictionaryFees=Note spesa - Tipi di righe delle note spesa DictionarySendingMethods=Metodi di spedizione -DictionaryStaff=Number of Employees +DictionaryStaff=Numero di dipendenti DictionaryAvailability=Tempi di consegna DictionaryOrderMethods=Metodi di ordinazione DictionarySource=Origine delle proposte/ordini @@ -973,21 +976,22 @@ DictionaryUnits=Unità DictionaryMeasuringUnits=Unità di misura DictionarySocialNetworks=Social networks DictionaryProspectStatus=Stato cliente potenziale -DictionaryHolidayTypes=Types of leave -DictionaryOpportunityStatus=Lead status for project/lead -DictionaryExpenseTaxCat=Expense report - Transportation categories -DictionaryExpenseTaxRange=Expense report - Range by transportation category +DictionaryHolidayTypes=Tipi di ferie/permessi +DictionaryOpportunityStatus=Stato opportunità per progetto/clienti potenziali +DictionaryExpenseTaxCat=Note spesa - Categorie di trasporto +DictionaryExpenseTaxRange=Note spesa: intervallo per categoria di trasporto SetupSaved=Impostazioni salvate SetupNotSaved=Impostazioni non salvate -BackToModuleList=Back to Module list -BackToDictionaryList=Back to Dictionaries list +BackToModuleList=Torna all'elenco dei moduli +BackToDictionaryList=Torna all'elenco dei dizionari TypeOfRevenueStamp=Type of tax stamp -VATManagement=Sales Tax Management -VATIsUsedDesc=By default when creating prospects, invoices, orders etc. the Sales Tax rate follows the active standard rule:<br>If the seller is not subject to Sales tax, then Sales tax defaults to 0. End of rule.<br>If the (seller's country = buyer's country), then the Sales tax by default equals the Sales tax of the product in the seller's country. End of rule.<br>If the seller and buyer are both in the European Community and goods are transport-related products (haulage, shipping, airline), the default VAT is 0. This rule is dependant on the seller's country - please consult with your accountant. The VAT should be paid by the buyer to the customs office in their country and not to the seller. End of rule.<br>If the seller and buyer are both in the European Community and the buyer is not a company (with a registered intra-Community VAT number) then the VAT defaults to the VAT rate of the seller's country. End of rule.<br>If the seller and buyer are both in the European Community and the buyer is a company (with a registered intra-Community VAT number), then the VAT is 0 by default. End of rule.<br>In any other case the proposed default is Sales tax=0. End of rule. -VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for cases like associations, individuals or small companies. +VATManagement=Gestione imposte sulle vendite +VATIsUsedDesc=Per impostazione predefinita quando si creano proposte commerciali, fatture, ordini ecc., L'aliquota IVA segue la regola standard attiva: <br> Se il venditore non è soggetto all'imposta sulle vendite, per impostazione predefinita l'imposta sulle vendite è 0. Fine della regola. <br> Se il (Paese del fornitore = Paese dell'acquirente), l'imposta sulle vendite per impostazione predefinita è uguale all'imposta sulle vendite del prodotto nel paese del fornitore. Fine della regola <br> Se il fornitore e l'acquirente sono entrambi nella Comunità Europea e le merci sono prodotti relativi al trasporto (trasporto, spedizione, compagnia aerea), l'IVA di default è 0. Questa regola dipende dal paese del fornitore - consultare il proprio commercialista. L'IVA deve essere pagata dall'acquirente all'ufficio doganale del proprio paese e non al venditore. Fine della regola <br> Se il fornitore e l'acquirente sono entrambi nella Comunità Europea e l'acquirente non è una società (con un numero di partita IVA intracomunitaria registrato), l'IVA si imposta automaticamente sull'aliquota IVA del paese del fornitore. Fine della regola <br> Se il fornitore e l'acquirente sono entrambi nella Comunità Europea e l'acquirente è una società (con una partita IVA intracomunitaria registrata), l'IVA è 0 per impostazione predefinita. Fine della regola <br> In tutti gli altri casi il valore predefinito proposto è IVA = 0. Fine della regola +VATIsNotUsedDesc=Per impostazione predefinita, l'imposta sulle vendite proposta è 0 che può essere utilizzata per casi come associazioni, privati o piccole aziende. VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Tariffa LocalTax1IsNotUsed=Non usare seconda tassa LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=Per impostazione predefinita la proposta di IRPF è 0. Fine della regola. LocalTax2IsUsedExampleES=In Spagna, liberi professionisti e freelance che forniscono servizi e le aziende che hanno scelto il regime fiscale modulare. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Acquisti-vendite CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,11 +1025,12 @@ CalcLocaltax2=Acquisti CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Vendite CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Descrizione (utilizzata in tutti i documenti per cui non esiste la traduzione) LabelOnDocuments=Descrizione sul documento -LabelOrTranslationKey=Label or translation key -ValueOfConstantKey=Value of a configuration constant -NbOfDays=No. of days +LabelOrTranslationKey=Etichetta o chiave di traduzione +ValueOfConstantKey=Valore di una costante +NbOfDays=Numero di giorni AtEndOfMonth=Alla fine del mese CurrentNext=Corrente/Successivo Offset=Scostamento @@ -1059,23 +1067,23 @@ Skin=Tema DefaultSkin=Skin di default MaxSizeList=Lunghezza massima elenchi DefaultMaxSizeList=Lunghezza massima predefinita elenchi -DefaultMaxSizeShortList=Default max length for short lists (i.e. in customer card) +DefaultMaxSizeShortList=Massima lunghezza di default per gli elenchi brevi (es in scheda cliente) MessageOfDay=Messaggio del giorno MessageLogin=Messaggio per la pagina di login LoginPage=Pagina di login BackgroundImageLogin=Immagine di sfondo PermanentLeftSearchForm=Modulo di ricerca permanente nel menu di sinistra DefaultLanguage=Lingua predefinita (codice lingua) -EnableMultilangInterface=Enable multilanguage support +EnableMultilangInterface=Abilita supporto multilingua EnableShowLogo=Abilita la visualizzazione del logo CompanyInfo=Società/Organizzazione -CompanyIds=Company/Organization identities +CompanyIds=Informazioni società/fondazione CompanyName=Nome CompanyAddress=Indirizzo CompanyZip=CAP CompanyTown=Città CompanyCountry=Paese -CompanyCurrency=Principali valute +CompanyCurrency=Valuta principale CompanyObject=Mission della società IDCountry=ID paese Logo=Logo @@ -1091,26 +1099,26 @@ Alerts=Avvisi e segnalazioni DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for: DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element. Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed -Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Project not closed in time +Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Progetto non chiuso in tempo Delays_MAIN_DELAY_TASKS_TODO=Planned task (project tasks) not completed Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Order not processed Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Purchase order not processed -Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Proposal not closed -Delays_MAIN_DELAY_PROPALS_TO_BILL=Proposal not billed +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Proposta non chiusa +Delays_MAIN_DELAY_PROPALS_TO_BILL=Proposta non fatturata Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Service to activate Delays_MAIN_DELAY_RUNNING_SERVICES=Expired service -Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Unpaid vendor invoice +Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Fattura fornitore non pagata Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Unpaid customer invoice Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Pending bank reconciliation Delays_MAIN_DELAY_MEMBERS=Delayed membership fee Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Check deposit not done -Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve +Delays_MAIN_DELAY_EXPENSEREPORTS=Note spese da approvare Delays_MAIN_DELAY_HOLIDAYS=Invia richieste da approvare SetupDescription1=Prima di iniziare ad utilizzare Dolibarr si devono definire alcuni parametri iniziali ed abilitare/configurare i moduli. SetupDescription2=Le 2 seguenti sezioni sono obbligatorie (le prime 2 sezioni nel menu Impostazioni): -SetupDescription3=<a href="%s">%s -> %s</a><br>Parametri di base utilizzati per personalizzare il comportamento predefinito della tua applicazione (es: caratteristiche relative alla nazione). -SetupDescription4=<a href="%s">%s -> %s</a><br>Questo software è una suite composta da molteplici moduli/applicazioni, tutti più o meno indipendenti. I moduli rilevanti per le tue necessità devono essere abilitati e configurati. Nuovi oggetti/opzioni vengono aggiunti ai menu quando un modulo viene attivato. -SetupDescription5=Other Setup menu entries manage optional parameters. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription5=Altre voci di menu consentono la gestione di parametri opzionali. LogEvents=Eventi di audit di sicurezza Audit=Audit InfoDolibarr=Informazioni su Dolibarr @@ -1127,11 +1135,11 @@ SecurityEventsPurged=Eventi di sicurezza eliminati LogEventDesc=Enable logging for specific security events. Administrators the log via menu <b>%s - %s</b>. Warning, this feature can generate a large amount of data in the database. AreaForAdminOnly=I parametri di setup possono essere definiti solo da utenti di tipo <b>amministratore</b>. SystemInfoDesc=Le informazioni di sistema sono dati tecnici visibili in sola lettura e solo dagli amministratori. -SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" or "%s" button at the bottom of the page. -AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. +SystemAreaForAdminOnly=Questa area è disponibile solo per gli utenti amministratori. Le autorizzazioni utente Dolibarr non possono modificare questa limitazione. +CompanyFundationDesc=Modifica le informazioni dell'azienda / fondazione. Fai clic sul pulsante "%s" nella parte inferiore della pagina. +AccountantDesc=Se hai un contabile / contabile esterno, puoi modificare qui le sue informazioni. AccountantFileNumber=Accountant code -DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. +DisplayDesc=Qui è possibile scegliere i parametri relativi all'aspetto di Dolibarr AvailableModules=Moduli disponibili ToActivateModule=Per attivare i moduli, andare nell'area <b>Impostazioni</b> (Home->Impostazioni->Moduli). SessionTimeOut=Timeout delle sessioni @@ -1144,16 +1152,16 @@ TriggerAlwaysActive=I trigger in questo file sono sempre attivi, indipendentemen TriggerActiveAsModuleActive=I trigger in questo file sono attivi se il modulo <b>%s</b> è attivo. GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. DictionaryDesc=Inserire tutti i dati di riferimento. È possibile aggiungere i propri valori a quelli di default. -ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting. For a full list of the parameters available <a href="https://wiki.dolibarr.org/index.php/Setup_Other#List_of_known_hidden_options" title="External Site - opens in a new window" target="_blank">see here</a>. +ConstDesc=Questa pagina consente di modificare (sovrascrivere) i parametri non disponibili in altre pagine. Questi sono parametri principalmente riservati agli sviluppatori o per la risoluzione avanzata dei problemi. MiscellaneousDesc=Definire qui tutti gli altri parametri relativi alla sicurezza. LimitsSetup=Limiti/impostazioni di precisione -LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here -MAIN_MAX_DECIMALS_UNIT=Max. decimals for unit prices -MAIN_MAX_DECIMALS_TOT=Max. decimals for total prices -MAIN_MAX_DECIMALS_SHOWN=Max. decimals for prices <b>shown on screen</b>. Add an ellipsis <b>...</b> after this parameter (e.g. "2...") if you want to see "<b>...</b>" suffixed to the truncated price. -MAIN_ROUNDING_RULE_TOT=Step of rounding range (for countries where rounding is done on something other than base 10. For example, put 0.05 if rounding is done by 0.05 steps) +LimitsDesc=Da qui è possibile definire i limiti e la precisione utilizzati da Dolibarr. +MAIN_MAX_DECIMALS_UNIT=Limite massimo di decimali per i prezzi unitari +MAIN_MAX_DECIMALS_TOT=Limite massimo di decimali per il totale dei prezzi. +MAIN_MAX_DECIMALS_SHOWN=Limite massimo dei decimali per i prezzi <b>visualizzati a schermo</b> (Aggiungi <b>...</b> dopo tale numero (es. "2...") se vuoi visualizzare <b>tre puntini</b> per indicare il troncamento del numero). +MAIN_ROUNDING_RULE_TOT=Regola per l'arrotondamento (per i pochi paesi in cui l'arrotondamento non è calcolato in base 10). Per esempio, inserisci 0.05 se l'arrotondamento viene fatto a step di 0.05 UnitPriceOfProduct=Prezzo unitario netto di un prodotto -TotalPriceAfterRounding=Total price (excl/vat/incl tax) after rounding +TotalPriceAfterRounding=Prezzo totale (IVA esclusa / IVA inclusa) dopo l'arrotondamento ParameterActiveForNextInputOnly=Parametro valido esclusivamente per il prossimo inserimento NoEventOrNoAuditSetup=No security event has been logged. This is normal if Audit has not been enabled in the "Setup - Security - Events" page. NoEventFoundWithCriteria=No security event has been found for this search criteria. @@ -1170,15 +1178,15 @@ RestoreDesc3=Restore the database structure and data from a backup dump file int RestoreMySQL=Importa MySQL ForcedToByAModule= Questa regola è impsotata su <b>%s</b> da un modulo attivo PreviousDumpFiles=Existing backup files -PreviousArchiveFiles=Existing archive files -WeekStartOnDay=First day of the week +PreviousArchiveFiles=Archivio files esistente +WeekStartOnDay=Primo giorno della settimana RunningUpdateProcessMayBeRequired=Running the upgrade process seems to be required (Program version %s differs from Database version %s) YouMustRunCommandFromCommandLineAfterLoginToUser=È necessario eseguire questo comando dal riga di comando dopo il login in una shell con l'utente <b>%s</b>. YourPHPDoesNotHaveSSLSupport=Il PHP del server non supporta SSL DownloadMoreSkins=Scarica altre skin SimpleNumRefModelDesc=Returns the reference number with format %syymm-nnnn where yy is year, mm is month and nnnn is sequential with no reset -ShowProfIdInAddress=Show professional id with addresses -ShowVATIntaInAddress=Hide intra-Community VAT number with addresses +ShowProfIdInAddress=Nei documenti mostra identità professionale completa di: +ShowVATIntaInAddress=Nascondi il numero di partita IVA intracomunitaria negli indirizzi TranslationUncomplete=Traduzione incompleta MAIN_DISABLE_METEO=Disable meteorological view MeteoStdMod=Standard mode @@ -1188,31 +1196,31 @@ MeteoPercentageModEnabled=Percentage mode enabled MeteoUseMod=Clicca per usare %s TestLoginToAPI=Test login per API ProxyDesc=Some features of Dolibarr require internet access. Define here the internet connection parameters such as access through a proxy server if necessary. -ExternalAccess=External/Internet Access +ExternalAccess=Accesso esterno / Internet MAIN_PROXY_USE=Use a proxy server (otherwise access is direct to the internet) MAIN_PROXY_HOST=Proxy server: Name/Address MAIN_PROXY_PORT=Proxy server: Port MAIN_PROXY_USER=Proxy server: Login/User MAIN_PROXY_PASS=Proxy server: Password -DefineHereComplementaryAttributes=Define here any additional/custom attributes that you want to be included for: %s +DefineHereComplementaryAttributes=Definire gli eventuali attributi aggiuntivi / campi personalizzati che devono essere inclusi negli oggetti: %s ExtraFields=Campi extra -ExtraFieldsLines=Complementary attributes (lines) -ExtraFieldsLinesRec=Complementary attributes (templates invoices lines) -ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) -ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) +ExtraFieldsLines=Attributi complementari (righe) +ExtraFieldsLinesRec=Attributi complementari (righe di template di fattura) +ExtraFieldsSupplierOrdersLines=Attributi complementari (righe ordine) +ExtraFieldsSupplierInvoicesLines=Attributi complementari (righe di fattura) ExtraFieldsThirdParties=Attributi complementari (soggetto terzo) -ExtraFieldsContacts=Complementary attributes (contacts/address) +ExtraFieldsContacts=Attributi complementari (contatti / indirizzo) ExtraFieldsMember=Attributi Complementari (membri) ExtraFieldsMemberType=Attributi Complementari (tipo di membro) ExtraFieldsCustomerInvoices=Attributi aggiuntivi (fatture) -ExtraFieldsCustomerInvoicesRec=Complementary attributes (templates invoices) +ExtraFieldsCustomerInvoicesRec=Attributi complementari (template di fattura) ExtraFieldsSupplierOrders=Attributi Complementari (ordini) ExtraFieldsSupplierInvoices=Attributi Complementari (fatture) ExtraFieldsProject=Attributi Complementari (progetti) ExtraFieldsProjectTask=Attributi Complementari (attività) -ExtraFieldsSalaries=Complementary attributes (salaries) +ExtraFieldsSalaries=Attributi complementari (stipendi) ExtraFieldHasWrongValue=L'attributo %s ha un valore errato. -AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space +AlphaNumOnlyLowerCharsAndNoSpace=solo caratteri alfanumerici e caratteri minuscoli senza spazio SendmailOptionNotComplete=Attenzione: su alcuni sistemi Linux, per poter inviare email, la configurazione di sendmail deve contenere l'opzione -ba (il parametro mail.force_extra_parameters nel file php.ini). Se alcuni destinatari non ricevono messaggi di posta elettronica, provate a modificare questo parametro con mail.force_extra_parameters =-BA). PathToDocuments=Percorso documenti PathDirectory=Percorso directory @@ -1233,7 +1241,7 @@ TotalNumberOfActivatedModules=Applicazioni/moduli attivi: <b>%s</b> / <b>%s</b> YouMustEnableOneModule=Devi abilitare almeno un modulo ClassNotFoundIntoPathWarning=Class %s not found in PHP path YesInSummer=Si in estate -OnlyFollowingModulesAreOpenedToExternalUsers=Note, only the following modules are available to external users (irrespective of the permissions of such users) and only if permissions are granted:<br> +OnlyFollowingModulesAreOpenedToExternalUsers=Nota, solo i seguenti moduli sono disponibili per gli utenti esterni (indipendentemente dalle autorizzazioni di tali utenti) e solo se le autorizzazioni sono concesse: <br> SuhosinSessionEncrypt=Sessioni salvate con criptazione tramite Suhosin ConditionIsCurrently=La condizione corrente è %s YouUseBestDriver=You use driver %s which is the best driver currently available. @@ -1261,16 +1269,18 @@ SetupPerso=Secondo la tua configurazione PasswordPatternDesc=Password pattern description ##### Users setup ##### RuleForGeneratedPasswords=Rules to generate and validate passwords -DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page +DisableForgetPasswordLinkOnLogonPage=Non mostrare il link "Password dimenticata?" nella pagina di accesso UsersSetup=Impostazioni modulo utenti -UserMailRequired=Email required to create a new user +UserMailRequired=È obbligatorio inserire un indirizzo email per creare un nuovo utente +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Impostazioni modulo risorse umane ##### Company setup ##### CompanySetup=Impostazioni modulo aziende -CompanyCodeChecker=Options for automatic generation of customer/vendor codes -AccountCodeManager=Options for automatic generation of customer/vendor accounting codes -NotificationsDesc=Email notifications can be sent automatically for some Dolibarr events.<br>Recipients of notifications can be defined: +CompanyCodeChecker=Opzioni per la generazione automatica di codici cliente / fornitore +AccountCodeManager=Opzioni per la generazione automatica di codici contabili cliente / fornitore +NotificationsDesc=Le notifiche e-mail possono essere inviate automaticamente per alcuni eventi Dolibarr. <br> I destinatari delle notifiche possono essere definiti: NotificationsDescUser=* per user, one user at a time. NotificationsDescContact=* per third-party contacts (customers or vendors), one contact at a time. NotificationsDescGlobal=* or by setting global email addresses in this setup page. @@ -1295,19 +1305,19 @@ BillsPDFModules=Modelli fattura in pdf BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Forza la data della fattura alla data di convalida -SuggestedPaymentModesIfNotDefinedInInvoice=Suggerire le modalità predefinite di pagamento delle fatture, se non definite già nella fattura +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Testo libero sulle fatture WatermarkOnDraftInvoices=Bozze delle fatture filigranate (nessuna filigrana se vuoto) PaymentsNumberingModule=Modello per la numerazione dei documenti -SuppliersPayment=Vendor payments -SupplierPaymentSetup=Vendor payments setup +SuppliersPayment=Pagamenti fornitori +SupplierPaymentSetup=Impostazioni pagamenti fornitori ##### Proposals ##### PropalSetup=Impostazioni proposte commerciali ProposalsNumberingModules=Modelli di numerazione della proposta commerciale ProposalsPDFModules=Modelli per pdf proposta commerciale -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Testo libero sulle proposte commerciali WatermarkOnDraftProposal=Bozze dei preventivi filigranate (nessuna filigrana se vuoto) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Impostazione gestione Ordini Cliente OrdersNumberingModules=Modelli di numerazione ordini OrdersModelModule=Modelli per ordini in pdf @@ -1509,12 +1520,12 @@ CacheByClient=Cache per browser CompressionOfResources=Compressione delle risposte HTTP CompressionOfResourcesDesc=For example using the Apache directive "AddOutputFilterByType DEFLATE" TestNotPossibleWithCurrentBrowsers=Con i browser attuali l'individuazione automatica non è possibile -DefaultValuesDesc=Here you may define the default value you wish to use when creating a new record, and/or default filters or the sort order when you list records. -DefaultCreateForm=Default values (to use on forms) +DefaultValuesDesc=Qui è possibile definire il valore predefinito che si desidera utilizzare durante la creazione di un nuovo record e / o i filtri predefiniti o l'ordinamento quando si elencano i record. +DefaultCreateForm=Valori predefiniti (da utilizzare nei form) DefaultSearchFilters=Filtri di ricerca predefiniti -DefaultSortOrder=Default sort orders -DefaultFocus=Default focus fields -DefaultMandatory=Mandatory form fields +DefaultSortOrder=Ordinamento predefinito +DefaultFocus=Campi con focus predefinito +DefaultMandatory=Campi obbligatori ##### Products ##### ProductSetup=Impostazioni modulo prodotti ServiceSetup=Impostazioni modulo servizi @@ -1577,7 +1588,7 @@ MailingEMailFrom=Sender email (From) for emails sent by emailing module MailingEMailError=Return Email (Errors-to) for emails with errors MailingDelay=Seconds to wait after sending next message ##### Notification ##### -NotificationSetup=Email Notification module setup +NotificationSetup=Impostazioni modulo notifiche email NotificationEMailFrom=Sender email (From) for emails sent by the Notifications module FixedEmailTarget=Destinatario ##### Sendings ##### @@ -1603,7 +1614,7 @@ FCKeditorForUserSignature=WYSIWIG creazione/modifica della firma utente FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) FCKeditorForTicket=Creazione / edizione WYSIWIG per i biglietti ##### Stock ##### -StockSetup=Stock module setup +StockSetup=Impostazioni modulo magazzino IfYouUsePointOfSaleCheckModule=If you use the Point of Sale module (POS) provided by default or an external module, this setup may be ignored by your POS module. Most POS modules are designed by default to create an invoice immediately and decrease stock irrespective of the options here. So if you need or not to have a stock decrease when registering a sale from your POS, check also your POS module setup. ##### Menu ##### MenuDeleted=Menu soppresso @@ -1650,7 +1661,7 @@ SupposedToBeInvoiceDate=Alla data della fattura Buy=Acquista Sell=Vendi InvoiceDateUsed=Data utilizzata per la fatturazione -YourCompanyDoesNotUseVAT=Your company has been defined to not use VAT (Home - Setup - Company/Organization), so there is no VAT options to setup. +YourCompanyDoesNotUseVAT=La tua azienda è stata definita per non utilizzare l'IVA (Home - Installazione - Azienda / Organizzazione), quindi non ci sono opzioni IVA da impostare. AccountancyCode=Accounting Code AccountancyCodeSell=Codice contabilità vendite AccountancyCodeBuy=Codice contabilità acquisti @@ -1662,7 +1673,7 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> AGENDA_USE_EVENT_TYPE_DEFAULT=Automatically set this default value for type of event in event create form AGENDA_DEFAULT_FILTER_TYPE=Automatically set this type of event in search filter of agenda view AGENDA_DEFAULT_FILTER_STATUS=Automatically set this status for events in search filter of agenda view -AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda +AGENDA_DEFAULT_VIEW=Quale scheda si desidera aprire per impostazione predefinita quando si seleziona il menu Agenda AGENDA_REMINDER_EMAIL=Enable event reminder <b>by emails</b> (remind option/delay can be defined on each event). Note: Module <strong>%s</strong> must be enabled and correctly setup to have reminder sent at the correct frequency. AGENDA_REMINDER_BROWSER=Enable event reminder <b>on user's browser</b> (when event date is reached, each user is able to refuse this from the browser confirmation question) AGENDA_REMINDER_BROWSER_SOUND=Attiva i suoni per le notifiche @@ -1691,7 +1702,7 @@ CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dat CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) ##### Bookmark ##### BookmarkSetup=Impostazioni modulo segnalibri -BookmarkDesc=This module allows you to manage bookmarks. You can also add shortcuts to any Dolibarr pages or external web sites on your left menu. +BookmarkDesc=Questo modulo consente di gestire i segnalibri web. È possibile aggiungere collegamenti a pagine Dolibarr o a qualsiasi altro sito web esterno al menu di sinistra. NbOfBoomarkToShow=Numero massimo dei segnalibri da mostrare nel menu di sinistra ##### WebServices ##### WebServicesSetup=Impostazioni modulo webservices @@ -1704,8 +1715,8 @@ ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscel ApiProductionMode=Enable production mode (this will activate use of a cache for services management) ApiExporerIs=Puoi controllare e testare le API all'indirizzo OnlyActiveElementsAreExposed=Vengono esposti solo elementi correlati ai moduli abilitati -ApiKey=Key for API -WarningAPIExplorerDisabled=The API explorer has been disabled. API explorer is not required to provide API services. It is a tool for developer to find/test REST APIs. If you need this tool, go into setup of module API REST to activate it. +ApiKey=Chiave per API +WarningAPIExplorerDisabled=L'API Explorer è stato disabilitato. API Explorer non è tenuto a fornire servizi API. È uno strumento per gli sviluppatori per trovare / testare le API REST. Se hai bisogno di questo strumento, vai all'installazione del modulo API REST per attivarlo. ##### Bank ##### BankSetupModule=Impostazioni modulo banca/cassa FreeLegalTextOnChequeReceipts=Free text on check receipts @@ -1719,11 +1730,11 @@ ChequeReceiptsNumberingModule=Check Receipts Numbering Module MultiCompanySetup=Impostazioni modulo multiazienda ##### Suppliers ##### SuppliersSetup=Vendor module setup -SuppliersCommandModel=Complete template of Purchase Order +SuppliersCommandModel=Modello completo dell'ordine d'acquisto SuppliersCommandModelMuscadet=Complete template of Purchase Order -SuppliersInvoiceModel=Complete template of Vendor Invoice -SuppliersInvoiceNumberingModel=Vendor invoices numbering models -IfSetToYesDontForgetPermission=If set to yes, don't forget to provide permissions to groups or users allowed for the second approval +SuppliersInvoiceModel=Modello completo di fattura fornitore +SuppliersInvoiceNumberingModel=Modello per la numerazione delle fatture fornitore +IfSetToYesDontForgetPermission=Se impostato su un valore non nullo, non dimenticare di fornire autorizzazioni a gruppi o utenti autorizzati per la seconda approvazione ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=Impostazioni modulo GeoIP Maxmind PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.<br>Examples:<br>/usr/local/share/GeoIP/GeoIP.dat<br>/usr/share/GeoIP/GeoIP.dat<br>/usr/share/GeoIP/GeoLite2-Country.mmdb @@ -1749,7 +1760,7 @@ DeleteFiscalYear=Elimina periodo di esercizio ConfirmDeleteFiscalYear=Vuoi davvero cancellare questo periodo di esercizio? ShowFiscalYear=Mostra periodo di esercizio AlwaysEditable=Può essere modificato in qualsiasi momento -MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) +MAIN_APPLICATION_TITLE=Forza il nome visibile dell'applicazione (avviso: l'impostazione del proprio nome qui potrebbe interrompere la funzionalità di accesso alla compilazione automatica quando si utilizza l'applicazione mobile DoliDroid) NbMajMin=Numero minimo di caratteri maiuscoli NbNumMin=Numero minimo di caratteri numerici NbSpeMin=Numero minimo di caratteri speciali @@ -1764,36 +1775,36 @@ ExpenseReportsSetup=Impostazioni del modulo note spese TemplatePDFExpenseReports=Document templates to generate expense report document ExpenseReportsIkSetup=Setup of module Expense Reports - Milles index ExpenseReportsRulesSetup=Setup of module Expense Reports - Rules -ExpenseReportNumberingModules=Expense reports numbering module +ExpenseReportNumberingModules=Modelli di numerazione delle note spesa NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. -YouMayFindNotificationsFeaturesIntoModuleNotification=You may find options for email notifications by enabling and configuring the module "Notification". -ListOfNotificationsPerUser=List of automatic notifications per user* +YouMayFindNotificationsFeaturesIntoModuleNotification=È possibile trovare opzioni per le notifiche e-mail abilitando e configurando il modulo 'Notifiche di eventi lavorativi' +ListOfNotificationsPerUser=Elenco delle notifiche automatiche per utente* ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact** -ListOfFixedNotifications=List of automatic fixed notifications -GoOntoUserCardToAddMore=Go to the tab "Notifications" of a user to add or remove notifications for users +ListOfFixedNotifications=Elenco di notifiche fisse automatiche +GoOntoUserCardToAddMore=Vai alla scheda "Notifiche" di un utente per aggiungere o rimuovere le notifiche per gli utenti GoOntoContactCardToAddMore=Go on the tab "Notifications" of a third party to add or remove notifications for contacts/addresses Threshold=Soglia -BackupDumpWizard=Wizard to build the database dump file +BackupDumpWizard=Procedura guidata per creare file di backup del database (dump) BackupZipWizard=Wizard to build the archive of documents directory SomethingMakeInstallFromWebNotPossible=Installation of external module is not possible from the web interface for the following reason: SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is a manual process only a privileged user may perform. InstallModuleFromWebHasBeenDisabledByFile=Install of external module from application has been disabled by your administrator. You must ask him to remove the file <strong>%s</strong> to allow this feature. ConfFileMustContainCustom=Installing or building an external module from application need to save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to add the 2 directive lines:<br><strong>$dolibarr_main_url_root_alt='/custom';</strong><br><strong>$dolibarr_main_document_root_alt='%s/custom';</strong> HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over -HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) -HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +HighlightLinesColor=Evidenzia il colore della linea quando passa il mouse (usa 'ffffff' per nessuna evidenziazione) +HighlightLinesChecked=Evidenzia il colore della linea quando è selezionata (usa 'ffffff' per nessuna evidenziazione) TextTitleColor=Colore del testo del titolo della pagina LinkColor=Colore dei link PressF5AfterChangingThis=Premi CTRL + F5 sulla tastiera o cancella la cache del browser per rendere effettiva la modifica di questo parametro NotSupportedByAllThemes=Funziona con il tema Eldy ma non è supportato da tutti gli altri temi -BackgroundColor=Background color -TopMenuBackgroundColor=Background color for Top menu +BackgroundColor=Colore di sfondo +TopMenuBackgroundColor=Colore di sfondo menù in alto TopMenuDisableImages=Nascondi le icone nel menu superiore -LeftMenuBackgroundColor=Background color for Left menu +LeftMenuBackgroundColor=Colore di sfondo menù laterale BackgroundTableTitleColor=Colore di sfondo della riga di intestazione -BackgroundTableTitleTextColor=Text color for Table title line -BackgroundTableLineOddColor=Background color for odd table lines -BackgroundTableLineEvenColor=Background color for even table lines +BackgroundTableTitleTextColor=Colore del testo per la riga del titolo delle tabelle +BackgroundTableLineOddColor=Colore di sfondo per le linee dispari delle tabelle +BackgroundTableLineEvenColor=Colore di sfondo per le linee pari delle tabelle MinimumNoticePeriod=Periodo minimo di avviso (le richieste di ferie/permesso dovranno essere effettuate prima di questo periodo) NbAddedAutomatically=Numero di giorni aggiunti ai contatori di utenti (automaticamente) ogni mese EnterAnyCode=Questo campo contiene un riferimento per identificare la linea. Inserisci qualsiasi valore di tua scelta, ma senza caratteri speciali. @@ -1884,19 +1895,19 @@ RemoveSpecialChars=Rimuovi caratteri speciali COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter su clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicazione non consentita -GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) -GDPRContactDesc=If you store data about European companies/citizens, you can name the contact who is responsible for the General Data Protection Regulation here -HelpOnTooltip=Help text to show on tooltip -HelpOnTooltipDesc=Put text or a translation key here for the text to show in a tooltip when this field appears in a form +GDPRContact=DPO (Data Protection Officer) o in italiano RPD (Responsabile della Protezione dei Dati) +GDPRContactDesc=Se memorizzi dati relativi a società / cittadini europei, puoi memorizzare qui il contatto responsabile del trattamento dei dati personali/sensibili +HelpOnTooltip=Testo di aiuto da mostrare come tooltip +HelpOnTooltipDesc=Inserisci qui il testo o una chiave di traduzione affinché il testo sia mostrato nel tooltip quando questo campo appare in un form YouCanDeleteFileOnServerWith=You can delete this file on the server with Command Line:<br>%s ChartLoaded=Chart of account loaded SocialNetworkSetup=Setup of module Social Networks EnableFeatureFor=Enable features for <strong>%s</strong> VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to <strong>Off</strong> in the menu %s - %s, so Sales tax or Vat used will always be 0 for sales. -SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents -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. +SwapSenderAndRecipientOnPDF=Scambia la posizione dell'indirizzo del mittente e del destinatario sui documenti PDF +FeatureSupportedOnTextFieldsOnly=Attenzione, funzionalità supportata solo nei campi di testo. Inoltre, è necessario impostare un parametro URL action = create o action = edit OPPURE il nome della pagina deve terminare con 'new.php' per attivare questa funzione. 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 records automatically (like leads). +EmailCollectorDescription=Aggiungi un lavoro programmato e una pagina di configurazione per scansionare regolarmente caselle di posta elettronica (usando il protocollo IMAP) e registrare le email ricevute nella tua applicazione, nel posto giusto e / o creare automaticamente alcuni record (come i lead). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server MailboxSourceDirectory=Mailbox source directory @@ -1917,7 +1928,7 @@ RecordEvent=Record email event CreateLeadAndThirdParty=Crea Opportunità (e Soggetto terzo se necessario) CreateTicketAndThirdParty=Crea Ticket (e Soggetto terzo se necessario) CodeLastResult=Ultimo codice risultato -NbOfEmailsInInbox=Number of emails in source directory +NbOfEmailsInInbox=Numero di e-mail nella directory di origine LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) WithDolTrackingID=Dolibarr Tracking ID found @@ -1926,8 +1937,8 @@ FormatZip=CAP MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree OperationParamDesc=Define values to use for action, or how to extract values. For example:<br>objproperty1=SET:abc<br>objproperty1=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:abc<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey.*[^\\s]+(.*)<br>options_myextrafield=EXTRACT:SUBJECT:([^\\s]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties. -OpeningHours=Opening hours -OpeningHoursDesc=Enter here the regular opening hours of your company. +OpeningHours=Orari di apertura +OpeningHoursDesc=Inserisci gli orari di apertura regolare della tua azienda. ResourceSetup=Configuration of Resource module UseSearchToSelectResource=Utilizza il form di ricerca per scegliere una risorsa (invece della lista a tendina) DisabledResourceLinkUser=Disattiva funzionalità per collegare una risorsa agli utenti @@ -1936,10 +1947,10 @@ EnableResourceUsedInEventCheck=Abilitare la funzione per verificare se una risor ConfirmUnactivation=Conferma reset del modulo 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_OPTIMIZEFORTEXTBROWSER=Semplifica l'interfaccia per i non vedenti MAIN_OPTIMIZEFORTEXTBROWSERDesc=Enable this option if you are a blind person, or if you use the application from a text browser like Lynx or Links. -MAIN_OPTIMIZEFORCOLORBLIND=Change interface's color for color blind person -MAIN_OPTIMIZEFORCOLORBLINDDesc=Enable this option if you are a color blind person, in some case interface will change color setup to increase contrast. +MAIN_OPTIMIZEFORCOLORBLIND=Cambia il colore dell'interfaccia per i non vedenti +MAIN_OPTIMIZEFORCOLORBLINDDesc=Abilita questa opzione se sei daltonico, in alcuni casi l'interfaccia cambierà la configurazione del colore per aumentare il contrasto. Protanopia=Protanopia Deuteranopes=Deuteranopes Tritanopes=Tritanopes @@ -1948,17 +1959,18 @@ DefaultCustomerType=Default thirdparty type for "New customer" creation form ABankAccountMustBeDefinedOnPaymentModeSetup=Note: The bank account must be defined on the module of each payment mode (Paypal, Stripe, ...) to have this feature working. RootCategoryForProductsToSell=Root category of products to sell RootCategoryForProductsToSellDesc=If defined, only products inside this category or childs of this category will be available in the Point Of Sale -DebugBar=Debug Bar +DebugBar=Barra di debug DebugBarDesc=Toolbar that comes with a plenty of tools to simplify debugging -DebugBarSetup=DebugBar Setup +DebugBarSetup=Impostazione barra di debug GeneralOptions=General Options LogsLinesNumber=Number of lines to show on logs tab -UseDebugBar=Use the debug bar +UseDebugBar=Usa la barra di debug DEBUGBAR_LOGS_LINES_NUMBER=Number of last log lines to keep in console WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramaticaly output ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Funzione non disponibile quando la ricezione del modulo è abilitata EmailTemplate=Modello per le e-mail EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/it_IT/banks.lang b/htdocs/langs/it_IT/banks.lang index 380091e9351..fad1a61d848 100644 --- a/htdocs/langs/it_IT/banks.lang +++ b/htdocs/langs/it_IT/banks.lang @@ -17,7 +17,7 @@ CurrentAccounts=Conti correnti SavingAccounts=Conti di risparmio ErrorBankLabelAlreadyExists=Etichetta banca già esistente BankBalance=Saldo -BankBalanceBefore=Saldo prima +BankBalanceBefore=Bilancio precedente BankBalanceAfter=Saldo dopo BalanceMinimalAllowed=Saldo minimo consentito BalanceMinimalDesired=Saldo minimo voluto @@ -42,7 +42,7 @@ AccountStatementShort=Est. conto AccountStatements=Estratti conto LastAccountStatements=Ultimi estratti conto IOMonthlyReporting=Report mensile -BankAccountDomiciliation=Bank address +BankAccountDomiciliation=Indirizzo banca BankAccountCountry=Paese del conto BankAccountOwner=Nome titolare BankAccountOwnerAddress=Indirizzo titolare @@ -139,7 +139,7 @@ AllAccounts=Tutte le banche e le casse BackToAccount=Torna al conto ShowAllAccounts=Mostra per tutti gli account FutureTransaction=Future transaction. Unable to reconcile. -SelectChequeTransactionAndGenerate=Seleziona gli assegni dar includere nella ricevuta di versamento e clicca su "Crea". +SelectChequeTransactionAndGenerate=Seleziona gli assegni da includere nella ricevuta di versamento e clicca su "Crea". InputReceiptNumber=Scegliere l'estratto conto collegato alla conciliazione. Utilizzare un valore numerico ordinabile: AAAAMM o AAAAMMGG EventualyAddCategory=Infine, specificare una categoria in cui classificare i record ToConciliate=Da conciliare? diff --git a/htdocs/langs/it_IT/bills.lang b/htdocs/langs/it_IT/bills.lang index 20e5e69e47e..6473762dbcc 100644 --- a/htdocs/langs/it_IT/bills.lang +++ b/htdocs/langs/it_IT/bills.lang @@ -66,14 +66,14 @@ paymentInInvoiceCurrency=nella valuta delle fatture PaidBack=Rimborsato DeletePayment=Elimina pagamento ConfirmDeletePayment=Vuoi davvero cancellare questo pagamento? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Vuoi convertire questa %s in uno sconto assoluto? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Vuoi convertire questo %s in uno sconto assoluto? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Pagamenti ricevuti ReceivedCustomersPayments=Pagamenti ricevuti dai clienti -PayedSuppliersPayments=Payments paid to vendors +PayedSuppliersPayments=Pagamenti effettuati ai fornitori ReceivedCustomersPaymentsToValid=Pagamenti ricevuti dai clienti da convalidare PaymentsReportsForYear=Report pagamenti per %s PaymentsReports=Report pagamenti @@ -106,7 +106,7 @@ AddBill=Crea fattura o nota di credito AddToDraftInvoices=Aggiungi alle fattture in bozza DeleteBill=Elimina fattura SearchACustomerInvoice=Cerca una fattura attiva -SearchASupplierInvoice=Search for a vendor invoice +SearchASupplierInvoice=Cerca una fattura fornitore CancelBill=Annulla una fattura SendRemindByMail=Inviare promemoria via email DoPayment=Registra pagamento @@ -146,7 +146,7 @@ BillShortStatusClosedPaidPartially=Pagata (in parte) PaymentStatusToValidShort=Da convalidare ErrorVATIntraNotConfigured=Intra-Community VAT number not yet defined ErrorNoPaiementModeConfigured=No default payment type defined. Go to Invoice module setup to fix this. -ErrorCreateBankAccount=Create a bank account, then go to Setup panel of Invoice module to define payment types +ErrorCreateBankAccount=Crea un conto bancario, quindi passa al modulo impostazione delle fatture per definire i tipi di pagamento ErrorBillNotFound=La fattura %s non esiste ErrorInvoiceAlreadyReplaced=Error, you tried to validate an invoice to replace invoice %s. But this one has already been replaced by invoice %s. ErrorDiscountAlreadyUsed=Errore, sconto già utilizzato @@ -204,8 +204,8 @@ ConfirmSupplierPayment=Confermare riscossione per <b>%s</b> %s? ConfirmValidatePayment=Vuoi davvero convalidare questo pagamento? Una volta convalidato non si potranno più operare modifiche. ValidateBill=Convalida fattura UnvalidateBill=Invalida fattura -NumberOfBills=No. of invoices -NumberOfBillsByMonth=No. of invoices per month +NumberOfBills=Numero di fatture +NumberOfBillsByMonth=Numero di fatture per mese AmountOfBills=Importo delle fatture AmountOfBillsHT=Amount of invoices (net of tax) AmountOfBillsByMonthHT=Importo delle fatture per mese (al netto delle imposte) @@ -219,7 +219,10 @@ ShowInvoiceSituation=Mostra avanzamento lavori UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -334,7 +337,7 @@ InvoiceDateCreation=Data di creazione fattura InvoiceStatus=Stato Fattura InvoiceNote=Nota Fattura InvoicePaid=Fattura pagata -InvoicePaidCompletely=Paid completely +InvoicePaidCompletely=Pagata completamente InvoicePaidCompletelyHelp=Invoice that are paid completely. This excludes invoices that are paid partially. To get list of all 'Closed' or non 'Closed' invoices, prefer to use a filter on the invoice status. OrderBilled=Order billed DonationPaid=Donation paid @@ -354,7 +357,7 @@ ConfirmRemoveDiscount=Vuoi davvero eliminare questo sconto? RelatedBill=Fattura correlata RelatedBills=Fatture correlate RelatedCustomerInvoices=Fatture attive correlate -RelatedSupplierInvoices=Related vendor invoices +RelatedSupplierInvoices=Fatture fornitore correlate LatestRelatedBill=Ultima fattura correlata WarningBillExist=Warning, one or more invoices already exist MergingPDFTool=Strumento di fusione dei PDF @@ -378,7 +381,7 @@ NextDateToExecution=Data per la prossima generazione di fattura NextDateToExecutionShort=Data successiva gen. DateLastGeneration=Data dell'ultima generazione DateLastGenerationShort=Data ultima gen. -MaxPeriodNumber=Max. number of invoice generation +MaxPeriodNumber=Numero massimo di fatture da generare NbOfGenerationDone=Numero di fatture generate già create NbOfGenerationDoneShort=Numero di generazione eseguita MaxGenerationReached=Numero massimo di generazioni raggiunto @@ -441,7 +444,7 @@ PaymentTypeFAC=Fattore PaymentTypeShortFAC=Fattore BankDetails=Dati banca BankCode=ABI -DeskCode=Branch code +DeskCode=Codice filiale BankAccountNumber=C.C. BankAccountNumberKey=Checksum Residence=Indirizzo @@ -477,13 +480,13 @@ UseLine=Applica UseDiscount=Usa lo sconto UseCredit=Utilizza il credito UseCreditNoteInInvoicePayment=Riduci l'ammontare del pagamento con la nota di credito -MenuChequeDeposits=Check Deposits +MenuChequeDeposits=Deposito assegni MenuCheques=Assegni MenuChequesReceipts=Check receipts NewChequeDeposit=Nuovo acconto ChequesReceipts=Check receipts -ChequesArea=Check deposits area -ChequeDeposits=Check deposits +ChequesArea=Area deposito assegni +ChequeDeposits=Deposito assegni Cheques=Assegni DepositId=ID deposito NbCheque=Numero di assegni @@ -509,11 +512,11 @@ ToMakePayment=Paga ToMakePaymentBack=Rimborsa ListOfYourUnpaidInvoices=Elenco fatture non pagate NoteListOfYourUnpaidInvoices=Nota: questo elenco contiene solo fatture che hai collegato ad un rappresentante. -RevenueStamp=Marca da bollo +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=Per creare un nuovo modelo bisogna prima creare una fattura normale e poi convertirla. -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Modello di fattura PDF Crabe. Un modello completo di fattura PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Modello di fattura Crevette. Template completo per le fatture (Modello raccomandato) TerreNumRefModelDesc1=Restituisce un numero nel formato %syymm-nnnn per le fatture, %syymm-nnnn per le note di credito e %syymm-nnnn per i versamenti, dove yy è l'anno, mm è il mese e nnnn è una sequenza progressiva, senza salti e che non si azzera. @@ -528,7 +531,7 @@ TypeContact_facture_external_BILLING=Contatto fatturazioni clienti TypeContact_facture_external_SHIPPING=Contatto spedizioni clienti TypeContact_facture_external_SERVICE=Contatto servizio clienti TypeContact_invoice_supplier_internal_SALESREPFOLL=Representative following-up vendor invoice -TypeContact_invoice_supplier_external_BILLING=Vendor invoice contact +TypeContact_invoice_supplier_external_BILLING=Contatto fattura fornitore TypeContact_invoice_supplier_external_SHIPPING=Vendor shipping contact TypeContact_invoice_supplier_external_SERVICE=Vendor service contact # Situation invoices @@ -575,3 +578,4 @@ AutoFillDateTo=Imposta data di fine per la riga di servizio con la successiva da AutoFillDateToShort=Imposta data di fine MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Fattura cancellata +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/it_IT/blockedlog.lang b/htdocs/langs/it_IT/blockedlog.lang index f69567e0ebf..b0cbfa4cdde 100644 --- a/htdocs/langs/it_IT/blockedlog.lang +++ b/htdocs/langs/it_IT/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/it_IT/boxes.lang b/htdocs/langs/it_IT/boxes.lang index 33a3614472e..c55a5828087 100644 --- a/htdocs/langs/it_IT/boxes.lang +++ b/htdocs/langs/it_IT/boxes.lang @@ -4,7 +4,7 @@ BoxLastRssInfos=RSS Information BoxLastProducts=Latest %s Products/Services BoxProductsAlertStock=Avvisi per le scorte di prodotti BoxLastProductsInContract=Ultimi %s prodotti/servizi contrattualizzati -BoxLastSupplierBills=Latest Vendor invoices +BoxLastSupplierBills=Ultime fatture fornitore BoxLastCustomerBills=Latest Customer invoices BoxOldestUnpaidCustomerBills=Ultime fatture attive non pagate BoxOldestUnpaidSupplierBills=Fatture Fornitore non pagate più vecchie @@ -21,14 +21,14 @@ BoxFicheInter=Ultimi interventi BoxCurrentAccounts=Saldo conti aperti BoxTitleMemberNextBirthdays=Compleanni di questo mese (membri) BoxTitleLastRssInfos=Ultime %s notizie da %s -BoxTitleLastProducts=Products/Services: last %s modified +BoxTitleLastProducts=Prodotti/Servizi: ultimi %s modificati BoxTitleProductsAlertStock=Prodotti: allerta scorte BoxTitleLastSuppliers=Ultimi %s ordini fornitore BoxTitleLastModifiedSuppliers=Fornitori: ultimi %s modificati BoxTitleLastModifiedCustomers=Clienti: ultimi %s modificati BoxTitleLastCustomersOrProspects=Ultimi %s clienti o potenziali clienti -BoxTitleLastCustomerBills=Ultime %s Fatture Cliente -BoxTitleLastSupplierBills=Ultime %sFatture Fornitore +BoxTitleLastCustomerBills=Ultime %s fatture attive modificate +BoxTitleLastSupplierBills=Ultime %s fatture fornitore modificate BoxTitleLastModifiedProspects=Clienti potenziali: ultimi %s modificati BoxTitleLastModifiedMembers=Ultimi %s membri BoxTitleLastFicheInter=Ultimi %s interventi modificati @@ -36,8 +36,8 @@ BoxTitleOldestUnpaidCustomerBills=Fatture cliente: %s non pagate più vecchie BoxTitleOldestUnpaidSupplierBills=Fatture fornitori: %s più vecchie non pagate BoxTitleCurrentAccounts=Conti aperti: bilanci BoxTitleSupplierOrdersAwaitingReception=Ordini dei fornitori in attesa di ricezione -BoxTitleLastModifiedContacts=Contacts/Addresses: last %s modified -BoxMyLastBookmarks=Bookmarks: latest %s +BoxTitleLastModifiedContacts=Contatti/indirizzi: ultimi %s modificati +BoxMyLastBookmarks=Segnalibri: ultimi %s modificati BoxOldestExpiredServices=Servizi scaduti da più tempo ancora attivi BoxLastExpiredServices=Ultimi %s contatti con servizi scaduti ancora attivi BoxTitleLastActionsToDo=Ultime %s azioni da fare @@ -61,7 +61,7 @@ NoRecordedProposals=Nessuna proposta registrata NoRecordedInvoices=Nessuna fattura attiva registrata NoUnpaidCustomerBills=Nessuna fattura attiva non pagata NoUnpaidSupplierBills=Nessuna Fattura Fornitore non pagata -NoModifiedSupplierBills=No recorded vendor invoices +NoModifiedSupplierBills=Nessuna fattura fornitore registrata NoRecordedProducts=Nessun prodotto/servizio registrato NoRecordedProspects=Nessun potenziale cliente registrato NoContractedProducts=Nessun prodotto/servizio contrattualizzato @@ -71,16 +71,16 @@ BoxLatestSupplierOrders=Latest purchase orders BoxLatestSupplierOrdersAwaitingReception=Ultimi ordini di acquisto (con una ricezione in sospeso) NoSupplierOrder=No recorded purchase order BoxCustomersInvoicesPerMonth=Fatture cliente al mese -BoxSuppliersInvoicesPerMonth=Vendor Invoices per month +BoxSuppliersInvoicesPerMonth=Fatture fornitore per mese BoxCustomersOrdersPerMonth=Ordini Cliente per mese -BoxSuppliersOrdersPerMonth=Vendor Orders per month -BoxProposalsPerMonth=proposte al mese +BoxSuppliersOrdersPerMonth=Ordini fornitore per mese +BoxProposalsPerMonth=Preventivi per mese NoTooLowStockProducts=Nessun prodotto sotto la soglia minima di scorte BoxProductDistribution=Distribuzione prodotti/servizi ForObject=On %s -BoxTitleLastModifiedSupplierBills=Vendor Invoices: last %s modified -BoxTitleLatestModifiedSupplierOrders=Vendor Orders: last %s modified -BoxTitleLastModifiedCustomerBills=Customer Invoices: last %s modified +BoxTitleLastModifiedSupplierBills=Fatture fornitore: ultime %s modificate +BoxTitleLatestModifiedSupplierOrders=Ordini fornitore: ultimi %s modificati +BoxTitleLastModifiedCustomerBills=Fatture attive: ultime %s modificate BoxTitleLastModifiedCustomerOrders=Ordini: ultimi %s modificati BoxTitleLastModifiedPropals=Ultime %s proposte modificate ForCustomersInvoices=Fatture attive @@ -89,7 +89,7 @@ ForProposals=Proposte LastXMonthRolling=Ultimi %s mesi ChooseBoxToAdd=Aggiungi widget alla dashboard BoxAdded=Widget aggiunto al pannello principale -BoxTitleUserBirthdaysOfMonth=Birthdays of this month +BoxTitleUserBirthdaysOfMonth=Compleanni di questo mese (utenti) BoxLastManualEntries=Ultime registrazioni manuali in contabilità BoxTitleLastManualEntries=%s ultime voci del manuale NoRecordedManualEntries=Nessuna registrazione manuale registrata in contabilità @@ -98,5 +98,5 @@ BoxTitleSuspenseAccount=Numero di righe non allocate NumberOfLinesInSuspenseAccount=Numero di riga nell'account suspense SuspenseAccountNotDefined=L'account Suspense non è definito BoxLastCustomerShipments=Ultime spedizioni cliente -BoxTitleLastCustomerShipments=Latest %s customer shipments -NoRecordedShipments=No recorded customer shipment +BoxTitleLastCustomerShipments=Ultime %s spedizioni cliente +NoRecordedShipments=Nessuna spedizione cliente registrata diff --git a/htdocs/langs/it_IT/cashdesk.lang b/htdocs/langs/it_IT/cashdesk.lang index 97bf03f0231..9d92620b4be 100644 --- a/htdocs/langs/it_IT/cashdesk.lang +++ b/htdocs/langs/it_IT/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Aggiungi questo articolo RestartSelling=Rimetti in vendita SellFinished=Vendita completata PrintTicket=Stampa biglietto +SendTicket=Send ticket NoProductFound=Nessun articolo trovato ProductFound=Prodotto trovato NoArticle=Nessun articolo @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Numero di fatture Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/it_IT/categories.lang b/htdocs/langs/it_IT/categories.lang index 87d41652b62..7663624b70c 100644 --- a/htdocs/langs/it_IT/categories.lang +++ b/htdocs/langs/it_IT/categories.lang @@ -10,7 +10,7 @@ modify=modifica Classify=Classifica CategoriesArea=Area tag/categorie ProductsCategoriesArea=Area categorie/tag prodotti/servizi -SuppliersCategoriesArea=Vendors tags/categories area +SuppliersCategoriesArea=Area tag/categorie fornitori CustomersCategoriesArea=Area tag/categorie clienti MembersCategoriesArea=Area tag/categorie membri ContactsCategoriesArea=Area tag/categorie contatti @@ -32,7 +32,7 @@ WasAddedSuccessfully=<b> %s </b> aggiunta con successo ObjectAlreadyLinkedToCategory=L'elemento è già collegato a questa tag/categoria ProductIsInCategories=Il prodotto/servizio è collegato alle seguenti tag/categorie CompanyIsInCustomersCategories=Questo soggetto terzo è collegato alle seguenti tag/categorie di clienti/potenziali clienti -CompanyIsInSuppliersCategories=This third party is linked to following vendors tags/categories +CompanyIsInSuppliersCategories=Il soggetto terzo è collegato alle seguenti tag/categorie fornitori MemberIsInCategories=Il membro è collegato alle seguenti tag/categorie membri ContactIsInCategories=Il contatto appartiene alle seguenti tag/categorie ProductHasNoCategory=Questo prodotto/servizio non è collegato ad alcuna tag/categoria @@ -48,14 +48,14 @@ ContentsNotVisibleByAllShort=Contenuti non visibili a tutti DeleteCategory=Elimina tag/categoria ConfirmDeleteCategory=Vuoi davvero eliminare questo tag/categoria? NoCategoriesDefined=Nessuna tag/categoria definita -SuppliersCategoryShort=Vendors tag/category +SuppliersCategoryShort=Tag/categoria fornitori CustomersCategoryShort=Tag/categoria clienti ProductsCategoryShort=Tag/categoria prodotti MembersCategoryShort=Tag/categoria membri -SuppliersCategoriesShort=Vendors tags/categories +SuppliersCategoriesShort=Tag/categorie fornitori CustomersCategoriesShort=Tag/categorie clienti ProspectsCategoriesShort=Tag/categorie clienti potenziali -CustomersProspectsCategoriesShort=Cust./Prosp. tags/categories +CustomersProspectsCategoriesShort=Tag/categorie clienti/clienti potenziali ProductsCategoriesShort=Tag/categorie prodotti MembersCategoriesShort=Tag/categorie membri ContactCategoriesShort=Tag/categorie contatti @@ -63,13 +63,7 @@ AccountsCategoriesShort=Conti di tag/categorie ProjectsCategoriesShort=Tag/categoria progetti UsersCategoriesShort=Users tags/categories StockCategoriesShort=Tag / categorie di magazzino -ThisCategoryHasNoProduct=Questa categoria non contiene alcun prodotto -ThisCategoryHasNoSupplier=This category does not contain any vendor. -ThisCategoryHasNoCustomer=Questa categoria non contiene alcun cliente -ThisCategoryHasNoMember=Questa categoria non contiene alcun membro -ThisCategoryHasNoContact=Questa categoria non contiene contatti -ThisCategoryHasNoAccount=Non ci sono conti collegati a questa categoria -ThisCategoryHasNoProject=Questa categoria non contiene alcun progetto. +ThisCategoryHasNoItems=This category does not contain any items. CategId=ID Tag/categoria CatSupList=List of vendor tags/categories CatCusList=Lista delle tag/categorie clienti @@ -78,7 +72,7 @@ CatMemberList=Lista delle tag/categorie membri CatContactList=Lista delle tag/categorie contatti CatSupLinks=Collegamenti tra fornitori e tag/categorie CatCusLinks=Collegamenti tra clienti e tag/categorie -CatContactsLinks=Links between contacts/addresses and tags/categories +CatContactsLinks=Collegamento fra: contatti/indirizzi e tags/categorie CatProdLinks=Collegamenti tra prodotti/servizi e tag/categorie CatProJectLinks=Collegamenti tra progetti e tag/categorie DeleteFromCat=Elimina dalla tag/categoria @@ -91,5 +85,5 @@ ShowCategory=Mostra tag/categoria ByDefaultInList=Default nella lista ChooseCategory=Choose category StocksCategoriesArea=Area categorie magazzini -ActionCommCategoriesArea=Events Categories Area +ActionCommCategoriesArea=Area eventi categorie UseOrOperatorForCategories=Uso o operatore per le categorie diff --git a/htdocs/langs/it_IT/companies.lang b/htdocs/langs/it_IT/companies.lang index d3dbbc93a18..8f2cb848865 100644 --- a/htdocs/langs/it_IT/companies.lang +++ b/htdocs/langs/it_IT/companies.lang @@ -277,7 +277,7 @@ CustomerRelativeDiscountShort=Sconto relativo CustomerAbsoluteDiscountShort=Sconto assoluto CompanyHasRelativeDiscount=Il cliente ha uno sconto del <b> %s%% </b> CompanyHasNoRelativeDiscount=Il cliente non ha alcuno sconto relativo impostato -HasRelativeDiscountFromSupplier=You have a default discount of <b>%s%%</b> from this vendor +HasRelativeDiscountFromSupplier=Hai uno sconto predefinito di <b>%s%%</b> da questo fornitore HasNoRelativeDiscountFromSupplier=You have no default relative discount from this vendor CompanyHasAbsoluteDiscount=Questo cliente ha degli sconti disponibili (note di credito o anticipi) per un totale di <b>%s</b>%s CompanyHasDownPaymentOrCommercialDiscount=Questo cliente ha uno sconto disponibile (commerciale, anticipi) per <b>%s</b>%s @@ -325,7 +325,6 @@ CompanyDeleted=Società %s cancellata dal database. ListOfContacts=Elenco dei contatti ListOfContactsAddresses=Elenco dei contatti ListOfThirdParties=Elenco dei soggetti terzi -ShowCompany=Mostra soggetto terzo ShowContact=Mostra contatti ContactsAllShort=Tutti (Nessun filtro) ContactType=Tipo di contatto @@ -352,7 +351,7 @@ VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckableOnEUSite=Check the intra-Community VAT ID on the European Commission website VATIntraManualCheck=È anche possibile controllare manualmente sul sito della Commissione Europea <a href="%s" target="_blank">%s</a> ErrorVATCheckMS_UNAVAILABLE=Non è possibile effettuare il controllo. Servizio non previsto per lo stato membro ( %s). -NorProspectNorCustomer=Not prospect, nor customer +NorProspectNorCustomer=Né cliente, né cliente potenziale JuridicalStatus=Forma giuridica Staff=Dipendenti ProspectLevelShort=Cl. Pot. @@ -400,8 +399,8 @@ ImportDataset_company_1=Third-parties and their properties ImportDataset_company_2=Third-parties additional contacts/addresses and attributes ImportDataset_company_3=Third-parties Bank accounts ImportDataset_company_4=Third-parties Sales representatives (assign sales representatives/users to companies) -PriceLevel=Price Level -PriceLevelLabels=Price Level Labels +PriceLevel=Livello dei prezzi +PriceLevelLabels=Etichette livello dei prezzi DeliveryAddress=Indirizzo di consegna AddAddress=Aggiungi un indirizzo SupplierCategory=Categoria fornitore @@ -447,11 +446,12 @@ SaleRepresentativeFirstname=Nome del commerciale SaleRepresentativeLastname=Cognome del commerciale ErrorThirdpartiesMerge=Si è verificato un errore durante l'eliminazione di terze parti. Si prega di controllare il registro. Le modifiche sono state ripristinate. NewCustomerSupplierCodeProposed=Customer or Vendor code already used, a new code is suggested +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Termini di Pagamento - Cliente PaymentTypeSupplier=Payment Type - Vendor -PaymentTermsSupplier=Payment Term - Vendor +PaymentTermsSupplier=Termine di pagamento - Fornitore PaymentTypeBoth=Tipo di pagamento - Cliente e fornitore MulticurrencyUsed=Use Multicurrency MulticurrencyCurrency=Valuta diff --git a/htdocs/langs/it_IT/compta.lang b/htdocs/langs/it_IT/compta.lang index cf5d2312892..c08cfa61481 100644 --- a/htdocs/langs/it_IT/compta.lang +++ b/htdocs/langs/it_IT/compta.lang @@ -19,13 +19,13 @@ Income=Entrate Outcome=Uscite MenuReportInOut=Entrate/Uscite ReportInOut=Bilancio di entrate e uscite -ReportTurnover=Turnover invoiced -ReportTurnoverCollected=Turnover collected +ReportTurnover=Fatturato +ReportTurnoverCollected=Fatturato PaymentsNotLinkedToInvoice=I pagamenti non legati ad una fattura, quindi non legati ad alcun soggetto terzo PaymentsNotLinkedToUser=Pagamenti non legati ad alcun utente Profit=Utile AccountingResult=Risultato contabile -BalanceBefore=Balance (before) +BalanceBefore=Bilancio (precedente) Balance=Saldo Debit=Debito Credit=Credito @@ -81,12 +81,12 @@ ContributionsToPay=Tasse/contributi da pagare AccountancyTreasuryArea=Billing and payment area NewPayment=Nuovo pagamento PaymentCustomerInvoice=Pagamento fattura attiva -PaymentSupplierInvoice=vendor invoice payment +PaymentSupplierInvoice=pagamento fattura fornitore PaymentSocialContribution=Pagamento delle imposte sociali/fiscali PaymentVat=Pagamento IVA ListPayment=Elenco dei pagamenti ListOfCustomerPayments=Elenco dei pagamenti dei clienti -ListOfSupplierPayments=List of vendor payments +ListOfSupplierPayments=Elenco dei pagamenti fornitore DateStartPeriod=Data di inzio DateEndPeriod=Data di fine newLT1Payment=New tax 2 payment @@ -118,8 +118,8 @@ SupplierAccountancyCodeShort=Cod. cont. fornitore AccountNumber=Numero di conto NewAccountingAccount=Nuovo conto Turnover=Turnover invoiced -TurnoverCollected=Turnover collected -SalesTurnoverMinimum=Minimum turnover +TurnoverCollected=Fatturato +SalesTurnoverMinimum=Fatturato minimo di vendita ByExpenseIncome=By expenses & incomes ByThirdParties=Per soggetti terzi ByUserAuthorOfInvoice=Per autore fattura @@ -139,8 +139,8 @@ ConfirmDeleteSocialContribution=Sei sicuro di voler cancellare il pagamento di q ExportDataset_tax_1=Tasse/contributi e pagamenti CalcModeVATDebt=Modalità <b>%sIVA su contabilità d'impegno%s</b>. CalcModeVATEngagement=Calcola <b>%sIVA su entrate-uscite%s</b> -CalcModeDebt=Analysis of known recorded invoices even if they are not yet accounted in ledger. -CalcModeEngagement=Analysis of known recorded payments, even if they are not yet accounted in Ledger. +CalcModeDebt=Analisi delle fatture registrate anche se non sono ancora contabilizzate nel libro mastro. +CalcModeEngagement=Analisi dei pagamenti registrati, anche se non ancora contabilizzati nel libro mastro. CalcModeBookkeeping=Analysis of data journalized in Bookkeeping Ledger table. CalcModeLT1= Modalità <b>%sRE su fatture clienti - fatture fornitori%s</b> CalcModeLT1Debt=Modalità <b>%sRE su fatture clienti%s</b> @@ -153,21 +153,21 @@ AnnualSummaryInputOutputMode=Bilancio di entrate e uscite, sintesi annuale AnnualByCompanies=Balance of income and expenses, by predefined groups of account AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by predefined groups, mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>. AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by predefined groups, mode <b>%sIncomes-Expenses%s</b> said <b>cash accounting</b>. -SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on actual payments made even if they are not yet accounted in Ledger. -SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. +SeeReportInInputOutputMode=Vedi %sanalisi dei pagamenti%s per un calcolo sui pagamenti effettivi effettuati anche se non ancora contabilizzati nel libro mastro. +SeeReportInDueDebtMode=Vedi %sanalisi delle fatture %s per un calcolo basato sulle fatture registrate anche se non ancora contabilizzate nel libro mastro. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Gli importi indicati sono tasse incluse -RulesResultDue=- Gli importi indicati sono tutti tasse incluse<br/>- Comprendono le fatture in sospeso, l'IVA e le spese, che siano state pagate o meno.<br/>- Si basa sulla data di convalida delle fatture e dell'IVA e sulla data di scadenza per le spese. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Include i pagamenti reali di fatture, spese e IVA. <br>- Si basa sulle date di pagamento di fatture, spese e IVA. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> -RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> +RulesCAIn=- Comprende le fatture effettivamente pagate dai clienti.<br/>- Si basa sulla data dei pagamenti.<br/> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" RulesResultBookkeepingPredefined=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" RulesResultBookkeepingPersonalized=It show record in your Ledger with accounting accounts <b>grouped by personalized groups</b> SeePageForSetup=See menu <a href="%s">%s</a> for setup DepositsAreNotIncluded=- Down payment invoices are not included -DepositsAreIncluded=- Down payment invoices are included +DepositsAreIncluded=- Sono incluse le fatture d'acconto LT1ReportByCustomers=Report tax 2 by third party LT2ReportByCustomers=Report tax 3 by third party LT1ReportByCustomersES=Report by third party RE @@ -211,7 +211,7 @@ Pcg_version=Chart of accounts models Pcg_type=Tipo pcg Pcg_subtype=Sottotipo Pcg InvoiceLinesToDispatch=Riga di fattura da spedire *consegnare -ByProductsAndServices=By product and service +ByProductsAndServices=Per prodotti e servizi RefExt=Referente esterno ToCreateAPredefinedInvoice=Per creare un modello di fattura, crea una fattura standard e poi, senza convalidarla, clicca sul pulsante "%s". LinkedOrder=Collega a ordine @@ -219,7 +219,7 @@ Mode1=Metodo 1 Mode2=Metodo 2 CalculationRuleDesc=Ci sono due metodi per calcolare l'IVA totale:<br/>Metodo 1: arrotondare l'IVA per ogni riga e poi sommare.<br/>Metodo 2: sommare l'IVA di ogni riga e poi arrotondare il risultato della somma.<br/>Il risultato finale può differire di alcuni centesimi tra i due metodi. Il metodo di default è il <b>%s</b>. CalculationRuleDescSupplier=According to vendor, choose appropriate method to apply same calculation rule and get same result expected by your vendor. -TurnoverPerProductInCommitmentAccountingNotRelevant=The report of Turnover collected per product is not available. This report is only available for turnover invoiced. +TurnoverPerProductInCommitmentAccountingNotRelevant=Il report sul fatturato per prodotto non è disponibile. Questo rapporto è disponibile solo per il fatturato. TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=The report of Turnover collected per sale tax rate is not available. This report is only available for turnover invoiced. CalculationMode=Metodo di calcolo AccountancyJournal=Accounting code journal @@ -250,8 +250,15 @@ LastDayTaxIsRelatedTo=Last day of period the tax is related to VATDue=Sale tax claimed ClaimedForThisPeriod=Claimed for the period PaidDuringThisPeriod=Paid during this period -ByVatRate=By sale tax rate -TurnoverbyVatrate=Turnover invoiced by sale tax rate -TurnoverCollectedbyVatrate=Turnover collected by sale tax rate -PurchasebyVatrate=Purchase by sale tax rate +ByVatRate=Per aliquota iva di vendita +TurnoverbyVatrate=Fatturato per aliquota iva di vendita +TurnoverCollectedbyVatrate=Fatturato per aliquota iva di vendita +PurchasebyVatrate=Acquisti per aliquota iva LabelToShow=Etichetta breve +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/it_IT/ecm.lang b/htdocs/langs/it_IT/ecm.lang index 84390cc378f..78b9b6f0f1b 100644 --- a/htdocs/langs/it_IT/ecm.lang +++ b/htdocs/langs/it_IT/ecm.lang @@ -34,8 +34,8 @@ ECMDocsByProjects=Documenti collegati ai progetti ECMDocsByUsers=Documenti collegati agli utenti ECMDocsByInterventions=Documenti collegati agli interventi ECMDocsByExpenseReports=Documenti collegati a note spese -ECMDocsByHolidays=Documents linked to holidays -ECMDocsBySupplierProposals=Documents linked to supplier proposals +ECMDocsByHolidays=Documenti collegati alle ferie +ECMDocsBySupplierProposals=Documenti collegati alle proposte fornitore ECMNoDirectoryYet=Nessuna directory creata ShowECMSection=Visualizza la directory DeleteSection=Eliminare la directory diff --git a/htdocs/langs/it_IT/errors.lang b/htdocs/langs/it_IT/errors.lang index 778ea8e2d0d..fc4477d1495 100644 --- a/htdocs/langs/it_IT/errors.lang +++ b/htdocs/langs/it_IT/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File non completamente ricevuto dal server. ErrorNoTmpDir=La directory temporanea %s non esiste. ErrorUploadBlockedByAddon=Upload bloccato da un plugin di Apache/PHP ErrorFileSizeTooLarge=La dimensione del file è troppo grande. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Numero troppo lungo (massimo %s cifre) ErrorSizeTooLongForVarcharType=Stringa troppo lunga (limite di %s caratteri) ErrorNoValueForSelectType=Per favore immetti un valore per la lista di selezione @@ -165,7 +166,7 @@ ErrorPriceExpression24=La variabile '%s' esiste, ma non è valorizzata ErrorPriceExpressionInternal=Errore interno '%s' ErrorPriceExpressionUnknown=Errore sconosciuto '%s' ErrorSrcAndTargetWarehouseMustDiffers=I magazzini di origine e di destinazione devono essere diversi -ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without lot/serial information, on product '%s' requiring lot/serial information +ErrorTryToMakeMoveOnProductRequiringBatchData=Errore, tentativo di eseguire un movimento di magazzino senza informazioni lotto / seriale, sul prodotto '%s' che richiede informazioni lotto / seriale ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified (approved or denied) before being allowed to do this action ErrorCantSetReceptionToTotalDoneWithReceptionDenied=All recorded receptions must first be verified (approved) before being allowed to do this action ErrorGlobalVariableUpdater0=Richiesta HTTP fallita con errore '%s' @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. @@ -259,5 +261,5 @@ WarningYourLoginWasModifiedPleaseLogin=La tua login è stata modificata. Per rag WarningAnEntryAlreadyExistForTransKey=Esiste già una voce tradotta per la chiave di traduzione per questa lingua WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different recipient is limited to <b>%s</b> 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 first. +WarningProjectClosed=Il progetto è chiuso. È necessario prima aprirlo nuovamente. WarningSomeBankTransactionByChequeWereRemovedAfter=Some bank transaction were removed after that the receipt including them were generated. So nb of cheques and total of receipt may differ from number and total in list. diff --git a/htdocs/langs/it_IT/holiday.lang b/htdocs/langs/it_IT/holiday.lang index 89821e19cc4..4dde053c1ee 100644 --- a/htdocs/langs/it_IT/holiday.lang +++ b/htdocs/langs/it_IT/holiday.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - holiday HRM=Risorse umane -Holidays=Leave -CPTitreMenu=Leave +Holidays=Ferie / Permessi +CPTitreMenu=Ferie / Permessi MenuReportMonth=Estratto conto mensile MenuAddCP=Nuova richiesta NotActiveModCP=You must enable the module Leave to view this page. @@ -25,8 +25,8 @@ UserForApprovalLogin=Login of approval user DescCP=Descrizione SendRequestCP=Inserisci richiesta di assenza DelayToRequestCP=Le richieste devono essere inserite almeno <b>%s giorni</b> prima dell'inizio. -MenuConfCP=Balance of leave -SoldeCPUser=Leave balance is <b>%s</b> days. +MenuConfCP=Bilancio delle ferie / permessi +SoldeCPUser=Rimangono <b>%s</b> giorni di ferie ErrorEndDateCP=La data di fine deve essere posteriore alla data di inizio. ErrorSQLCreateCP=Si è verificato un errore SQL durante la creazione: ErrorIDFicheCP=Si è verificato un errore: la richiesta non esiste. @@ -115,15 +115,15 @@ HolidaysToValidate=Convalida ferie HolidaysToValidateBody=Di sotto una richiesta ferie da convalidare HolidaysToValidateDelay=Questa richiesta avrà luogo fra meno di %s giorni HolidaysToValidateAlertSolde=The user who made this leave request does not have enough available days. -HolidaysValidated=Richieste di assenza approvate +HolidaysValidated=Richieste di ferie/permesso approvate HolidaysValidatedBody=La tua richiesta di ferie dal %s al %s è stata approvata HolidaysRefused=Richiesta negata HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason: -HolidaysCanceled=Richiesta di assenza cancellata +HolidaysCanceled=Richiesta di ferie/permesso eliminata HolidaysCanceledBody=La tua richiesta di ferie dal %s al %s è stata cancellata FollowedByACounter=<strong>1</strong>: questo tipo di ferie segue un contatore. Il contatore incrementa automaticamente o manualmente e quando una richiesta di ferie è validata. il contatore decrementa.<br><strong>0</strong>: non segue nessun contatore NoLeaveWithCounterDefined=Non ci sono tipi di ferie definite che devono seguire un contatore -GoIntoDictionaryHolidayTypes=Go into <strong>Home - Setup - Dictionaries - Type of leave</strong> to setup the different types of leaves. +GoIntoDictionaryHolidayTypes=Vai in <strong>Home - Impostazioni - Dizionari - Tipi di ferie/permessi</strong> per impostare i diversi tipi di ferie e permessi. HolidaySetup=Setup of module Holiday HolidaysNumberingModules=Leave requests numbering models TemplatePDFHolidays=Template for leave requests PDF diff --git a/htdocs/langs/it_IT/install.lang b/htdocs/langs/it_IT/install.lang index ca43361cf52..659ce3b4a2d 100644 --- a/htdocs/langs/it_IT/install.lang +++ b/htdocs/langs/it_IT/install.lang @@ -16,7 +16,8 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=Questo PHP supporta le estensioni dei calendari. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. -PHPSupport=This PHP supports %s functions. +PHPSupportxDebug=This PHP supports extended debug functions. +PHPSupport=La versione di PHP supporta la funzione %s. PHPMemoryOK=La memoria massima per la sessione è fissata dal PHP a <b>%s</b>. Dovrebbe essere sufficiente. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. Recheck=Click here for a more detailed test @@ -26,7 +27,8 @@ ErrorPHPDoesNotSupportCurl=L'attuale installazione di PHP non supporta cURL. ErrorPHPDoesNotSupportCalendar=La tua installazione di PHP non supporta le estensioni del calendario php. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. -ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. +ErrorPHPDoesNotSupport=La tua installazione di PHP non supporta le funzioni %s. ErrorDirDoesNotExists=La directory <b>%s</b> non esiste. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. ErrorWrongValueForParameter=Potresti aver digitato un valore errato per il parametro <b>%s</b>. @@ -210,10 +212,12 @@ MigrationUserPhotoPath=Migration of photo paths for users MigrationFieldsSocialNetworks=Migration of users fields social networks (%s) MigrationReloadModule=Ricarica modulo %s MigrationResetBlockedLog=Reset del modulo BlockedLog per l'algoritmo v7 -ShowNotAvailableOptions=Show unavailable options -HideNotAvailableOptions=Hide unavailable options +ShowNotAvailableOptions=Mostra opzioni non disponibili +HideNotAvailableOptions=Nascondi opzioni non disponibili ErrorFoundDuringMigration=Error(s) were reported during the migration process so next step is not available. To ignore errors, you can <a href="%s">click here</a>, 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).<br> YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/it_IT/link.lang b/htdocs/langs/it_IT/link.lang index 3c3a345c16a..5448ce32703 100644 --- a/htdocs/langs/it_IT/link.lang +++ b/htdocs/langs/it_IT/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Il collegamento %s è stato rimosso ErrorFailedToDeleteLink= Impossibile rimuovere il collegamento '<b>%s</b>' ErrorFailedToUpdateLink= Impossibile caricare il collegamento '<b>%s</b>' URLToLink=Indirizzo del link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/it_IT/mails.lang b/htdocs/langs/it_IT/mails.lang index 306ba1f5a22..cb3d441981a 100644 --- a/htdocs/langs/it_IT/mails.lang +++ b/htdocs/langs/it_IT/mails.lang @@ -50,7 +50,7 @@ ConfirmValidMailing=Intendi veramente validare questo invio? ConfirmResetMailing=Warning, by re-initializing emailing <b>%s</b>, you will allow the re-sending this email in a bulk 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 +NbOfEMails=Numero di email TotalNbOfDistinctRecipients=Numero di singoli destinatari NoTargetYet=Nessun destinatario ancora definito (Vai alla scheda 'destinatari') NoRecipientEmail=No recipient email for %s @@ -75,7 +75,7 @@ XTargetsAdded=<b>%s</b> destinatari aggiunti alla lista di invio 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=Group emails -OneEmailPerRecipient=One email per recipient (by default, one email per record selected) +OneEmailPerRecipient=Una e-mail per destinatario (per impostazione predefinita, una e-mail per record selezionato) 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=Result of mass Email sending NbSelected=Number selected @@ -162,9 +162,9 @@ AdvTgtCreateFilter=Crea filtro AdvTgtOrCreateNewFilter=Titolo del nuovo filtro NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found -OutGoingEmailSetup=Outgoing email setup +OutGoingEmailSetup=Configurazione email in uscita InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) -DefaultOutgoingEmailSetup=Default outgoing email setup +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) +DefaultOutgoingEmailSetup=Impostazione predefinita email in uscita Information=Informazioni ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/it_IT/main.lang b/htdocs/langs/it_IT/main.lang index 8b222aac6de..b7d535794fe 100644 --- a/htdocs/langs/it_IT/main.lang +++ b/htdocs/langs/it_IT/main.lang @@ -171,9 +171,10 @@ NotValidated=Non valido Save=Salva SaveAs=Salva con nome SaveAndStay=Salva e rimani -SaveAndNew=Save and new +SaveAndNew=Salva e nuovo TestConnection=Test connessione ToClone=Clonare +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Dati da clonare non definiti Of=di @@ -338,12 +339,12 @@ Copy=Copia Paste=Incolla Default=Predefinito DefaultValue=Valore predefinito -DefaultValues=Default values/filters/sorting +DefaultValues=Valori / filtri / ordinamenti predefiniti Price=Prezzo PriceCurrency=Prezzo (valuta) UnitPrice=Prezzo unitario -UnitPriceHT=Unit price (excl.) -UnitPriceHTCurrency=Unit price (excl.) (currency) +UnitPriceHT=Prezzo unitario (netto) +UnitPriceHTCurrency=Prezzo unitario (netto) (valuta) UnitPriceTTC=Prezzo unitario (lordo) PriceU=P.U. PriceUHT=P.U.(netto) @@ -353,11 +354,11 @@ Amount=Importo AmountInvoice=Importo della fattura AmountInvoiced=Importo fatturato AmountInvoicedHT=Amount invoiced (incl. tax) -AmountInvoicedTTC=Amount invoiced (excl. tax) +AmountInvoicedTTC=Importo fatturato (al netto delle imposte) AmountPayment=Importo del pagamento -AmountHTShort=Amount (excl.) +AmountHTShort=Importo (netto) AmountTTCShort=Importo (IVA inc.) -AmountHT=Amount (excl. tax) +AmountHT=Importo (al netto delle imposte) AmountTTC=Importo (IVA inclusa) AmountVAT=Importo IVA MulticurrencyAlreadyPaid=Already paid, original currency @@ -372,8 +373,8 @@ AmountLT1ES=Importo RE (Spagna) AmountLT2ES=Importo IRPF (Spagna) AmountTotal=Importo totale AmountAverage=Importo medio -PriceQtyMinHT=Price quantity min. (excl. tax) -PriceQtyMinHTCurrency=Price quantity min. (excl. tax) (currency) +PriceQtyMinHT=Prezzo quantità min. tasse escluse +PriceQtyMinHTCurrency=Prezzo per quantità min. (tasse escluse) (valuta) Percentage=Percentuale Total=Totale SubTotal=Totale parziale @@ -394,7 +395,7 @@ TotalLT1ES=Totale RE TotalLT2ES=Totale IRPF TotalLT1IN=Totale CGST TotalLT2IN=Totale SGST -HT=Excl. tax +HT=Al netto delle imposte TTC=IVA inclusa INCVATONLY=IVA inclusa INCT=Inc. tutte le tasse @@ -432,7 +433,7 @@ Favorite=Preferito ShortInfo=Info. Ref=Rif. ExternalRef=Rif. esterno -RefSupplier=Rif. venditore +RefSupplier=Rif. fornitore RefPayment=Rif. pagamento CommercialProposalsShort=Preventivi/Proposte commerciali Comment=Commento @@ -632,9 +633,9 @@ BuildDoc=Genera Doc Entity=Entità Entities=Entità CustomerPreview=Anteprima cliente -SupplierPreview=Anteprima venditore +SupplierPreview=Anteprima fornitore ShowCustomerPreview=Visualizza anteprima cliente -ShowSupplierPreview=Mostra anteprima venditore +ShowSupplierPreview=Visualizza anteprima fornitore RefCustomer=Rif. cliente Currency=Valuta InfoAdmin=Informazioni per gli amministratori @@ -721,7 +722,7 @@ Notes=Note AddNewLine=Aggiungi una nuova riga AddFile=Aggiungi file FreeZone=Non è un prodotto/servizio predefinito -FreeLineOfType=Free-text item, type: +FreeLineOfType=Testo libero, tipologia: CloneMainAttributes=Clona oggetto con i suoi principali attributi ReGeneratePDF=Rigenera PDF PDFMerge=Unisci PDF @@ -745,8 +746,8 @@ Result=Risultato ToTest=Provare ValidateBefore=Convalidare la scheda prima di utilizzare questa funzione Visibility=Visibilità -Totalizable=Totalizable -TotalizableDesc=This field is totalizable in list +Totalizable=Totalizzabile +TotalizableDesc=Questo campo è totalizzabile nell'elenco Private=Privato Hidden=Nascosto Resources=Risorse @@ -765,13 +766,13 @@ LinkTo=Collega a... LinkToProposal=Collega a proposta LinkToOrder=Collega a ordine LinkToInvoice=Collega a fattura attiva -LinkToTemplateInvoice=Link to template invoice -LinkToSupplierOrder=Link to purchase order -LinkToSupplierProposal=Link to vendor proposal -LinkToSupplierInvoice=Link to vendor invoice +LinkToTemplateInvoice=Collega ad un modello di fattura +LinkToSupplierOrder=Collega ad un ordine d'acquisto +LinkToSupplierProposal=Collega alla proposta fornitore +LinkToSupplierInvoice=Collega alla fattura fornitore LinkToContract=Collega a contratto LinkToIntervention=Collega a intervento -LinkToTicket=Link to ticket +LinkToTicket=Collega al ticket CreateDraft=Crea bozza SetToDraft=Ritorna a bozza ClickToEdit=Clicca per modificare @@ -829,6 +830,8 @@ Gender=Genere Genderman=Uomo Genderwoman=Donna ViewList=Vista elenco +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obbligatorio Hello=Ciao GoodBye=Addio @@ -874,7 +877,7 @@ Download=Download DownloadDocument=Scarica documento ActualizeCurrency=Aggiorna tasso di cambio Fiscalyear=Anno fiscale -ModuleBuilder=Module and Application Builder +ModuleBuilder=Generatore di moduli/applicazioni SetMultiCurrencyCode=Imposta valuta BulkActions=Azioni in blocco ClickToShowHelp=Clicca per mostrare l'aiuto contestuale @@ -887,20 +890,20 @@ HR=HR HRAndBank=HR e Banca AutomaticallyCalculated=Calcolato automaticamente TitleSetToDraft=Torna a Bozza -ConfirmSetToDraft=Are you sure you want to go back to Draft status? +ConfirmSetToDraft=Sei sicuro di voler tornare allo stato di Bozza? ImportId=ID di importazione Events=Eventi EMailTemplates=Modelli e-mail FileNotShared=File non condiviso con pubblico esterno Project=Progetto Projects=Progetti -LeadOrProject=Lead | Project +LeadOrProject=Opportunità | Progetto LeadsOrProjects=Leads | Projects Lead=Lead Leads=Leads ListOpenLeads=List open leads ListOpenProjects=Lista progetti aperti -NewLeadOrProject=New lead or project +NewLeadOrProject=Nuova opportunità o progetto Rights=Autorizzazioni LineNb=Linea n° IncotermLabel=Import-Export @@ -956,12 +959,12 @@ SearchIntoSupplierInvoices=Fatture Fornitore SearchIntoCustomerOrders=Ordini Cliente SearchIntoSupplierOrders=Ordini d'acquisto SearchIntoCustomerProposals=Proposte del cliente -SearchIntoSupplierProposals=Proposta venditore +SearchIntoSupplierProposals=Proposte fornitore SearchIntoInterventions=Interventi SearchIntoContracts=Contratti SearchIntoCustomerShipments=Spedizioni cliente SearchIntoExpenseReports=Nota spese -SearchIntoLeaves=Leave +SearchIntoLeaves=Ferie / Permessi SearchIntoTickets=Ticket CommentLink=Commenti NbComments=Numero dei commenti @@ -997,7 +1000,7 @@ NoRecordedUsers=No users ToClose=Da chiudere ToProcess=Da lavorare ToApprove=To approve -GlobalOpenedElemView=Global view +GlobalOpenedElemView=Vista globale NoArticlesFoundForTheKeyword=No article found for the keyword '<strong>%s</strong>' NoArticlesFoundForTheCategory=No article found for the category ToAcceptRefuse=Da accettare | Rifiutare @@ -1020,5 +1023,8 @@ CustomReports=Custom reports StatisticsOn=Statistics on SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures -XAxis=X-Axis -YAxis=Y-Axis +XAxis=Asse X +YAxis=Asse Y +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/it_IT/modulebuilder.lang b/htdocs/langs/it_IT/modulebuilder.lang index 85c0c0f1e55..cf8f9ec36dc 100644 --- a/htdocs/langs/it_IT/modulebuilder.lang +++ b/htdocs/langs/it_IT/modulebuilder.lang @@ -6,7 +6,7 @@ ModuleBuilderDesc2=Path where modules are generated/edited (first directory for ModuleBuilderDesc3=Generated/editable modules found: <strong>%s</strong> ModuleBuilderDesc4=A module is detected as 'editable' when the file <strong>%s</strong> exists in root of module directory NewModule=Nuovo modulo -NewObjectInModulebuilder=New object +NewObjectInModulebuilder=Nuovo oggetto ModuleKey=Module key ObjectKey=Object key ModuleInitialized=Modulo inizializzato @@ -60,17 +60,17 @@ HooksFile=File for hooks code ArrayOfKeyValues=Array of key-val ArrayOfKeyValuesDesc=Array of keys and values if field is a combo list with fixed values WidgetFile=Widget file -CSSFile=CSS file -JSFile=Javascript file +CSSFile=File CSS +JSFile=File Javascript ReadmeFile=Readme file ChangeLog=ChangeLog file TestClassFile=File for PHP Unit Test class SqlFile=Sql file PageForLib=File for PHP library PageForObjLib=File for PHP library dedicated to object -SqlFileExtraFields=Sql file for complementary attributes +SqlFileExtraFields=File SQL per attributi complementari SqlFileKey=Sql file for keys -SqlFileKeyExtraFields=Sql file for keys of complementary attributes +SqlFileKeyExtraFields=File SQL per chiavi di attributi complementari AnObjectAlreadyExistWithThisNameAndDiffCase=An object already exists with this name and a different case 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 @@ -79,15 +79,15 @@ NoTrigger=No trigger NoWidget=No widget GoToApiExplorer=Go to API explorer ListOfMenusEntries=List of menu entries -ListOfDictionariesEntries=List of dictionaries entries +ListOfDictionariesEntries=Elenco voci dizionari ListOfPermissionsDefined=List of defined permissions -SeeExamples=See examples here +SeeExamples=Vedi esempi qui 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 (not list), 4=Visible on list and update/view form only (not create). Using a negative value means field is not shown by default on list but can be selected for viewing). It can be an expression, for example: preg_match('/public/', $_SERVER['PHP_SELF'])?0:1 -DisplayOnPdfDesc=Display this field on compatible PDF documents, you can manage position with "Position" field.<br/>Currently, known compatibles PDF models are : eratostene -DisplayOnPdf=Display on PDF +VisibleDesc=Il campo è visibile? (Esempi: 0=Mai visibile, 1=Visibile sugli elenchi e nei form di creazione/modifica/visualizzazione, 2=Visibile solo negli elenchi, 3=Visibile solo nei form di creazione/modifica/visualizzazione (no elenchi), 4=Visibile negli elenchi e solo nei form di modifica/visualizzazione (no creazione). Utilizza un valore negativo se desideri che il campo non sia visibile di default negli elenchi, ma possa essere selezionato per la visualizzazione. Puoi utilizzare anche un'espressione regolare come ad esempio: <br>preg_match('/public/', $_SERVER['PHP_SELF'])?0:1<br>($user->rights->holiday->define_holiday ? 1 : 0) +DisplayOnPdfDesc=Display this field on compatible PDF documents, you can manage position with "Position" field.<br/>Currently, known compatibles PDF models are : eratostene <br/><br/><strong>For document :</strong><br/>0 = not displayed <br/>1 = display<br/>2 = display only if not empty<br/><br/><strong>For document lines :</strong><br/>0 = not displayed <br/>1 = displayed in a column<br/>3 = display in line description column after the description<br/>4 = display in description column after the description only if not empty +DisplayOnPdf=Mostra sul PDF 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) +SearchAllDesc=Il campo è utilizzato per effettuare una ricerca dallo strumento di ricerca rapida? (Esempi: 1 o 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 @@ -129,13 +129,13 @@ UseSpecificVersion = Use a specific initial version ModuleMustBeEnabled=The module/application must be enabled first IncludeRefGeneration=The reference of object must be generated automatically IncludeRefGenerationHelp=Check this if you want to include code to manage the generation automatically of the reference -IncludeDocGeneration=I want to generate some documents from the object +IncludeDocGeneration=Desidero generare alcuni documenti da questo oggetto IncludeDocGenerationHelp=If you check this, some code will be generated to add a "Generate document" box on the record. -ShowOnCombobox=Show value into combobox +ShowOnCombobox=Mostra il valore dentro il combobox KeyForTooltip=Key for tooltip -CSSClass=CSS Class -NotEditable=Not editable -ForeignKey=Foreign key +CSSClass=Classe CSS +NotEditable=Non modificabile +ForeignKey=Chiave esterna TypeOfFieldsHelp=Type of fields:<br>varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]] ('1' means we add a + button after the combo to create the record, 'filter' can be 'status=1 AND fk_user = __USER_ID AND entity IN (__SHARED_ENTITIES__)' for example) AsciiToHtmlConverter=Ascii to HTML converter AsciiToPdfConverter=Ascii to PDF converter diff --git a/htdocs/langs/it_IT/mrp.lang b/htdocs/langs/it_IT/mrp.lang index 7706c41f4b8..c0185190272 100644 --- a/htdocs/langs/it_IT/mrp.lang +++ b/htdocs/langs/it_IT/mrp.lang @@ -1,6 +1,6 @@ Mrp=Ordini di produzione MO=Ordine di produzione -MRPDescription=Module to manage production and Manufacturing Orders (MO). +MRPDescription=Modulo per la gestione degli ordini di produzione (MO). MRPArea=MRP Area MrpSetupPage=Configurazione del modulo MRP MenuBOM=Bills of material @@ -15,20 +15,20 @@ NewBOM=New bill of material ProductBOMHelp=Product to create with this BOM BOMsNumberingModules=BOM numbering templates BOMsModelModule=BOMS document templates -MOsNumberingModules=MO numbering templates -MOsModelModule=MO document templates +MOsNumberingModules=Modelli di numerazione degli ordini di produzione (MO) +MOsModelModule=Modello PDF ordini di produzione (MO) FreeLegalTextOnBOMs=Free text on document of BOM WatermarkOnDraftBOMs=Watermark on draft BOM -FreeLegalTextOnMOs=Free text on document of MO -WatermarkOnDraftMOs=Watermark on draft MO +FreeLegalTextOnMOs=Testo libero sui documenti MO +WatermarkOnDraftMOs=Filigrana sulla bozza degli ordini di produzione MO (se presente) ConfirmCloneBillOfMaterials=Are you sure you want to clone this bill of material ? -ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? +ConfirmCloneMo=Vuoi davvero clonare l'ordine di produzione %s? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials -DeleteMo=Delete Manufacturing Order +DeleteMo=Elimina Ordine di Produzione ConfirmDeleteBillOfMaterials=Are you sure you want to delete this Bill Of Material? ConfirmDeleteMo=Are you sure you want to delete this Bill Of Material? MenuMRP=Ordini di produzione @@ -40,22 +40,22 @@ KeepEmptyForAsap=Vuoto significa "Il più presto possibile" EstimatedDuration=Durata stimata EstimatedDurationDesc=Estimated duration to manufacture this product using this BOM ConfirmValidateBom=Are you sure you want to validate the BOM with the reference <strong>%s</strong> (you will be able to use it to build new Manufacturing Orders) -ConfirmCloseBom=Are you sure you want to cancel this BOM (you won't be able to use it to build new Manufacturing Orders anymore) ? +ConfirmCloseBom=Vuoi davvero eliminare questa Distinta Base (non sarà più possibile utilizzarla per creare nuovi ordini di produzione) ConfirmReopenBom=Are you sure you want to re-open this BOM (you will be able to use it to build new Manufacturing Orders) StatusMOProduced=Prodotto -QtyFrozen=Frozen Qty -QuantityFrozen=Frozen Quantity +QtyFrozen=Quantità congelata +QuantityFrozen=Quantità congelata QuantityConsumedInvariable=When this flag is set, the quantity consumed is always the value defined and is not relative to the quantity produced. DisableStockChange=Stock change disabled DisableStockChangeHelp=When this flag is set, there is no stock change on this product, whatever is the quantity consumed BomAndBomLines=Bills Of Material and lines BOMLine=Line of BOM -WarehouseForProduction=Warehouse for production -CreateMO=Create MO +WarehouseForProduction=Magazzino per la produzione +CreateMO=Crea Ordine di Produzione ToConsume=To consume -ToProduce=To produce -QtyAlreadyConsumed=Qty already consumed -QtyAlreadyProduced=Qty already produced +ToProduce=Da produrre +QtyAlreadyConsumed=Q.tà già consumate +QtyAlreadyProduced=Q.tà già prodotte ConsumeOrProduce=Consume or Produce ConsumeAndProduceAll=Consume and Produce All Manufactured=Manufactured @@ -63,7 +63,7 @@ TheProductXIsAlreadyTheProductToProduce=The product to add is already the produc ForAQuantityOf1=For a quantity to produce of 1 ConfirmValidateMo=Are you sure you want to validate this Manufacturing Order? ConfirmProductionDesc=By clicking on '%s', you will validate the consumption and/or production for the quantities set. This will also update the stock and record stock movements. -ProductionForRef=Production of %s +ProductionForRef=Produzione di %s AutoCloseMO=Close automatically the Manufacturing Order if quantities to consume and to produce are reached NoStockChangeOnServices=No stock change on services ProductQtyToConsumeByMO=Product quantity still to consume by open MO @@ -71,3 +71,5 @@ ProductQtyToProduceByMO=Product quentity still to produce by open MO AddNewConsumeLines=Add new line to consume ProductsToConsume=Products to consume ProductsToProduce=Products to produce +UnitCost=Unit cost +TotalCost=Total cost diff --git a/htdocs/langs/it_IT/multicurrency.lang b/htdocs/langs/it_IT/multicurrency.lang index 4f05cd491b6..68c8f699e00 100644 --- a/htdocs/langs/it_IT/multicurrency.lang +++ b/htdocs/langs/it_IT/multicurrency.lang @@ -8,7 +8,7 @@ MULTICURRENCY_USE_RATE_ON_DOCUMENT_DATE=Use date of document to find currency ra multicurrency_useOriginTx=When an object is created from another, keep the original rate of source object (otherwise use the latest known rate) CurrencyLayerAccount=CurrencyLayer API CurrencyLayerAccount_help_to_synchronize=You sould create an account on their website to use this functionnality<br>Get your <b>API key</b><br />If you use a free account you can't change the <b>currency source</b> (USD by default)<br />But if your main currency isn't USD you can use the <b>alternate currency source</b> to force you main currency<br /><br />You are limited at 1000 synchronizations per month -multicurrency_appId=API key +multicurrency_appId=Chiave API multicurrency_appCurrencySource=Currency source multicurrency_alternateCurrencySource=Alternate currency source CurrenciesUsed=Currencies used @@ -18,3 +18,5 @@ MulticurrencyReceived=Received, original currency MulticurrencyRemainderToTake=Remaining amout, original currency MulticurrencyPaymentAmount=Payment amount, original currency AmountToOthercurrency=Amount To (in currency of receiving account) +CurrencyRateSyncSucceed=Currency rate synchronization done successfuly +MULTICURRENCY_USE_CURRENCY_ON_DOCUMENT=Use the currency of the document for online payments diff --git a/htdocs/langs/it_IT/oauth.lang b/htdocs/langs/it_IT/oauth.lang index 2a231675247..397a585074e 100644 --- a/htdocs/langs/it_IT/oauth.lang +++ b/htdocs/langs/it_IT/oauth.lang @@ -14,7 +14,7 @@ DeleteAccess=Click qui per eliminare il token UseTheFollowingUrlAsRedirectURI=Usa il seguente indirizzo come Redirect URI quando crei le credenziali sul tuo provider OAuth: ListOfSupportedOauthProviders=Inserisci qui le credenziali fornite dal tuo provider OAuth. Vengono visualizzati solo i provider supportati. Questa configurazione può essere usata ache dagli altri moduli che necessitano di autenticazione OAuth2. OAuthSetupForLogin=Page to generate an OAuth token -SeePreviousTab=See previous tab +SeePreviousTab=Vedi la scheda precedente OAuthIDSecret=OAuth ID and Secret TOKEN_REFRESH=Token Refresh Present TOKEN_EXPIRED=Token scaduto diff --git a/htdocs/langs/it_IT/orders.lang b/htdocs/langs/it_IT/orders.lang index cd567d39f07..c1dbc75c639 100644 --- a/htdocs/langs/it_IT/orders.lang +++ b/htdocs/langs/it_IT/orders.lang @@ -20,10 +20,10 @@ SuppliersOrdersRunning=Ordini d'acquisto in corso CustomerOrder=Sales Order CustomersOrders=Ordini Cliente CustomersOrdersRunning=Ordini Cliente in corso -CustomersOrdersAndOrdersLines=Sales orders and order details +CustomersOrdersAndOrdersLines=Ordini dei clienti e righe degli ordini OrdersDeliveredToBill=Sales orders delivered to bill -OrdersToBill=Sales orders delivered -OrdersInProcess=Sales orders in process +OrdersToBill=Ordini clienti spediti +OrdersInProcess=Ordini clienti in corso OrdersToProcess=Ordini Cliente da trattare SuppliersOrdersToProcess=Ordini Fornitore da trattare SuppliersOrdersAwaitingReception=Ordini di acquisto in attesa di ricezione @@ -87,7 +87,7 @@ NbOfOrders=Numero di ordini OrdersStatistics=Statistiche ordini OrdersStatisticsSuppliers=Purchase order statistics NumberOfOrdersByMonth=Numero di ordini per mese -AmountOfOrdersByMonthHT=Amount of orders by month (excl. tax) +AmountOfOrdersByMonthHT=Importo ordini per mese (al netto delle imposte) ListOfOrders=Elenco degli ordini CloseOrder=Chiudi ordine ConfirmCloseOrder=Are you sure you want to set this order to delivered? Once an order is delivered, it can be set to billed. @@ -104,7 +104,7 @@ OnProcessOrders=Ordini in lavorazione RefOrder=Rif. ordine RefCustomerOrder=Rif. fornitore RefOrderSupplier=Ref. order for vendor -RefOrderSupplierShort=Ref. order vendor +RefOrderSupplierShort=Rif. ordine forn. SendOrderByMail=Invia ordine via email ActionsOnOrder=Azioni all'ordine NoArticleOfTypeProduct=Non ci sono articoli definiti "prodotto" quindi non ci sono articoli da spedire @@ -121,14 +121,14 @@ SupplierOrderSubmitedInDolibarr=Purchase Order %s submitted SupplierOrderClassifiedBilled=Purchase Order %s set billed OtherOrders=Altri ordini ##### Types de contacts ##### -TypeContact_commande_internal_SALESREPFOLL=Representative following-up sales order +TypeContact_commande_internal_SALESREPFOLL=Responsabile ordini cliente TypeContact_commande_internal_SHIPPING=Responsabile spedizioni cliente TypeContact_commande_external_BILLING=Contatto fatturazione cliente TypeContact_commande_external_SHIPPING=Contatto spedizioni cliente TypeContact_commande_external_CUSTOMER=Contatto follow-up cliente TypeContact_order_supplier_internal_SALESREPFOLL=Representative following-up purchase order TypeContact_order_supplier_internal_SHIPPING=Responsabile spedizioni fornitore -TypeContact_order_supplier_external_BILLING=Vendor invoice contact +TypeContact_order_supplier_external_BILLING=Contatto fattura fornitore TypeContact_order_supplier_external_SHIPPING=Vendor shipping contact TypeContact_order_supplier_external_CUSTOMER=Vendor contact following-up order Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Costante COMMANDE_SUPPLIER_ADDON non definita @@ -141,11 +141,12 @@ OrderByEMail=Email OrderByWWW=Sito OrderByPhone=Telefono # Documents models -PDFEinsteinDescription=A complete order model (old implementation of Eratosthene template) +PDFEinsteinDescription=Un modello completo PDF di ordine cliente PDFEratostheneDescription=Un modello completo per gli ordini PDFEdisonDescription=Un modello semplice per gli ordini -PDFProformaDescription=A complete Proforma invoice template +PDFProformaDescription=Un modello completo PDF di fattura Proforma CreateInvoiceForThisCustomer=Ordini da fatturare +CreateInvoiceForThisSupplier=Ordini da fatturare NoOrdersToInvoice=Nessun ordine fatturabile CloseProcessedOrdersAutomatically=Classifica come "Lavorati" tutti gli ordini selezionati OrderCreation=Creazione di ordine diff --git a/htdocs/langs/it_IT/other.lang b/htdocs/langs/it_IT/other.lang index a1750795b26..36119e72677 100644 --- a/htdocs/langs/it_IT/other.lang +++ b/htdocs/langs/it_IT/other.lang @@ -24,7 +24,7 @@ MessageOK=Message on the return page for a validated payment MessageKO=Message on the return page for a canceled payment ContentOfDirectoryIsNotEmpty=La directory non è vuota. DeleteAlsoContentRecursively=Check to delete all content recursively -PoweredBy=Powered by +PoweredBy=Realizzato da YearOfInvoice=Year of invoice date PreviousYearOfInvoice=Previous year of invoice date NextYearOfInvoice=Following year of invoice date @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -55,9 +55,9 @@ Notify_BILL_UNVALIDATE=Ricevuta cliente non convalidata Notify_BILL_PAYED=Customer invoice paid Notify_BILL_CANCEL=Fattura attiva annullata Notify_BILL_SENTBYMAIL=Fattura attiva inviata per email -Notify_BILL_SUPPLIER_VALIDATE=Vendor invoice validated -Notify_BILL_SUPPLIER_PAYED=Vendor invoice paid -Notify_BILL_SUPPLIER_SENTBYMAIL=Vendor invoice sent by mail +Notify_BILL_SUPPLIER_VALIDATE=Fattura fornitore convalidata +Notify_BILL_SUPPLIER_PAYED=Fattura fornitore pagata +Notify_BILL_SUPPLIER_SENTBYMAIL=Fattura fornitore inviata per mail Notify_BILL_SUPPLIER_CANCELED=Vendor invoice cancelled Notify_CONTRACT_VALIDATE=Contratto convalidato Notify_FICHINTER_VALIDATE=Intervento convalidato @@ -74,17 +74,17 @@ Notify_PROJECT_CREATE=Creazione del progetto Notify_TASK_CREATE=Attività creata Notify_TASK_MODIFY=Attività modificata Notify_TASK_DELETE=Attività cancellata -Notify_EXPENSE_REPORT_VALIDATE=Expense report validated (approval required) -Notify_EXPENSE_REPORT_APPROVE=Expense report approved -Notify_HOLIDAY_VALIDATE=Leave request validated (approval required) -Notify_HOLIDAY_APPROVE=Leave request approved +Notify_EXPENSE_REPORT_VALIDATE=Note spese convalidate (è richiesta l'approvazione) +Notify_EXPENSE_REPORT_APPROVE=Nota spesa approvata +Notify_HOLIDAY_VALIDATE=Richiesta ferie/permesso convalidata (approvazione richiesta) +Notify_HOLIDAY_APPROVE=Richiesta ferie/permesso approvata SeeModuleSetup=Vedi la configurazione del modulo %s NbOfAttachedFiles=Numero di file/documenti allegati TotalSizeOfAttachedFiles=Dimensione totale dei file/documenti allegati MaxSize=La dimensione massima è AttachANewFile=Allega un nuovo file/documento LinkedObject=Oggetto collegato -NbOfActiveNotifications=Number of notifications (no. of recipient emails) +NbOfActiveNotifications=Numero di notifiche (num. di email da ricevere) PredefinedMailTest=__(Hello)__\nThis is a test mail sent to __EMAIL__.\nThe two lines are separated by a carriage return.\n\n__USER_SIGNATURE__ PredefinedMailTestHtml=__(Hello)__\nThis is a <b>test</b> mail (the word test must be in bold).<br>The two lines are separated by a carriage return.<br><br>__USER_SIGNATURE__ PredefinedMailContentContract=__(Buongiorno)__\n\n\n__(Cordialmente)__\n\n__USER_SIGNATURE__ @@ -181,30 +181,30 @@ AuthenticationDoesNotAllowSendNewPassword=La modalità di autenticazione è <b>% EnableGDLibraryDesc=Per usare questa opzione bisogna installare o abilitare la libreria GD in PHP. ProfIdShortDesc=<b>Prof ID %s</b> è un dato dipendente dal paese terzo.<br/> Ad esempio, per il <b>paese %s,</b> è il <b>codice %s.</b> DolibarrDemo=Dolibarr ERP/CRM demo -StatsByNumberOfUnits=Statistics for sum of qty of products/services -StatsByNumberOfEntities=Statistics in number of referring entities (no. of invoice, or order...) +StatsByNumberOfUnits=Statistiche per somma della quantità di prodotti / servizi +StatsByNumberOfEntities=Statistiche in numero di entità referenti (n. di fatture o ordini ...) NumberOfProposals=Numero di preventivi -NumberOfCustomerOrders=Number of sales orders +NumberOfCustomerOrders=Numero di ordini cliente NumberOfCustomerInvoices=Numero di ordini fornitore -NumberOfSupplierProposals=Number of vendor proposals +NumberOfSupplierProposals=Numero di proposte del fornitore NumberOfSupplierOrders=Numero ordini d'acquisto NumberOfSupplierInvoices=Number of vendor invoices NumberOfContracts=Number of contracts NumberOfMos=Number of manufacturing orders -NumberOfUnitsProposals=Number of units on proposals -NumberOfUnitsCustomerOrders=Number of units on sales orders -NumberOfUnitsCustomerInvoices=Number of units on customer invoices -NumberOfUnitsSupplierProposals=Number of units on vendor proposals -NumberOfUnitsSupplierOrders=Number of units on purchase orders -NumberOfUnitsSupplierInvoices=Number of units on vendor invoices -NumberOfUnitsContracts=Number of units on contracts +NumberOfUnitsProposals=Numero di unità nei preventivi +NumberOfUnitsCustomerOrders=Numero di unità sugli ordini cliente +NumberOfUnitsCustomerInvoices=Numero di unità nelle fatture cliente +NumberOfUnitsSupplierProposals=Numero di unità nelle proposte fornitori +NumberOfUnitsSupplierOrders=Numero di unità negli ordini d'acquisto +NumberOfUnitsSupplierInvoices=Numero di unità nelle fatture fornitore +NumberOfUnitsContracts=Numero di unità nei contratti NumberOfUnitsMos=Number of units to produce in manufacturing orders EMailTextInterventionAddedContact=A new intervention %s has been assigned to you. EMailTextInterventionValidated=Intervento %s convalidato EMailTextInvoiceValidated=La fattura %s è stata convalidata. EMailTextInvoicePayed=Invoice %s has been paid. EMailTextProposalValidated=La proposta %s è stata convalidata. -EMailTextProposalClosedSigned=Proposal %s has been closed signed. +EMailTextProposalClosedSigned=La proposta %s è stata chiusa e firmata. EMailTextOrderValidated=Order %s has been validated. EMailTextOrderApproved=Order %s has been approved. EMailTextOrderValidatedBy=Order %s has been recorded by %s. @@ -214,7 +214,7 @@ EMailTextOrderRefusedBy=Order %s has been refused by %s. EMailTextExpeditionValidated=Shipping %s has been validated. EMailTextExpenseReportValidated=Expense report %s has been validated. EMailTextExpenseReportApproved=Expense report %s has been approved. -EMailTextHolidayValidated=Leave request %s has been validated. +EMailTextHolidayValidated=La richiesta di ferie/permesso %s è stata convalidata. EMailTextHolidayApproved=Leave request %s has been approved. ImportedWithSet=Set dati importazione DolibarrNotification=Notifica automatica @@ -274,11 +274,11 @@ WEBSITE_PAGEURL=Indirizzo URL della pagina WEBSITE_TITLE=Titolo WEBSITE_DESCRIPTION=Descrizione 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Parole chiave LinesToImport=Righe da importare -MemoryUsage=Memory usage +MemoryUsage=Utilizzo della memoria RequestDuration=Duration of request PopuProp=Products/Services by popularity in Proposals PopuCom=Products/Services by popularity in Orders diff --git a/htdocs/langs/it_IT/paybox.lang b/htdocs/langs/it_IT/paybox.lang index 83b4b081dbc..3f398c374d0 100644 --- a/htdocs/langs/it_IT/paybox.lang +++ b/htdocs/langs/it_IT/paybox.lang @@ -20,7 +20,7 @@ AccountParameter=Dati account UsageParameter=Parametri d'uso InformationToFindParameters=Aiuto per trovare informazioni sul tuo account %s PAYBOX_CGI_URL_V2=URL del modulo CGI di Paybox per il pagamento -VendorName=Nome del venditore +VendorName=Nome del fornitore CSSUrlForPaymentForm=URL del foglio di stile CSS per il modulo di pagamento NewPayboxPaymentReceived=Nuovo pagamento Paybox ricevuto NewPayboxPaymentFailed=Nuovo tentativo di pagamento Paybox ma fallito diff --git a/htdocs/langs/it_IT/products.lang b/htdocs/langs/it_IT/products.lang index 78c718b0c37..4d5f8b24b65 100644 --- a/htdocs/langs/it_IT/products.lang +++ b/htdocs/langs/it_IT/products.lang @@ -17,11 +17,13 @@ Create=Crea Reference=Riferimento NewProduct=Nuovo prodotto NewService=Nuovo servizio -ProductVatMassChange=Global VAT Update -ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u></b> products and services! +ProductVatMassChange=Modifica di massa dell'IVA +ProductVatMassChangeDesc=Questo strumento aggiorna l'aliquota IVA definita su <b><u>TUTTI i</u></b> prodotti e servizi! MassBarcodeInit=Inizializzazione di massa dei codici a barre MassBarcodeInitDesc=Questa pagina può essere usata per inizializzare un codice a barre di un oggetto che non ha ancora un codice a barre definito. Controlla prima che il setup del modulo Codici a barre sia completo. ProductAccountancyBuyCode=Codice contabile (acquisto) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Codice contabile (vendita) ProductAccountancySellIntraCode=Codice contabile (vendita intracomunitaria) ProductAccountancySellExportCode=Codice contabile (vendita per esportazione) @@ -66,17 +68,17 @@ ProductStatusNotOnBuyShort=Obsoleto UpdateVAT=Aggiorna iva UpdateDefaultPrice=Aggiornamento prezzo predefinito UpdateLevelPrices=Aggiorna prezzi per ogni livello -AppliedPricesFrom=Applied from +AppliedPricesFrom=Valido dal SellingPrice=Prezzo di vendita -SellingPriceHT=Selling price (excl. tax) +SellingPriceHT=Prezzo di vendita (al netto delle imposte) SellingPriceTTC=Prezzo di vendita (inclusa IVA) -SellingMinPriceTTC=Minimum Selling price (inc. tax) +SellingMinPriceTTC=Prezzo minimo di vendita (tasse incluse) CostPriceDescription=This price field (excl. tax) can be used to store the average amount this product costs to your company. It may be any price you calculate yourself, for example from the average buying price plus average production and distribution cost. CostPriceUsage=Questo valore può essere utilizzato per il calcolo del margine. SoldAmount=Quantità venduta PurchasedAmount=Quantità acquistata NewPrice=Nuovo prezzo -MinPrice=Min. sell price +MinPrice=Prezzo minimo di vendita EditSellingPriceLabel=Modifica l'etichetta del prezzo di vendita CantBeLessThanMinPrice=Il prezzo di vendita non può essere inferiore al minimo consentito per questo prodotto ( %s IVA esclusa) ContractStatusClosed=Chiuso @@ -85,7 +87,7 @@ ErrorProductBadRefOrLabel=Il valore di riferimento o l'etichetta è sbagliato. ErrorProductClone=Si è verificato un problema cercando di cuplicare il prodotto o servizio ErrorPriceCantBeLowerThanMinPrice=Errore, il prezzo non può essere inferiore al prezzo minimo. Suppliers=Fornitori -SupplierRef=Vendor SKU +SupplierRef=Codice Fornitore (SKU) ShowProduct=Visualizza prodotto ShowService=Visualizza servizio ProductsAndServicesArea=Area prodotti e servizi @@ -116,7 +118,7 @@ CategoryFilter=Filtro categoria ProductToAddSearch=Cerca prodotto da aggiungere NoMatchFound=Nessun risultato trovato ListOfProductsServices=Elenco prodotti/servizi -ProductAssociationList=List of products/services that are component(s) of this virtual product/kit +ProductAssociationList=Elenco dei prodotti / servizi che sono componenti di questo prodotto / pacchetto virtuale ProductParentList=Elenco dei prodotti/servizi comprendenti questo prodotto ErrorAssociationIsFatherOfThis=Uno dei prodotti selezionati è padre dell'attuale prodotto DeleteProduct=Elimina un prodotto/servizio @@ -129,11 +131,11 @@ ImportDataset_service_1=Servizi DeleteProductLine=Elimina linea di prodotti ConfirmDeleteProductLine=Vuoi davvero cancellare questa linea di prodotti? ProductSpecial=Prodotto speciale -QtyMin=Min. purchase quantity -PriceQtyMin=Price quantity min. -PriceQtyMinCurrency=Price (currency) for this qty. (no discount) -VATRateForSupplierProduct=VAT Rate (for this vendor/product) -DiscountQtyMin=Discount for this qty. +QtyMin=Min. quantità d'acquisto +PriceQtyMin=Prezzo quantità min. +PriceQtyMinCurrency=Prezzo per questa quantità min. (senza sconto) (valuta) +VATRateForSupplierProduct=Aliquota IVA (per questo fornitore / prodotto) +DiscountQtyMin=Sconto per questa quantità NoPriceDefinedForThisSupplier=No price/qty defined for this vendor/product NoSupplierPriceDefinedForThisProduct=No vendor price/qty defined for this product PredefinedProductsToSell=Predefined Product @@ -165,7 +167,7 @@ SuppliersPrices=Prezzi fornitore SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Paese di origine -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Etichetta breve Unit=Unità p=u. @@ -282,7 +284,7 @@ PriceMode=Modalità di prezzo PriceNumeric=Numero DefaultPrice=Prezzo predefinito ComposedProductIncDecStock=Aumenta e Diminuisci le scorte alla modifica del prodotto padre -ComposedProduct=Child products +ComposedProduct=Sottoprodotto MinSupplierPrice=Prezzo d'acquisto minimo MinCustomerPrice=Prezzo minimo di vendita DynamicPriceConfiguration=Configurazione dinamica dei prezzi diff --git a/htdocs/langs/it_IT/projects.lang b/htdocs/langs/it_IT/projects.lang index 1fe3f577d6a..d59b8e7d6b5 100644 --- a/htdocs/langs/it_IT/projects.lang +++ b/htdocs/langs/it_IT/projects.lang @@ -39,7 +39,7 @@ ShowProject=Visualizza progetto ShowTask=Visualizza compito SetProject=Imposta progetto NoProject=Nessun progetto definito o assegnato -NbOfProjects=Number of projects +NbOfProjects=Num. di progetti NbOfTasks=Numero attività TimeSpent=Tempo lavorato TimeSpentByYou=Tempo impiegato da te @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Tempo ListOfTasks=Elenco dei compiti GoToListOfTimeConsumed=Vai all'elenco del tempo impiegato -GoToListOfTasks=Vai all'elenco dei compiti -GoToGanttView=Go to Gantt view GanttView=Vista Gantt ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -99,11 +97,11 @@ ListSupplierInvoicesAssociatedProject=Elenco fatture d'acquisto associate al pro ListContractAssociatedProject=Elenco contratti associati al progetto ListShippingAssociatedProject=Elenco spedizioni associate al progetto ListFichinterAssociatedProject=Elenco interventi associati al progetto -ListExpenseReportsAssociatedProject=List of expense reports related to the project -ListDonationsAssociatedProject=List of donations related to the project +ListExpenseReportsAssociatedProject=Elenco delle note spese associate al progetto +ListDonationsAssociatedProject=Elenco delle donazioni associate al progetto ListVariousPaymentsAssociatedProject=List of miscellaneous payments related to the project ListSalariesAssociatedProject=Elenco pagamenti stipendio associati al progetto -ListActionsAssociatedProject=List of events related to the project +ListActionsAssociatedProject=Elenco degli eventi associati al progetto ListMOAssociatedProject=List of manufacturing orders related to the project ListTaskTimeUserProject=Tempo impiegato in compiti del progetto ListTaskTimeForTask=Tempo impiegato per l'attività @@ -188,10 +186,10 @@ PlannedWorkload=Carico di lavoro previsto PlannedWorkloadShort=Carico di lavoro ProjectReferers=Elementi correlati ProjectMustBeValidatedFirst=I progetti devono prima essere validati -FirstAddRessourceToAllocateTime=Assegna una risorsa per allocare tempo +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per giorno InputPerWeek=Input per settimana -InputPerMonth=Input per month +InputPerMonth=Input per mese InputDetail=Dettagli di input TimeAlreadyRecorded=Questo lasso di tempo è già stato registrato per questa attività/giorno e l'utente%s ProjectsWithThisUserAsContact=Progetti con questo utente come contatto @@ -206,12 +204,12 @@ AssignTaskToUser=Assegnata attività a %s SelectTaskToAssign=Seleziona attività da a assegnare... AssignTask=Assegnare ProjectOverview=Panoramica -ManageTasks=Use projects to follow tasks and/or report time spent (timesheets) +ManageTasks=Utilizzare i progetti per seguire compiti e/o tempo lavorato ManageOpportunitiesStatus=Utilizzare i progetti per seguire clienti interessati/opportunità -ProjectNbProjectByMonth=No. of created projects by month -ProjectNbTaskByMonth=No. of created tasks by month +ProjectNbProjectByMonth=Num. di progetti creati per mese +ProjectNbTaskByMonth=Numero di attività create per mese ProjectOppAmountOfProjectsByMonth=Amount of leads by month -ProjectWeightedOppAmountOfProjectsByMonth=Weighted amount of leads by month +ProjectWeightedOppAmountOfProjectsByMonth=Quantità ponderata di opportunità per mese ProjectOpenedProjectByOppStatus=Open project/lead by lead status ProjectsStatistics=Le statistiche relative a progetti/clienti interessati TasksStatistics=Statistiche su attività di progetto/clienti interessati @@ -223,8 +221,8 @@ OnlyOpportunitiesShort=Only leads OpenedOpportunitiesShort=Open leads NotOpenedOpportunitiesShort=Not an open lead NotAnOpportunityShort=Not a lead -OpportunityTotalAmount=Total amount of leads -OpportunityPonderatedAmount=Weighted amount of leads +OpportunityTotalAmount=Importo totale delle opportunità +OpportunityPonderatedAmount=Importo ponderato delle opportunità OpportunityPonderatedAmountDesc=Leads amount weighted with probability OppStatusPROSP=Potenziale OppStatusQUAL=Qualificazione @@ -240,6 +238,7 @@ LatestModifiedProjects=Ultimi %s progetti modificati OtherFilteredTasks=Altre attività filtrate NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Permetti agli utenti di commentare queste attività AllowCommentOnProject=Permetti agli utenti di commentare questi progetti @@ -257,11 +256,12 @@ InvoiceGeneratedFromTimeSpent=Invoice %s has been generated from time spent on p ProjectBillTimeDescription=Check if you enter timesheet on tasks of project AND you plan to generate invoice(s) from the timesheet to bill the customer of the project (do not check if you plan to create invoice that is not based on entered timesheets). Note: To generate invoice, go on tab 'Time spent' of the project and select lines to include. ProjectFollowOpportunity=Opportunità da seguire ProjectFollowTasks=Attività di progetto -Usage=Usage +Usage=Utilizzo UsageOpportunity=Utilizzo: opportunità UsageTasks=Uso: Compiti UsageBillTimeShort=Utilizzo: tempo di fatturazione -InvoiceToUse=Draft invoice to use +InvoiceToUse=Fattura in bozza da usare NewInvoice=Nuova fattura OneLinePerTask=Una riga per compito OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/it_IT/propal.lang b/htdocs/langs/it_IT/propal.lang index 8f2993b417c..ee7ebc262b8 100644 --- a/htdocs/langs/it_IT/propal.lang +++ b/htdocs/langs/it_IT/propal.lang @@ -76,7 +76,7 @@ TypeContact_propal_external_BILLING=Contatto per la fatturazione TypeContact_propal_external_CUSTOMER=Responsabile per il cliente TypeContact_propal_external_SHIPPING=Contatto cliente per la consegna # Document models -DocModelAzurDescription=A complete proposal model (old implementation of Cyan template) +DocModelAzurDescription=A complete proposal model DocModelCyanDescription=Modello di preventivo completo DefaultModelPropalCreate=Creazione del modello predefinito DefaultModelPropalToBill=Modello predefinito quando si chiude un preventivo (da fatturare) diff --git a/htdocs/langs/it_IT/receiptprinter.lang b/htdocs/langs/it_IT/receiptprinter.lang index 7b1a22e748d..3dd1ff848c7 100644 --- a/htdocs/langs/it_IT/receiptprinter.lang +++ b/htdocs/langs/it_IT/receiptprinter.lang @@ -5,7 +5,7 @@ PrinterUpdated=Stampante %s aggiornata PrinterDeleted=Stampante %s eliminata TestSentToPrinter=Stampa di prova inviata a %s ReceiptPrinter=Receipt printers -ReceiptPrinterDesc=Setup of receipt printers +ReceiptPrinterDesc=Configurazione stampa ricevute ReceiptPrinterTemplateDesc=Setup of Templates ReceiptPrinterTypeDesc=Description of Receipt Printer's type ReceiptPrinterProfileDesc=Description of Receipt Printer's Profile @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Stampante dummy CONNECTOR_NETWORK_PRINT=Stampante di rete CONNECTOR_FILE_PRINT=Stampante locale CONNECTOR_WINDOWS_PRINT=Stampante Windows locale +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Stampante di test (non stampa davvero) CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Profilo predefinito PROFILE_SIMPLE=Profilo semplice PROFILE_EPOSTEP=Epos Tep Profile @@ -45,8 +47,8 @@ DOL_ACTIVATE_BUZZER=Activate buzzer DOL_PRINT_QRCODE=Stampa codice QR DOL_PRINT_LOGO=Stampa il logo della mia azienda DOL_PRINT_LOGO_OLD=Stampa il logo della mia azienda (vecchie stampe) -DOL_BOLD=Bold -DOL_BOLD_DISABLED=Disable bold +DOL_BOLD=Grassetto +DOL_BOLD_DISABLED=Disabilita grassetto DOL_DOUBLE_HEIGHT=Double height size DOL_DOUBLE_WIDTH=Double width size DOL_DEFAULT_HEIGHT_WIDTH=Default height and width size @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Rif. fattura +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capitale +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/it_IT/stocks.lang b/htdocs/langs/it_IT/stocks.lang index 90b3d73bcb1..8f3d7072a54 100644 --- a/htdocs/langs/it_IT/stocks.lang +++ b/htdocs/langs/it_IT/stocks.lang @@ -64,9 +64,9 @@ OrderDispatch=Ricezione prodotti 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 sales order -DeStockOnShipment=Diminuire stock reali sulla validazione di spedizione -DeStockOnShipmentOnClosing=Decrease real stocks when shipping is set to closed +DeStockOnValidateOrder=Diminuire le scorte fisiche/reali alla convalida degli ordini cliente +DeStockOnShipment=Diminuire le scorte fisiche/reali alla convalida della spedizione +DeStockOnShipmentOnClosing=Diminuire le scorte fisiche/reali quando la spedizione viene chiusa. ReStockOnBill=Increase real stocks on validation of vendor invoice/credit note ReStockOnValidateOrder=Increase real stocks on purchase order approval ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouse, after purchase order receipt of goods @@ -79,10 +79,10 @@ DispatchVerb=Ricezione StockLimitShort=Limite per segnalazioni StockLimit=Limite minimo scorte (per gli avvisi) StockLimitDesc=(empty) means no warning.<br>0 can be used for a warning as soon as stock is empty. -PhysicalStock=Physical Stock +PhysicalStock=Scorte fisiche RealStock=Scorte reali -RealStockDesc=Physical/real stock is the stock currently in the warehouses. -RealStockWillAutomaticallyWhen=The real stock will be modified according to this rule (as defined in the Stock module): +RealStockDesc=Scorte fisiche/reali è la giacenza attualmente nei magazzini.\n +RealStockWillAutomaticallyWhen=Le scorte fisiche saranno modificate secondo le seguenti regole (come definito nel modulo Magazzino): VirtualStock=Scorte virtuali VirtualStockDesc=Virtual stock is the calculated stock available once all open/pending actions (that affect stocks) are closed (purchase orders received, sales orders shipped etc.) IdWarehouse=Id magazzino @@ -104,7 +104,7 @@ ThisWarehouseIsPersonalStock=Questo magazzino rappresenta la riserva personale d SelectWarehouseForStockDecrease=Scegli magazzino da utilizzare per la riduzione delle scorte SelectWarehouseForStockIncrease=Scegli magazzino da utilizzare per l'aumento delle scorte NoStockAction=Nessuna azione su queste scorte -DesiredStock=Desired Stock +DesiredStock=Scorte ottimali desiderate DesiredStockDesc=Questa quantità sarà il valore utilizzato per rifornire il magazzino mediante la funzione di rifornimento. StockToBuy=Da ordinare Replenishment=Rifornimento @@ -112,17 +112,17 @@ ReplenishmentOrders=Ordini di rifornimento VirtualDiffersFromPhysical=In relazione alle opzioni di incremento/riduzione, le scorte fisiche e quelle virtuali (fisiche - ordini clienti + ordini fornitori) potrebbero differire UseVirtualStockByDefault=Utilizza scorte virtuali come default, invece delle scorte fisiche, per la funzione di rifornimento UseVirtualStock=Usa scorte virtuale -UsePhysicalStock=Usa giacenza fisica +UsePhysicalStock=Usa scorte fisiche CurentSelectionMode=Modalità di selezione corrente CurentlyUsingVirtualStock=Giacenza virtuale -CurentlyUsingPhysicalStock=Giacenza fisica +CurentlyUsingPhysicalStock=Scorte fisiche RuleForStockReplenishment=Regola per il rifornimento delle scorte SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor AlertOnly= Solo avvisi WarehouseForStockDecrease=Il magazzino <b>%s</b> sarà usato per la diminuzione delle scorte WarehouseForStockIncrease=Il magazzino <b>%s</b> sarà usato per l'aumento delle scorte ForThisWarehouse=Per questo magazzino -ReplenishmentStatusDesc=This is a list of all products with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked). Using the checkbox, you can create purchase orders to fill the difference. +ReplenishmentStatusDesc=Questa è una lista di tutti i prodotti con una giacenza inferiore a quella desiderata (o inferiore al valore di allarme se la casella "solo allarme" è selezionata). Utilizzando la casella di controllo, è possibile creare ordini fornitori per colmare la differenza. ReplenishmentOrdersDesc=This is a list of all open purchase orders including predefined products. Only open orders with predefined products, so orders that may affect stocks, are visible here. Replenishments=Rifornimento NbOfProductBeforePeriod=Quantità del prodotto %s in magazzino prima del periodo selezionato (< %s) @@ -152,7 +152,7 @@ NoPendingReceptionOnSupplierOrder=No pending reception due to open purchase orde ThisSerialAlreadyExistWithDifferentDate=Questo lotto/numero seriale (<strong>%s</strong>) esiste già con una differente data di scadenza o di validità (trovata <strong>%s</strong>, inserita <strong>%s</strong> ) OpenAll=Aperto per tutte le azioni OpenInternal=Aperto per le azioni interne -UseDispatchStatus=Use a dispatch status (approve/refuse) for product lines on purchase order reception +UseDispatchStatus=Utilizzare uno stato di spedizione (approvato / rifiutato) per le righe di prodotti alla ricezione dell'ordine di acquisto OptionMULTIPRICESIsOn=Option "several prices per segment" is on. It means a product has several selling price so value for sell can't be calculated ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock correctly created ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated @@ -160,9 +160,9 @@ ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock cor AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock AddStockLocationLine=Decrease quantity then click to add another warehouse for this product InventoryDate=Inventory date -NewInventory=New inventory +NewInventory=Nuovo inventario inventorySetup = Inventory Setup -inventoryCreatePermission=Create new inventory +inventoryCreatePermission=Crea nuovo inventario inventoryReadPermission=View inventories inventoryWritePermission=Update inventories inventoryValidatePermission=Validate inventory diff --git a/htdocs/langs/it_IT/stripe.lang b/htdocs/langs/it_IT/stripe.lang index 2e4972ccef1..dcad56604c6 100644 --- a/htdocs/langs/it_IT/stripe.lang +++ b/htdocs/langs/it_IT/stripe.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - stripe StripeSetup=Stripe module setup -StripeDesc=Offer customers a Stripe online payment page for payments with credit/cebit cards via <a href="http://www.stripe.com" target="_blank">Stripe</a>. This can be used to allow your customers to make ad-hoc payments or for payments related to a particular Dolibarr object (invoice, order, ...) +StripeDesc=Offri ai clienti una pagina di pagamento online Stripe per pagamenti con carte di credito / debito tramite <a href="http://www.stripe.com" target="_blank">Stripe</a> . Questo modulo può essere usato per consentire ai tuoi clienti di effettuare pagamenti ad-hoc o per pagamenti relativi a un particolare oggetto Dolibarr (fattura, ordine, ...) StripeOrCBDoPayment=Pay with credit card or Stripe FollowingUrlAreAvailableToMakePayments=Puoi utilizzare i seguenti indirizzi per permettere ai clienti di effettuare pagamenti su Dolibarr PaymentForm=Forma di pagamento @@ -30,8 +30,9 @@ InformationToFindParameters=Aiuto per trovare informazioni sul tuo account %s STRIPE_CGI_URL_V2=Url of Stripe CGI module for payment VendorName=Nome del venditore CSSUrlForPaymentForm=URL del foglio di stile CSS per il modulo di pagamento -NewStripePaymentReceived=New Stripe payment received -NewStripePaymentFailed=New Stripe payment tried but failed +NewStripePaymentReceived=Nuovo pagamento Stripe ricevuto +NewStripePaymentFailed=Nuovo pagamento Stripe provato ma non riuscito +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -40,7 +41,7 @@ STRIPE_LIVE_PUBLISHABLE_KEY=Publishable live key STRIPE_LIVE_WEBHOOK_KEY=Webhook live key ONLINE_PAYMENT_WAREHOUSE=Stock to use for stock decrease when online payment is done<br>(TODO When option to decrease stock is done on an action on invoice and the online payment generate itself the invoice ?) StripeLiveEnabled=Stripe live enabled (otherwise test/sandbox mode) -StripeImportPayment=Import Stripe payments +StripeImportPayment=Importa pagamenti Stripe ExampleOfTestCreditCard=Example of credit card for test: %s => valid, %s => error CVC, %s => expired, %s => charge fails StripeGateways=Stripe gateways OAUTH_STRIPE_TEST_ID=Stripe Connect Client ID (ca_...) @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/it_IT/supplier_proposal.lang b/htdocs/langs/it_IT/supplier_proposal.lang index 31568557d34..6ef46f45959 100644 --- a/htdocs/langs/it_IT/supplier_proposal.lang +++ b/htdocs/langs/it_IT/supplier_proposal.lang @@ -9,10 +9,10 @@ DraftRequests=Quotazioni in bozza SupplierProposalsDraft=Bozza di proposta fornitore LastModifiedRequests=Ultime %s richieste di quotazione modificate RequestsOpened=Apri richieste di quotazione -SupplierProposalArea=Area proposte fornitore +SupplierProposalArea=Area quotazioni fornitori SupplierProposalShort=Proposta fornitore -SupplierProposals=Proposta venditore -SupplierProposalsShort=Proposta venditore +SupplierProposals=Proposte fornitore +SupplierProposalsShort=Proposte fornitore NewAskPrice=Nuova richiesta quotazione ShowSupplierProposal=Mostra le richieste di quotazione AddSupplierProposal=Inserisci richiesta di quotazione diff --git a/htdocs/langs/it_IT/suppliers.lang b/htdocs/langs/it_IT/suppliers.lang index 4f7a8280b1f..deeb5548651 100644 --- a/htdocs/langs/it_IT/suppliers.lang +++ b/htdocs/langs/it_IT/suppliers.lang @@ -19,7 +19,7 @@ ReferenceSupplierIsAlreadyAssociatedWithAProduct=Questo referenza del fornitore NoRecordedSuppliers=Nessun fornitore registrato SupplierPayment=Pagamento fornitore SuppliersArea=Area fornitore -RefSupplierShort=Rif. fornitura +RefSupplierShort=Rif. fornitore Availability=Disponibilità ExportDataset_fournisseur_1=Fatture fornitore e dettagli ExportDataset_fournisseur_2=Fatture fornitore e pagamenti diff --git a/htdocs/langs/it_IT/ticket.lang b/htdocs/langs/it_IT/ticket.lang index 20f6650f9cc..18141535770 100644 --- a/htdocs/langs/it_IT/ticket.lang +++ b/htdocs/langs/it_IT/ticket.lang @@ -21,7 +21,7 @@ Module56000Name=Ticket Module56000Desc=Sistema di ticket per la gestione di problemi o richieste -Permission56001=See tickets +Permission56001=Visualizza tickets Permission56002=Modify tickets Permission56003=Delete tickets Permission56004=Manage tickets @@ -36,7 +36,7 @@ TicketTypeShortBUGHARD=Dysfonctionnement matériel TicketTypeShortCOM=Commercial question TicketTypeShortHELP=Request for functionnal help -TicketTypeShortISSUE=Issue, bug or problem +TicketTypeShortISSUE=Issue, bug o problemi TicketTypeShortREQUEST=Change or enhancement request TicketTypeShortPROJET=Progetto TicketTypeShortOTHER=Altro @@ -64,7 +64,7 @@ NotRead=Non letto Read=Da leggere Assigned=Assegnato InProgress=Avviato -NeedMoreInformation=Waiting for information +NeedMoreInformation=In attesa di informazioni Answered=Answered Waiting=In attesa Closed=Chiuso @@ -90,7 +90,7 @@ TicketParamModule=Module variable setup TicketParamMail=Email setup TicketEmailNotificationFrom=Notification email from TicketEmailNotificationFromHelp=Used into ticket message answer by example -TicketEmailNotificationTo=Notifications email to +TicketEmailNotificationTo=Notifiche via email a TicketEmailNotificationToHelp=Invia email di notifica a questo indirizzo TicketNewEmailBodyLabel=Text message sent after creating a ticket TicketNewEmailBodyHelp=The text specified here will be inserted into the email confirming the creation of a new ticket from the public interface. Information on the consultation of the ticket are automatically added. @@ -133,7 +133,7 @@ TicketsDisableCustomerEmail=Always disable emails when a ticket is created from # # Index & list page # -TicketsIndex=Ticket (Home) +TicketsIndex=Area Tickets TicketList=List of tickets TicketAssignedToMeInfos=This page display ticket list created by or assigned to current user NoTicketsFound=No ticket found @@ -280,7 +280,7 @@ TicketPublicInterfaceForbidden=The public interface for the tickets was not enab ErrorEmailOrTrackingInvalid=Bad value for tracking ID or email OldUser=Old user NewUser=Nuovo utente -NumberOfTicketsByMonth=Number of tickets per month +NumberOfTicketsByMonth=Numero di ticket per mese NbOfTickets=Number of tickets # notifications TicketNotificationEmailSubject=Ticket %s updated diff --git a/htdocs/langs/it_IT/trips.lang b/htdocs/langs/it_IT/trips.lang index f8ba60ce433..d328b22677d 100644 --- a/htdocs/langs/it_IT/trips.lang +++ b/htdocs/langs/it_IT/trips.lang @@ -10,9 +10,9 @@ ListOfFees=Elenco delle tariffe TypeFees=Tipi di imposte ShowTrip=Mostra note spese NewTrip=Nuova nota spese -LastExpenseReports=Latest %s expense reports -AllExpenseReports=All expense reports -CompanyVisited=Company/organization visited +LastExpenseReports=Ultime %s note spese +AllExpenseReports=Tutte le note spese +CompanyVisited=Azienda / organizzazione visitata FeesKilometersOrAmout=Tariffa kilometrica o importo DeleteTrip=Elimina nota spese ConfirmDeleteTrip=Vuoi davvero eliminare questa nota spese? diff --git a/htdocs/langs/it_IT/users.lang b/htdocs/langs/it_IT/users.lang index 04ccb76704e..a0dd542b471 100644 --- a/htdocs/langs/it_IT/users.lang +++ b/htdocs/langs/it_IT/users.lang @@ -12,7 +12,7 @@ PasswordChangedTo=Password cambiata a: %s SubjectNewPassword=La tua nuova password per %s GroupRights=Autorizzazioni del gruppo UserRights=Autorizzazioni utente -UserGUISetup=User Display Setup +UserGUISetup=Impostazioni grafiche DisableUser=Disattiva DisableAUser=Disattiva un utente DeleteUser=Elimina @@ -34,7 +34,7 @@ ListOfUsers=Elenco utenti SuperAdministrator=Superadmin SuperAdministratorDesc=Con tutti i diritti di amministrazione AdministratorDesc=Amministratore -DefaultRights=Default Permissions +DefaultRights=Autorizzazioni predefinite DefaultRightsDesc=Define here the <u>default</u> permissions that are automatically granted to a <u>new</u> user (to modify permissions for existing users, go to the user card). DolibarrUsers=Utenti Dolibarr LastName=Cognome @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Utente di dominio %s Reactivate=Riattiva CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Autorizzazioni ereditate dall'appartenenza al gruppo. Inherited=Ereditato UserWillBeInternalUser=L'utente sarà un utente interno (in quanto non collegato a un soggetto terzo) @@ -113,3 +113,5 @@ CantDisableYourself=You can't disable your own user record ForceUserExpenseValidator=Forza validatore rapporto spese ForceUserHolidayValidator=Convalida richiesta di congedo forzato ValidatorIsSupervisorByDefault=Per impostazione predefinita, il validatore è il supervisore dell'utente. Mantieni vuoto per mantenere questo comportamento. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/it_IT/website.lang b/htdocs/langs/it_IT/website.lang index cf4ac858e55..f411690e00c 100644 --- a/htdocs/langs/it_IT/website.lang +++ b/htdocs/langs/it_IT/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Visualizza pagina in una nuova scheda SetAsHomePage=Imposta come homepage RealURL=Indirizzo URL vero ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -76,7 +77,7 @@ BlogPost=Articoli sul blog WebsiteAccount=Website account WebsiteAccounts=Website accounts AddWebsiteAccount=Create web site account -BackToListOfThirdParty=Back to list for Third Party +BackToListOfThirdParty=Torna all'elenco per terze parti DisableSiteFirst=Disable website first MyContainerTitle=My web site title AnotherContainer=This is how to include content of another page/container (you may have an error here if you enable dynamic code because the embedded subcontainer may not exists) @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -121,6 +122,9 @@ BackToHomePage=Torna alla home page ... TranslationLinks=Link alla traduzione YouTryToAccessToAFileThatIsNotAWebsitePage=Stai tentando di accedere ad una pagina che non è pesente UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 characters -MainLanguage=Main language +MainLanguage=Lingua principale OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/ja_JP/admin.lang b/htdocs/langs/ja_JP/admin.lang index 425e8bec807..0ffb092fea4 100644 --- a/htdocs/langs/ja_JP/admin.lang +++ b/htdocs/langs/ja_JP/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=注:制限なしお使いのPHPの設定で設定されていません MaxSizeForUploadedFiles=アップロードファイルの最大サイズ(0は任意のアップロードを許可しないように) UseCaptchaCode=ログインページで、グラフィカルコード(CAPTCHA)を使用して -AntiVirusCommand= アンチウイルスのコマンドへのフルパス -AntiVirusCommandExample= ClamWinの例:C:\\ PROGRA〜1 \\ ClamWinの\\ BIN \\ clamscan.exe <br> ClamAV用例:は/ usr / bin / clamscan +AntiVirusCommand=アンチウイルスのコマンドへのフルパス +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= コマンドラインで複数のパラメータ -AntiVirusParamExample= ClamWinのための例: - データベース= "はC:\\ Program Files(x86)を\\ ClamWinの\\ libに" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=会計モジュールのセットアップ UserSetup=ユーザーの管理設定 MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=デモで機能を無効にする 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. OnlyActiveElementsAreShown=から要素のみ<a href="%s">対応のモジュールが</a>表示されます。 -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=でアクティブに @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=地域 DictionaryCountry=国 DictionaryCurrency=通貨 -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VATレートまたは販売税率 @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=率 LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=デフォルトでは、提案されたIRPFは0です。ルールの終わり。 LocalTax2IsUsedExampleES=スペインでは、フリーランサーとサービスモジュールの税制を選択した企業に提供する独立した専門家。 LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=購入 CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=販売 CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=ない翻訳がコードに見つからない場合、デフォルトで使用されるラベル LabelOnDocuments=ドキュメントのラベル LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=セキュリティ監査イベント Audit=監査 @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=システム情報では、読み取り専用モードでのみ管理者の目に見える得るその他の技術情報です。 SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=ユーザーモジュールのセットアップ UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=請求書ドキュメントモデル BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=検証日に請求書の日付を強制的に -SuggestedPaymentModesIfNotDefinedInInvoice=請求書のために定義されていない場合、デフォルトでは請求書上で示唆決済モード +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=請求書のフリーテキスト @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=商業的な提案はモジュールのセットアップ ProposalsNumberingModules=商業的な提案番号モジュール ProposalsPDFModules=商業的な提案文書のモデル -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=商業的な提案でフリーテキスト WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=モジュールの番号受注 OrdersModelModule=注文書のモデル @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/ja_JP/bills.lang b/htdocs/langs/ja_JP/bills.lang index 1b81a9dba8f..6983da51ab6 100644 --- a/htdocs/langs/ja_JP/bills.lang +++ b/htdocs/langs/ja_JP/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=仕入先の請求書 Payment=支払い -PaymentBack=戻って支払い -CustomerInvoicePaymentBack=戻って支払い +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=支払い PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=支払いを削除します。 ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=受け取った支払い @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/ja_JP/blockedlog.lang b/htdocs/langs/ja_JP/blockedlog.lang index 3b14b0761a3..8410e1d5419 100644 --- a/htdocs/langs/ja_JP/blockedlog.lang +++ b/htdocs/langs/ja_JP/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/ja_JP/cashdesk.lang b/htdocs/langs/ja_JP/cashdesk.lang index 8fb2af438ff..53905618d23 100644 --- a/htdocs/langs/ja_JP/cashdesk.lang +++ b/htdocs/langs/ja_JP/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=この記事を追加します。 RestartSelling=販売に戻る SellFinished=販売完了 PrintTicket=印刷チケット +SendTicket=Send ticket NoProductFound=記事見つかりません ProductFound=製品が見つかりました NoArticle=いいえ記事ません @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=請求書のNb Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/ja_JP/companies.lang b/htdocs/langs/ja_JP/companies.lang index 37ddfe69630..5779051f34f 100644 --- a/htdocs/langs/ja_JP/companies.lang +++ b/htdocs/langs/ja_JP/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=データベースから削除された会社 "%s"。 ListOfContacts=連絡先/アドレスのリスト ListOfContactsAddresses=連絡先/アドレスのリスト ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=連絡先を表示する ContactsAllShort=すべて(フィルタなし) ContactType=コンタクトタイプ @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/ja_JP/compta.lang b/htdocs/langs/ja_JP/compta.lang index 10ad16add2d..863b691b5b1 100644 --- a/htdocs/langs/ja_JP/compta.lang +++ b/htdocs/langs/ja_JP/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/ja_JP/errors.lang b/htdocs/langs/ja_JP/errors.lang index e75a5699366..fe936f0de87 100644 --- a/htdocs/langs/ja_JP/errors.lang +++ b/htdocs/langs/ja_JP/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=ファイルはサーバーで完全に受け取っていませ ErrorNoTmpDir=一時的なdirectyの%sが存在しません。 ErrorUploadBlockedByAddon=PHP / Apacheプラグインによってブロックされてアップロードします。 ErrorFileSizeTooLarge=ファイルサイズが大きすぎます。 +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=(%s桁の最大値)int型に対して長すぎるサイズ ErrorSizeTooLongForVarcharType=文字列型(%s文字最大)長すぎるサイズ ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/ja_JP/install.lang b/htdocs/langs/ja_JP/install.lang index e9edfac1a37..530e00adb78 100644 --- a/htdocs/langs/ja_JP/install.lang +++ b/htdocs/langs/ja_JP/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=あなたのPHPの最大のセッションメモリは<b>%s</b>に設定されています。これは十分なはずです。 PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=お使いのPHPインストールはCurlをサポー ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=ディレクトリの%sが存在しません。 ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/ja_JP/link.lang b/htdocs/langs/ja_JP/link.lang index 51c5d766fc4..ede779683da 100644 --- a/htdocs/langs/ja_JP/link.lang +++ b/htdocs/langs/ja_JP/link.lang @@ -8,3 +8,4 @@ LinkRemoved=リンク %s が削除されました ErrorFailedToDeleteLink= リンク '<b>%s</b>' を削除できませんでした ErrorFailedToUpdateLink= リンク '<b>%s</b>' を更新できませんでした URLToLink=リンクの URL +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/ja_JP/mails.lang b/htdocs/langs/ja_JP/mails.lang index 4c1dd54d0d4..cdd1d8e1eeb 100644 --- a/htdocs/langs/ja_JP/mails.lang +++ b/htdocs/langs/ja_JP/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/ja_JP/main.lang b/htdocs/langs/ja_JP/main.lang index 7dc914b5354..571c9f75ab4 100644 --- a/htdocs/langs/ja_JP/main.lang +++ b/htdocs/langs/ja_JP/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=試験用接続 ToClone=クローン +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=定義されているクローンを作成するデータがありません。 Of=の @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=リストビュー +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -971,7 +974,7 @@ CommentDeleted=Comment deleted Everybody=皆 PayedBy=Paid by PayedTo=Paid to -Monthly=Monthly +Monthly=毎月 Quarterly=Quarterly Annual=Annual Local=Local @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/ja_JP/other.lang b/htdocs/langs/ja_JP/other.lang index 27b1ffe543e..bed40f08556 100644 --- a/htdocs/langs/ja_JP/other.lang +++ b/htdocs/langs/ja_JP/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=タイトル WEBSITE_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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/ja_JP/products.lang b/htdocs/langs/ja_JP/products.lang index b2546e37351..61a31695f3a 100644 --- a/htdocs/langs/ja_JP/products.lang +++ b/htdocs/langs/ja_JP/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=原産国 -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=ユニット p=u. diff --git a/htdocs/langs/ja_JP/projects.lang b/htdocs/langs/ja_JP/projects.lang index f0f0a7e387f..06c0202207e 100644 --- a/htdocs/langs/ja_JP/projects.lang +++ b/htdocs/langs/ja_JP/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=時間 ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=新しい請求書 OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/ja_JP/receiptprinter.lang b/htdocs/langs/ja_JP/receiptprinter.lang index c738f5e89d5..673850ca62f 100644 --- a/htdocs/langs/ja_JP/receiptprinter.lang +++ b/htdocs/langs/ja_JP/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=請求書参照 +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=資本 +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/ja_JP/stripe.lang b/htdocs/langs/ja_JP/stripe.lang index 36061a632a1..90be83666f7 100644 --- a/htdocs/langs/ja_JP/stripe.lang +++ b/htdocs/langs/ja_JP/stripe.lang @@ -32,6 +32,7 @@ VendorName=ベンダーの名前 CSSUrlForPaymentForm=支払いフォームのCSSスタイルシートのURL NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/ja_JP/users.lang b/htdocs/langs/ja_JP/users.lang index 2666d4032c8..daa3de23f77 100644 --- a/htdocs/langs/ja_JP/users.lang +++ b/htdocs/langs/ja_JP/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=ドメインユーザー%s Reactivate=再アクティブ化 CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=ユーザーのグループのいずれかから継承されたので、許可が付与されます。 Inherited=継承された UserWillBeInternalUser=(特定の第三者にリンクされていないため)作成したユーザーは、内部ユーザーになります @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/ja_JP/website.lang b/htdocs/langs/ja_JP/website.lang index fc034117da4..d0c17d5ab4d 100644 --- a/htdocs/langs/ja_JP/website.lang +++ b/htdocs/langs/ja_JP/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=ホームページに設定する RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/ka_GE/admin.lang b/htdocs/langs/ka_GE/admin.lang index 2f36c876c1a..0205f246b0c 100644 --- a/htdocs/langs/ka_GE/admin.lang +++ b/htdocs/langs/ka_GE/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/ka_GE/bills.lang b/htdocs/langs/ka_GE/bills.lang index 6d7c61784f7..8c22ce0159a 100644 --- a/htdocs/langs/ka_GE/bills.lang +++ b/htdocs/langs/ka_GE/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/ka_GE/blockedlog.lang b/htdocs/langs/ka_GE/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/ka_GE/blockedlog.lang +++ b/htdocs/langs/ka_GE/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/ka_GE/cashdesk.lang b/htdocs/langs/ka_GE/cashdesk.lang index 7ddbc71f3e9..f9f00015840 100644 --- a/htdocs/langs/ka_GE/cashdesk.lang +++ b/htdocs/langs/ka_GE/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/ka_GE/companies.lang b/htdocs/langs/ka_GE/companies.lang index c569a48c84a..f8b3d0354e2 100644 --- a/htdocs/langs/ka_GE/companies.lang +++ b/htdocs/langs/ka_GE/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/ka_GE/compta.lang b/htdocs/langs/ka_GE/compta.lang index 1de030a1905..6cd046c5607 100644 --- a/htdocs/langs/ka_GE/compta.lang +++ b/htdocs/langs/ka_GE/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/ka_GE/errors.lang b/htdocs/langs/ka_GE/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/ka_GE/errors.lang +++ b/htdocs/langs/ka_GE/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/ka_GE/install.lang b/htdocs/langs/ka_GE/install.lang index bf9c08c4ba7..f67dff57184 100644 --- a/htdocs/langs/ka_GE/install.lang +++ b/htdocs/langs/ka_GE/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/ka_GE/link.lang b/htdocs/langs/ka_GE/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/ka_GE/link.lang +++ b/htdocs/langs/ka_GE/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/ka_GE/mails.lang b/htdocs/langs/ka_GE/mails.lang index 8b92cef3103..7b3bfd3852a 100644 --- a/htdocs/langs/ka_GE/mails.lang +++ b/htdocs/langs/ka_GE/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/ka_GE/main.lang b/htdocs/langs/ka_GE/main.lang index 686f3ac1849..2082506c405 100644 --- a/htdocs/langs/ka_GE/main.lang +++ b/htdocs/langs/ka_GE/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/ka_GE/other.lang b/htdocs/langs/ka_GE/other.lang index 00259d976bc..ba85f51e739 100644 --- a/htdocs/langs/ka_GE/other.lang +++ b/htdocs/langs/ka_GE/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/ka_GE/products.lang b/htdocs/langs/ka_GE/products.lang index d8a3192551f..a31243a07b6 100644 --- a/htdocs/langs/ka_GE/products.lang +++ b/htdocs/langs/ka_GE/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/ka_GE/projects.lang b/htdocs/langs/ka_GE/projects.lang index 94e440f9ab9..cdc0e6b3c95 100644 --- a/htdocs/langs/ka_GE/projects.lang +++ b/htdocs/langs/ka_GE/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/ka_GE/receiptprinter.lang b/htdocs/langs/ka_GE/receiptprinter.lang index 3df49b9fe67..896eaa313dd 100644 --- a/htdocs/langs/ka_GE/receiptprinter.lang +++ b/htdocs/langs/ka_GE/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/ka_GE/stripe.lang b/htdocs/langs/ka_GE/stripe.lang index eb77441d2cd..844762040af 100644 --- a/htdocs/langs/ka_GE/stripe.lang +++ b/htdocs/langs/ka_GE/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/ka_GE/users.lang b/htdocs/langs/ka_GE/users.lang index 43fa5342da3..aea4e7676e4 100644 --- a/htdocs/langs/ka_GE/users.lang +++ b/htdocs/langs/ka_GE/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/ka_GE/website.lang b/htdocs/langs/ka_GE/website.lang index 9e5c4ba3ff8..c802b2d2ae8 100644 --- a/htdocs/langs/ka_GE/website.lang +++ b/htdocs/langs/ka_GE/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/km_KH/blockedlog.lang b/htdocs/langs/km_KH/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/km_KH/blockedlog.lang +++ b/htdocs/langs/km_KH/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/km_KH/main.lang b/htdocs/langs/km_KH/main.lang index d597668081d..e35d169066d 100644 --- a/htdocs/langs/km_KH/main.lang +++ b/htdocs/langs/km_KH/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/kn_IN/admin.lang b/htdocs/langs/kn_IN/admin.lang index a58d8721b90..99ac4fe564d 100644 --- a/htdocs/langs/kn_IN/admin.lang +++ b/htdocs/langs/kn_IN/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/kn_IN/bills.lang b/htdocs/langs/kn_IN/bills.lang index fa99a0c04f2..634599d74e4 100644 --- a/htdocs/langs/kn_IN/bills.lang +++ b/htdocs/langs/kn_IN/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/kn_IN/blockedlog.lang b/htdocs/langs/kn_IN/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/kn_IN/blockedlog.lang +++ b/htdocs/langs/kn_IN/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/kn_IN/cashdesk.lang b/htdocs/langs/kn_IN/cashdesk.lang index 62081b8ef1a..0b220155882 100644 --- a/htdocs/langs/kn_IN/cashdesk.lang +++ b/htdocs/langs/kn_IN/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/kn_IN/companies.lang b/htdocs/langs/kn_IN/companies.lang index 0affa46d9a7..a327eeb7562 100644 --- a/htdocs/langs/kn_IN/companies.lang +++ b/htdocs/langs/kn_IN/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted="%s" ಸಂಸ್ಥೆಯನ್ನು ಡೇಟಾಬೇಸ್- ListOfContacts=ಸಂಪರ್ಕಗಳ / ವಿಳಾಸಗಳ ಪಟ್ಟಿ ListOfContactsAddresses=ಸಂಪರ್ಕಗಳ / ವಿಳಾಸಗಳ ಪಟ್ಟಿ ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=ಸಂಪರ್ಕವನ್ನು ತೋರಿಸಿ ContactsAllShort=ಎಲ್ಲಾ (ಸೋಸಿಲ್ಲದ) ContactType=ಸಂಪರ್ಕದ ಮಾದರಿ @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/kn_IN/compta.lang b/htdocs/langs/kn_IN/compta.lang index 1de030a1905..6cd046c5607 100644 --- a/htdocs/langs/kn_IN/compta.lang +++ b/htdocs/langs/kn_IN/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/kn_IN/errors.lang b/htdocs/langs/kn_IN/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/kn_IN/errors.lang +++ b/htdocs/langs/kn_IN/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/kn_IN/install.lang b/htdocs/langs/kn_IN/install.lang index bf9c08c4ba7..f67dff57184 100644 --- a/htdocs/langs/kn_IN/install.lang +++ b/htdocs/langs/kn_IN/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/kn_IN/link.lang b/htdocs/langs/kn_IN/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/kn_IN/link.lang +++ b/htdocs/langs/kn_IN/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/kn_IN/mails.lang b/htdocs/langs/kn_IN/mails.lang index 8b92cef3103..7b3bfd3852a 100644 --- a/htdocs/langs/kn_IN/mails.lang +++ b/htdocs/langs/kn_IN/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/kn_IN/main.lang b/htdocs/langs/kn_IN/main.lang index ebb3f3e0ccc..1bc3ff31efb 100644 --- a/htdocs/langs/kn_IN/main.lang +++ b/htdocs/langs/kn_IN/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/kn_IN/other.lang b/htdocs/langs/kn_IN/other.lang index 90f8adbf270..4f4d283f203 100644 --- a/htdocs/langs/kn_IN/other.lang +++ b/htdocs/langs/kn_IN/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=ಶೀರ್ಷಿಕೆ 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/kn_IN/products.lang b/htdocs/langs/kn_IN/products.lang index c5321165f68..cea4640f10b 100644 --- a/htdocs/langs/kn_IN/products.lang +++ b/htdocs/langs/kn_IN/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/kn_IN/projects.lang b/htdocs/langs/kn_IN/projects.lang index 94e440f9ab9..cdc0e6b3c95 100644 --- a/htdocs/langs/kn_IN/projects.lang +++ b/htdocs/langs/kn_IN/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/kn_IN/receiptprinter.lang b/htdocs/langs/kn_IN/receiptprinter.lang index 3df49b9fe67..ac21f079a24 100644 --- a/htdocs/langs/kn_IN/receiptprinter.lang +++ b/htdocs/langs/kn_IN/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=ರಾಜಧಾನಿ +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/kn_IN/stripe.lang b/htdocs/langs/kn_IN/stripe.lang index eb77441d2cd..844762040af 100644 --- a/htdocs/langs/kn_IN/stripe.lang +++ b/htdocs/langs/kn_IN/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/kn_IN/users.lang b/htdocs/langs/kn_IN/users.lang index bb9041b3ef0..535d745855e 100644 --- a/htdocs/langs/kn_IN/users.lang +++ b/htdocs/langs/kn_IN/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/kn_IN/website.lang b/htdocs/langs/kn_IN/website.lang index 9e5c4ba3ff8..c802b2d2ae8 100644 --- a/htdocs/langs/kn_IN/website.lang +++ b/htdocs/langs/kn_IN/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/ko_KR/admin.lang b/htdocs/langs/ko_KR/admin.lang index 1e621b02c71..6ae752012ad 100644 --- a/htdocs/langs/ko_KR/admin.lang +++ b/htdocs/langs/ko_KR/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=PHP 설정에서 한도가 설정되어 있지 않습니다. MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=율 LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/ko_KR/bills.lang b/htdocs/langs/ko_KR/bills.lang index 1389aa363a0..a00d26ae67d 100644 --- a/htdocs/langs/ko_KR/bills.lang +++ b/htdocs/langs/ko_KR/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/ko_KR/blockedlog.lang b/htdocs/langs/ko_KR/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/ko_KR/blockedlog.lang +++ b/htdocs/langs/ko_KR/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/ko_KR/cashdesk.lang b/htdocs/langs/ko_KR/cashdesk.lang index 511362e9858..503a4395ecf 100644 --- a/htdocs/langs/ko_KR/cashdesk.lang +++ b/htdocs/langs/ko_KR/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=브라우저 BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/ko_KR/companies.lang b/htdocs/langs/ko_KR/companies.lang index 5cb68afba05..85c206ffc06 100644 --- a/htdocs/langs/ko_KR/companies.lang +++ b/htdocs/langs/ko_KR/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=회사 "%s"이 (가) 데이터베이스에서 삭제되었습니 ListOfContacts=연락처 / 주소 목록 ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=연락처 표시 ContactsAllShort=모두 (필터 없음) ContactType=연락처 유형 @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=영업 담당자의 이름 SaleRepresentativeLastname=영업 대표자 성 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/ko_KR/compta.lang b/htdocs/langs/ko_KR/compta.lang index 9e8160c0704..025d45b7e1e 100644 --- a/htdocs/langs/ko_KR/compta.lang +++ b/htdocs/langs/ko_KR/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/ko_KR/errors.lang b/htdocs/langs/ko_KR/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/ko_KR/errors.lang +++ b/htdocs/langs/ko_KR/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/ko_KR/install.lang b/htdocs/langs/ko_KR/install.lang index 20cdefbe16d..34634c92c71 100644 --- a/htdocs/langs/ko_KR/install.lang +++ b/htdocs/langs/ko_KR/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/ko_KR/link.lang b/htdocs/langs/ko_KR/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/ko_KR/link.lang +++ b/htdocs/langs/ko_KR/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/ko_KR/mails.lang b/htdocs/langs/ko_KR/mails.lang index afe98d7ed4b..fb9f072a3a9 100644 --- a/htdocs/langs/ko_KR/mails.lang +++ b/htdocs/langs/ko_KR/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/ko_KR/main.lang b/htdocs/langs/ko_KR/main.lang index 986c5c916be..76bd10ca370 100644 --- a/htdocs/langs/ko_KR/main.lang +++ b/htdocs/langs/ko_KR/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=연결 테스트 ToClone=클론 +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=복제 할 데이터가 없습니다. Of=의 @@ -829,6 +830,8 @@ Gender=성별 Genderman=남자 Genderwoman=여자 ViewList=목록 보기 +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=필수 Hello=안녕하세요 GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/ko_KR/other.lang b/htdocs/langs/ko_KR/other.lang index 24e4152e9ad..d934e284774 100644 --- a/htdocs/langs/ko_KR/other.lang +++ b/htdocs/langs/ko_KR/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=표제 WEBSITE_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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/ko_KR/products.lang b/htdocs/langs/ko_KR/products.lang index ad79ba5ae2b..e7309818946 100644 --- a/htdocs/langs/ko_KR/products.lang +++ b/htdocs/langs/ko_KR/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/ko_KR/projects.lang b/htdocs/langs/ko_KR/projects.lang index e5105fe3c87..1c20f4ddeb2 100644 --- a/htdocs/langs/ko_KR/projects.lang +++ b/htdocs/langs/ko_KR/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=관련 항목 ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/ko_KR/receiptprinter.lang b/htdocs/langs/ko_KR/receiptprinter.lang index 3df49b9fe67..49abd29dafe 100644 --- a/htdocs/langs/ko_KR/receiptprinter.lang +++ b/htdocs/langs/ko_KR/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=자본 +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/ko_KR/stripe.lang b/htdocs/langs/ko_KR/stripe.lang index 6add4873669..5b2b5f98857 100644 --- a/htdocs/langs/ko_KR/stripe.lang +++ b/htdocs/langs/ko_KR/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/ko_KR/users.lang b/htdocs/langs/ko_KR/users.lang index f4dcb5f7033..5fdb9913777 100644 --- a/htdocs/langs/ko_KR/users.lang +++ b/htdocs/langs/ko_KR/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/ko_KR/website.lang b/htdocs/langs/ko_KR/website.lang index 25eaff691b1..e206a0172b2 100644 --- a/htdocs/langs/ko_KR/website.lang +++ b/htdocs/langs/ko_KR/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/lo_LA/admin.lang b/htdocs/langs/lo_LA/admin.lang index 73c0b921f6f..e5ec3641e2e 100644 --- a/htdocs/langs/lo_LA/admin.lang +++ b/htdocs/langs/lo_LA/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/lo_LA/bills.lang b/htdocs/langs/lo_LA/bills.lang index 6d7c61784f7..8c22ce0159a 100644 --- a/htdocs/langs/lo_LA/bills.lang +++ b/htdocs/langs/lo_LA/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/lo_LA/blockedlog.lang b/htdocs/langs/lo_LA/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/lo_LA/blockedlog.lang +++ b/htdocs/langs/lo_LA/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/lo_LA/cashdesk.lang b/htdocs/langs/lo_LA/cashdesk.lang index 7ddbc71f3e9..f9f00015840 100644 --- a/htdocs/langs/lo_LA/cashdesk.lang +++ b/htdocs/langs/lo_LA/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/lo_LA/companies.lang b/htdocs/langs/lo_LA/companies.lang index baead90af58..f9972f0f228 100644 --- a/htdocs/langs/lo_LA/companies.lang +++ b/htdocs/langs/lo_LA/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/lo_LA/compta.lang b/htdocs/langs/lo_LA/compta.lang index c5e026448e8..b4eb327c94d 100644 --- a/htdocs/langs/lo_LA/compta.lang +++ b/htdocs/langs/lo_LA/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/lo_LA/errors.lang b/htdocs/langs/lo_LA/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/lo_LA/errors.lang +++ b/htdocs/langs/lo_LA/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/lo_LA/install.lang b/htdocs/langs/lo_LA/install.lang index bf9c08c4ba7..f67dff57184 100644 --- a/htdocs/langs/lo_LA/install.lang +++ b/htdocs/langs/lo_LA/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/lo_LA/link.lang b/htdocs/langs/lo_LA/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/lo_LA/link.lang +++ b/htdocs/langs/lo_LA/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/lo_LA/mails.lang b/htdocs/langs/lo_LA/mails.lang index 8b92cef3103..7b3bfd3852a 100644 --- a/htdocs/langs/lo_LA/mails.lang +++ b/htdocs/langs/lo_LA/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/lo_LA/main.lang b/htdocs/langs/lo_LA/main.lang index 84d0e2276d8..f8dfd03a55c 100644 --- a/htdocs/langs/lo_LA/main.lang +++ b/htdocs/langs/lo_LA/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/lo_LA/other.lang b/htdocs/langs/lo_LA/other.lang index ccef8b33fa1..7141983af57 100644 --- a/htdocs/langs/lo_LA/other.lang +++ b/htdocs/langs/lo_LA/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/lo_LA/products.lang b/htdocs/langs/lo_LA/products.lang index d88c27272d9..a34414a263d 100644 --- a/htdocs/langs/lo_LA/products.lang +++ b/htdocs/langs/lo_LA/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/lo_LA/projects.lang b/htdocs/langs/lo_LA/projects.lang index 67d0d2f744e..494e4317bf2 100644 --- a/htdocs/langs/lo_LA/projects.lang +++ b/htdocs/langs/lo_LA/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/lo_LA/receiptprinter.lang b/htdocs/langs/lo_LA/receiptprinter.lang index 3df49b9fe67..896eaa313dd 100644 --- a/htdocs/langs/lo_LA/receiptprinter.lang +++ b/htdocs/langs/lo_LA/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/lo_LA/stripe.lang b/htdocs/langs/lo_LA/stripe.lang index eb77441d2cd..844762040af 100644 --- a/htdocs/langs/lo_LA/stripe.lang +++ b/htdocs/langs/lo_LA/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/lo_LA/users.lang b/htdocs/langs/lo_LA/users.lang index 78fc1a3486d..b6bd125449d 100644 --- a/htdocs/langs/lo_LA/users.lang +++ b/htdocs/langs/lo_LA/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/lo_LA/website.lang b/htdocs/langs/lo_LA/website.lang index 9e5c4ba3ff8..c802b2d2ae8 100644 --- a/htdocs/langs/lo_LA/website.lang +++ b/htdocs/langs/lo_LA/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/lt_LT/admin.lang b/htdocs/langs/lt_LT/admin.lang index 5235e157377..bd85f3830b6 100644 --- a/htdocs/langs/lt_LT/admin.lang +++ b/htdocs/langs/lt_LT/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=PHP konfiguracijoje ribos nepritaikytos MaxSizeForUploadedFiles=Didžiausias įkeliamo failo dydis (0 - uždrausti betkokius įkėlimus) UseCaptchaCode=Prisijungimo puslapyje naudoti grafinį kodą (CAPTCHA) -AntiVirusCommand= Pilnas maršrutas iki antivirusinės programos komandos -AntiVirusCommandExample= ClamWin pavyzdys: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>ClamAv pavyzdys: /usr/bin/clamscan +AntiVirusCommand=Pilnas maršrutas iki antivirusinės programos komandos +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Daugiau parametrų komandinėje eilutėje -AntiVirusParamExample= ClamWin pavyzdys: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Apskaitos modulio nustatymai UserSetup=Vartotojo valdymo nustatymai MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Funkcija išjungta demo versijoje 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. OnlyActiveElementsAreShown=Rodomi tik elementai iš <a href="%s">leidžiami moduliai</a>. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Aktyvavimą įjungti @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Palikti tuščią norint naudoti reikšmę pagal nutylėji DefaultLink=Nustatytoji nuoroda SetAsDefault=Set as default ValueOverwrittenByUserSetup=Įspėjimas, ši reikšmė gali būti perrašyta pagal vartotojo specifines nuostatas (kiekvienas vartotojas gali nustatyti savo clicktodial URL) -ExternalModule=Išorinis modulis - Įdiegtas kataloge %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Masiniss brūkšninių kodų paleidimas arba atstatymas produktams ar paslaugoms CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regionai DictionaryCountry=Šalys DictionaryCurrency=Valiutos -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=PVM tarifai ar Pardavimo mokesčio tarifai @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Norma LocalTax1IsNotUsed=Nenaudokite antro mokesčio LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=Pagal nutylėjimą siūloma IRPF yra 0. Taisyklės pabaiga. LocalTax2IsUsedExampleES=Ispanijoje, laisvai samdomi ir nepriklausomi specialistai, kurie teikia paslaugas ir įmonės, kurios pasirinko modulių mokesčių sistemą. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Ataskaitos apie vietinius mokesčius CalcLocaltax1=Pardavimai - Pirkimai CalcLocaltax1Desc=Vietinių mokesčių ataskaitos apskaičiuojamas kaip skirtumas tarp pardavimo vietinių mokesčių ir pirkimo vietinių mokesčių @@ -1018,6 +1025,7 @@ CalcLocaltax2=Pirkimai CalcLocaltax2Desc=Vietinių mokesčių ataskaitos yra pirkimo vietinių mokesčių suma iš viso CalcLocaltax3=Pardavimai CalcLocaltax3Desc=Vietinių mokesčių ataskaitos yra pardavimo vietinių mokesčių suma iš viso +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Etiketė naudojamas pagal nutylėjimą, jei kodui nerandamas vertimas LabelOnDocuments=Dokumentų etiketė LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Saugumo audito įvykiai Audit=Auditas @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=Sistemos informacija yra įvairi techninė informacija, kurią gausite tik skaitymo režimu, ir bus matoma tik sistemos administratoriams. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Vartotojų modulio nuostatos UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Sąskaitų-faktūrų dokumentų moduliai BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Sąskaitos-faktūros data įsigalioja patvirtinimo datą -SuggestedPaymentModesIfNotDefinedInInvoice=Siūlomas mokėjimų režimas sąskaitoje-faktūroje pagal nutylėjimą, jei pačioje sąskaitoje nėra apibrėžta kitaip +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Laisvos formos tekstas sąskaitoje-faktūroje @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Komercinių pasiūlymų modulio nuostatos ProposalsNumberingModules=Komercinių pasiūlymų numeracijos modeliai ProposalsPDFModules=Komercinio pasiūlymo dokumentų modeliai -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Laisvas tekstas komerciniame pasiūlyme WatermarkOnDraftProposal=Vandens ženklas komercinių pasiūlymų projekte (nėra, jei lapas tuščias) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Klausti pasiūlyme esančios banko sąskaitos paskirties @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Užsakymų numeracijos modeliai OrdersModelModule=Užsakymo dokumentų modeliai @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/lt_LT/bills.lang b/htdocs/langs/lt_LT/bills.lang index 484eff26861..89e47957999 100644 --- a/htdocs/langs/lt_LT/bills.lang +++ b/htdocs/langs/lt_LT/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=tiekėjų sąskaitos-faktūros Payment=Mokėjimas -PaymentBack=Mokėjimas atgal (grąžinimas) -CustomerInvoicePaymentBack=Mokėjimas atgal (grąžinimas) +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Mokėjimai PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Sumokėta atgal (grąžinta) DeletePayment=Ištrinti mokėjimą ConfirmDeletePayment=Ar tikrai norite ištrinti šį mokėjimą? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Gauti mokėjimai @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Mokėti ToMakePaymentBack=Grąžinti ListOfYourUnpaidInvoices=Sąrašas neapmokėtų sąskaitų-faktūrų NoteListOfYourUnpaidInvoices=Pastaba: Šis sąrašas rodo tik sąskaitas trečiosioms šalims, su kuriom Jūs susijęs kaip prekybos atstovas. -RevenueStamp=Įplaukų rūšis +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Grąžinimo numeris formatu %syymm-nnnn standartinėms sąskaitoms-faktūroms ir %syymm-nnnn kreditinėms sąskaitoms, kur yy yra metai, mm mėnuo ir nnnn yra seka be pertrūkių ir be grįžimo į 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Nustatykite paslaugų eilutės pabaigos datą su kita sąskaitos AutoFillDateToShort=Nustatykite pabaigos datą MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/lt_LT/blockedlog.lang b/htdocs/langs/lt_LT/blockedlog.lang index a24007b6783..0bb5b261bc1 100644 --- a/htdocs/langs/lt_LT/blockedlog.lang +++ b/htdocs/langs/lt_LT/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/lt_LT/cashdesk.lang b/htdocs/langs/lt_LT/cashdesk.lang index 09f43efab79..c78fbe486a8 100644 --- a/htdocs/langs/lt_LT/cashdesk.lang +++ b/htdocs/langs/lt_LT/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Pridėti šią prekę RestartSelling=Eiti atgal į pardavimą SellFinished=Pardavimas baigtas PrintTicket=Spausdinti užsakymą +SendTicket=Send ticket NoProductFound=Prekė nerasta ProductFound=Produktas rastas NoArticle=Nėra prekės @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Sąskaitų-faktūrų skaičius Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Naršyklė BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/lt_LT/companies.lang b/htdocs/langs/lt_LT/companies.lang index 0a2959a9409..15368db9c20 100644 --- a/htdocs/langs/lt_LT/companies.lang +++ b/htdocs/langs/lt_LT/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Įmonė "%s" ištrinta iš duomenų bazės. ListOfContacts=Kontaktų/adresų sąrašas ListOfContactsAddresses=Kontaktų/adresų sąrašas ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Rodyti kontaktus ContactsAllShort=Visi (nėra filtro) ContactType=Kontakto tipas @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/lt_LT/compta.lang b/htdocs/langs/lt_LT/compta.lang index 96ffced295c..d645b4e329e 100644 --- a/htdocs/langs/lt_LT/compta.lang +++ b/htdocs/langs/lt_LT/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Sumos rodomos su įtrauktais mokesčiais -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/lt_LT/errors.lang b/htdocs/langs/lt_LT/errors.lang index ac450e42bec..f1e9b03723b 100644 --- a/htdocs/langs/lt_LT/errors.lang +++ b/htdocs/langs/lt_LT/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Failas pilnai negautas serveryje. ErrorNoTmpDir=Laikinas aplankas %s neegzistuoja. ErrorUploadBlockedByAddon=Įkėlimas užblokuotas PHP/Apache įskiepio. ErrorFileSizeTooLarge=Failo dydis yra per didelis. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Per didelis vidiniam tipui (maksimalus skaitmenų kiekis %s) ErrorSizeTooLongForVarcharType=Per didelis eilutės tipui (maksimalus simbolių skaičius %s) ErrorNoValueForSelectType=Prašome užpildyti reikšmę pasirinkitam sąrašui @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/lt_LT/install.lang b/htdocs/langs/lt_LT/install.lang index 5ad9f6bfb01..aee5facec48 100644 --- a/htdocs/langs/lt_LT/install.lang +++ b/htdocs/langs/lt_LT/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Jūsų PHP maksimali sesijos atmintis yra nustatyta į <b>%s</b>. To turėtų būti pakankamai. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Katalogas %s neegzistuoja. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/lt_LT/link.lang b/htdocs/langs/lt_LT/link.lang index b798330c3e2..c9e19c70173 100644 --- a/htdocs/langs/lt_LT/link.lang +++ b/htdocs/langs/lt_LT/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Nesėkmingas sąsajos '<b>%s</b>' atnaujinimas URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/lt_LT/mails.lang b/htdocs/langs/lt_LT/mails.lang index 87a8dea5bab..ac1348c61ed 100644 --- a/htdocs/langs/lt_LT/mails.lang +++ b/htdocs/langs/lt_LT/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Informacija ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/lt_LT/main.lang b/htdocs/langs/lt_LT/main.lang index 558131a942e..a102b3af53d 100644 --- a/htdocs/langs/lt_LT/main.lang +++ b/htdocs/langs/lt_LT/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Bandyti sujungimą ToClone=Klonuoti +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Nėra apibrėžtų duomenų klonavimui. Of=iš @@ -829,6 +830,8 @@ Gender=Gender Genderman=Vyras Genderwoman=Moteris ViewList=Sąrašo vaizdas +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Sveiki ! GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/lt_LT/other.lang b/htdocs/langs/lt_LT/other.lang index 7a2750bca0b..eb5f8859117 100644 --- a/htdocs/langs/lt_LT/other.lang +++ b/htdocs/langs/lt_LT/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Pavadinimas WEBSITE_DESCRIPTION=Aprašymas 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/lt_LT/products.lang b/htdocs/langs/lt_LT/products.lang index 1fb2dbf4c7c..1a0255b9370 100644 --- a/htdocs/langs/lt_LT/products.lang +++ b/htdocs/langs/lt_LT/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Masinė brūkšninio kodo inicializacija MassBarcodeInitDesc=Šis puslapis gali būti naudojamas inicijuoti brūkšninį kodą ant objektų, kurie neturi apibrėžto brūkšninio kodo. Patikrinti, ar modulio brūkšninio kodo nustatymai pilni. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Kilmės šalis -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Vienetas p=u. diff --git a/htdocs/langs/lt_LT/projects.lang b/htdocs/langs/lt_LT/projects.lang index 34c35aeaf26..088db490d25 100644 --- a/htdocs/langs/lt_LT/projects.lang +++ b/htdocs/langs/lt_LT/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Laikas ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planuojamas darbo krūvis PlannedWorkloadShort=Darbo krūvis ProjectReferers=Related items ProjectMustBeValidatedFirst=Projektas turi būti pirmiausia patvirtintas -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Įvesčių per dieną InputPerWeek=Įvesčių per savaitę InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Nauja sąskaita-faktūra OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/lt_LT/receiptprinter.lang b/htdocs/langs/lt_LT/receiptprinter.lang index 5b050642681..23e9083da13 100644 --- a/htdocs/langs/lt_LT/receiptprinter.lang +++ b/htdocs/langs/lt_LT/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Sąskaitos-faktūros nuoroda +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Kapitalas +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/lt_LT/stripe.lang b/htdocs/langs/lt_LT/stripe.lang index e5888b8ede4..4efacc34103 100644 --- a/htdocs/langs/lt_LT/stripe.lang +++ b/htdocs/langs/lt_LT/stripe.lang @@ -32,6 +32,7 @@ VendorName=Paravėjo vardas CSSUrlForPaymentForm=CSS stiliaus lapo URL mokėjimo formai NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/lt_LT/users.lang b/htdocs/langs/lt_LT/users.lang index c82858ffed6..9bafc72c0b5 100644 --- a/htdocs/langs/lt_LT/users.lang +++ b/htdocs/langs/lt_LT/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domeno Vartotojas %s Reactivate=Atgaivinti CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Leidimas suteiktas, nes paveldėtas iš vieno grupės vartotojų Inherited=Paveldėtas UserWillBeInternalUser=Sukurtas vartotojas bus vidinis vartotojas (nes nėra susietas su konkrečia trečiąja šalimi) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/lt_LT/website.lang b/htdocs/langs/lt_LT/website.lang index 41607804802..7b50688fee0 100644 --- a/htdocs/langs/lt_LT/website.lang +++ b/htdocs/langs/lt_LT/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index d9ca5d4a47d..9ebc336d896 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Piezīme: <b>jūsu</b> PHP konfigurācija pašlaik ierob NoMaxSizeByPHPLimit=Piezīme: Nav limits tiek noteikts jūsu PHP konfigurācijā MaxSizeForUploadedFiles=Maksimālais augšupielādējamo failu izmērs (0 nepieļaut failu augšupielādi) UseCaptchaCode=Izmantot grafisko kodu (CAPTCHA) pieteikšanās lapā -AntiVirusCommand= Pilns ceļš antivīrusa komandai -AntiVirusCommandExample= Piemēram ClamWin: C:\\PROGRA~1\\ClamWin\\bin\\clamscan.exe<br> Piemēram ClamAV: /usr/bin/clamscan +AntiVirusCommand=Pilns ceļš antivīrusa komandai +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Papildus komandrindas parametri -AntiVirusParamExample= Piemērs ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Uzskaites moduļa iestatīšana UserSetup=Lietotāju pārvaldības iestatīšana MultiCurrencySetup=Daudzvalūtu iestatījumi @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Iespēja bloķēta demo versijā FeatureAvailableOnlyOnStable=Funkcija ir pieejama tikai oficiālajā stabilā versijā BoxesDesc=Logrīki ir sastāvdaļas, kas parāda informāciju, kuru varat pievienot, lai personalizētu dažas lapas. Varat izvēlēties starp widget parādīšanu, izvēloties mērķa lapu un noklikšķinot uz Aktivizēt, vai noklikšķinot uz atkritnes, lai to atspējotu. OnlyActiveElementsAreShown=Tikai elementi no <a href="%s">iespējotiem moduļiem</a> tiek rādīti. -ModulesDesc=Moduļi / lietojumprogrammas nosaka, kādas funkcijas ir pieejamas programmatūrā. Daži moduļi pieprasa atļauju lietotājiem pēc moduļa aktivizēšanas. Noklikšķiniet uz ieslēgšanas / izslēgšanas pogas (moduļa beigās), lai iespējotu / atspējotu moduli / programmu. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Jūs varat atrast vairāk moduļu, lai lejupielādētu ārējās tīmekļa vietnēs internetā ... ModulesDeployDesc=Ja atļaujas jūsu failu sistēmā to atļauj, varat izmantot šo rīku, lai izvietotu ārēju moduli. Tad modulis būs redzams cilnē <strong> %s </strong>. ModulesMarketPlaces=Atrastt ārējo lietotni / moduļus @@ -212,6 +212,7 @@ CompatibleUpTo=Savietojams ar versiju %s NotCompatible=Šis modulis, šķiet, nav savietojams ar jūsu Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=Šis modulis prasa atjaunināt Dolibarr %s (Min %s - Maks %s). SeeInMarkerPlace=Skatiet Marketplace +SeeSetupOfModule=See setup of module %s Updated=Atjaunots Nouveauté=Jaunums AchatTelechargement=Pirkt / lejupielādēt @@ -221,6 +222,7 @@ DoliPartnersDesc=Uzņēmumi, kas piedāvā pielāgotus izstrādātus moduļus va WebSiteDesc=Ārējās vietnes vairākiem papildinājumiem (bez kodols) moduļiem ... DevelopYourModuleDesc=Daži risinājumi, lai izstrādātu savu moduli ... URL=URL +RelativeURL=Relative URL BoxesAvailable=Pieejamie logrīki BoxesActivated=Logrīki aktivizēti ActivateOn=Aktivizēt @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Saglabājiet tukšu, lai izmantotu noklusēto vērtību DefaultLink=Noklusējuma saite SetAsDefault=Iestatīt kā noklusējumu ValueOverwrittenByUserSetup=Uzmanību, šī vērtība var pārrakstīt ar lietotāja konkrētu uzstādīšanu (katrs lietotājs var iestatīt savu klikšķini lai zvanītu URL) -ExternalModule=Ārējais modulis - Instalēts direktorijā %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Masveida svītru kodu veidošana trešajām personām BarcodeInitForProductsOrServices=Masveida svītrkodu veidošana produktu vai pakalpojumu atiestatīšana CurrentlyNWithoutBarCode=Pašlaik jums ir <strong>%s</strong> ierakstu <strong>%s</strong> %s bez definēta svītrukoda. @@ -947,7 +950,7 @@ DictionaryCanton=Valstis/provinces DictionaryRegion=Reģions DictionaryCountry=Valstis DictionaryCurrency=Valūtas -DictionaryCivility=Pilsonības nosaukums +DictionaryCivility=Honorific titles DictionaryActions=Darba kārtības pasākumu veidi DictionarySocialContributions=Sociālo vai nodokļu nodokļu veidi DictionaryVAT=PVN likmes vai pārdošanas procentu likmes @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Pēc noklusējuma piedāvātais pārdošanas nodoklis ir 0, ko VATIsUsedExampleFR=Francijā tas nozīmē uzņēmumus vai organizācijas, kurām ir reāla fiskālā sistēma (vienkāršota reāla vai reāla). Sistēma, kurā izmanto PVN. VATIsNotUsedExampleFR=Francijā tas nozīmē asociācijas, kas nav deklarētas par tirdzniecības nodokli, vai uzņēmumi, organizācijas vai brīvās profesijas, kas izvēlējušās mikrouzņēmumu fiskālo sistēmu (pārdošanas nodoklis franšīzē) un samaksājuši franšīzes pārdošanas nodokli bez pārdošanas nodokļa deklarācijas. Ar šo izvēli rēķinos būs redzama atsauce "Nav piemērojams pārdošanas nodoklis - CGI 293.B pants". ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Likme LocalTax1IsNotUsed=Nelietot otru nodokli LocalTax1IsUsedDesc=Izmantojiet otra veida nodokļus (izņemot pirmo) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=IRPF likme pēc noklusējuma, veidojot izredzes, rēķinus LocalTax2IsNotUsedDescES=Pēc noklusējuma ierosinātā IRPF ir 0. Beigas varu. LocalTax2IsUsedExampleES=Spānijā, ārštata un neatkarīgi profesionāļi, kas sniedz pakalpojumus un uzņēmumiem, kuri ir izvēlējušies nodokļu sistēmu moduļus. LocalTax2IsNotUsedExampleES=Spānijā šie uzņēmumi nav pakļauti moduļu nodokļu sistēmai. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Ziņojumi par vietējiem nodokļiem CalcLocaltax1=Pārdošana - pirkumi CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Pirkumi CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Pārdošanas CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label izmantots pēc noklusējuma, ja nav tulkojuma var atrast kodu LabelOnDocuments=Dokumentu marķējums LabelOrTranslationKey=Uzlīme vai tulkošanas taustiņš @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Izdevumu pārskats kurš jāapstiprina Delays_MAIN_DELAY_HOLIDAYS=Atstājiet lūgumus apstiprināt SetupDescription1=Pirms sākat lietot Dolibarr, jānosaka daži sākotnējie parametri un moduļi ir iespējoti / konfigurēti. SetupDescription2=Šīs divas sadaļas ir obligātas (divi pirmie ieraksti iestatīšanas izvēlnē): -SetupDescription3= <a href="%s"> %s -> %s </a> <br> Pamata parametri, ko izmanto, lai pielāgotu lietojumprogrammas noklusējuma uzvedību (piem., Valstij raksturīgās funkcijas). -SetupDescription4= <a href="%s"> %s -> %s </a> <br> Šī programmatūra ir daudzu moduļu / programmu komplekts, kas ir vairāk vai mazāk neatkarīgi. Moduļiem, kas atbilst jūsu vajadzībām, jābūt iespējotiem un konfigurētiem. Jaunie vienumi / opcijas tiek pievienotas izvēlnēm, aktivizējot moduli. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Citi iestatījumu izvēlnes ieraksti pārvalda izvēles parametrus. LogEvents=Drošības audita notikumi Audit=Audits @@ -1128,7 +1136,7 @@ LogEventDesc=Iespējot konkrētu drošības notikumu reģistrēšanu. Administra AreaForAdminOnly=Iestatīšanas parametrus var iestatīt tikai <b> administratora lietotāji </b>. SystemInfoDesc=Sistēmas informācija ir dažādi tehniskā informācija jums tikai lasīšanas režīmā un redzama tikai administratoriem. SystemAreaForAdminOnly=Šī sadaļa ir pieejama tikai administratora lietotājiem. Dolibarr lietotāja atļaujas nevar mainīt šo ierobežojumu. -CompanyFundationDesc=Rediģējiet uzņēmuma / vienības informāciju. Lapas apakšā noklikšķiniet uz pogas "%s". +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Ja jums ir ārējais grāmatvedis / grāmatvedis, varat rediģēt šeit savu informāciju. AccountantFileNumber=Grāmatveža kods DisplayDesc=Šeit var mainīt parametrus, kas ietekmē Dolibarr izskatu un uzvedību. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Noteikumi paroļu ģenerēšanai un apstiprināšanai DisableForgetPasswordLinkOnLogonPage=Nerādīt saiti "Aizmirsta parole" pieteikšanās lapā UsersSetup=Lietotāju moduļa uzstādīšana UserMailRequired=Lai izveidotu jaunu lietotāju, nepieciešams e-pasts +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM moduļa iestatīšana ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Rēķina dokumentu modeļi BillsPDFModulesAccordindToInvoiceType=Rēķinu dokumentu modeļi atbilstoši rēķina veidam PaymentsPDFModules=Maksājumu dokumentu paraugi ForceInvoiceDate=Force rēķina datumu apstiprināšanas datuma -SuggestedPaymentModesIfNotDefinedInInvoice=Ieteicamie maksājumi režīmā rēķinā pēc noklusējuma, ja nav definēts rēķins +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Iesakiet norēķinu ar norēķinu kontu SuggestPaymentByChequeToAddress=Ieteikt maksājumu ar čeku uz FreeLegalTextOnInvoices=Brīvs teksts uz rēķiniem @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Pārdevēja maksājumu iestatīšana PropalSetup=Commercial priekšlikumi modulis uzstādīšana ProposalsNumberingModules=Komerciālie priekšlikumu numerācijas modeļi ProposalsPDFModules=Komerciālie priekšlikumu dokumentu modeļi -SuggestedPaymentModesIfNotDefinedInProposal=Ieteicamais maksājuma režīms pēc piedāvājuma pēc noklusējuma, ja tas nav definēts priekšlikumam +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Brīvais teksts komerciālajos priekšlikumos WatermarkOnDraftProposal=Ūdenszīme projektu komerciālo priekšlikumu (none ja tukšs) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Pieprasīt noliktavas avotu pasūtīšanai ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Pieprasiet bankas konta galamērķi pirkuma pasūtījumā ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Pārdošanas pasūtījumu pārvaldības iestatīšana OrdersNumberingModules=Pasūtījumu numerācijas modeļi OrdersModelModule=Pasūtīt dokumenti modeļi @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Brīdinājums, augstākas vērtības pa ModuleActivated=Modulis %s ir aktivizēts un palēnina saskarni EXPORTS_SHARE_MODELS=Eksporta modeļi ir kopīgi ar visiem ExportSetup=Moduļa Eksportēšana iestatīšana +ImportSetup=Setup of module Import InstanceUniqueID=Unikāls gadījuma ID SmallerThan=Mazāks nekā LargerThan=Lielāks nekā @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Izveidojiet anonīmu Ping '+1' Dolibarr pamata serverim (to ve FeatureNotAvailableWithReceptionModule=Funkcija nav pieejama, ja ir iespējota moduļa uztveršana EmailTemplate=E-pasta veidne EMailsWillHaveMessageID=E-pastam būs tags “Atsauces”, kas atbilst šai sintaksei -PDF_USE_ALSO_LANGUAGE_CODE=Ja vēlaties, lai jūsu PDF failā kāds teksta nosaukums tiktu dublēts 2 dažādās valodās tajā pašā ģenerētajā PDF failā, jums šeit ir jāiestata šī otrā valoda, lai ģenerētais PDF saturētu vienā un tajā pašā lappusē 2 dažādas valodas, vienu izvēloties, ģenerējot PDF, un šo, vienu (tikai dažas PDF veidnes to atbalsta). Vienā PDF formātā atstājiet tukšumu 1 valodā. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Šeit ievadiet FontAwesome ikonas kodu. Ja jūs nezināt, kas ir FontAwesome, varat izmantot vispārīgo vērtību fa-adrešu grāmata. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/lv_LV/bills.lang b/htdocs/langs/lv_LV/bills.lang index 3e9b4eec377..677a2029051 100644 --- a/htdocs/langs/lv_LV/bills.lang +++ b/htdocs/langs/lv_LV/bills.lang @@ -59,16 +59,16 @@ SupplierBill=Piegādātāja rēķins SupplierBills=piegādātāju rēķini Payment=Maksājums PaymentBack=Atmaksa -CustomerInvoicePaymentBack=Maksājumu atpakaļ +CustomerInvoicePaymentBack=Atmaksa Payments=Maksājumi PaymentsBack=Atmaksas paymentInInvoiceCurrency=rēķinu valūtā PaidBack=Atmaksāts atpakaļ DeletePayment=Izdzēst maksājumu ConfirmDeletePayment=Vai tiešām vēlaties dzēst šo maksājumu? -ConfirmConvertToReduc=Vai vēlaties konvertēt šo %s par absolūto atlaidi? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=Summa tiks saglabāta starp visām atlaidēm un to var izmantot kā atlaidi pašreizējam vai nākotnes rēķinam par šo klientu. -ConfirmConvertToReducSupplier=Vai vēlaties konvertēt šo %s par absolūto atlaidi? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=Summa tiks saglabāta starp visām atlaidēm un to var izmantot kā atlaidi pašreizējam vai nākamajam rēķinam par šo pārdevēju. SupplierPayments=Pārdevēja maksājumi ReceivedPayments=Saņemtie maksājumi @@ -219,7 +219,10 @@ ShowInvoiceSituation=Rādīt situāciju rēķinu UseSituationInvoices=Atļaut rēķinu par situāciju UseSituationInvoicesCreditNote=Atļaut situācijas rēķina kredītvēstuli Retainedwarranty=Saglabāta garantija +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Saglabātais garantijas noklusējuma procents +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=Maksāt %s toPayOn=maksāt pa tālruni %s RetainedWarranty=Saglabātā garantija @@ -509,11 +512,11 @@ ToMakePayment=Maksāt ToMakePaymentBack=Atmaksāt ListOfYourUnpaidInvoices=Saraksts ar neapmaksātiem rēķiniem NoteListOfYourUnpaidInvoices=Piezīme: Šis saraksts satur tikai rēķinus par trešo pušu Jums ir saistīti ar kā pārdošanas pārstāvis. -RevenueStamp=Ieņēmumu zīmogs +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Šī opcija ir pieejama tikai tad, ja izveidojat rēķinu no trešās personas cilnes "Klients" YouMustCreateInvoiceFromSupplierThird=Šī opcija ir pieejama tikai tad, ja izveidojat rēķinu no trešās puses cilnes „Pārdevējs” YouMustCreateStandardInvoiceFirstDesc=Vispirms vispirms jāizveido standarta rēķins un jāpārveido tas par "veidni", lai izveidotu jaunu veidnes rēķinu -PDFCrabeDescription=Rēķina PDF veidne Krabis. Pilna rēķina veidne (vecā Sponge veidnes ieviešana) +PDFCrabeDescription=Rēķina PDF veidne Krabis. Pilna rēķina veidne PDFSpongeDescription=Rēķina PDF veidne Sponge. Pilnīga rēķina veidne PDFCrevetteDescription=Rēķina PDF veidne Crevette. Pabeigta rēķina veidne situāciju rēķiniem TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Iestatīt pakalpojuma līnijas beigu datumu ar nākamo rēķina d AutoFillDateToShort=Iestatīt beigu datumu MaxNumberOfGenerationReached=Maksimālais gen. sasniedza BILL_DELETEInDolibarr=Rēķins dzēsts +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/lv_LV/blockedlog.lang b/htdocs/langs/lv_LV/blockedlog.lang index c4b286ab723..237dac224bc 100644 --- a/htdocs/langs/lv_LV/blockedlog.lang +++ b/htdocs/langs/lv_LV/blockedlog.lang @@ -5,10 +5,10 @@ Fingerprints=Arhivēti notikumi un pirkstu nospiedumi FingerprintsDesc=Šis ir rīks, lai pārlūkotu vai izvelētu nemainīgus žurnālus. Nemaināmie žurnāli tiek ģenerēti un lokāli arhivēti īpašajā tabulā, reāllaikā, kad ieraksta biznesa notikumu. Varat izmantot šo rīku, lai eksportētu šo arhīvu un saglabātu to ārējam atbalstam (dažas valstis, piemēram, Francija, lūdz jums to darīt katru gadu). Ņemiet vērā, ka šī žurnāla tīrīšana nav funkcija, un visas izmaiņas, kas tika mēģināt izdarīt tieši šajā žurnālā (piemēram, hacker), tiek ziņotas ar nederīgu pirkstu nospiedumu. Ja jums patiešām ir jāiztīra šī tabula, jo izmantojāt savu pieteikumu demonstrācijas / pārbaudes nolūkam un vēlaties tīrīt savus datus, lai sāktu savu produkciju, varat lūgt savam tālākpārdevējam vai integratoram atjaunot datu bāzi (visas jūsu dati tiks noņemti). CompanyInitialKey=Uzņēmuma sākotnējā atslēga (ģeēzijas bloks) BrowseBlockedLog=Nepārveidojami žurnāli -ShowAllFingerPrintsMightBeTooLong=Rādīt visus arhivētos žurnālus (var būt garš) +ShowAllFingerPrintsMightBeTooLong=Rādīt visus arhivētos žurnālus (var būt daudz) ShowAllFingerPrintsErrorsMightBeTooLong=Rādīt visus nederīgos arhīva žurnālus (var būt garš) DownloadBlockChain=Lejupielādējiet pirkstu nospiedumus -KoCheckFingerprintValidity=Arhivēts žurnāla ieraksts nav derīgs. Tas nozīmē, ka kāds (hakeris?) Pēc tam, kad tas tika ierakstīts, ir mainījis dažus datus, vai arī ir izdzēsis iepriekšējo arhivēto ierakstu (pārbaudiet, vai līnija ir ar iepriekšējo #). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Arhivēts žurnāla ieraksts ir derīgs. Dati par šo līniju netika mainīti un ieraksts seko iepriekšējam. OkCheckFingerprintValidityButChainIsKo=Arhivētais žurnāls šķiet derīgs salīdzinājumā ar iepriekšējo, bet ķēde agrāk tika bojāta. AddedByAuthority=Uzglabāti tālvadības iestādē diff --git a/htdocs/langs/lv_LV/cashdesk.lang b/htdocs/langs/lv_LV/cashdesk.lang index fa71099764a..690e8e84d6f 100644 --- a/htdocs/langs/lv_LV/cashdesk.lang +++ b/htdocs/langs/lv_LV/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Pievienot šo preci RestartSelling=Iet atpakaļ uz pārdošanu SellFinished=Pārdošana pabeigta PrintTicket=Drukāt biļeti +SendTicket=Send ticket NoProductFound=Raksts nav atrasts ProductFound=Produkts atrasts NoArticle=Nav preču @@ -48,6 +49,7 @@ Footer=Kājene AmountAtEndOfPeriod=Summa perioda beigās (diena, mēnesis vai gads) TheoricalAmount=Teorētiskā summa RealAmount=Reālā summa +CashFence=Cash fence CashFenceDone=Naudas žogs veikts par periodu NbOfInvoices=Rēķinu skaits Paymentnumpad=Padeves veids maksājuma ievadīšanai @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS ir nepieciešama produktu kategorija OrderNotes=Pasūtījuma piezīmes CashDeskBankAccountFor=Noklusējuma konts, ko izmantot maksājumiem NoPaimementModesDefined=TakePOS konfigurācijā nav definēts paiment režīms -TicketVatGrouped=Grupējiet PVN pēc likmes biļetēs -AutoPrintTickets=Automātiski drukāt biļetes +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Iespējot bāra vai restorāna funkcijas ConfirmDeletionOfThisPOSSale=Vai jūsu apstiprinājums ir šīs pašreizējās pārdošanas dzēšana? ConfirmDiscardOfThisPOSSale=Vai vēlaties atmest šo pašreizējo izpārdošanu? @@ -87,7 +90,19 @@ HeadBar=Galvene SortProductField=Lauks produktu šķirošanai Browser=Pārlūkprogramma BrowserMethodDescription=Vienkārša un ērta kvīts drukāšana. Tikai daži parametri, lai konfigurētu kvīti. Drukājiet, izmantojot pārlūku. -TakeposConnectorMethodDescription=Ārējs modulis ar papildu funkcijām. Iespēja drukāt no mākoņa. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Drukas metode ReceiptPrinterMethodDescription=Jaudīga metode ar daudziem parametriem. Pilnībā pielāgojams ar veidnēm. Nevar izdrukāt no mākoņa. ByTerminal=Ar termināli +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/lv_LV/companies.lang b/htdocs/langs/lv_LV/companies.lang index 9d1a5d84bce..5f304f004e7 100644 --- a/htdocs/langs/lv_LV/companies.lang +++ b/htdocs/langs/lv_LV/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Kompānija "%s" dzēsta no datubāzes. ListOfContacts=Kontaktu / adrešu saraksts ListOfContactsAddresses=Kontaktu/adrešu saraksts ListOfThirdParties=Trešo personu saraksts -ShowCompany=Rādīt trešo personu ShowContact=Rādīt kontaktu ContactsAllShort=Visi (Bez filtra) ContactType=Kontakta veids @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Tirdzniecības pārstāvja vārds SaleRepresentativeLastname=Tirdzniecības pārstāvja uzvārds ErrorThirdpartiesMerge=Pašalot trešās puses, radās kļūda. Lūdzu, pārbaudiet žurnālu. Izmaiņas ir atgrieztas. NewCustomerSupplierCodeProposed=Klienta vai pārdevēja kods jau ir izmantots, tiek piedāvāts jauns kods +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Maksājuma veids - Klients PaymentTermsCustomer=Maksājuma noteikumi - Klients diff --git a/htdocs/langs/lv_LV/compta.lang b/htdocs/langs/lv_LV/compta.lang index fd3f7210d76..7df0adea9f6 100644 --- a/htdocs/langs/lv_LV/compta.lang +++ b/htdocs/langs/lv_LV/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Skatīt %s maksājumu analīzi %s, lai aprēķinātu SeeReportInDueDebtMode=Skatīt %srēķinu analīzi %s, lai aprēķiniem izmantotu zināmos reģistrētos rēķinus, pat ja tie vēl nav uzskaitīti Virsgrāmatā. SeeReportInBookkeepingMode=Lai skatītu <b> Grāmatvedības grāmatvedības tabulu </ b>, skatiet <b> %sBookBooking report%s </ b> RulesAmountWithTaxIncluded=- Uzrādītas summas ir ar visiem ieskaitot nodokļus -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- Tas ietver klienta rēķinus par to, vai tie ir samaksāti vai nē. <br> - Tas ir balstīts uz šo rēķinu apstiprināšanas datumu. <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Tas ietver visus no klientiem saņemto rēķinu faktiskos maksājumus. <br> - Tas ir balstīts uz šo rēķinu apmaksas datumu RulesCATotalSaleJournal=Tas ietver visas kredītlīnijas no pārdošanas žurnāla. RulesAmountOnInOutBookkeepingRecord=Tas ietver jūsu Ledger ierakstu ar grāmatvedības kontiem, kuriem ir grupa "IZDEVUMS" vai "IENĀKUMS" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Apgrozījums, par kuru tiek aprēķināta pārdošanas nodokļ TurnoverCollectedbyVatrate=Apgrozījums, kas iegūts, pārdodot nodokli PurchasebyVatrate=Iegāde pēc pārdošanas nodokļa likmes LabelToShow=Īsais nosaukums +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/lv_LV/errors.lang b/htdocs/langs/lv_LV/errors.lang index e60b9218837..91d0f6444b2 100644 --- a/htdocs/langs/lv_LV/errors.lang +++ b/htdocs/langs/lv_LV/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Serveris failu nav saņemis pilnīgi. ErrorNoTmpDir=Pagaidu direktorija %s neeksistē. ErrorUploadBlockedByAddon=Augšupielāde bloķēja ar PHP/Apache spraudni. ErrorFileSizeTooLarge=Faila izmērs ir pārāk liels. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Izmērs ir pārāk garš int tipam (%s cipari maksimums) ErrorSizeTooLongForVarcharType=Izmērs ir pārāk garš (%s simboli maksimums) ErrorNoValueForSelectType=Lūdzu izvēlieties vērtību no saraksta @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Kļūda, tulkotās lapas valoda ErrorBatchNoFoundForProductInWarehouse=Noliktavā "%s" nav atrasta partija / sērija produktam "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=Šai partijai/sērijai nav pietiekams daudzums produkta "%s" noliktavā "%s". ErrorOnlyOneFieldForGroupByIsPossible=“Grupēt pēc” ir iespējams tikai 1 lauks (citi tiek atmesti) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Jūsu PHP parametrs upload_max_filesize (%s) ir augstāks nekā PHP parametrs post_max_size (%s). Šī nav konsekventa iestatīšana. 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. diff --git a/htdocs/langs/lv_LV/install.lang b/htdocs/langs/lv_LV/install.lang index 4d25eef8309..13f5ab1e7fc 100644 --- a/htdocs/langs/lv_LV/install.lang +++ b/htdocs/langs/lv_LV/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Šis PHP atbalsta Curl. PHPSupportCalendar=Šis PHP atbalsta kalendāru paplašinājumus. PHPSupportUTF8=Šis PHP atbalsta UTF8 funkcijas. PHPSupportIntl=Šī PHP atbalsta Intl funkcijas. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=Šis PHP atbalsta %s funkcijas. PHPMemoryOK=Jūsu PHP maksimālā sesijas atmiņa ir iestatīts uz <b>%s.</b> Tas ir pietiekami. PHPMemoryTooLow=Jūsu PHP max sesijas atmiņa ir iestatīta uz <b>%s</b> baitiem. Tas ir pārāk zems. Mainiet <b>php.ini</b>, lai iestatītu <b>memory_limit</b> parametru vismaz <b> %s </b> baitiem. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Jūsu PHP instalācija neatbalsta Curl. ErrorPHPDoesNotSupportCalendar=Jūsu PHP instalācija neatbalsta php kalendāra paplašinājumus. ErrorPHPDoesNotSupportUTF8=Jūsu PHP instalācija neatbalsta UTF8 funkcijas. Dolibarr nevar darboties pareizi. Atrisiniet to pirms Dolibarr instalēšanas. ErrorPHPDoesNotSupportIntl=Jūsu PHP instalācija neatbalsta Intl funkcijas. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Jūsu PHP instalācija neatbalsta %s funkcijas. ErrorDirDoesNotExists=Katalogs %s neeksistē. ErrorGoBackAndCorrectParameters=Atgriezieties un pārbaudiet/labojiet parametrus. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Pieteikums mēģināja pašupjaunināt, bet insta YouTryInstallDisabledByFileLock=Lietojumprogramma mēģināja pašatjaunināties, bet instalēšanas/atjaunināšanas lapas tika bloķētas drošībai (ar bloķēšanas failu <strong>install.lock</strong> Dolibarr dokumentu direktorijā). <br> ClickHereToGoToApp=Noklikšķiniet šeit, lai pārietu uz savu pieteikumu ClickOnLinkOrRemoveManualy=Noklikšķiniet uz šīs saites. Ja jūs vienmēr redzat šo pašu lapu, dokumenta direktorijā ir jāizņem / jānomaina faila instal.lock. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/lv_LV/link.lang b/htdocs/langs/lv_LV/link.lang index 2f249ac15cf..e649eb2874b 100644 --- a/htdocs/langs/lv_LV/link.lang +++ b/htdocs/langs/lv_LV/link.lang @@ -7,4 +7,5 @@ ErrorFileNotLinked=Failu nevar salinkot LinkRemoved=Saite %s tika dzēsta ErrorFailedToDeleteLink= Kļūda dzēšot saiti '<b>%s</b>' ErrorFailedToUpdateLink= Kļūda atjaunojot saiti '<b>%s</b>' -URLToLink=URL to link +URLToLink=Saites uz URL +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/lv_LV/mails.lang b/htdocs/langs/lv_LV/mails.lang index 0155c024f92..f9c3b411857 100644 --- a/htdocs/langs/lv_LV/mails.lang +++ b/htdocs/langs/lv_LV/mails.lang @@ -18,7 +18,7 @@ MailCCC=Kešatmiņas kopija MailTopic=E-pasta tēma MailText=Ziņa MailFile=Pievienotie faili -MailMessage=E-pasta ķermenis +MailMessage=E-pasta saturs SubjectNotIn=Nav priekšmetā BodyNotIn=Nav ķermenī ShowEMailing=Rādīt e-pastus @@ -97,7 +97,7 @@ SendingFromWebInterfaceIsNotAllowed=Sūtīšana no tīmekļa saskarnes nav atļa LineInFile=Līnija %s failā RecipientSelectionModules=Definētie pieprasījumi saņēmēja izvēles MailSelectedRecipients=Atlasītie saņēmēji -MailingArea=Emailings platība +MailingArea=E-pastu nosūtīšanas sadaļa LastMailings=Jaunākie %s e-pasta ziņojumi TargetsStatistics=Mērķu statistika NbOfCompaniesContacts=Unikālie kontakti/adreses @@ -116,10 +116,10 @@ NbOfEMailingsReceived=Masu emailings saņemti NbOfEMailingsSend=Masveida e-pasts izsūtīts IdRecord=Ieraksta ID DeliveryReceipt=Delivery Ack. -YouCanUseCommaSeparatorForSeveralRecipients=Jūs varat izmantot <b>komatu</b> atdalītāju, lai norādītu vairākus adresātus. +YouCanUseCommaSeparatorForSeveralRecipients=Jūs varat izmantot <b>komatu</b> kā atdalītāju, lai norādītu vairākus adresātus. TagCheckMail=Izsekot pasta atvēršanu TagUnsubscribe=Atrakstīšanās saite -TagSignature=Nosūtītāja lietotāja paraksts +TagSignature=Nosūtītāja paraksts EMailRecipient=Adresāta e-pasts TagMailtoEmail=Saņēmēja e-pasta adrese (ieskaitot html "mailto:" saiti) NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile. @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Nav kontaktpersonas / adreses ar atrastu kategoriju NoContactLinkedToThirdpartieWithCategoryFound=Nav kontaktpersonas / adreses ar atrastu kategoriju OutGoingEmailSetup=Izejošā e-pasta iestatīšana InGoingEmailSetup=Ienākošā e-pasta iestatīšana -OutGoingEmailSetupForEmailing=Izejošā e-pasta iestatīšana (masveida e-pasta sūtīšanai) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Noklusējuma izejošā e-pasta iestatīšana Information=Informācija ContactsWithThirdpartyFilter=Kontakti ar trešās puses filtru diff --git a/htdocs/langs/lv_LV/main.lang b/htdocs/langs/lv_LV/main.lang index b9c4d8fdbcf..ddd5125278a 100644 --- a/htdocs/langs/lv_LV/main.lang +++ b/htdocs/langs/lv_LV/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Saglabājiet un palieciet SaveAndNew=Saglabāt un jaunu TestConnection=Savienojuma pārbaude ToClone=Klonēt +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Izvēlieties datus, kurus vēlaties klonēt: NoCloneOptionsSpecified=Nav datu klons noteikts. Of=no @@ -829,6 +830,8 @@ Gender=Dzimums Genderman=Vīrietis Genderwoman=Sieviete ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Labdien GoodBye=Uz redzēšanos @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Izvēlieties diagrammas opcijas, lai izveidotu diagr Measures=Pasākumi XAxis=X ass YAxis=Y ass +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/lv_LV/orders.lang b/htdocs/langs/lv_LV/orders.lang index 06afd8afee1..9c6ca231797 100644 --- a/htdocs/langs/lv_LV/orders.lang +++ b/htdocs/langs/lv_LV/orders.lang @@ -141,7 +141,7 @@ OrderByEMail=E-pasts OrderByWWW=Online OrderByPhone=Telefons # Documents models -PDFEinsteinDescription=Pilns pasūtījuma modelis (Eratosthene veidnes vecā ieviešana) +PDFEinsteinDescription=Pilns pasūtījuma modelis PDFEratostheneDescription=Pilns pasūtījuma modelis PDFEdisonDescription=Vienkāršs pasūtīt modeli PDFProformaDescription=Pilnīga Proforma rēķina veidne diff --git a/htdocs/langs/lv_LV/other.lang b/htdocs/langs/lv_LV/other.lang index b66f727ad00..53968217348 100644 --- a/htdocs/langs/lv_LV/other.lang +++ b/htdocs/langs/lv_LV/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grafika ir ierobežota ar %s mērījumiem rež OnlyOneFieldForXAxisIsPossible=Šobrīd kā X ass ir iespējams tikai 1 lauks. Ir atlasīts tikai pirmais atlasītais lauks. AtLeastOneMeasureIsRequired=Nepieciešams vismaz 1 lauks mērīšanai AtLeastOneXAxisIsRequired=X-asij ir nepieciešams vismaz 1 lauks - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Pārdošanas pasūtījums apstiprināts Notify_ORDER_SENTBYMAIL=Pārdošanas pasūtījums nosūtīts pa pastu Notify_ORDER_SUPPLIER_SENTBYMAIL=Pirkuma pasūtījums, kas nosūtīts pa e-pastu @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=Lapas URL WEBSITE_TITLE=Virsraksts WEBSITE_DESCRIPTION=Apraksts WEBSITE_IMAGE=Attēls -WEBSITE_IMAGEDesc=Attēlu nesēja relatīvais ceļš. Varat to atstāt tukšu, jo tas tiek reti izmantots (dinamiskais saturs to var izmantot, lai parādītu sīktēlu emuāru ziņu sarakstā). Ceļā izmantojiet __WEBSITEKEY__, ja ceļš ir atkarīgs no vietnes nosaukuma. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Atslēgas vārdi LinesToImport=Importējamās līnijas diff --git a/htdocs/langs/lv_LV/products.lang b/htdocs/langs/lv_LV/products.lang index d7f71d183c1..ee734ef9376 100644 --- a/htdocs/langs/lv_LV/products.lang +++ b/htdocs/langs/lv_LV/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Šis rīks atjaunina PVN likmi, kas noteikta <b><u>ALL< MassBarcodeInit=Masveida svītru kodu izveidošana MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Grāmatvedības kods (iegāde) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Grāmatvedības kods (tirdzniecība) ProductAccountancySellIntraCode=Grāmatvedības kods (pārdošana Kopienas iekšienē) ProductAccountancySellExportCode=Grāmatvedības kods (pārdošanas eksports) @@ -165,7 +167,7 @@ SuppliersPrices=Pārdevēja cenas SuppliersPricesOfProductsOrServices=Pārdevēja cenas (produktiem vai pakalpojumiem) CustomCode=Muita / Prece / HS kods CountryOrigin=Izcelsmes valsts -Nature=Izstrādājuma veids (materiāls/gatavs) +Nature=Nature of product (material/finished) ShortLabel=Īsais nosaukums Unit=Vienība p=u. diff --git a/htdocs/langs/lv_LV/projects.lang b/htdocs/langs/lv_LV/projects.lang index e1dde57cbc3..75fbe01f961 100644 --- a/htdocs/langs/lv_LV/projects.lang +++ b/htdocs/langs/lv_LV/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=kuru esmu piesaistījis projektam Time=Laiks ListOfTasks=Uzdevumu saraksts GoToListOfTimeConsumed=Pāriet uz patērētā laika sarakstu -GoToListOfTasks=Rādīt kā sarakstu -GoToGanttView=parādīt kā Gants GanttView=Ganta skats ListProposalsAssociatedProject=Ar projektu saistīto komerciālo priekšlikumu saraksts ListOrdersAssociatedProject=Ar projektu saistīto pārdošanas pasūtījumu saraksts @@ -188,7 +186,7 @@ PlannedWorkload=Plānotais darba apjoms PlannedWorkloadShort=Darba slodze ProjectReferers=Saistītās vienības ProjectMustBeValidatedFirst=Projektu vispirms jāpārbauda -FirstAddRessourceToAllocateTime=Piešķiriet lietotājam resursus, lai piešķirtu laiku +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Ievades dienā InputPerWeek=Ievades nedēļā InputPerMonth=Ievade mēnesī @@ -240,6 +238,7 @@ LatestModifiedProjects=Jaunākie %s labotie projekti OtherFilteredTasks=Citi filtrētie uzdevumi NoAssignedTasks=Nekādi piešķirtie uzdevumi nav atrasti (piešķiriet projektu / uzdevumus pašreizējam lietotājam no augšējā atlases lodziņa, lai ievadītu laiku tajā) ThirdPartyRequiredToGenerateInvoice=Lai varētu to izrēķināt, projektā ir jādefinē trešā persona. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Atļaut lietotāju komentārus par uzdevumiem AllowCommentOnProject=Atļaut lietotājam komentēt projektus @@ -265,3 +264,4 @@ InvoiceToUse=Izmantojamais rēķina projekts NewInvoice=Jauns rēķins OneLinePerTask=Viena rinda katram uzdevumam OneLinePerPeriod=Viena rindiņa vienam periodam +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/lv_LV/receiptprinter.lang b/htdocs/langs/lv_LV/receiptprinter.lang index 86c55dc6292..cea2b075d45 100644 --- a/htdocs/langs/lv_LV/receiptprinter.lang +++ b/htdocs/langs/lv_LV/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Viltots printeris CONNECTOR_NETWORK_PRINT=Tīkla printeris CONNECTOR_FILE_PRINT=Lokālais printeris CONNECTOR_WINDOWS_PRINT=Lokālais Windows printeris +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Viltus printeris testiem, nedara neko CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Noklusētais profils PROFILE_SIMPLE=Vienāršais profils PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Rēķina mēnesis vēstulēs DOL_VALUE_MONTH=Rēķina mēnesis DOL_VALUE_DAY=Rēķina diena DOL_VALUE_DAY_LETTERS=Rēķina diena vēstulēs +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Rēķina ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Kapitāls +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/lv_LV/stripe.lang b/htdocs/langs/lv_LV/stripe.lang index f9d235eba7d..36d4116396d 100644 --- a/htdocs/langs/lv_LV/stripe.lang +++ b/htdocs/langs/lv_LV/stripe.lang @@ -32,6 +32,7 @@ VendorName=Pārdevēja nosaukums CSSUrlForPaymentForm=CSS stila lapas url maksājuma formu NewStripePaymentReceived=Saņemta jauna josla maksājums NewStripePaymentFailed=New Stripe maksājums tika izmēģināts, bet neizdevās +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Slepena testa atslēga STRIPE_TEST_PUBLISHABLE_KEY=Publicējamais testa taustiņš STRIPE_TEST_WEBHOOK_KEY=Webhooka testa atslēga @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Saite uz iestatījumu Stripe WebHook, lai izsauktu IP ToOfferALinkForLiveWebhook=Saite uz iestatījumu Stripe WebHook, lai izsauktu IPN (tiešraides režīms) PaymentWillBeRecordedForNextPeriod=Maksājums tiks reģistrēts par nākamo periodu. ClickHereToTryAgain=<a href="%s">Noklikšķiniet šeit, lai mēģinātu vēlreiz ...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Sakarā ar stingriem klientu autentifikācijas noteikumiem, karte jāizveido no Stripe biroja. Jūs varat noklikšķināt šeit, lai ieslēgtu Stripe klientu ierakstu: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/lv_LV/users.lang b/htdocs/langs/lv_LV/users.lang index 84e74c12322..7f18b0e8a20 100644 --- a/htdocs/langs/lv_LV/users.lang +++ b/htdocs/langs/lv_LV/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Lietotāji un to īpašības DomainUser=Domēna lietotājs %s Reactivate=Aktivizēt CreateInternalUserDesc=Šī veidlapa ļauj izveidot iekšējo lietotāju savā uzņēmumā/organizācijā. Lai izveidotu ārēju lietotāju (klientu, pārdevēju utt.), Izmantojiet trešās puses kontakta kartītes pogu “Izveidot Dolibarr lietotāju”. -InternalExternalDesc=<b> iekšējais </b> lietotājs ir lietotājs, kas ir daļa no jūsu uzņēmuma / organizācijas. <br> <b> Ārējais </b> lietotājs ir klients, pārdevējs vai cits. <br> <br> abos gadījumos atļaujas definē tiesības uz Dolibarr, arī ārējam lietotājam var būt atšķirīgs izvēlņu pārvaldnieks nekā iekšējais lietotājs (sk. Mājas - iestatīšana - displejs) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Atļauja piešķirta, jo mantojis no viena lietotāja grupai. Inherited=Iedzimta UserWillBeInternalUser=Izveidots lietotājs būs iekšējā lietotāja (jo nav saistīta ar konkrētu trešajai personai) @@ -110,3 +110,8 @@ UserLogged=Lietotājs pieteicies DateEmployment=Nodarbinātības sākuma datums DateEmploymentEnd=Nodarbinātības beigu datums CantDisableYourself=Jūs nevarat atspējot savu lietotāja ierakstu +ForceUserExpenseValidator=Spēka izdevumu pārskata apstiprinātājs +ForceUserHolidayValidator=Piespiedu atvaļinājuma pieprasījuma validētājs +ValidatorIsSupervisorByDefault=Pēc noklusējuma validētājs ir lietotāja uzraugs. Lai saglabātu šo uzvedību, atstājiet tukšu. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/lv_LV/website.lang b/htdocs/langs/lv_LV/website.lang index 929fe13f660..844b54e8c18 100644 --- a/htdocs/langs/lv_LV/website.lang +++ b/htdocs/langs/lv_LV/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Skatīt lapu jaunā cilnē SetAsHomePage=Iestatīt kā mājas lapu RealURL=Reāls URL ViewWebsiteInProduction=Apskatīt vietni, izmantojot mājas URL -SetHereVirtualHost=<u> Lietošana ar Apache / NGinx / ... </u> <br> Ja jūs savā tīmekļa serverī (Apache, Nginx, ...) varat izveidot īpašu virtuālo resursdatoru ar iespējotu PHP un saknes direktoriju <br> <strong> %s </strong> <br> pēc tam iestatiet virtuālā uzņēmēja nosaukumu, kuru esat izveidojis tīmekļa vietnes īpašībās, tāpēc priekšskatījumu var izdarīt arī, izmantojot šo īpašo tīmekļa servera piekļuvi vietējā Dolibarr vietā serveri. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u> Izmantojiet ar PHP serveri. </u> <br> Izstrādājot vidi, jūs varat izvēlēties testēt vietni ar PHP tīmekļa serveri (nepieciešams PHP 5.5), palaižot <br><strong> php -S 0.0. 0.0 8080-t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Izmantojiet savu vietni kopā ar citu Dolibarr mitināšanas pakalpojumu sniedzēju</u> <br> Ja jums nav pieejams tāds interneta serveris kā Apache vai NGinx, varat eksportēt un importēt savu vietni citā Dolibarr instancē, kuru nodrošina cits Dolibarr mitināšanas pakalpojumu sniedzējs un kas nodrošina pilnīgu integrāciju ar vietnes moduli. Dažu Dolibarr mitināšanas pakalpojumu sniedzēju sarakstu varat atrast vietnē <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Pārbaudiet arī to, vai virtuālajam serverim ir atļauja <strong>%s</strong> failiem vietnē <br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Diemžēl šī vietne pašlaik nav pieejama. Lūd WEBSITE_USE_WEBSITE_ACCOUNTS=Iespējot tīmekļa vietnes kontu tabulu WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Ļauj tabulai saglabāt tīmekļa vietņu kontus (pieteikšanās / caurlaide) katrai vietnei / trešajai pusei YouMustDefineTheHomePage=Vispirms ir jādefinē noklusējuma sākumlapa -OnlyEditionOfSourceForGrabbedContentFuture=Brīdinājums: Web lapas izveide, importējot ārēju tīmekļa lapu, ir paredzēta pieredzējušiem lietotājiem. Atkarībā no avota lapas sarežģītības importa rezultāts var atšķirties no oriģināla. Arī tad, ja avota lapa izmanto kopējus CSS stilus vai konfliktējošu javascript, tas, ja strādājat šajā lapā, var izjaukt tīmekļa vietnes redaktora izskatu vai funkcijas. Šī metode ir ātrāks veids, kā izveidot lapu, bet ir ieteicams izveidot jaunu lapu no nulles vai no ieteicamās lapas veidnes. no ārējās lapas ("Online" redaktors NAV pieejams) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. 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ē @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=Lai iegūtu labu SEO praksi, izmantojiet tekstu no 5 l MainLanguage=Galvenā valoda OtherLanguages=Citas valodas UseManifest=Norādiet failu manifest.json +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/mk_MK/admin.lang b/htdocs/langs/mk_MK/admin.lang index 053ff8484b3..f5d4aafd77e 100644 --- a/htdocs/langs/mk_MK/admin.lang +++ b/htdocs/langs/mk_MK/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/mk_MK/bills.lang b/htdocs/langs/mk_MK/bills.lang index 3c1e29b2920..d8c64f369c9 100644 --- a/htdocs/langs/mk_MK/bills.lang +++ b/htdocs/langs/mk_MK/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/mk_MK/blockedlog.lang b/htdocs/langs/mk_MK/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/mk_MK/blockedlog.lang +++ b/htdocs/langs/mk_MK/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/mk_MK/cashdesk.lang b/htdocs/langs/mk_MK/cashdesk.lang index 7ddbc71f3e9..f9f00015840 100644 --- a/htdocs/langs/mk_MK/cashdesk.lang +++ b/htdocs/langs/mk_MK/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/mk_MK/companies.lang b/htdocs/langs/mk_MK/companies.lang index e9b3002b886..2d140b0d23f 100644 --- a/htdocs/langs/mk_MK/companies.lang +++ b/htdocs/langs/mk_MK/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/mk_MK/compta.lang b/htdocs/langs/mk_MK/compta.lang index 1de030a1905..6cd046c5607 100644 --- a/htdocs/langs/mk_MK/compta.lang +++ b/htdocs/langs/mk_MK/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/mk_MK/errors.lang b/htdocs/langs/mk_MK/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/mk_MK/errors.lang +++ b/htdocs/langs/mk_MK/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/mk_MK/install.lang b/htdocs/langs/mk_MK/install.lang index d56298cab0e..40f452de628 100644 --- a/htdocs/langs/mk_MK/install.lang +++ b/htdocs/langs/mk_MK/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/mk_MK/link.lang b/htdocs/langs/mk_MK/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/mk_MK/link.lang +++ b/htdocs/langs/mk_MK/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/mk_MK/mails.lang b/htdocs/langs/mk_MK/mails.lang index 8b92cef3103..6708fce5b2c 100644 --- a/htdocs/langs/mk_MK/mails.lang +++ b/htdocs/langs/mk_MK/mails.lang @@ -33,7 +33,7 @@ CreateMailing=Create emailing TestMailing=Test email ValidMailing=Valid emailing MailingStatusDraft=Draft -MailingStatusValidated=Validated +MailingStatusValidated=Валидирано MailingStatusSent=Sent MailingStatusSentPartialy=Sent partially MailingStatusSentCompletely=Sent completely @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/mk_MK/main.lang b/htdocs/langs/mk_MK/main.lang index 97be38cfce4..d4e5709f606 100644 --- a/htdocs/langs/mk_MK/main.lang +++ b/htdocs/langs/mk_MK/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/mk_MK/other.lang b/htdocs/langs/mk_MK/other.lang index 00259d976bc..ba85f51e739 100644 --- a/htdocs/langs/mk_MK/other.lang +++ b/htdocs/langs/mk_MK/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/mk_MK/products.lang b/htdocs/langs/mk_MK/products.lang index 79c3351caf9..8cf00847a11 100644 --- a/htdocs/langs/mk_MK/products.lang +++ b/htdocs/langs/mk_MK/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/mk_MK/projects.lang b/htdocs/langs/mk_MK/projects.lang index 94e440f9ab9..cdc0e6b3c95 100644 --- a/htdocs/langs/mk_MK/projects.lang +++ b/htdocs/langs/mk_MK/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/mk_MK/receiptprinter.lang b/htdocs/langs/mk_MK/receiptprinter.lang index 3df49b9fe67..82387cf5703 100644 --- a/htdocs/langs/mk_MK/receiptprinter.lang +++ b/htdocs/langs/mk_MK/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Фактура број +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/mk_MK/stripe.lang b/htdocs/langs/mk_MK/stripe.lang index eb77441d2cd..844762040af 100644 --- a/htdocs/langs/mk_MK/stripe.lang +++ b/htdocs/langs/mk_MK/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/mk_MK/users.lang b/htdocs/langs/mk_MK/users.lang index 43fa5342da3..aea4e7676e4 100644 --- a/htdocs/langs/mk_MK/users.lang +++ b/htdocs/langs/mk_MK/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/mk_MK/website.lang b/htdocs/langs/mk_MK/website.lang index 9e5c4ba3ff8..c802b2d2ae8 100644 --- a/htdocs/langs/mk_MK/website.lang +++ b/htdocs/langs/mk_MK/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/mn_MN/admin.lang b/htdocs/langs/mn_MN/admin.lang index 2f36c876c1a..0205f246b0c 100644 --- a/htdocs/langs/mn_MN/admin.lang +++ b/htdocs/langs/mn_MN/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/mn_MN/bills.lang b/htdocs/langs/mn_MN/bills.lang index 6d7c61784f7..8c22ce0159a 100644 --- a/htdocs/langs/mn_MN/bills.lang +++ b/htdocs/langs/mn_MN/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/mn_MN/blockedlog.lang b/htdocs/langs/mn_MN/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/mn_MN/blockedlog.lang +++ b/htdocs/langs/mn_MN/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/mn_MN/cashdesk.lang b/htdocs/langs/mn_MN/cashdesk.lang index 7ddbc71f3e9..f9f00015840 100644 --- a/htdocs/langs/mn_MN/cashdesk.lang +++ b/htdocs/langs/mn_MN/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/mn_MN/companies.lang b/htdocs/langs/mn_MN/companies.lang index c569a48c84a..f8b3d0354e2 100644 --- a/htdocs/langs/mn_MN/companies.lang +++ b/htdocs/langs/mn_MN/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/mn_MN/compta.lang b/htdocs/langs/mn_MN/compta.lang index 1de030a1905..6cd046c5607 100644 --- a/htdocs/langs/mn_MN/compta.lang +++ b/htdocs/langs/mn_MN/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/mn_MN/errors.lang b/htdocs/langs/mn_MN/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/mn_MN/errors.lang +++ b/htdocs/langs/mn_MN/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/mn_MN/install.lang b/htdocs/langs/mn_MN/install.lang index bf9c08c4ba7..f67dff57184 100644 --- a/htdocs/langs/mn_MN/install.lang +++ b/htdocs/langs/mn_MN/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/mn_MN/link.lang b/htdocs/langs/mn_MN/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/mn_MN/link.lang +++ b/htdocs/langs/mn_MN/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/mn_MN/mails.lang b/htdocs/langs/mn_MN/mails.lang index 8b92cef3103..7b3bfd3852a 100644 --- a/htdocs/langs/mn_MN/mails.lang +++ b/htdocs/langs/mn_MN/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/mn_MN/main.lang b/htdocs/langs/mn_MN/main.lang index 0681c294748..9cf03c8bfdb 100644 --- a/htdocs/langs/mn_MN/main.lang +++ b/htdocs/langs/mn_MN/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/mn_MN/other.lang b/htdocs/langs/mn_MN/other.lang index 00259d976bc..ba85f51e739 100644 --- a/htdocs/langs/mn_MN/other.lang +++ b/htdocs/langs/mn_MN/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/mn_MN/products.lang b/htdocs/langs/mn_MN/products.lang index d8a3192551f..a31243a07b6 100644 --- a/htdocs/langs/mn_MN/products.lang +++ b/htdocs/langs/mn_MN/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/mn_MN/projects.lang b/htdocs/langs/mn_MN/projects.lang index 94e440f9ab9..cdc0e6b3c95 100644 --- a/htdocs/langs/mn_MN/projects.lang +++ b/htdocs/langs/mn_MN/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/mn_MN/receiptprinter.lang b/htdocs/langs/mn_MN/receiptprinter.lang index 3df49b9fe67..896eaa313dd 100644 --- a/htdocs/langs/mn_MN/receiptprinter.lang +++ b/htdocs/langs/mn_MN/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/mn_MN/stripe.lang b/htdocs/langs/mn_MN/stripe.lang index eb77441d2cd..844762040af 100644 --- a/htdocs/langs/mn_MN/stripe.lang +++ b/htdocs/langs/mn_MN/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/mn_MN/users.lang b/htdocs/langs/mn_MN/users.lang index 43fa5342da3..aea4e7676e4 100644 --- a/htdocs/langs/mn_MN/users.lang +++ b/htdocs/langs/mn_MN/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/mn_MN/website.lang b/htdocs/langs/mn_MN/website.lang index 9e5c4ba3ff8..c802b2d2ae8 100644 --- a/htdocs/langs/mn_MN/website.lang +++ b/htdocs/langs/mn_MN/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/nb_NO/admin.lang b/htdocs/langs/nb_NO/admin.lang index 07a50a0c31f..dd75edd09bf 100644 --- a/htdocs/langs/nb_NO/admin.lang +++ b/htdocs/langs/nb_NO/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Merk: <b> din </b> PHP-konfigurasjon begrenser for øyeb NoMaxSizeByPHPLimit=Merk: Det er ikke satt noen begrensninger i din PHP-konfigurasjon på denne serveren MaxSizeForUploadedFiles=Maksimal filstørrelse for opplasting av filer (0 for å ikke tillate opplasting) UseCaptchaCode=Bruk Capthca på innloggingsside -AntiVirusCommand= Full sti til antivirus kommandoen -AntiVirusCommandExample= Eksempel på ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe <br> Eksempel på ClamAV: /usr/bin/clamscan +AntiVirusCommand=Full sti til antivirus kommandoen +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Flere parametre på kommandolinjen -AntiVirusParamExample= Eksempel på ClamWin: - database = "C:\\Program Files (x86)\\ClamWin\\ lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Oppsett av regnskapsmodul UserSetup=Oppsett av brukere MultiCurrencySetup=Oppsett av fler-valuta @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Funksjonen er slått av i demo FeatureAvailableOnlyOnStable=Egenskapen er kun tilgjengelig på offisielle, stabile versjoner BoxesDesc=Widgets er komponenter som viser litt informasjon du kan legge til for å tilpasse noen sider. Du kan velge mellom å vise widgeten eller ikke ved å velge målside og klikke på "Aktiver", eller ved å klikke på papirkurven for å deaktivere den. OnlyActiveElementsAreShown=Bare elementer fra <a href="%s">aktiverte moduler</a> vises. -ModulesDesc=Modulene/programmene bestemmer hvilke funksjoner som er tilgjengelige i programvaren. Noen moduler krever at brukere får tillatelser etter at modulen er aktivert. Klikk på på/av-knappen (på slutten av modullinjen) for å aktivere/deaktivere en modul/applikasjon. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Du kan finne flere moduler for nedlasting på eksterne nettsteder. ModulesDeployDesc=Hvis tillatelser for filsystemet tillater det, kan du bruke dette verktøyet til å distribuere en ekstern modul. Modulen vil da være synlig under fanen <strong>%s</strong>. ModulesMarketPlaces=Finn eksterne apper/moduler @@ -212,6 +212,7 @@ CompatibleUpTo=Kompatibel med versjon %s NotCompatible=Denne modulenser ikke ut til å være kompatibel med Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=Denne modulen krever en oppdatering av Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Se på Markedsplass +SeeSetupOfModule=Se oppsett av modul %s Updated=Oppdatert Nouveauté=Nyhet AchatTelechargement=Kjøp/Last ned @@ -221,6 +222,7 @@ DoliPartnersDesc=Liste over selskaper som tilbyr spesialutviklede moduler eller WebSiteDesc=Eksterne nettsteder for flere tilleggs- (ikke-kjerne) moduler ... DevelopYourModuleDesc=Noen løsninger for å utvikle din egen modul... URL=URL +RelativeURL=Relative URL BoxesAvailable=Tilgjengelige widgeter BoxesActivated=Aktiverte widgeter ActivateOn=Aktivert på @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Hold tomt for å bruke standardverdien DefaultLink=Standard kobling SetAsDefault=Sett som standard ValueOverwrittenByUserSetup=Advarsel, denne verdien kan bli overskrevet av brukerspesifikke oppsett (hver bruker kan sette sitt eget clicktodial url) -ExternalModule=Ekstern modul - Installert i katalog %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Masseinitiering av strekkoder for tredjeparter BarcodeInitForProductsOrServices=Masseinitiering eller sletting av strekkoder for varer og tjenester CurrentlyNWithoutBarCode=For øyeblikket har du <strong>%s</strong> poster på <strong>%s</strong> %s uten strekkode. @@ -947,7 +950,7 @@ DictionaryCanton=Stater/provinser DictionaryRegion=Region DictionaryCountry=Land DictionaryCurrency=Valutaer -DictionaryCivility=Tittel +DictionaryCivility=Honorific titles DictionaryActions=Typer agendahendelser DictionarySocialContributions=Typer av sosiale avgifter og skatter DictionaryVAT=MVA satser @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Foreslått MVA er som standard 0. Den kan brukes mot foreninger VATIsUsedExampleFR=I Frankrike betyr det at bedrifter eller organisasjoner har et reelt finanssystem (forenklet reell eller normal reell). Et system hvor MVA er erklært. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Ikke bruk andre skatter LocalTax1IsUsedDesc=Bruk en annen type skatt (annet enn den første) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=Standard RE-sats når du oppretter prospekter, fakturaer, LocalTax2IsNotUsedDescES=Som standard er den foreslåtte IRPF er 0. Slutt på regelen. LocalTax2IsUsedExampleES=I Spania, for frilansere og selvstendige som leverer tjenester, og bedrifter som har valgt moduler for skattesystem. LocalTax2IsNotUsedExampleES=I Spania er de bedrifter som ikke er ikke skattepliktige +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Rapport over lokale avgifter CalcLocaltax1=Salg - Innkjøp CalcLocaltax1Desc=Lokale skatter-rapporter kalkuleres med forskjellen mellom kjøp og salg @@ -1018,6 +1025,7 @@ CalcLocaltax2=Innkjøp CalcLocaltax2Desc=Lokale skatter-rapportene viser totalt kjøp CalcLocaltax3=Salg CalcLocaltax3Desc=Lokale skatter-rapportene viser totalt salg +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Etiketten som brukes som standard hvis ingen oversettelse kan bli funnet for kode LabelOnDocuments=Etiketten på dokumenter LabelOrTranslationKey=Etikett eller oversettelsessnøkkel @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Utgiftsrapporter for godkjenning Delays_MAIN_DELAY_HOLIDAYS=Legg igjen forespørsler for godkjenning SetupDescription1=Før du begynner å bruke Dolibarr, må noen innledende parametere defineres og moduler aktiveres/konfigureres. SetupDescription2=Følgende to seksjoner er obligatoriske (de to første oppføringene i oppsettmenyen): -SetupDescription3= <a href="%s"> %s -> %s </a> <br> Grunnparametere som brukes til å tilpasse standardoppførelsen til applikasjonen din (for eksempel landrelaterte funksjoner). -SetupDescription4= <a href="%s"> %s -> %s </a> <br> Denne programvaren er en serie av mange moduler/applikasjoner, alle mer eller mindre uavhengige. Modulene som er relevante for dine behov, må aktiveres og konfigureres. Nye elementer/alternativer legges til menyer ved aktivering av en modul. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Annet oppsett menyoppføringer styrer valgfrie parametere. LogEvents=Hendelser relatert til sikkerhet Audit=Revisjon @@ -1128,7 +1136,7 @@ LogEventDesc=Aktiver logging av bestemte sikkerhetshendelser. Administratorer n AreaForAdminOnly=Oppsettparametere kan bare angis av <b> administratorbrukere </b>. SystemInfoDesc=Systeminformasjon er diverse teknisk informasjon som kun vises i skrivebeskyttet modus, og som kun er synlig for administratorer. SystemAreaForAdminOnly=Dette området er kun tilgjengelig for administratorbrukere. Dolibarr brukerrettigheter kan ikke endre denne begrensningen. -CompanyFundationDesc=Rediger informasjonen til selskapet/enheten. Klikk på knappen "%s" nederst på siden. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Hvis du har en ekstern revisor/regnskapsholder, kan du endre dennes informasjon her. AccountantFileNumber=Regnskapsførerkode DisplayDesc=Parametre som påvirker utseende og oppførsel av Dolibarr kan endres her. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Regler for å generere og validere passord DisableForgetPasswordLinkOnLogonPage=Ikke vis koblingen "Glemt passord" på innloggingssiden UsersSetup=Oppsett av brukermodulen UserMailRequired=E-postadresse kreves for å opprette en ny bruker +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Dokumentmaler for dokumenter generert fra en gruppeoppføring ##### HRM setup ##### HRMSetup=Oppsett av HRM-modul ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Fakturamaler BillsPDFModulesAccordindToInvoiceType=Faktura-dokumentmodeller etter fakturatype PaymentsPDFModules=Betalingsdokumentmodeller ForceInvoiceDate=Tving fakturadato til godkjenningsdato -SuggestedPaymentModesIfNotDefinedInInvoice=Foreslått betalingsmåte på fakturaer når annet ikke er angitt +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Foreslå betaling trukket fra konto SuggestPaymentByChequeToAddress=Foreslå betaling med sjekk til FreeLegalTextOnInvoices=Fritekst på fakturaer @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Oppsett av leverandørbetaling PropalSetup=Oppsett av modulen Tilbud ProposalsNumberingModules=Nummereringsmodul for tilbud ProposalsPDFModules=Tilbudsmaler -SuggestedPaymentModesIfNotDefinedInProposal=Foreslått standard betalingsmodus på tilbud, hvis valg ikke er gjort +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Fritekst på tilbud WatermarkOnDraftProposal=Vannmerke på tilbudskladder (ingen hvis tom) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Be om bankkonto for tilbudet @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Spør om Lagerkilde for ordre ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Be om bankkonto destinasjon for innkjøpsordre ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Salgsordreoppsett OrdersNumberingModules=Nummereringsmodul for ordre OrdersModelModule=Ordremaler @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Advarsel, høyere verdier reduserer res ModuleActivated=Modul %s er aktivert og bremser grensesnittet EXPORTS_SHARE_MODELS=Eksportmodellene er delt med alle ExportSetup=Oppsett av modul Eksport +ImportSetup=Setup of module Import InstanceUniqueID=Unik ID for forekomsten SmallerThan=Mindre enn LargerThan=Større enn @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Utfør et anonymt Ping '+1' til Dolibarr foundation-serveren ( FeatureNotAvailableWithReceptionModule=Funksjonen er ikke tilgjengelig når modulen Mottak er aktivert EmailTemplate=Mal for e-post EMailsWillHaveMessageID=E-postmeldinger vil være merket 'Referanser' som samsvarer med denne syntaksen -PDF_USE_ALSO_LANGUAGE_CODE=Hvis du vil ha en teksttittel i PDF-en din på to forskjellige språk i samme genererte PDF, må du angi andrespråket her. Det som er valgt når du genererer PDF, og dette (bare få PDF-maler støtter dette). Hold tomt for kun ett språk per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Skriv inn koden til et FontAwesome-ikon. Hvis du ikke vet hva som er FontAwesome, kan du bruke den generelle verdien fa-adresseboken. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/nb_NO/bills.lang b/htdocs/langs/nb_NO/bills.lang index b4d0757bc79..9b288bf1ffa 100644 --- a/htdocs/langs/nb_NO/bills.lang +++ b/htdocs/langs/nb_NO/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Leverandørfakturaer SupplierBill=Leverandørfaktura SupplierBills=Leverandørfakturaer Payment=Betaling -PaymentBack=Tilbakebetaling -CustomerInvoicePaymentBack=Tilbakebetalinger +PaymentBack=Refusjon +CustomerInvoicePaymentBack=Refusjon Payments=Betalinger PaymentsBack=Refusjoner paymentInInvoiceCurrency=i faktura-valuta PaidBack=Tilbakebetalt DeletePayment=Slett betaling ConfirmDeletePayment=Er du sikker på at du vil slette denne betalingen? -ConfirmConvertToReduc=Vil du konvertere denne %s til en absolutt rabatt? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=Beløpet vil bli lagret blant alle rabatter og kan brukes som en rabatt for en nåværende eller fremtidig faktura for denne kunden. -ConfirmConvertToReducSupplier=Vil du konvertere denne %s til en absolutt rabatt? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=Beløpet vil bli lagret blant alle rabatter og kan brukes som en rabatt for en nåværende eller en fremtidig faktura for denne leverandøren. SupplierPayments=Leverandørbetalinger ReceivedPayments=Mottatte betalinger @@ -219,7 +219,10 @@ ShowInvoiceSituation=Vis delfaktura UseSituationInvoices=Tillat delfaktura UseSituationInvoicesCreditNote=Tillat delfaktura kreditnota Retainedwarranty=Tilbakehold +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Tilbakehold standardprosent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=Å betale på %s toPayOn=å betale på %s RetainedWarranty=Tilbakehold @@ -509,11 +512,11 @@ ToMakePayment=Betal ToMakePaymentBack=Tilbakebetal ListOfYourUnpaidInvoices=Liste over ubetalte fakturaer NoteListOfYourUnpaidInvoices=Denne listen inneholder kun fakturaer for tredjeparter du er koblet til som salgsrepresentant. -RevenueStamp=Stempelmerke +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Dette alternativet er bare tilgjengelig når du oppretter faktura fra kategorien "kunde" under tredjepart YouMustCreateInvoiceFromSupplierThird=Dette alternativet er bare tilgjengelig når du oppretter faktura fra kategorien "leverandør" under tredjepart YouMustCreateStandardInvoiceFirstDesc=Du må først lage en standardfaktura og så konvertere den til "mal" for å lage en ny fakturamal -PDFCrabeDescription=PDF-fakturamal Crabe. En komplett fakturamal (gammel implementering av Sponge-mal) +PDFCrabeDescription=PDF-fakturamal Crabe. En komplett fakturamal PDFSpongeDescription=PDF Fakturamal Sponge. En komplett fakturamal PDFCrevetteDescription=PDF fakturamal Crevette. En komplett mal for delfaktura TerreNumRefModelDesc1=Returnerer nummer med format %syymm-nnnn for standardfaktura og %syymm-nnnn for kreditnota, der yy er året, mm måned og nnnn er et løpenummer som starter på 0+1. @@ -575,3 +578,4 @@ AutoFillDateTo=Angi sluttdato for tjenestelinje med neste faktura dato AutoFillDateToShort=Angi sluttdato MaxNumberOfGenerationReached=Maks ant. genereringer nådd BILL_DELETEInDolibarr=Faktura slettet +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/nb_NO/blockedlog.lang b/htdocs/langs/nb_NO/blockedlog.lang index abac55b8269..1f7280e6ab8 100644 --- a/htdocs/langs/nb_NO/blockedlog.lang +++ b/htdocs/langs/nb_NO/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Uforanderlige logger ShowAllFingerPrintsMightBeTooLong=Vis alle arkiverte logger (kan være lang) ShowAllFingerPrintsErrorsMightBeTooLong=Vis alle ikke-gyldige arkivlogger (kan være lang) DownloadBlockChain=Last ned fingeravtrykk -KoCheckFingerprintValidity=Arkivert logg er ikke gyldig. Det betyr at noen (en hacker?) har endret noen data i den arkiverte loggen etter at den ble registrert, eller har slettet den forrige arkiverte posten (sjekk at linjen med tidligere # eksisterer). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Arkivert logg er gyldig. Det betyr at ingen data på denne linjen ble endret og posten følger den forrige. OkCheckFingerprintValidityButChainIsKo=Arkivert logg ser ut til å være gyldig i forhold til den forrige, men kjeden var ødelagt tidligere. AddedByAuthority=Lagret hos ekstern myndighet diff --git a/htdocs/langs/nb_NO/cashdesk.lang b/htdocs/langs/nb_NO/cashdesk.lang index 4c8f57ff9c3..de444112b59 100644 --- a/htdocs/langs/nb_NO/cashdesk.lang +++ b/htdocs/langs/nb_NO/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Legg til denne artikkelen RestartSelling=Gå tilbake på salg SellFinished=Salg fullført PrintTicket=Skriv kvittering +SendTicket=Send ticket NoProductFound=Ingen artikler funnet ProductFound=vare funnet NoArticle=Ingen artikkel @@ -48,6 +49,7 @@ Footer=Bunntekst AmountAtEndOfPeriod=Beløp ved periodens slutt (dag, måned eller år) TheoricalAmount=Teoretisk beløp RealAmount=Virkelig beløp +CashFence=Cash fence CashFenceDone=Kontantoppgjør ferdig for perioden NbOfInvoices=Ant. fakturaer Paymentnumpad=Tastaturtype for å legge inn betaling @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS trenger varekategorier for å fungere OrderNotes=Ordrenotater CashDeskBankAccountFor=Standardkonto for bruk for betalinger i NoPaimementModesDefined=Ingen betalingsmodus definert i TakePOS-konfigurasjonen -TicketVatGrouped=Grupper MVA etter sats i kvitteringer -AutoPrintTickets=Skriv ut kvitteringer automatisk +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Aktiver funksjoner for Bar eller Restaurant ConfirmDeletionOfThisPOSSale=Bekrefter du slettingen av pågående salg? ConfirmDiscardOfThisPOSSale=Ønsker du å forkaste dette nåværende salget? @@ -87,7 +90,19 @@ HeadBar=Toppmeny SortProductField=Felt for sortering av produkter Browser=Nettleser BrowserMethodDescription=Enkel kvitteringsutskrift. Kun noen få parametere for å konfigurere kvitteringen. Skriv ut via nettleser. -TakeposConnectorMethodDescription=Ekstern modul med ekstra funksjoner. Mulighet for å skrive ut fra skyen. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Utskriftsmetode ReceiptPrinterMethodDescription=Metode med mange parametere. Full tilpassbar med maler. Kan ikke skrive ut fra skyen. ByTerminal=Med terminal +TakeposNumpadUsePaymentIcon=Bruk betalingsikonet på numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start et nytt parallellsalg +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/nb_NO/companies.lang b/htdocs/langs/nb_NO/companies.lang index 5f0f0675601..319030bfc9e 100644 --- a/htdocs/langs/nb_NO/companies.lang +++ b/htdocs/langs/nb_NO/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Firma "%s" er slettet fra databasen. ListOfContacts=Oversikt over kontaktpersoner ListOfContactsAddresses=Oversikt over kontaktpersoner ListOfThirdParties=Liste over tredjeparter -ShowCompany=Vis tredjepart ShowContact=Vis kontaktperson ContactsAllShort=Alle (ingen filter) ContactType=Kontaktperson type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Selgers fornavn SaleRepresentativeLastname=Selgers etternavn ErrorThirdpartiesMerge=Det oppsto en feil ved sletting av tredjepart. Vennligst sjekk loggen. Endringer er blitt tilbakestilt. NewCustomerSupplierCodeProposed=Kunde eller leverandørkode er allerede brukt, en ny kode blir foreslått +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Betalingstype - Kunde PaymentTermsCustomer=Betalingsbetingelser - Kunde diff --git a/htdocs/langs/nb_NO/compta.lang b/htdocs/langs/nb_NO/compta.lang index f59c7921d87..0268b80d861 100644 --- a/htdocs/langs/nb_NO/compta.lang +++ b/htdocs/langs/nb_NO/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Se %sanalyse av betalinger%s for en beregning av fakt SeeReportInDueDebtMode=Se %sanalyse av fakturaer%s for en beregning basert på kjente registrerte fakturaer, selv om de ennå ikke er regnskapsført i hovedboken. SeeReportInBookkeepingMode=Se <b> %sRegnskapsrapport%s </b> for en beregning på <b> Hovedbokstabell </b> RulesAmountWithTaxIncluded=- Viste beløp er inkludert alle avgifter -RulesResultDue=- Inkluderer utestående fakturaer, utgifter, MVA og donasjoner, enten de er betalt eller ikke. Inkluderer også utbetalt lønn.<br> - Basert på valideringsdato for fakturaer og MVA og på forfallsdato for utgifter. For lønn definert med Lønn-modulen, benyttes utbetalingstidspunktet. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Inkluderer betalinger gjort mot fakturaer, utgifter, MVA og lønn. <br> Basert på betalingsdato. Donasjonsdato for donasjoner -RulesCADue=- Inkluderer kundens forfalte fakturaer, enten de er betalt eller ikke.<br> Basert på valideringsdatoen til disse fakturaene.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Inkluderer alle betalinger av fakturaer mottatt fra klienter. <br> - Er basert på betalingsdatoen for disse fakturaene <br> RulesCATotalSaleJournal=Den inkluderer alle kredittlinjer fra salgsjournalen. RulesAmountOnInOutBookkeepingRecord=Inkluderer poster i hovedboken med regnskapskontoer som har gruppen "UTGIFTER" eller "INNTEKT" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Omsetning fakturert etter MVA-sats TurnoverCollectedbyVatrate=Omsetning etter MVA-sats PurchasebyVatrate=Innkjøp etter MVA-sats LabelToShow=Kort etikett +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/nb_NO/errors.lang b/htdocs/langs/nb_NO/errors.lang index 6dba399c656..8ec753e1705 100644 --- a/htdocs/langs/nb_NO/errors.lang +++ b/htdocs/langs/nb_NO/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Filen ble ikke fullstendig mottatt av server. ErrorNoTmpDir=Midlertidig mappe %s finnes ikke. ErrorUploadBlockedByAddon=Opplastning blokkert av en PHP/Apache plugin. ErrorFileSizeTooLarge=Filstørrelsen er for stor. +ErrorFieldTooLong=Felt %s er for langt. ErrorSizeTooLongForIntType=Størrelse for lang for int-type (%s sifre maksimum) ErrorSizeTooLongForVarcharType=Størrelse for lang for streng-type (%s tegn maksimum) ErrorNoValueForSelectType=Sett inn verdi for å velge liste @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Feil, språket på oversatt side ErrorBatchNoFoundForProductInWarehouse=Ingen partier/serier funnet for produktet "%s" i lageret "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=Ikke nok mengde for dette partiet/serien for produktet "%s" i lageret "%s". ErrorOnlyOneFieldForGroupByIsPossible=Bare ett felt for 'Grupper etter' er mulig (andre blir forkastet) -ErrorTooManyDifferentValueForSelectedGroupBy=Fant for mange forskjellige verdier (mer enn <b> %s </b>) for feltet '<b> %s </b>', så vi kan ikke bruke det som grafikk. Feltet 'Grupper etter' er fjernet. Kan det være du ønsket å bruke den som X-akse? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHP-parameteren upload_max_filesize (%s) er høyere enn PHP-parameteren post_max_size (%s). Dette er ikke et konsistent oppsett. WarningPasswordSetWithNoAccount=Et passord ble satt for dette medlemmet, men ingen brukerkonto ble opprettet. Det fører til at passordet ikke kan benyttes for å logge inn på Dolibarr. Det kan brukes av en ekstern modul/grensesnitt, men hvis du ikke trenger å definere noen innlogging eller passord for et medlem, kan du deaktivere alternativet "opprett en pålogging for hvert medlem" fra medlemsmodul-oppsettet. Hvis du trenger å administrere en pålogging, men ikke trenger noe passord, kan du holde dette feltet tomt for å unngå denne advarselen. Merk: E-post kan også brukes som en pålogging dersom medlemmet er knyttet til en bruker. diff --git a/htdocs/langs/nb_NO/install.lang b/htdocs/langs/nb_NO/install.lang index 70b583c7caa..33d72b19f03 100644 --- a/htdocs/langs/nb_NO/install.lang +++ b/htdocs/langs/nb_NO/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Denne PHP støtter Curl. PHPSupportCalendar=Denne PHP støtter kalenderutvidelser. PHPSupportUTF8=Denne PHP støtter UTF8 funksjoner. PHPSupportIntl=Dette PHP støtter Intl funksjoner. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=Denne PHP støtter %s-funksjoner. PHPMemoryOK=Din PHP økt-minne er satt til maks.<b>%s</b> bytes. Dette bør være nok. PHPMemoryTooLow=Din PHP max økter-minnet er satt til <b>%s</b> bytes. Dette er for lavt. Endre <b>php.ini</b> å sette <b>memory_limit</b> parameter til minst <b>%s</b> byte. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Din PHP-installasjon støtter ikke Curl. ErrorPHPDoesNotSupportCalendar=PHP-installasjonen din støtter ikke php-kalenderutvidelser. ErrorPHPDoesNotSupportUTF8=Din PHP installasjon har ikke støtte for UTF8-funksjoner. Dolibarr vil ikke fungere riktig. Løs dette før du installerer Dolibarr. ErrorPHPDoesNotSupportIntl=PHP-installasjonen støtter ikke Intl-funksjoner. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=PHP-installasjonen din støtter ikke %s-funksjoner. ErrorDirDoesNotExists=Mappen %s finnes ikke. ErrorGoBackAndCorrectParameters=Gå tilbake og sjekk/korrigér parametrene. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Programmet prøvde å oppgradere selv, men instal YouTryInstallDisabledByFileLock=Programmet prøvde å oppgradere selv, men installerings- / oppgraderingssidene er deaktivert for sikkerhet (ved eksistensen av en låsfil <strong> install.lock </strong> i dolibarr-dokumenter katalogen). <br> ClickHereToGoToApp=Klikk her for å gå til din applikasjon ClickOnLinkOrRemoveManualy=Klikk på følgende lenke. Hvis du alltid ser denne samme siden, må du fjerne/endre navn på filen install.lock i dokumentmappen. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/nb_NO/link.lang b/htdocs/langs/nb_NO/link.lang index 3719cf4a7dc..d8f4d669605 100644 --- a/htdocs/langs/nb_NO/link.lang +++ b/htdocs/langs/nb_NO/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Koblingen til %s ble fjernet ErrorFailedToDeleteLink= Klarte ikke å fjerne kobling'<b>%s</b>' ErrorFailedToUpdateLink= Klarte ikke å oppdatere koblingen til '<b>%s</b>' URLToLink=URL til link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/nb_NO/mails.lang b/htdocs/langs/nb_NO/mails.lang index 3c29bd69e86..415ecec5f1a 100644 --- a/htdocs/langs/nb_NO/mails.lang +++ b/htdocs/langs/nb_NO/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Ingen kontakter/adresser med kategori funnet NoContactLinkedToThirdpartieWithCategoryFound=Ingen kontakter/adresser med kategori funnet OutGoingEmailSetup=Oppsett for utgående epost InGoingEmailSetup=Oppsett for innkommende epost -OutGoingEmailSetupForEmailing=Oppsett av utgående e-post (for masse-e-post) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Standard utgående e-postoppsett Information=Informasjon ContactsWithThirdpartyFilter=Kontakter med tredjepartsfilter diff --git a/htdocs/langs/nb_NO/main.lang b/htdocs/langs/nb_NO/main.lang index 7896ac6e5fc..b90db6eb455 100644 --- a/htdocs/langs/nb_NO/main.lang +++ b/htdocs/langs/nb_NO/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Lagre og bli SaveAndNew=Lagre og ny TestConnection=Test tilkobling ToClone=Klon +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Velg hvilke data du vil klone: NoCloneOptionsSpecified=Det er ikke valgt noen data å klone. Of=av @@ -829,6 +830,8 @@ Gender=Kjønn Genderman=Mann Genderwoman=Kvinne ViewList=Listevisning +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obligatorisk Hello=Hei GoodBye=Farvel @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Velg alternativer for å lage en graf Measures=Målinger XAxis=X-akse YAxis=Y-akse +StatusOfRefMustBe=Status for %s må være %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/nb_NO/other.lang b/htdocs/langs/nb_NO/other.lang index 444b6345cbd..4c894695c78 100644 --- a/htdocs/langs/nb_NO/other.lang +++ b/htdocs/langs/nb_NO/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grafikk er begrenset til %s-mål i 'Barer' -mod OnlyOneFieldForXAxisIsPossible=Bare ett felt er for øyeblikket mulig som X-Akse. Bare det første valgte feltet er valgt. AtLeastOneMeasureIsRequired=Det kreves minst ett felt for mål AtLeastOneXAxisIsRequired=Minst ett felt for X-akse er påkrevd - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Salgsordre validert Notify_ORDER_SENTBYMAIL=Salgsordre sendt via epost Notify_ORDER_SUPPLIER_SENTBYMAIL=Innkjøpsordre sendt via e-post @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=Side-URL WEBSITE_TITLE=Tittel WEBSITE_DESCRIPTION=Beskrivelse WEBSITE_IMAGE=Bilde -WEBSITE_IMAGEDesc=Relativ bane for bildemediet. Du kan holde dette tomt da dette sjelden blir brukt (det kan brukes av dynamisk innhold for å vise et miniatyrbilde i en liste over blogginnlegg). Bruk __WEBSITEKEY__ i banen hvis banen avhenger av nettstedets navn. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Nøkkelord LinesToImport=Linjer å importere diff --git a/htdocs/langs/nb_NO/products.lang b/htdocs/langs/nb_NO/products.lang index e0280204dba..ec59a80ddcc 100644 --- a/htdocs/langs/nb_NO/products.lang +++ b/htdocs/langs/nb_NO/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Dette verktøyet oppdaterer MVA-verdien som er definert MassBarcodeInit=Masse strekkode-endring MassBarcodeInitDesc=Denne siden kan brukes til å lage strekkoder for objekter som ikke har dette. Kontroller at oppsett av modulen Strekkoder er fullført. ProductAccountancyBuyCode=Regnskapskode (kjøp) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Regnskapskode (salg) ProductAccountancySellIntraCode=Regnskapskode (salg intra-community) ProductAccountancySellExportCode=Regnskapskode (salgseksport) @@ -165,7 +167,7 @@ SuppliersPrices=Leverandørpriser SuppliersPricesOfProductsOrServices=Leverandørpriser (av varer eller tjenester) CustomCode=Toll / vare / HS-kode CountryOrigin=Opprinnelsesland -Nature=Varens art (materiale/ferdig) +Nature=Nature of product (material/finished) ShortLabel=Kort etikett Unit=Enhet p= stk diff --git a/htdocs/langs/nb_NO/projects.lang b/htdocs/langs/nb_NO/projects.lang index 07be0df9725..d514c0df475 100644 --- a/htdocs/langs/nb_NO/projects.lang +++ b/htdocs/langs/nb_NO/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=som jeg er knyttet til prosjektet Time=Tid ListOfTasks=Oppgaveliste GoToListOfTimeConsumed=Gå til liste for tidsbruk -GoToListOfTasks=Vis som liste -GoToGanttView=vis som Gantt GanttView=Gantt visning ListProposalsAssociatedProject=Liste over tilbud knyttet til prosjektet ListOrdersAssociatedProject=Liste over salgsordre knyttet til prosjektet @@ -188,7 +186,7 @@ PlannedWorkload=Planlagt arbeidsmengde PlannedWorkloadShort=Arbeidsmengde ProjectReferers=Relaterte elementer ProjectMustBeValidatedFirst=Prosjektet må valideres først -FirstAddRessourceToAllocateTime=Tilknytt brukerressurs til oppgave for å tildele tid +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Tidsbruk pr. dag InputPerWeek=Tidsbruk pr. uke InputPerMonth=Forbruk pr. måned @@ -240,6 +238,7 @@ LatestModifiedProjects=Siste %s endrede prosjekter OtherFilteredTasks=Andre filtrerte oppgaver NoAssignedTasks=Ingen tildelte oppgaver funnet (tilordne prosjekt/oppgaver til den nåværende brukeren fra den øverste valgboksen for å legge inn tid på den) ThirdPartyRequiredToGenerateInvoice=En tredjepart må defineres på prosjektet for å kunne fakturere det. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Tillat brukerkommentarer på oppgaver AllowCommentOnProject=Tillat brukerkommentarer på prosjekter @@ -265,3 +264,4 @@ InvoiceToUse=Fakturamal som skal brukes NewInvoice=Ny faktura OneLinePerTask=Én linje per oppgave OneLinePerPeriod=Én linje per periode +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/nb_NO/receiptprinter.lang b/htdocs/langs/nb_NO/receiptprinter.lang index c908ba6387a..8a3ea66f89a 100644 --- a/htdocs/langs/nb_NO/receiptprinter.lang +++ b/htdocs/langs/nb_NO/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummyskriver CONNECTOR_NETWORK_PRINT=Nettverksskriver CONNECTOR_FILE_PRINT=Lokal skriver CONNECTOR_WINDOWS_PRINT=Lokal Windowsskriver +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Dummyskriver for test. Gjør ingenting CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Standardprofil PROFILE_SIMPLE=Enkel profil PROFILE_EPOSTEP=Epos Tep-profil @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Fakturamåned med bokstaver DOL_VALUE_MONTH=Fakturamåned DOL_VALUE_DAY=Fakturadag DOL_VALUE_DAY_LETTERS=Fakturadag med bokstaver +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Fakturareferanse +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intracommunity number of VAT (ikke i Norge) +DOL_VALUE_MYSOC_CAPITAL=Kapital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/nb_NO/stripe.lang b/htdocs/langs/nb_NO/stripe.lang index bef1913f7ca..b4e05cb5e8a 100644 --- a/htdocs/langs/nb_NO/stripe.lang +++ b/htdocs/langs/nb_NO/stripe.lang @@ -32,6 +32,7 @@ VendorName=Navn på leverandøren CSSUrlForPaymentForm=URL til CSS-stilark for betalingsskjema NewStripePaymentReceived=Ny Stripe betaling mottatt NewStripePaymentFailed=Ny Stripe betaling prøvd men mislyktes +FailedToChargeCard=Kunne ikke lade kortet STRIPE_TEST_SECRET_KEY=Hemmelig testnøkkel STRIPE_TEST_PUBLISHABLE_KEY=Publiserbar testnøkkel STRIPE_TEST_WEBHOOK_KEY=Webhook testnøkkel @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link til oppsett av Stripe WebHook for oppkall av IPN ToOfferALinkForLiveWebhook=Link til oppsett av Stripe WebHook for oppkall av IPN (live-modus) PaymentWillBeRecordedForNextPeriod=Betalingen blir registrert for neste periode. ClickHereToTryAgain=<a href="%s">Klikk her for å prøve igjen ...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=På grunn av sterke regler for autentisering av kunder, må opprettelse av et kort gjøres fra Stripe backoffice. Du kan klikke her for å slå på Stripe kundeoppføring: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/nb_NO/users.lang b/htdocs/langs/nb_NO/users.lang index 5ebfbaf8511..9afc41913f8 100644 --- a/htdocs/langs/nb_NO/users.lang +++ b/htdocs/langs/nb_NO/users.lang @@ -12,7 +12,7 @@ PasswordChangedTo=Passordet er endret til : %s SubjectNewPassword=Ditt nye passord til %s GroupRights=Grupperettigheter UserRights=Brukerrettigheter -UserGUISetup=User Display Setup +UserGUISetup=Brukerens visningsoppsett DisableUser=Deaktiver DisableAUser=Deaktiver en bruker DeleteUser=Slett @@ -34,8 +34,8 @@ ListOfUsers=Brukeroversikt SuperAdministrator=Super Administrator SuperAdministratorDesc=Administrator med alle rettigheter AdministratorDesc=Administrator -DefaultRights=Default Permissions -DefaultRightsDesc=Define here the <u>default</u> permissions that are automatically granted to a <u>new</u> user (to modify permissions for existing users, go to the user card). +DefaultRights=Standard tillatelser +DefaultRightsDesc=Her defineres <u> standard </u> tillatelser som automatisk tildeles en <u> ny </u> bruker (for å endre tillatelser for eksisterende brukere, gå til brukerkortet). DolibarrUsers=Dolibarrbrukere LastName=Etternavn FirstName=Fornavn @@ -66,11 +66,11 @@ CreateDolibarrThirdParty=Lag en tredjepart LoginAccountDisableInDolibarr=Kontoen er deaktivert i Dolibarr. UsePersonalValue=Bruk personlig verdi InternalUser=Intern bruker -ExportDataset_user_1=Users and their properties +ExportDataset_user_1=Brukere og deres egenskaper DomainUser=Domenebruker %s Reactivate=Reaktiver -CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +CreateInternalUserDesc=Dette skjemaet gir deg mulighet til å opprette en intern bruker til din bedrift/organisasjon. For å opprette en ekstern bruker (kunde, leverandør, ...), bruk knappen "Opprett Dolibarr-bruker" fra tredjeparts kontaktkort. +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Rettigheter innvilget fordi de er arvet av en brukegruppe. Inherited=Arvet UserWillBeInternalUser=Opprettet bruker vil være en intern bruker (fordi ikke knyttet til en bestemt tredjepart) @@ -92,8 +92,8 @@ LoginToCreate=Brukernavn å opprette NameToCreate=Navn på tredjepart til å lage YourRole=Dine roller YourQuotaOfUsersIsReached=Din kvote på aktive brukere er nådd! -NbOfUsers=No. of users -NbOfPermissions=No. of permissions +NbOfUsers=Antall brukere +NbOfPermissions=Antall tillatelser DontDowngradeSuperAdmin=Bare en superadmin kan nedgradere en superadmin HierarchicalResponsible=Veileder HierarchicView=Hierarkisk visning @@ -107,6 +107,11 @@ DisabledInMonoUserMode=Deaktivert i vedlikeholds-modus UserAccountancyCode=Bruker regnskapskode UserLogoff=Brukerutlogging UserLogged=Bruker innlogget -DateEmployment=Employment Start Date -DateEmploymentEnd=Employment End Date -CantDisableYourself=You can't disable your own user record +DateEmployment=Ansettelse startdato +DateEmploymentEnd=Ansettelse sluttdato +CantDisableYourself=Du kan ikke deaktivere din egen brukeroppføring +ForceUserExpenseValidator=Tvunget utgiftsrapport-validator +ForceUserHolidayValidator=Tvunget friforespørsel-validator +ValidatorIsSupervisorByDefault=Som standard er validatoren veileder for brukeren. Hold tom for å beholde denne oppførselen. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/nb_NO/website.lang b/htdocs/langs/nb_NO/website.lang index 173ee33b996..df149546c37 100644 --- a/htdocs/langs/nb_NO/website.lang +++ b/htdocs/langs/nb_NO/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Vis side i ny fane SetAsHomePage=Sett som startside RealURL=Virkelig URL ViewWebsiteInProduction=Vis webside ved hjelp av hjemme-URL -SetHereVirtualHost= <u> Bruk med Apache/NGinx/... </u> <br> Hvis du kan opprette, på webserveren din (Apache, Nginx, ...), en dedikert Virtuell Vert med PHP-aktivert og en Root-katalog på <br> <strong> %s </strong> <br> deretter satt navnet på den virtuelle verten du har opprettet i egenskapene til nettstedet, slik at forhåndsvisningen kan gjøres også ved hjelp av denne dedikerte webservertilgangen i stedet for den interne Dolibarr-serveren. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Eksempel på Apache virtuelt vertsoppsett: YouCanAlsoTestWithPHPS= <u> Bruk med PHP-innebygd server </u> <br> I utviklingsmiljø kan du foretrekke å teste nettstedet med PHP-innebygd webserver (PHP 5.5 nødvendig) ved å kjøre <br> <strong> php -S 0.0.0.0:8080 -t %s </strong> YouCanAlsoDeployToAnotherWHP=<u>Kjør nettstedet ditt med en annen leverandør av Dolibarr Hosting</u> <br> Hvis du ikke har en webserver som Apache eller NGinx tilgjengelig på internett, kan du eksportere og importere nettstedet til en annen Dolibarr-forekomst levert av en annen Dolibarr-leverandør som gir full integrasjon med nettstedsmodulen. Du kan finne en liste over noen Dolibarr-vertsleverandører på <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Sjekk også at virtuell vert har tillatelse <strong>%s</strong> på filer til <br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Beklager, dette nettstedet er for øyeblikket off WEBSITE_USE_WEBSITE_ACCOUNTS=Aktiver nettstedkontotabellen WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Aktiver tabellen for å lagre nettstedkontoer (innlogging/pass) for hvert nettsted/tredjepart YouMustDefineTheHomePage=Du må først definere standard startside -OnlyEditionOfSourceForGrabbedContentFuture=Advarsel: Å opprette en nettside ved å importere en ekstern nettside er for erfarne brukere. Avhengig av kompleksiteten til kildesiden, kan resultatet av importen avvike fra originalen. Også hvis kildesiden bruker vanlige CSS-stiler eller motstridende javascript, kan det ødelegge utseendet eller funksjonene til nettsideeditoren når du arbeider på denne siden. Denne metoden er en raskere måte å opprette en side på, men det anbefales å lage din nye side fra grunnen av eller fra en foreslått sidemal. <br> Vær også oppmerksom på at endringer i HTML-kilden vil være mulig når sideinnholdet er initialisert ved å ta det fra en ekstern side ("Online" editor vil IKKE være tilgjengelig) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Kun HTML-kilde er mulig når innholdet ble tatt fra et eksternt nettsted GrabImagesInto=Hent bilder som er funnet i css og side også. ImagesShouldBeSavedInto=Bilder bør lagres i katalogen @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For god SEO-praksis, bruk en tekst mellom 5 og 70 tegn MainLanguage=Hovedspråk OtherLanguages=Andre språk UseManifest=Oppgi en manifest.json-fil +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/nl_BE/admin.lang b/htdocs/langs/nl_BE/admin.lang index 8de85c22445..527f9da1546 100644 --- a/htdocs/langs/nl_BE/admin.lang +++ b/htdocs/langs/nl_BE/admin.lang @@ -60,7 +60,6 @@ ExportStructure=Struktuur NameColumn=Kollomennaam FeatureAvailableOnlyOnStable=Functie alleen beschikbaar op officiële stabiele versies BoxesDesc=Widgets zijn componenten die informatie tonen die u kunt toevoegen om sommige pagina's te personaliseren. U kunt kiezen tussen het weergeven van de widget of niet door de doelpagina te selecteren en op 'Activeren' te klikken, of door op de prullenbak te klikken om deze uit te schakelen. -ModulesDesc=De modules / applicaties bepalen welke functies beschikbaar zijn in de software. Sommige modules vereisen dat machtigingen worden verleend aan gebruikers na het activeren van de module. Klik op de aan / uitknop (aan het einde van de moduleregel) om een module / toepassing in of uit te schakelen. ModulesMarketPlaceDesc=Je kan meer modules vinden door te zoeken op andere externe websites, waar je ze kan downloaden ModulesMarketPlaces=Zoek externe app / modules ModulesDevelopYourModule=Ontwikkel je eigen app / modules @@ -118,6 +117,7 @@ SetupIsReadyForUse=Module-implementatie is voltooid. U moet de module in uw toep NotExistsDirect=De alternatieve hoofdmap is niet gedefinieerd voor een bestaande map. <br> InfDirAlt=Sinds versie 3 is het mogelijk om een alternatieve rootmap te definiëren. Hiermee kunt u in een speciale map plug-ins en aangepaste sjablonen opslaan. <br> Maak gewoon een map aan in de root van Dolibarr (bv: aangepast). <br> InfDirExample=<br> <strong>Verklaar</strong> het dan in het bestand <strong>conf.php</strong> <br> $ Dolibarr_main_url_root_alt='/custom' <br> $ Dolibarr_main_document_root_alt='/pad/of/Dolibarr/htdocs/custom' <br> Als deze regels worden becommentarieerd met "#", schakelt u ze gewoon uit door het teken "#" te verwijderen. +YouCanSubmitFile=You can upload the .zip file of module package from here: LastStableVersion=Nieuwste stabiele versie GenericMaskCodes2=<b>{cccc}</b> de clientcode van n tekens <br> <b>{cccc000}</b> de <b>klantcode</b> op n tekens wordt gevolgd door een teller voor de klant. Deze teller die aan de klant is toegewezen, wordt tegelijkertijd opnieuw ingesteld als de globale teller. <br> <b>{tttt}</b> De code van het type van een derde partij op n tekens (zie menu Home - Instellingen - Woordenboek - Typen derde partijen). Als u deze tag toevoegt, verschilt de teller voor elk type derde partij. <br> GenericMaskCodes4a=<u>Voorbeeld op de 99e %s van de derde partij TheCompany, met datum 31-01-2007:</u> <br> @@ -161,6 +161,7 @@ ModuleCompanyCodePanicum=Retourneer een lege boekhoudcode. Module40Name=Verkoper Module1780Name=Labels/Categorien Module1780Desc=Label/categorie maken (producten, klanten, leveranciers, contacten of leden) +Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). Permission1004=Bekijk voorraadmutaties Permission1005=Creëren / wijzigen voorraadmutaties ValueOfConstantKey=Value of a configuration constant diff --git a/htdocs/langs/nl_BE/bills.lang b/htdocs/langs/nl_BE/bills.lang index 342d138fb72..f6ea88ac2fd 100644 --- a/htdocs/langs/nl_BE/bills.lang +++ b/htdocs/langs/nl_BE/bills.lang @@ -4,6 +4,10 @@ BillsCustomer=Klantfactuur BillsCustomersUnpaid=Onbetaalde klantfacturen BillsCustomersUnpaidForCompany=Onbetaalde afnemersfacturen voor %s DisabledBecauseNotErasable=Niet mogelijk omdat het niet kan worden gewist +PaymentBack=Teruggave +CustomerInvoicePaymentBack=Teruggave +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? CreateCreditNote=Aanmaak krediet nota DoPayment=Doe een betaling DoPaymentBack=Doe een terugbetaling @@ -35,6 +39,7 @@ PaymentTypeTRA=Bank cheque ChequeMaker=Cheque / Transfer uitvoerder DepositId=Id storting ShowUnpaidAll=Bekijk alle onbetaalde facturen +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template TypeContact_facture_external_BILLING=Klant contact NotLastInCycle=Deze factuur is niet de laatste in de rij en mag niet worden aangepast. PDFCrevetteSituationInvoiceLineDecompte=Situatie factuur - AANTAL diff --git a/htdocs/langs/nl_BE/compta.lang b/htdocs/langs/nl_BE/compta.lang index c811b8fa19c..26787bfc20f 100644 --- a/htdocs/langs/nl_BE/compta.lang +++ b/htdocs/langs/nl_BE/compta.lang @@ -24,7 +24,6 @@ ConfirmDeleteSocialContribution=Bent u zeker dat u deze sociale bijdrage/belasti ExportDataset_tax_1=sociale bijdragen/belastingen en betalingen CalcModeLT1Debt=Modus <b>%sRE op afnemersfacturen%s</b> CalcModeLT1Rec=Modus <b>%sRE op leveranciersfacturen%s</b> -RulesResultDue=- Dit omvat openstaande facturen, uitgaven, BTW, donaties, zowel betaald als niet. Dit omvat eveneens betaalde lonen.<br>- Dit is gebaseerd op de validatiedatum van facturen, BTW en de vervaldatum voor uitgaven. Voor lonen die gedefinieerd zijn in de Salaris-module is de datum van betaling gebruikt. RulesResultInOut=- Dit omvat alle betalingen van facturen, uitgaven, BTW en lonen. <br>- Dit is gebaseerd op de betalingsdata van de facturen, uitgaven, BTW en lonen. De donatiedatum voor donaties. PurchasesJournal=Inkoopdagboek DescPurchasesJournal=Inkoopdagboek diff --git a/htdocs/langs/nl_BE/other.lang b/htdocs/langs/nl_BE/other.lang index 5bdc98b4c0b..1ffbb0bb385 100644 --- a/htdocs/langs/nl_BE/other.lang +++ b/htdocs/langs/nl_BE/other.lang @@ -3,5 +3,4 @@ Notify_COMPANY_CREATE=Third party aangemaakt FileIsTooBig=Bestanden zijn te groot WebsiteSetup=Setup van de module website WEBSITE_PAGEURL=URL van de pagina -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. WEBSITE_KEYWORDS=Trefwoorden diff --git a/htdocs/langs/nl_BE/users.lang b/htdocs/langs/nl_BE/users.lang index 83e85755523..161657b3cc9 100644 --- a/htdocs/langs/nl_BE/users.lang +++ b/htdocs/langs/nl_BE/users.lang @@ -12,7 +12,6 @@ LastGroupsCreated=Nieuwste %s groepen gemaakt LastUsersCreated=Laatste %s gemaakte gebruikers CreateDolibarrThirdParty=Maak Derden CreateInternalUserDesc=Met dit formulier kunt u een interne gebruiker in uw bedrijf / organisatie maken. Om een externe gebruiker (klant, leverancier enz.) Aan te maken, gebruikt u de knop 'Maak Dolibarr Gebruiker aan' van de contactkaart van die partij. -InternalExternalDesc=Een <b>interne</b> gebruiker is een gebruiker die deel uitmaakt van uw bedrijf / organisatie. <br> Een <b>externe</b> gebruiker is een klant, verkoper of andere. <br><br> In beide gevallen definieert machtiging rechten op Dolibarr, ook kan de externe gebruiker een ander menu-manager hebben dan de interne gebruiker (zie Home - Setup - Display) ConfirmCreateContact=Weet u zeker dat u een Dolibarr account wilt maken voor deze contactpersoon? ConfirmCreateThirdParty=Weet u zeker dat u een 'derde' wilt maken voor dit lid? NbOfPermissions=Aantal toestemmingen diff --git a/htdocs/langs/nl_NL/admin.lang b/htdocs/langs/nl_NL/admin.lang index 7875a74a1c2..b83e9d0cf25 100644 --- a/htdocs/langs/nl_NL/admin.lang +++ b/htdocs/langs/nl_NL/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Opmerking: <b>uw</b> PHP-configuratie beperkt momenteel NoMaxSizeByPHPLimit=Opmerking: Geen limiet ingesteld in uw PHP instellingen MaxSizeForUploadedFiles=Maximale grootte voor geüploade bestanden (0 om uploaden niet toe te staan) UseCaptchaCode=Gebruik een grafische code (CAPTCHA) op de aanmeldingspagina (SPAM preventie) -AntiVirusCommand= Het volledige pad naar het antiviruscommando -AntiVirusCommandExample= Voorbeeld voor ClamWin: c:\\Program Files (x86)\\ClamWin\\bin\\clamscan.exe<br>Voorbeeld voor ClamAv: /usr/bin/clamscan +AntiVirusCommand=Het volledige pad naar het antiviruscommando +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Aanvullende parameters op de opdrachtregel -AntiVirusParamExample= Voorbeeld voor ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Instellingen van de boekhoudkundige module UserSetup=Gebruikersbeheer instellingen MultiCurrencySetup=Setup meerdere valuta's @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Functionaliteit uitgeschakeld in de demonstratie FeatureAvailableOnlyOnStable=Functie alleen beschikbaar bij officiële stabiele versies BoxesDesc=Widgets zijn componenten die informatie tonen die u kunt toevoegen om sommige pagina's te personaliseren. U kunt kiezen of u de widget wilt weergeven of niet door de doelpagina te selecteren en op 'Activeren' te klikken of door op de prullenbak te klikken om deze uit te schakelen. OnlyActiveElementsAreShown=Alleen elementen van ingeschakelde <a href="%s">modules</a> worden getoond. -ModulesDesc=De modules / applicaties bepalen welke functies beschikbaar zijn in de software. Sommige modules vereisen dat machtigingen worden verleend aan gebruikers na het activeren van de module. Klik op de aan / uit knop (aan het einde van de module lijn) aan / uit te schakelen een module / applicatie. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=U kunt meer modules downloaden van externe websites op het internet... ModulesDeployDesc=Als machtigingen op uw bestandssysteem dit toestaan, kunt u dit hulpprogramma gebruiken om een externe module te implementeren. De module is dan zichtbaar op het tabblad <strong>%s</strong> . ModulesMarketPlaces=Vind externe apps of modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatibel met versie %s NotCompatible=Deze module lijkt niet compatibel met uw Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=Deze module vereist een update van uw Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Zie op de Marktplaats +SeeSetupOfModule=See setup of module %s Updated=Bijgewerkt Nouveauté=Nieuwigheid AchatTelechargement=Kopen/Downloaden @@ -221,6 +222,7 @@ DoliPartnersDesc=Lijst van bedrijven die op maat ontwikkelde modules of functies WebSiteDesc=Externe websites voor meer add-on (niet-core) modules ... DevelopYourModuleDesc=Enkele oplossingen om uw eigen module te ontwikkelen ... URL=URL +RelativeURL=Relative URL BoxesAvailable=Beschikbare widgets BoxesActivated=Widgets geactiveerd ActivateOn=Activeren op @@ -328,7 +330,7 @@ SetupIsReadyForUse=Module-implementatie is voltooid. U moet de module in uw toep NotExistsDirect=De alternatieve hoofdmap is niet gedefinieerd in een bestaande map.<br> InfDirAlt=Vanaf versie 3 is het mogelijk om een alternatieve root directory te definiëren. Dit stelt je in staat om op dezelfde plaats zowel plug-ins als eigen templates te bewaren. <br>Maak gewoon een directory op het niveau van de root van Dolibarr (bv met de naam: aanpassing).<br> InfDirExample=<br>Leg dit vast in het bestand <strong>conf.php</strong><br> $dolibarr_main_url_root_alt='/custom'<br>$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'<br>Als deze lijnen zijn inactief gemaakt met een "#" teken, verwijder dit teken dan om ze te activeren. -YouCanSubmitFile=You can upload the .zip file of module package from here: +YouCanSubmitFile=U kunt het .zip-bestand van het modulepakket vanaf hier uploaden: CurrentVersion=Huidige versie van Dolibarr CallUpdatePage=Blader naar de pagina die de databasestructuur en gegevens bijwerkt: %s. LastStableVersion=Laatste stabiele versie @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Laat leeg om standaardwaarde te gebruiken DefaultLink=Standaard link SetAsDefault=Gebruik standaard ValueOverwrittenByUserSetup=Waarschuwing, deze waarde kan worden overschreven door de gebruiker specifieke setup (elke gebruiker kan zijn eigen ClickToDial url ingestellen) -ExternalModule=Externe module - geïnstalleerd in map %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Massa streepjescode initialisatie relaties BarcodeInitForProductsOrServices=Mass barcode init of reset voor producten of diensten CurrentlyNWithoutBarCode=Momenteel hebt u een <strong>%s</strong> record op <strong>%s</strong>%s zonder gedefinieerde streepjescode. @@ -642,7 +645,7 @@ Module50000Desc=Bied klanten een PayBox online betaalpagina (credit / debit card Module50100Name=POS SimplePOS Module50100Desc=Point of Sale-module SimplePOS (eenvoudige POS). Module50150Name=POS TakePOS -Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). +Module50150Desc=Point of Sale module TakePOS (touchscreen POS, voor winkels, bars of restaurants). Module50200Name=Paypal Module50200Desc=Bied klanten een PayPal-online betaalpagina (PayPal-account of credit- / debetkaarten). Dit kan worden gebruikt om uw klanten toe te staan ad-hocbetalingen te doen of betalingen gerelateerd aan een specifiek Dolibarr-object (factuur, bestelling, enz ...) Module50300Name=Stripe @@ -947,7 +950,7 @@ DictionaryCanton=Staten / Provincies DictionaryRegion=Regio DictionaryCountry=Landen DictionaryCurrency=Valuta -DictionaryCivility=Titel van de beleefdheid +DictionaryCivility=Honorific titles DictionaryActions=Agenda evenementen DictionarySocialContributions=Soorten sociale of fiscale belastingen DictionaryVAT=BTW-tarieven of Verkoop Tax tarieven @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Standaard is de voorgestelde BTW 0. Dit kan gebruikt worden in VATIsUsedExampleFR=In Frankrijk betekent dit dat bedrijven of organisaties een echt fiscaal systeem hebben (Vereenvoudigd echt of normaal echt). Een systeem waarin btw wordt aangegeven. VATIsNotUsedExampleFR=In Frankrijk betekent dit verenigingen die niet-omzetbelasting zijn aangegeven of bedrijven, organisaties of vrije beroepen die hebben gekozen voor het micro-onderneming fiscale systeem (omzetbelasting in franchise) en een franchise omzetbelasting hebben betaald zonder aangifte omzetbelasting. Bij deze keuze wordt de verwijzing "Niet van toepassing omzetbelasting - art-293B van CGI" op facturen weergegeven. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Tarief LocalTax1IsNotUsed=Gebruik geen tweede belasting LocalTax1IsUsedDesc=Gebruik een tweede type belasting (anders dan de eerste) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=Het IRPF-tarief standaard bij het maken van prospects, fac LocalTax2IsNotUsedDescES=Standaard is de voorgestelde IRPF 0. Einde van de regel. LocalTax2IsUsedExampleES=In Spanje, freelancers en onafhankelijke professionals die diensten aanbieden alsmede bedrijven die voor het belastingsysteem van modules hebben gekozen. LocalTax2IsNotUsedExampleES=In Spanje zijn het bedrijven die niet onderworpen zijn aan het belastingstelsel van modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Rapporten over lokale belastingen CalcLocaltax1=Verkopen - Aankopen CalcLocaltax1Desc=Lokale belastings rapporten worden berekend met het verschil tussen verkopen en aankopen @@ -1018,6 +1025,7 @@ CalcLocaltax2=Aankopen CalcLocaltax2Desc=Lokale Belastingen rapporten zijn het totaal van balastingen aankopen CalcLocaltax3=Verkopen CalcLocaltax3Desc=Lokale Belastingen rapporten zijn het totaal van belastingen verkoop +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Standaard te gebruiken label indien er geen vertaling kan worden gevonden voor de code LabelOnDocuments=Etiket op documenten LabelOrTranslationKey=Label- of vertaalsleutel @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Onkostendeclaratie ter goedkeuring Delays_MAIN_DELAY_HOLIDAYS=Verzoek voor goedkeuring SetupDescription1=Voordat u Dolibarr begint te gebruiken, moeten enkele beginparameters worden gedefinieerd en modules ingeschakeld / geconfigureerd. SetupDescription2=De volgende twee secties zijn verplicht (de twee eerste vermeldingen in het Setup-menu): -SetupDescription3=<a href="%s">%s -> %s</a> <br> Basisparameters die worden gebruikt om het standaardgedrag van uw toepassing aan te passen (bijvoorbeeld voor landgerelateerde functies). -SetupDescription4=<a href="%s">%s -> %s</a> <br> Deze software is een pakket van vele modules / applicaties, allemaal min of meer onafhankelijk. De modules die relevant zijn voor uw behoeften, moeten worden ingeschakeld en geconfigureerd. Nieuwe items / opties worden toegevoegd aan menu's met de activering van een module. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Andere items in het Setup-menu beheren optionele parameters. LogEvents=Veiligheidsauditgebeurtenissen Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Schakel logboekregistratie in voor specifieke beveiligingsgebeurten AreaForAdminOnly=Setup functies kunnen alleen door <b>Administrator gebruikers</b> worden ingesteld SystemInfoDesc=Systeeminformatie is technische informatie welke u in alleen-lezen modus krijgt en alleen door beheerders is in te zien. SystemAreaForAdminOnly=Dit gebied is alleen beschikbaar voor beheerders. Gebruikersrechten van Dolibarr kunnen deze beperking niet wijzigen. -CompanyFundationDesc=Bewerk de informatie van het bedrijf / de entiteit. Klik op de knop "%s" onderaan de pagina. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Als u een externe accountant / boekhouder hebt, kunt u hier de informatie bewerken. AccountantFileNumber=Accountant code DisplayDesc=Parameters die het uiterlijk en gedrag van Dolibarr beïnvloeden, kunnen hier worden gewijzigd. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Regels om wachtwoorden te genereren en te valideren DisableForgetPasswordLinkOnLogonPage=De link "Wachtwoord vergeten" niet weergeven op de aanmeldingspagina UsersSetup=Gebruikersmoduleinstellingen UserMailRequired=E-mail vereist om een nieuwe gebruiker te maken +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Instellingen HRM module ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Factuur documentsjablonen BillsPDFModulesAccordindToInvoiceType=Factuur documenteert modellen volgens factuurtype PaymentsPDFModules=Modellen betaal documenten ForceInvoiceDate=Forceer factuurdatum naar validatiedatum -SuggestedPaymentModesIfNotDefinedInInvoice=Voorgestelde betaalwijze standaard op de factuur, indien niet ingesteld voor de betreffende factuur +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Stel de betaling voor door opname op rekening SuggestPaymentByChequeToAddress=Stel betaling per cheque voor aan FreeLegalTextOnInvoices=Vrije tekst op facturen @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Instelling leveranciersbetalingen PropalSetup=Offertemoduleinstellingen ProposalsNumberingModules=Offertenummeringmodules ProposalsPDFModules=Offertedocumentsjablonen -SuggestedPaymentModesIfNotDefinedInProposal=Voorgestelde betalingsmodus op voorstel standaard indien niet gedefinieerd voor voorstel +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Vrije tekst op Offertes WatermarkOnDraftProposal=Watermerk op ontwerp offertes (geen indien leeg) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Vraag naar bankrekening bestemming van het voorstel @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Vraag te gebruiken magazijn bij order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Vraag naar bankrekeningbestemming van bestelling ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Beheer van verkooporders OrdersNumberingModules=Opdrachtennummeringmodules OrdersModelModule=Oprachtendocumentsjablonen @@ -1686,9 +1697,9 @@ CashDeskIdWareHouse=Kies magazijn te gebruiken voor voorraad daling StockDecreaseForPointOfSaleDisabled=Voorraadafname vanaf verkooppunt uitgeschakeld StockDecreaseForPointOfSaleDisabledbyBatch=Voorraadafname in POS is niet compatibel met module Serieel / Lotbeheer (momenteel actief), dus voorraadafname is uitgeschakeld. CashDeskYouDidNotDisableStockDecease=U hebt de voorraaddaling niet uitgeschakeld bij een verkoop vanuit het verkooppunt. Daarom is een magazijn vereist. -CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. -CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +CashDeskForceDecreaseStockLabel=Afname van voorraad voor batchproducten werd geforceerd. +CashDeskForceDecreaseStockDesc=Verlaag eerst met de oudste eet- en verkoopdata. +CashDeskReaderKeyCodeForEnter=Code voor "Enter" gedefinieerd in barcodescanner (Voorbeeld: 13) ##### Bookmark ##### BookmarkSetup=Weblinkmoduleinstellingen BookmarkDesc=Met deze module kunt u bladwijzers beheren. U kunt ook snelkoppelingen toevoegen aan Dolibarr-pagina's of externe websites in het linkermenu. @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Waarschuwing, hogere waarden vertragen ModuleActivated=Module %s is geactiveerd en vertraagt de interface EXPORTS_SHARE_MODELS=Exportmodellen zijn met iedereen te delen ExportSetup=Installatie van exportmodule +ImportSetup=Instellen van module Import InstanceUniqueID=Uniek ID van de instantie SmallerThan=Kleiner dan LargerThan=Groter dan @@ -1972,12 +1984,14 @@ ConfirmDeleteEmailCollector=Weet je zeker dat je deze e-mailverzamelaar wilt ver RecipientEmailsWillBeReplacedWithThisValue=E-mails van ontvangers worden altijd vervangen door deze waarde AtLeastOneDefaultBankAccountMandatory=Er moet minimaal 1 standaardbankrekening worden gedefinieerd RESTRICT_ON_IP=Alleen toegang tot bepaalde host-IP's toestaan (jokerteken niet toegestaan, gebruik ruimte tussen waarden). Leeg betekent dat elke gastheer toegang heeft. -IPListExample=127.0.0.1 192.168.0.2 [::1] +IPListExample=127.0.0.1 192.168.0.2 [:: 1] BaseOnSabeDavVersion=Gebaseerd op de SabreDAV-versie van de bibliotheek NotAPublicIp=Geen openbaar IP MakeAnonymousPing=Maak een anonieme ping '+1' naar de Dolibarr-funderingsserver (1 keer alleen gedaan na installatie) zodat de stichting het aantal Dolibarr-installaties kan tellen. FeatureNotAvailableWithReceptionModule=Functie niet beschikbaar wanneer module-ontvangst is ingeschakeld EmailTemplate=Sjabloon voor e-mail EMailsWillHaveMessageID=E-mails hebben een tag 'Verwijzingen' die overeenkomen met deze syntaxis -PDF_USE_ALSO_LANGUAGE_CODE=Als u een bepaalde teksttitel in uw PDF wilt dupliceren in 2 verschillende talen in dezelfde PDF, moet u hier deze tweede taal instellen, zodat de gegenereerde PDF 2 verschillende talen op dezelfde pagina bevat, de taal die is gekozen bij het genereren van PDF en deze (slechts enkele PDF-sjablonen ondersteunen dit). Voor 1 taal per PDF laat u dit leeg. -FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +FafaIconSocialNetworksDesc=Voer hier de code van een FontAwesome-pictogram in. Als je niet weet wat FontAwesome is, kun je het generieke waarde fa-adresboek gebruiken. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/nl_NL/bills.lang b/htdocs/langs/nl_NL/bills.lang index 7b5dd51d05f..7e711e58431 100644 --- a/htdocs/langs/nl_NL/bills.lang +++ b/htdocs/langs/nl_NL/bills.lang @@ -66,9 +66,9 @@ paymentInInvoiceCurrency=Factuur valuta PaidBack=Terugbetaald DeletePayment=Betaling verwijderen ConfirmDeletePayment=Weet u zeker dat u deze betaling wilt verwijderen? -ConfirmConvertToReduc=Wilt u deze %s omzetten in een korting? +ConfirmConvertToReduc=Wilt u deze %s omzetten in een beschikbaar tegoed? ConfirmConvertToReduc2=Het bedrag wordt opgeslagen bij alle kortingen en kan worden gebruikt als korting voor een huidige of toekomstige factuur voor deze klant. -ConfirmConvertToReducSupplier=Wilt u deze %s omzetten in een korting? +ConfirmConvertToReducSupplier=Wilt u deze %s omzetten in een beschikbaar tegoed? ConfirmConvertToReducSupplier2=Het bedrag wordt opgeslagen bij alle kortingen en kan worden gebruikt als korting voor een huidige of toekomstige factuur voor deze leverancier. SupplierPayments=Leveranciersbetalingen ReceivedPayments=Ontvangen betalingen @@ -219,7 +219,10 @@ ShowInvoiceSituation=Situatie factuur weergeven UseSituationInvoices=Situatiefactuur toestaan UseSituationInvoicesCreditNote=Toestaan factuur creditnota Retainedwarranty=Ingehouden garantie +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Standaardgarantiepercentage behouden +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=Te betalen op %s toPayOn=te betalen op %s RetainedWarranty=Ingehouden garantie @@ -509,11 +512,11 @@ ToMakePayment=Betaal ToMakePaymentBack=Terugbetalen ListOfYourUnpaidInvoices=Lijst van onbetaalde facturen NoteListOfYourUnpaidInvoices=Nota: deze lijst bevat enkel facturen voor derde partijen waarvoor je als verkoopsvertegenwoordiger aangegeven bent. -RevenueStamp=Taxzegel +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Deze optie is alleen beschikbaar wanneer u een factuur maakt op het tabblad "Klant" van een relatie YouMustCreateInvoiceFromSupplierThird=Deze optie is alleen beschikbaar bij het maken van een factuur op het tabblad "Leverancier" bij relatie YouMustCreateStandardInvoiceFirstDesc=Maak eerst een standaard factuur en converteer naar een sjabloon om deze als sjabloon te gebruiken -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Factuur PDF-sjabloon Crabe. Een volledig factuursjabloon PDFSpongeDescription=Factuur PDF-sjabloon Sponge. Een complete sjabloon voor een factuur PDFCrevetteDescription=Factuur PDF-sjabloon 'Crevette'. Een compleet sjabloon voor facturen TerreNumRefModelDesc1=Geeft een getal in de vorm van %syymm-nnnn voor standaard facturen en %syymm-nnnn voor creditnota's, met yy voor jaar, mm voor maand en nnnn als opeenvolgende getallenreeks die niet terug op 0 komt @@ -575,3 +578,4 @@ AutoFillDateTo=Stel de einddatum in voor de servicelijn met de volgende factuur- AutoFillDateToShort=Tot datum MaxNumberOfGenerationReached=Max aantal gegenereerd bereikt BILL_DELETEInDolibarr=Factuur verwijderd +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/nl_NL/blockedlog.lang b/htdocs/langs/nl_NL/blockedlog.lang index 296cc06c956..ef56512687e 100644 --- a/htdocs/langs/nl_NL/blockedlog.lang +++ b/htdocs/langs/nl_NL/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Niet aanpasbare logboeken ShowAllFingerPrintsMightBeTooLong=Toon alle gearchiveerde logs (kunnen lang zijn) ShowAllFingerPrintsErrorsMightBeTooLong=Toon alle ongeldige archieflogboeken (kunnen lang zijn) DownloadBlockChain=Vingerafdrukken downloaden -KoCheckFingerprintValidity=Gearchiveerde logboekinvoer is niet geldig. Het betekent dat iemand (een hacker?) Sommige gegevens van deze opname heeft gewijzigd nadat deze is opgenomen, of de vorige gearchiveerde record heeft gewist (controleer of die regel met vorige # bestaat). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Gearchiveerde logboekrecord is geldig. De gegevens op deze regel zijn niet gewijzigd en de invoer volgt op de vorige. OkCheckFingerprintValidityButChainIsKo=Gearchiveerd log lijkt geldig in vergelijking met de vorige, maar de ketting was eerder beschadigd. AddedByAuthority=Opgeslagen in autoriteit op afstand diff --git a/htdocs/langs/nl_NL/cashdesk.lang b/htdocs/langs/nl_NL/cashdesk.lang index 0b39ffc7cc6..cb263dc77e9 100644 --- a/htdocs/langs/nl_NL/cashdesk.lang +++ b/htdocs/langs/nl_NL/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Voeg dit artikel RestartSelling=Ga terug op de verkopen SellFinished=Verkoop gereed PrintTicket=Print bon +SendTicket=Send ticket NoProductFound=Geen artikel gevonden ProductFound=product gevonden NoArticle=Geen artikel @@ -48,6 +49,7 @@ Footer=Voetnoot AmountAtEndOfPeriod=Bedrag aan het einde van de periode (dag, maand of jaar) TheoricalAmount=Theoretisch bedrag RealAmount=Aanwezig bedrag +CashFence=Cash fence CashFenceDone=Kas te ontvangen voor de periode NbOfInvoices=Aantal facturen Paymentnumpad=Soort betaling om de betaling in te voeren @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS heeft product-categorieën nodig om te werken OrderNotes=Verkoop notities CashDeskBankAccountFor=Standaardrekening voor betalingen NoPaimementModesDefined=Geen betaalmethode gedefinieerd in TakePOS-configuratie -TicketVatGrouped=Groeps BTW per tarief in bonnen -AutoPrintTickets=Bonnen automatisch afdrukken +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Functies inschakelen voor Bar of Restaurant ConfirmDeletionOfThisPOSSale=Bevestig je de verwijdering van deze huidige verkoop? ConfirmDiscardOfThisPOSSale=Wilt u deze huidige verkoop weggooien? @@ -87,7 +90,19 @@ HeadBar=Hoofdbalk SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/nl_NL/companies.lang b/htdocs/langs/nl_NL/companies.lang index 116a2b34dc0..024acf55a55 100644 --- a/htdocs/langs/nl_NL/companies.lang +++ b/htdocs/langs/nl_NL/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Bedrijf '%s' verwijderd uit de database. ListOfContacts=Contactpersonen- / adressenlijst ListOfContactsAddresses=Contactpersonen- / adressenlijst ListOfThirdParties=Lijst van derden -ShowCompany=Derde partij weergeven ShowContact=Toon contactpersoon ContactsAllShort=Alle (Geen filter) ContactType=Type contactpersoon @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Vertegenwoordiger voornaam SaleRepresentativeLastname=Vertegenwoordiger achternaam ErrorThirdpartiesMerge=Er is een fout opgetreden bij het verwijderen van de relatie. Controleer het log. Wijzigingen zijn ongedaan gemaakt. NewCustomerSupplierCodeProposed=Klant- of leverancierscode die al wordt gebruikt, wordt een nieuwe code voorgesteld +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Betalingswijze - Klant PaymentTermsCustomer=Betalingsvoorwaarden - Klant diff --git a/htdocs/langs/nl_NL/compta.lang b/htdocs/langs/nl_NL/compta.lang index 52f8a29e7ff..e1bc8bc0087 100644 --- a/htdocs/langs/nl_NL/compta.lang +++ b/htdocs/langs/nl_NL/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Zie %sanalyse van betalingen%s voor een berekening va SeeReportInDueDebtMode=Zie %sanalyse van facturen%s voor een berekening op basis van bekende geregistreerde facturen, zelfs als deze nog niet in Ledger zijn geregistreerd. SeeReportInBookkeepingMode=Zie <b>%s Boekhoudverslag%s</b> voor een berekening op de <b>boekhoudboekentabel</b> RulesAmountWithTaxIncluded=- Bedragen zijn inclusief alle belastingen -RulesResultDue=- Het omvat openstaande facturen, uitgaven, btw, donaties, of ze nu zijn betaald of niet. Is ook inclusief betaalde salarissen. <br> - Het is gebaseerd op de validatiedatum van facturen en btw en op de vervaldatum voor uitgaven. Voor salarissen die zijn gedefinieerd met de module Salaris, wordt de valutadatum gebruikt. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Het omvat de echte betalingen op facturen, uitgaven, btw en salarissen. <br> - Het is gebaseerd op de betalingsdatums van de facturen, uitgaven, btw en salarissen. De donatiedatum voor donatie. -RulesCADue=- Het omvat de verschuldigde facturen van de klant, ongeacht of deze zijn betaald of niet. <br> - Het is gebaseerd op de validatiedatum van deze facturen. <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Het omvat alle effectieve betalingen van facturen ontvangen van klanten. <br> - Het is gebaseerd op de betaaldatum van deze facturen <br> RulesCATotalSaleJournal=Het omvat alle kredietlijnen uit het verkoopdagboek. RulesAmountOnInOutBookkeepingRecord=Het bevat een record in uw grootboek met boekhoudrekeningen met de groep "KOSTEN" of "INKOMSTEN" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Omzet gefactureerd per omzetbelasting-tarief TurnoverCollectedbyVatrate=Omzet per BTW tarief PurchasebyVatrate=Aankoop bij verkoop belastingtarief LabelToShow=Kort label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/nl_NL/errors.lang b/htdocs/langs/nl_NL/errors.lang index df860672f08..87185fbba02 100644 --- a/htdocs/langs/nl_NL/errors.lang +++ b/htdocs/langs/nl_NL/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Het bestand is niet volledig ontvangen door de server. ErrorNoTmpDir=Tijdelijke map %s bestaat niet. ErrorUploadBlockedByAddon=Upload geblokkeerd door een PHP- en / of Apache-plugin. ErrorFileSizeTooLarge=Bestand is te groot. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Grootte te lang voor int type (%s cijfers maximum) ErrorSizeTooLongForVarcharType=Grootte te lang voor string type (%s tekens maximum) ErrorNoValueForSelectType=Vul waarde in voor selectielijst @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Uw PHP-parameter upload_max_filesize (%s) is hoger dan PHP-parameter post_max_size (%s). Dit is geen consistente opstelling. WarningPasswordSetWithNoAccount=Er is een wachtwoord ingesteld voor dit lid. Er is echter geen gebruikersaccount gemaakt. Dus dit wachtwoord is opgeslagen maar kan niet worden gebruikt om in te loggen bij Dolibarr. Het kan worden gebruikt door een externe module / interface, maar als u geen gebruikersnaam of wachtwoord voor een lid hoeft aan te maken, kunt u de optie "Beheer een login voor elk lid" in de module-setup van Member uitschakelen. Als u een login moet beheren maar geen wachtwoord nodig heeft, kunt u dit veld leeg houden om deze waarschuwing te voorkomen. Opmerking: e-mail kan ook worden gebruikt als login als het lid aan een gebruiker is gekoppeld. diff --git a/htdocs/langs/nl_NL/install.lang b/htdocs/langs/nl_NL/install.lang index d86854df90c..2bd6574b9fd 100644 --- a/htdocs/langs/nl_NL/install.lang +++ b/htdocs/langs/nl_NL/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Deze PHP ondersteunt Curl. PHPSupportCalendar=Deze PHP ondersteunt kalendersextensies. PHPSupportUTF8=Deze PHP ondersteunt UTF8-functies. PHPSupportIntl=Deze PHP ondersteunt Intl-functies. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=Deze PHP ondersteunt %s-functies. PHPMemoryOK=Het maximale sessiegeheugen van deze PHP installatie is ingesteld op <b>%s</b>. Dit zou genoeg moeten zijn. PHPMemoryTooLow=Uw PHP max sessie-geheugen is ingesteld op <b>%s</b> bytes. Dit is te laag. Wijzig uw <b>php.ini</b> om de parameter <b>memory_limit in</b> te stellen op ten minste <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Uw PHP versie ondersteunt geen Curl. ErrorPHPDoesNotSupportCalendar=Uw PHP-installatie ondersteunt geen php-agenda-extensies. ErrorPHPDoesNotSupportUTF8=Uw PHP-installatie ondersteunt geen UTF8-functies. Dolibarr kan niet correct werken. Los dit op voordat u Dolibarr installeert. ErrorPHPDoesNotSupportIntl=Uw PHP-installatie ondersteunt geen Intl-functies. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Uw PHP-installatie ondersteunt geen %s-functies. ErrorDirDoesNotExists=De map %s bestaat niet. ErrorGoBackAndCorrectParameters=Ga terug en controleer / corrigeer de parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=De toepassing probeerde zelf te upgraden, maar de YouTryInstallDisabledByFileLock=De applicatie probeerde zelf te upgraden, maar de installatie / upgrade-pagina's zijn om veiligheidsredenen uitgeschakeld (door het bestaan van een slotbestand <strong>install.lock</strong> in de dolibarr-documentenmap). <br> ClickHereToGoToApp=Klik hier om naar uw toepassing te gaan ClickOnLinkOrRemoveManualy=Klik op de volgende link. Als u altijd dezelfde pagina ziet, moet u het bestand install.lock verwijderen / hernoemen in de documentenmap. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/nl_NL/link.lang b/htdocs/langs/nl_NL/link.lang index 511af212552..b7a45ea8938 100644 --- a/htdocs/langs/nl_NL/link.lang +++ b/htdocs/langs/nl_NL/link.lang @@ -8,3 +8,4 @@ LinkRemoved=De koppeling %s is verwijderd ErrorFailedToDeleteLink= Kon de verbinding '<b>%s</b>' niet verwijderen ErrorFailedToUpdateLink= Kon verbinding '<b>%s</b>' niet bijwerken URLToLink=URL naar link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/nl_NL/mails.lang b/htdocs/langs/nl_NL/mails.lang index 1f5a3213894..2897086d4bb 100644 --- a/htdocs/langs/nl_NL/mails.lang +++ b/htdocs/langs/nl_NL/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Geen contact / adres met een categorie gevonden NoContactLinkedToThirdpartieWithCategoryFound=Geen contact / adres met een categorie gevonden OutGoingEmailSetup=Instellingen uitgaande e-mail InGoingEmailSetup=Instellingen inkomende e-mail -OutGoingEmailSetupForEmailing=Instelling uitgaande e-mail (voor massale e-mail) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Standaard uitgaande e-mail instellen Information=Informatie ContactsWithThirdpartyFilter=Contacten met filter van derden diff --git a/htdocs/langs/nl_NL/main.lang b/htdocs/langs/nl_NL/main.lang index 1c75753876c..eec6c8d732b 100644 --- a/htdocs/langs/nl_NL/main.lang +++ b/htdocs/langs/nl_NL/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Opslaan en blijven SaveAndNew=Opslaan en nieuw TestConnection=Test verbinding ToClone=Klonen +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Kies gegevens die u wilt klonen: NoCloneOptionsSpecified=Geen gegevens om te klonen gedefinieerd. Of=van @@ -829,6 +830,8 @@ Gender=Geslacht Genderman=Man Genderwoman=Vrouw ViewList=Bekijk lijst +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Verplicht Hello=Hallo GoodBye=Tot ziens @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Selecteer opties voor deze grafiek Measures=Maten XAxis=X-as YAxis=Y-as +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/nl_NL/other.lang b/htdocs/langs/nl_NL/other.lang index 87d1f135159..8ef2166b14e 100644 --- a/htdocs/langs/nl_NL/other.lang +++ b/htdocs/langs/nl_NL/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Klantorder gevalideerd Notify_ORDER_SENTBYMAIL=Klantorder verzonden per post Notify_ORDER_SUPPLIER_SENTBYMAIL=Aankooporder verzonden per e-mail @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL van pagina WEBSITE_TITLE=Titel WEBSITE_DESCRIPTION=Omschrijving WEBSITE_IMAGE=Beeld -WEBSITE_IMAGEDesc=Relatief pad van de beeldmedia. Je kunt dit leeg laten, omdat dit zelden wordt gebruikt (het kan door dynamische inhoud worden gebruikt om een miniatuur in een lijst met blogberichten weer te geven). Gebruik __WEBSITEKEY__ in het pad als pad afhankelijk is van de naam van de website. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Sleutelwoorden LinesToImport=Regels om te importeren diff --git a/htdocs/langs/nl_NL/products.lang b/htdocs/langs/nl_NL/products.lang index ab4b6fca55a..845fb659988 100644 --- a/htdocs/langs/nl_NL/products.lang +++ b/htdocs/langs/nl_NL/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Deze tool werkt het btw-tarief bij dat op <b><u>ALLE</u MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=Deze pagina kan worden gebruikt om een ​​streepjescode op objecten die geen streepjescode hebben gedefinieerd. Controleer voor dat setup van de module barcode is ingesteld. ProductAccountancyBuyCode=Grootboeknummer inkoopboek +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Grootboeknummer verkoopboek ProductAccountancySellIntraCode=Grootboekrekening (verkoop binnen de Gemeenschap) ProductAccountancySellExportCode=Grootboeknummer (verkoop export) @@ -165,7 +167,7 @@ SuppliersPrices=Prijzen van leveranciers SuppliersPricesOfProductsOrServices=Leverancierprijzen (van producten of services) CustomCode=Douane / Commodity / HS-code CountryOrigin=Land van herkomst -Nature=Aard van product (materiaal/afgewerkt) +Nature=Nature of product (material/finished) ShortLabel=Kort label Unit=Eenheid p=u. diff --git a/htdocs/langs/nl_NL/projects.lang b/htdocs/langs/nl_NL/projects.lang index 38424ac5e82..18f66dcf5f5 100644 --- a/htdocs/langs/nl_NL/projects.lang +++ b/htdocs/langs/nl_NL/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=die ik ben gekoppeld aan het project Time=Tijd ListOfTasks=Lijst met taken GoToListOfTimeConsumed=Ga naar de lijst met tijd die is verbruikt -GoToListOfTasks=Weergeven als lijst -GoToGanttView=weergeven als Gantt GanttView=Gantt-weergave ListProposalsAssociatedProject=Lijst van de commerciële voorstellen met betrekking tot het project ListOrdersAssociatedProject=Lijst met verkooporders gerelateerd aan het project @@ -188,7 +186,7 @@ PlannedWorkload=Geplande workload PlannedWorkloadShort=Workload ProjectReferers=Gerelateerde items ProjectMustBeValidatedFirst=Project moet eerst worden gevalideerd -FirstAddRessourceToAllocateTime=Wijs een gebruikersresource toe aan de taak om tijd toe te wijzen +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per dag InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Laatste %s aangepaste projecten OtherFilteredTasks=Andere gefilterde taken NoAssignedTasks=Geen toegewezen taken gevonden (wijs project / taken toe aan de huidige gebruiker uit het bovenste selectievak om de tijd in te voeren) ThirdPartyRequiredToGenerateInvoice=Er moet een derde partij in het project worden gedefinieerd om het te kunnen factureren. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Reacties van gebruikers op taken toestaan AllowCommentOnProject=Reacties van gebruikers op projecten toestaan @@ -265,3 +264,4 @@ InvoiceToUse=Te gebruiken factuur NewInvoice=Nieuwe factuur OneLinePerTask=Eén regel per taak OneLinePerPeriod=Eén regel per periode +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/nl_NL/receiptprinter.lang b/htdocs/langs/nl_NL/receiptprinter.lang index b7cf39904cb..3a1d8b5715d 100644 --- a/htdocs/langs/nl_NL/receiptprinter.lang +++ b/htdocs/langs/nl_NL/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy printer CONNECTOR_NETWORK_PRINT=Netwerkprinter CONNECTOR_FILE_PRINT=Lokale printer CONNECTOR_WINDOWS_PRINT=Locale Windows printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Dummy printer voor testen. Doet niets CONNECTOR_NETWORK_PRINT_HELP=10.0.0.0:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computernaam/werkgroep/BonPrinter +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Standaard profiel PROFILE_SIMPLE=Eenvoudig profiel PROFILE_EPOSTEP=Epos Tep profiel @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Factuurreferentie +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intracommunautair btw-nummer +DOL_VALUE_MYSOC_CAPITAL=Kapitaal +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/nl_NL/stripe.lang b/htdocs/langs/nl_NL/stripe.lang index 23e72f29289..72c35169bb0 100644 --- a/htdocs/langs/nl_NL/stripe.lang +++ b/htdocs/langs/nl_NL/stripe.lang @@ -32,6 +32,7 @@ VendorName=Verkopersnaam CSSUrlForPaymentForm=URL van het CSS-stijlbestand voor het betalingsformulier NewStripePaymentReceived=Nieuwe Stripe-betaling ontvangen NewStripePaymentFailed=Nieuwe Stripe-betaling geprobeerd, maar mislukt +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Geheime testsleutel STRIPE_TEST_PUBLISHABLE_KEY=Publiceerbare testsleutel STRIPE_TEST_WEBHOOK_KEY=Webhook test sleutel @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link om Stripe WebHook in te stellen om de IPN te bel ToOfferALinkForLiveWebhook=Link om Stripe WebHook in te stellen om de IPN te bellen (live-modus) PaymentWillBeRecordedForNextPeriod=De betaling wordt geregistreerd voor de volgende periode. ClickHereToTryAgain=<a href="%s">Klik hier om het opnieuw te proberen ...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/nl_NL/users.lang b/htdocs/langs/nl_NL/users.lang index dffce964525..459a72f5c90 100644 --- a/htdocs/langs/nl_NL/users.lang +++ b/htdocs/langs/nl_NL/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Gebruikers en hun eigenschappen DomainUser=Domeingebruikersaccount %s Reactivate=Reactiveren CreateInternalUserDesc=Met dit formulier kunt u een interne gebruiker in uw bedrijf / organisatie maken. Om een externe gebruiker (klant, leverancier etc. ..) aan te maken, gebruikt u de knop "Aanmaken Dolibarr gebruiker" van de contactkaart van die relatie. -InternalExternalDesc=Een <b>interne</b> gebruiker is een gebruiker die deel uitmaakt van uw bedrijf / organisatie. <br> Een <b>externe</b> gebruiker is een klant, verkoper of andere. <br><br> In beide gevallen definieert machtiging rechten op Dolibarr, ook kan de externe gebruiker een ander menu-manager hebben dan de interne gebruiker (zie Home - Instellingen - Beeld) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Toestemming verleend, omdat geërfd van een bepaalde gebruikersgroep. Inherited=Overgeërfd UserWillBeInternalUser=Gemaakt gebruiker een interne gebruiker te zijn (want niet gekoppeld aan een bepaalde derde partij) @@ -113,3 +113,5 @@ CantDisableYourself=U kunt uw eigen gebruikersrecord niet uitschakelen ForceUserExpenseValidator=Validatierapport valideren ForceUserHolidayValidator=Forceer verlofaanvraag validator ValidatorIsSupervisorByDefault=Standaard is de validator de supervisor van de gebruiker. Blijf leeg om dit gedrag te behouden. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/nl_NL/website.lang b/htdocs/langs/nl_NL/website.lang index 4d89f3a1ddd..ec6a14f3860 100644 --- a/htdocs/langs/nl_NL/website.lang +++ b/htdocs/langs/nl_NL/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Bekijk pagina in nieuw tabblad SetAsHomePage=Als startpagina instellen RealURL=Echte URL ViewWebsiteInProduction=Bekijk website met behulp van eigen URL's -SetHereVirtualHost=<u>Gebruik met Apache / NGinx / ...</u> <br> Als u op uw webserver (Apache, Nginx, ...) een speciale virtuele host met PHP ingeschakeld en een hoofddirectory op <br> <strong>%s</strong> <br> stel vervolgens de naam in van de virtuele host die u hebt gemaakt in de eigenschappen van de website, zodat de preview ook kan worden gedaan met behulp van deze speciale webservertoegang in plaats van de interne Dolibarr-server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Gebruik met PHP embedded server</u> <br> In een ontwikkelomgeving kunt u de site het liefst testen met de ingebouwde PHP-webserver (PHP 5.5 vereist) <br> <strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Beheer uw website met een andere Dolibarr Hosting-provider</u> <br> Als u geen webserver zoals Apache of NGinx beschikbaar heeft op internet, kunt u uw website exporteren en importeren in een ander Dolibarr-exemplaar van een andere Dolibarr-hostingprovider die volledige integratie met de websitemodule biedt. U kunt een lijst met sommige Dolibarr-hostingproviders vinden op <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Controleer ook of virtuele host toestemming <strong>%s heeft</strong> voor bestanden in <br> <strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, deze website is momenteel offline. Kom lat WEBSITE_USE_WEBSITE_ACCOUNTS=Schakel de website-accounttabel in WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Schakel de tabel in om websiteaccounts (login/wachtwoord) voor elke website/relatie op te slaan YouMustDefineTheHomePage=U moet eerst de standaard startpagina definiëren -OnlyEditionOfSourceForGrabbedContentFuture=Pas op: het maken van een webpagina door een externe webpagina te importeren is voorbehouden aan ervaren gebruikers. Afhankelijk van de complexiteit van de bronpagina, kan het resultaat van de import verschillen van het origineel. Ook als de bronpagina gemeenschappelijke CSS-stijlen of conflicterende javascript gebruikt, kan het uiterlijk of de functies van de Website-editor corrupt raken wanneer u op deze pagina werkt. Deze methode is een snellere manier om een pagina te maken, maar het wordt aanbevolen om uw nieuwe pagina helemaal opnieuw te maken of op basis van een voorgestelde paginasjabloon. <br> Merk ook op dat bewerkingen van HTML-bron mogelijk zijn wanneer pagina-inhoud is geïnitialiseerd door deze van een externe pagina te halen ("Online" -editor is NIET beschikbaar) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Alleen de HTML-bronversie is mogelijk wanneer inhoud van een externe site is opgehaald GrabImagesInto=Importeer ook afbeeldingen gevonden in css en pagina. ImagesShouldBeSavedInto=Afbeeldingen moeten worden opgeslagen in de directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=Gebruik voor goede SEO-praktijken een tekst tussen 5 e MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/pl_PL/admin.lang b/htdocs/langs/pl_PL/admin.lang index 6d2ed8fac9c..7c09b1d09c5 100644 --- a/htdocs/langs/pl_PL/admin.lang +++ b/htdocs/langs/pl_PL/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Uwaga: Brak ustawionego limitu w twojej konfiguracji PHP MaxSizeForUploadedFiles=Maksymalny rozmiar dla twoich przesyłanych plików (0 by zabronić jego przesyłanie/upload) UseCaptchaCode=Użyj graficzny kod (CAPTCHA) na stronie logowania -AntiVirusCommand= Pełna ścieżka do poleceń antivirusa -AntiVirusCommandExample= ClamWin przykład: c:\\Program Files (x86)\\ClamWin\\bin\\ clamscan.exe<br>Przykład dla ClamAV: /usr/bin/clamscan +AntiVirusCommand=Pełna ścieżka do poleceń antivirusa +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Więcej parametrów w linii poleceń -AntiVirusParamExample= Przykład dla ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Konfiguracja modułu rachunkowości UserSetup=Zarządzanie konfiguracją użytkowników MultiCurrencySetup=Konfiguracja multi-walut @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Funkcja niedostępna w wersji demo FeatureAvailableOnlyOnStable=Funkcjonalność dostępna tylko w oficjalnej stabilnej wersji 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. OnlyActiveElementsAreShown=Tylko elementy z <a href="%s">aktywnych modułów</a> są widoczne. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Możesz znaleźć więcej modułów do pobrania na zewnętrznych stronach internetowych... 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 <strong>%s</strong>. ModulesMarketPlaces=Znajdź dodatkowe aplikacje / moduły @@ -212,6 +212,7 @@ CompatibleUpTo=Kompatybilne z wersją %s NotCompatible=ten moduł nie jest kompatybilny z twoją wersją Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=Zobacz konfigurację modułu% s Updated=Zaktualizowane Nouveauté=Nowość AchatTelechargement=Kup / Pobierz @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Dostępne widgety BoxesActivated=Widgety aktywowane ActivateOn=Uaktywnij @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Zostaw puste by używać domyślnych wartości DefaultLink=Domyślny link SetAsDefault=Ustaw jako domyślny ValueOverwrittenByUserSetup=Uwaga, ta wartość może być zastąpiona przez specyficzną konfiguracją użytkownika (każdy użytkownik może ustawić własny clicktodial url) -ExternalModule=Moduł zewnętrzny - Zainstalowane w katalogu% s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Masowe generowanie kodów lub reset kodów kreskowych dla usług i produktów CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regiony DictionaryCountry=Kraje DictionaryCurrency=Waluty -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Typy zdarzeń w agendzie DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=Stawki VAT lub stawki podatku od sprzedaży @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Stawka LocalTax1IsNotUsed=Nie należy używać drugiego podatku LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=Domyślnie proponowany IRPF wynosi 0. Koniec zasady. LocalTax2IsUsedExampleES=W Hiszpanii, freelancerów i przedstawicieli wolnych zawodów, którzy świadczą usługi i przedsiębiorstwa, którzy wybrali system podatkowy modułów. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Raporty odnośnie podatków lokalnych CalcLocaltax1=Sprzedaż - Zakupy CalcLocaltax1Desc=Lokalne raporty Podatki są obliczane z różnicy między sprzedażą localtaxes i localtaxes zakupów @@ -1018,6 +1025,7 @@ CalcLocaltax2=Zakupy CalcLocaltax2Desc=Lokalne raporty Podatki są łącznie localtaxes zakupów CalcLocaltax3=Sprzedaż CalcLocaltax3Desc=Lokalne raporty Podatki są za łączną sprzedaży localtaxes +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Wytwórnia używany domyślnie, jeśli nie można znaleźć tłumaczenie dla kodu LabelOnDocuments=Etykieta na dokumenty LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Zdarzenia audytu bezpieczeństwa Audit=Audyt @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Parametry mogą być ustawiane tylko przez <b>użytkowników z prawami administratora</b>. SystemInfoDesc=System informacji jest różne informacje techniczne można uzyskać w trybie tylko do odczytu i widoczne tylko dla administratorów. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Użytkownicy modułu konfiguracji UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Ustawianie modułu HR ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Faktura dokumentów modele BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Siły daty wystawienia faktury do walidacji daty -SuggestedPaymentModesIfNotDefinedInInvoice=Sugerowane tryb płatności na fakturze domyślnie jeśli nie jest zdefiniowane w fakturze +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Wolny tekst na fakturach @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Konfiguracja modułu ofert handlowych ProposalsNumberingModules=Commercial wniosku numeracji modules ProposalsPDFModules=Commercial wniosku dokumenty modeli -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Darmowy tekstu propozycji WatermarkOnDraftProposal=Znak wodny projektów wniosków komercyjnych (brak jeśli pusty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Zapytaj o rachunku bankowego przeznaczenia propozycji @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Zapytaj o magazyn źródłowy dla zamówien ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Zamówienia numeracji modules OrdersModelModule=Zamów dokumenty modeli @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/pl_PL/bills.lang b/htdocs/langs/pl_PL/bills.lang index ce9dbccea41..316c3c46629 100644 --- a/htdocs/langs/pl_PL/bills.lang +++ b/htdocs/langs/pl_PL/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Faktura dostawcy SupplierBills=Faktury Dostawców Payment=Płatność -PaymentBack=Zwrot płatności -CustomerInvoicePaymentBack=Zwrot płatności +PaymentBack=Zwrot +CustomerInvoicePaymentBack=Zwrot Payments=Płatności PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Spłacona DeletePayment=Usuń płatności ConfirmDeletePayment=Czy jesteś pewien, że chcesz usunąć tą płatność? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Otrzymane płatności @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Płacić ToMakePaymentBack=Spłacać ListOfYourUnpaidInvoices=Lista niezapłaconych faktur NoteListOfYourUnpaidInvoices=Uwaga: Ta lista zawiera tylko faktury dla osób trzecich jesteś powiązanych jako przedstawiciel sprzedaży. -RevenueStamp=Znaczek skarbowy +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Zwróć numer w formacie %srrmm-nnnn dla standardowych faktur i %srrmm-nnnn dla not kredytowych, gdzie rr oznacza rok, mm to miesiąc, a nnnn to kolejny niepowtarzalny numer rozpoczynający się od 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Faktura usunięta +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/pl_PL/blockedlog.lang b/htdocs/langs/pl_PL/blockedlog.lang index 68bd518eded..8ca78fd8046 100644 --- a/htdocs/langs/pl_PL/blockedlog.lang +++ b/htdocs/langs/pl_PL/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/pl_PL/cashdesk.lang b/htdocs/langs/pl_PL/cashdesk.lang index 830d06ed5f6..364ed5404c1 100644 --- a/htdocs/langs/pl_PL/cashdesk.lang +++ b/htdocs/langs/pl_PL/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Dodaj ten artykuł RestartSelling=Wróć na sprzedaż SellFinished=Sprzedaż zakończona PrintTicket=Bilet do druku +SendTicket=Send ticket NoProductFound=Artykuł nie znaleziony ProductFound=Znaleziono produkt NoArticle=Brak artykułu @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Ilość faktur Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Przeglądarka BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/pl_PL/companies.lang b/htdocs/langs/pl_PL/companies.lang index 68d0f5cdc9c..a20144ad9b0 100644 --- a/htdocs/langs/pl_PL/companies.lang +++ b/htdocs/langs/pl_PL/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Firma " %s" usunięta z bazy danych. ListOfContacts=Lista kontaktów/adresów ListOfContactsAddresses=Lista kontaktów/adresów ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Pokaż kontakt ContactsAllShort=Wszystkie (bez filtra) ContactType=Typ kontaktu @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Imię przedstawiciela handlowego SaleRepresentativeLastname=Nazwisko przedstawiciela handlowego 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/pl_PL/compta.lang b/htdocs/langs/pl_PL/compta.lang index 601a0312dd6..87f0a968943 100644 --- a/htdocs/langs/pl_PL/compta.lang +++ b/htdocs/langs/pl_PL/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Kwoty podane są łącznie z podatkami -RulesResultDue=- Obejmuje zaległe faktury, koszty, podatek VAT, darowizny niezaleznie czy zostały one zapłacone. Obejmuje również wypłacane pensje. <br> - Podstawą jest data zatwierdzania faktur i VAT oraz terminów płatności za wydatki. Dla wynagrodzeń określonych w module wynagrodzeń brana jest pod uwagę data wypłaty wynagrodzeń. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Obejmuje rzeczywiste płatności dokonywane za faktury, koszty, podatek VAT oraz wynagrodzenia. <br> Opiera się na datach płatności faktur, wygenerowania kosztów, podatku VAT oraz wynagrodzeń. Dla darowizn brana jest pod uwagę data przekazania darowizny. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Krótka etykieta +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/pl_PL/errors.lang b/htdocs/langs/pl_PL/errors.lang index 662d89577fb..7782b651a07 100644 --- a/htdocs/langs/pl_PL/errors.lang +++ b/htdocs/langs/pl_PL/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Plik nieodebrany w całości przez serwer. ErrorNoTmpDir=Tymczasowy directy %s nie istnieje. ErrorUploadBlockedByAddon=Prześlij zablokowane / PHP wtyczki Apache. ErrorFileSizeTooLarge=Rozmiar pliku jest zbyt duży. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Rozmiar zbyt długi dal typu int (max %s cyfr) ErrorSizeTooLongForVarcharType=Za dużo znaków dla tego typu (maksymalnie %s znaków) ErrorNoValueForSelectType=Proszę wypełnić wartości dla listy wyboru @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=Hasło zostało ustawione dla tego użytkownika. Jednakże nie Konto użytkownika zostało utworzone. Więc to hasło jest przechowywane, ale nie mogą być używane do logowania do Dolibarr. Może być stosowany przez zewnętrzny moduł / interfejsu, ale jeśli nie trzeba definiować dowolną logowania ani hasła do członka, można wyłączyć opcję "Zarządzaj login dla każdego członka" od konfiguracji modułu użytkownika. Jeśli potrzebujesz zarządzać logowanie, ale nie wymagają hasła, możesz zachować to pole puste, aby uniknąć tego ostrzeżenia. Uwaga: E może być również stosowany jako login, jeśli element jest połączony do użytkownika. diff --git a/htdocs/langs/pl_PL/install.lang b/htdocs/langs/pl_PL/install.lang index 9b531c90fab..0a10dd12033 100644 --- a/htdocs/langs/pl_PL/install.lang +++ b/htdocs/langs/pl_PL/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Maksymalna ilość pamięci sesji PHP ustawiona jest na <b>%s</b>. Powinno wystarczyć. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Twoja instalacja PHP nie wspiera Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Katalog %s nie istnieje. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/pl_PL/link.lang b/htdocs/langs/pl_PL/link.lang index 4da60227bfa..29ff5e2a6b2 100644 --- a/htdocs/langs/pl_PL/link.lang +++ b/htdocs/langs/pl_PL/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Link %s został usunięty ErrorFailedToDeleteLink= Niemożna usunąc linku '<b>%s</b>' ErrorFailedToUpdateLink= Niemożna uaktualnić linku '<b>%s</b>' URLToLink=Adres URL linka +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/pl_PL/mails.lang b/htdocs/langs/pl_PL/mails.lang index 26161193ec3..70e3426dcdb 100644 --- a/htdocs/langs/pl_PL/mails.lang +++ b/htdocs/langs/pl_PL/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Informacja ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/pl_PL/main.lang b/htdocs/langs/pl_PL/main.lang index bbd0c051546..8842026e3aa 100644 --- a/htdocs/langs/pl_PL/main.lang +++ b/htdocs/langs/pl_PL/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test połączenia ToClone=Duplikuj +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Brak zdefiniowanych danych do zduplikowania. Of=z @@ -829,6 +830,8 @@ Gender=Płeć Genderman=Mężczyzna Genderwoman=Kobieta ViewList=Widok listy +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Zleceniobiorca Hello=Witam GoodBye=Do widzenia @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/pl_PL/other.lang b/htdocs/langs/pl_PL/other.lang index 2a5656c5024..b496de9d07e 100644 --- a/htdocs/langs/pl_PL/other.lang +++ b/htdocs/langs/pl_PL/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=Link strony WEBSITE_TITLE=Tytuł WEBSITE_DESCRIPTION=Opis 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Słowa kluczowe LinesToImport=Lines to import diff --git a/htdocs/langs/pl_PL/products.lang b/htdocs/langs/pl_PL/products.lang index 058010e7791..188bfd5ff09 100644 --- a/htdocs/langs/pl_PL/products.lang +++ b/htdocs/langs/pl_PL/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Masowa inicjalizacja kodów kreskowych MassBarcodeInitDesc=Strona ta może być używana do wygenerowania kodu kreskowego dla obiektów nie posiadających zdefiniowanego kodu. Sprawdź wcześniej, czy ustawienia modułu kodu kreskowego jest kompletna. ProductAccountancyBuyCode=Kod księgowy (zakup) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Kod księgowy (sprzedaż) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Ceny dostawców SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Kraj pochodzenia -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Krótka etykieta Unit=Jednostka p=jedn. diff --git a/htdocs/langs/pl_PL/projects.lang b/htdocs/langs/pl_PL/projects.lang index f03a7e40d56..4e3eb48d808 100644 --- a/htdocs/langs/pl_PL/projects.lang +++ b/htdocs/langs/pl_PL/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Czas ListOfTasks=Lista zadań GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planowany nakład pracy PlannedWorkloadShort=Nakład pracy ProjectReferers=Powiązane elementy ProjectMustBeValidatedFirst=Projekt musi być najpierw zatwierdzony -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Wejścia na dzień InputPerWeek=Wejścia w tygodniu InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Nowa faktura OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/pl_PL/receiptprinter.lang b/htdocs/langs/pl_PL/receiptprinter.lang index 09e767f4d34..5da4c9a5a4e 100644 --- a/htdocs/langs/pl_PL/receiptprinter.lang +++ b/htdocs/langs/pl_PL/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Atrapa drukarki CONNECTOR_NETWORK_PRINT=Drukarka sieciowa CONNECTOR_FILE_PRINT=Drukarka lokalna CONNECTOR_WINDOWS_PRINT=Lokalna drukarka Windowsowa +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fałszywe Drukarka do testu, nie robi nic CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://użytkownik:tajny@nazwa_komputera/grupa_robocza/drukarka +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Profil domyślny PROFILE_SIMPLE=Profil prosty PROFILE_EPOSTEP=Profil Epos Tep @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Nr referencyjny faktury +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Kapitał +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/pl_PL/stripe.lang b/htdocs/langs/pl_PL/stripe.lang index d0a7f958f5a..2583d38db89 100644 --- a/htdocs/langs/pl_PL/stripe.lang +++ b/htdocs/langs/pl_PL/stripe.lang @@ -32,6 +32,7 @@ VendorName=Nazwa dostawcy CSSUrlForPaymentForm=Arkusz styli CSS dla formularza płatności NewStripePaymentReceived=Nowa płatność Stripe otrzymana NewStripePaymentFailed=Próbowano wykonać płatność Stripe, ale nie powiodła się +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/pl_PL/users.lang b/htdocs/langs/pl_PL/users.lang index 45dd6b658ba..19dd2de7727 100644 --- a/htdocs/langs/pl_PL/users.lang +++ b/htdocs/langs/pl_PL/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domena użytkownika %s Reactivate=Przywraca CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Zezwolenie udzielone ponieważ odziedziczył od jednego z użytkowników grupy. Inherited=Odziedziczone UserWillBeInternalUser=Utworzony użytkownik będzie wewnętrzny użytkownik (ponieważ nie związane z konkretnym trzeciej) @@ -110,3 +110,8 @@ UserLogged=Użytkownik zalogowany DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/pl_PL/website.lang b/htdocs/langs/pl_PL/website.lang index 3be18159200..3a2a005d91d 100644 --- a/htdocs/langs/pl_PL/website.lang +++ b/htdocs/langs/pl_PL/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Zobacz stronę w nowej zakładce SetAsHomePage=Ustaw jako stronę domową RealURL=Prawdziwy adres URL ViewWebsiteInProduction=Zobacz stronę używając linków ze strony głównej -SetHereVirtualHost=<u>Gdy Twój rzeczywisty web serwer to Apache/NGinx/...</u><br>Jeśli na Twym rzeczywistym web serwerze masz uprawnienia do tworzenia wirtualnego web serwera (Virtual Host), to utwórz go i odpowiednio skonfiguruj - np. włącz obsługę PHP, wskaż katalog Root na<br><strong>%s</strong><br>, ustaw kontrolę dostępu. Następnie, jego URL podaj w Dolibarr jako wartość właściwości Virtualhost witryny, przez co podgląd witryny będzie możliwy również poprzez ten dedykowany web serwerze, a nie tylko przez wewnętrzny web serwer w Dolibarr. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u> Używaj z wbudowanym serwerem PHP </u> <br>Gdy w środowisku rozwojowym preferujesz testowanie web strony z web serwerem wbudowanym w PHP (wymagane PHP 5.5 lub nowsze), to uruchamiaj<br> <strong> php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Uruchom swoją witrynę u innego dostawcy wystąpień Dolibarr</u><br>Jeśli nie masz dostępnego w internecie web serwera, takiego jak Apache lub NGinx, to możesz eksportować i importować swoją witrynę do innego wystąpienia Dolibarr u kogoś oferującego wystąpienia Dolibarr mające moduł Website w pełni zintegrowany z web serwerem. Listę niektórych dostawców wystąpień Dolibarr znajdziesz w <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Sprawdź także, czy host wirtualny ma uprawnienia <strong>%s</strong> do plików <br> <strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Przepraszamy, ta witryna jest obecnie niedostępn WEBSITE_USE_WEBSITE_ACCOUNTS=Włącz tabelę kont witryny WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Włącz tabelę kont witryny (login/hasło) dla każdej witryny/strony trzeciej YouMustDefineTheHomePage=Najpierw musisz zdefiniować domyślną stronę główną -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Po zaciągnięciu zawartości z zewnętrznej web witryny możliwa jest jedynie edycja kodu źródłowego HTML GrabImagesInto=Przechwyć także obrazy znalezione w CSS i na stronie. ImagesShouldBeSavedInto=Obrazy powinny być zapisane w katalogu @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=Aby uzyskać dobre praktyki SEO, użyj tekstu od 5 do MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang index 9a0d6096705..2b1b7cdef65 100644 --- a/htdocs/langs/pt_BR/admin.lang +++ b/htdocs/langs/pt_BR/admin.lang @@ -82,9 +82,7 @@ NoMaxSizeByPHPLimit=Nenhum limite foi configurado no seu PHP MaxSizeForUploadedFiles=Tamanho Máximo para uploads de arquivos ('0' para proibir o carregamento) UseCaptchaCode=Usar captcha para login (recomendado se os usuários tiverem acesso ao Dolibarr pela internet) AntiVirusCommand=Caminho completo para antivirus -AntiVirusCommandExample=Exemplo com o ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Exemplo com o ClamAv: /usr/bin/clamscan (UNIX) AntiVirusParam=Mais parâmetros em linha de comando (CLI) -AntiVirusParamExample=Exemplo com o ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Conf. do Módulo Contabilidade UserSetup=Conf. do Gestor de usuários MultiCurrencySetup=Configuração de múltiplas moedas @@ -170,9 +168,11 @@ FreeModule=Grátis NotCompatible=Este módulo não parece ser compatível com o seu Dolibarr %s (Mín %s - Máx %s). CompatibleAfterUpdate=Este módulo exige uma atualização do seu Dolibarr %s (Mín %s - Máx %s). SeeInMarkerPlace=Ver na Loja Virtual +SeeSetupOfModule=Veja configuração do módulo %s GoModuleSetupArea=Para implantar/instalar um novo módulo, vá para a área de configuração do módulo: <a href="%s">%s</a> . DoliStoreDesc=DoliStore, o site oficial para baixar módulos externos. DevelopYourModuleDesc=Algumas soluções para o desenvolvimento do seu próprio módulo... +RelativeURL=URL relativo BoxesAvailable=Widgets disponíveis BoxesActivated=Widgets ativados ActivateOn=Ativar @@ -337,7 +337,6 @@ KeepEmptyToUseDefault=Deixe em branco para usar o valor padrão DefaultLink=Link padrão SetAsDefault=Definir como padrão ValueOverwrittenByUserSetup=Aviso, esse valor pode ser substituido pela configuração especifícada pelo usuário (cada usuário pode ter seu propria URL CliqueParaDiscar) -ExternalModule=Módulo externo - Instalado no diretório BarcodeInitForProductsOrServices=Inicialização de código de barras em massa ou redefinir de produtos ou serviços CurrentlyNWithoutBarCode=Atualmente, você tem <strong>%s</strong> registro(s) no <strong>%s</strong> %s sem um código de barras definido. InitEmptyBarCode=Valor Init para o próximo registros vazios @@ -354,10 +353,13 @@ DisplayCompanyInfoAndManagers=Exibir o endereço da empresa e os nomes dos geren ModuleCompanyCodeSupplierAquarium=%s seguido pelo código do fornecedor para um código de contabilidade do fornecedor ModuleCompanyCodePanicum=Retornar um código contábil vazio ModuleCompanyCodeDigitaria=Retorna um código contábil composto de acordo com nome de terceiros. O código consiste em um prefixo que pode ser definido na primeira posição, seguido pelo número de caracteres definidos no código de terceiros. +ModuleCompanyCodeCustomerDigitaria=%s seguido pelo nome do cliente truncado pelo número de caracteres: %s para o código contábil do cliente. +ModuleCompanyCodeSupplierDigitaria=%s seguido pelo nome do fornecedor truncado pelo número de caracteres: %s para o código contábil do fornecedor. Use3StepsApproval=Por padrão, os Pedidos de Compra necessitam ser criados e aprovados por 2 usuários diferentes (uma etapa para a criação e a outra etapa para a aprovação. Note que se o usuário possui ambas permissões para criar e aprovar, uma única etapa por usuário será suficiente). Você pode pedir, com esta opção, para introduzir uma terceira etapa para aprovação por outro usuário, se o montante for superior a um determinado valor (assim 3 etapas serão necessárias : 1=validação, 2=primeira aprovação e 3=segunda aprovação se o montante for suficiente). <br>Defina como vazio se uma aprovação (2 etapas) é suficiente, defina com um valor muito baixo (0.1) se uma segunda aprovação (3 etapas) é sempre exigida. UseDoubleApproval=Usar uma aprovação de 3 etapas quando o valor (sem taxa) é maior do que ... WarningPHPMail=AVISO: Muitas vezes, é melhor configurar e-mails enviados para usar o servidor de e-mail do seu provedor, em vez da configuração padrão. Alguns provedores de e-mail (como o Yahoo) não permitem que você envie um e-mail de outro servidor além do seu próprio servidor. Sua configuração atual usa o servidor do aplicativo para enviar e-mail e não o servidor do seu provedor de e-mail, então alguns destinatários (aquele compatível com o protocolo restritivo do DMARC) perguntarão ao seu provedor de e-mail se eles podem aceitar seu e-mail e alguns provedores de e-mail (como o Yahoo) pode responder "não" porque o servidor não é deles, portanto poucos dos seus e-mails enviados podem não ser aceitos (tome cuidado também com a cota de envio do seu provedor de e-mail). <br> Se o seu provedor de e-mail (como o Yahoo) tiver essa restrição, você deve alterar a configuração de e-mail para escolher o outro método "servidor SMTP" e inserir o servidor SMTP e as credenciais fornecidas pelo seu provedor de e-mail. WarningPHPMail2=Se o seu provedor SMTP de e-mail precisar restringir o cliente de e-mail a alguns endereços IP (muito raro), esse é o endereço IP do agente de usuário de e-mail (MUA) para seu aplicativo ERP CRM: <strong>%s</strong>. +WarningPHPMailSPF=Se o nome de domínio no endereço de email do remetente estiver protegido pelo SPF (pergunte ao seu provedor de email), você deverá incluir os seguintes IPs no registro SPF do DNS do seu domínio: <strong> %s </strong>. ClickToShowDescription=Clique para exibir a descrição RequiredBy=Este módulo é exigido por módulo(s) PageUrlForDefaultValues=Você deve inserir o caminho relativo do URL da página. Se você incluir parâmetros na URL, os valores padrão serão efetivos se todos os parâmetros estiverem definidos com o mesmo valor. @@ -754,7 +756,6 @@ DictionaryCompanyJuridicalType=Entidades jurídicas de terceiros DictionaryProspectLevel=Possível cliente DictionaryCanton=Estados / Cidades DictionaryRegion=Regiões -DictionaryCivility=Título da civilidade DictionaryActions=Tipos de eventos na agenda DictionarySocialContributions=Tipos de impostos sociais ou fiscais DictionaryVAT=Taxas de VAT ou imposto sobre vendas de moeda @@ -870,8 +871,6 @@ Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Cheque depósito não feito Delays_MAIN_DELAY_EXPENSEREPORTS=Relatório de despesas para aprovar Delays_MAIN_DELAY_HOLIDAYS=Solicitações de Licenças para aprovar SetupDescription2=As duas seções a seguir são obrigatórias (as duas primeiras entradas no menu de configuração): -SetupDescription3=<a href="%s">%s -> %s</a> <br> Parâmetros básicos usados para personalizar o comportamento padrão do seu aplicativo (por exemplo, para recursos relacionados ao país). -SetupDescription4=<a href="%s">%s -> %s</a> <br> Este software é um conjunto de muitos módulos/aplicativos, todos mais ou menos independentes. Os módulos relevantes para suas necessidades devem ser ativados e configurados. Novos itens/opções são adicionados aos menus com a ativação de um módulo. SetupDescription5=Outras entradas do menu de configuração gerenciam parâmetros opcionais. LogEvents=Auditoría de segurança dos eventos Audit=Auditoría @@ -911,6 +910,7 @@ ParameterActiveForNextInputOnly=Parâmetro efetivo somente para a próxima entra NoEventOrNoAuditSetup=Nenhum evento de segurança foi registrado. Isso é normal se a Auditoria não tiver sido ativada na página "Configuração - Segurança - Eventos". SeeLocalSendMailSetup=Ver sua configuração local de envio de correspondência BackupDesc=Um backup <b>completo</b> de uma instalação do Dolibarr requer duas etapas. +BackupDesc2=Faça backup do conteúdo do diretório "documentos" (<b>%s</b>) que contém todos os arquivos carregados e gerados. Isso também incluirá todos os arquivos de despejo gerados na Etapa 1. Essa operação pode durar vários minutos. BackupDesc3=Faça backup da estrutura e do conteúdo do banco de dados ( <b>%s</b> ) em um arquivo de despejo. Para isso, você pode usar o assistente a seguir. BackupDescX=O diretório arquivado deve ser armazenado em um local seguro. BackupDescY=O arquivo de despeja gerado deverá ser armazenado em um local seguro. @@ -969,7 +969,9 @@ OnlyFollowingModulesAreOpenedToExternalUsers=Observe que apenas os módulos a se SuhosinSessionEncrypt=Sessão armazenada criptografada pelo Suhosin ConditionIsCurrently=Condição é atualmente %s YouUseBestDriver=Você usa o driver %s, que é o melhor driver atualmente disponível. +NbOfObjectIsLowerThanNoPb=Você tem apenas %s %s no banco de dados. Isso não requer nenhuma otimização específica. SearchOptim=Procurar Otimização +YouHaveXObjectAndSearchOptimOn=Você tem %s %s no banco de dados e a constante %s é definida como 1 em Home - Setup - Other PHPModuleLoaded=O componente PHP 1 %s está carregado PreloadOPCode=O OPCode pré-carregado está em uso AddRefInList=Mostrar ref. Cliente / fornecedor lista de informações (lista de seleção ou caixa de combinação) e a maior parte do hiperlink. <br> Terceiros aparecerão com um formato de nome "CC12345 - SC45678 - Empresa X." em vez de "Empresa X.". @@ -1005,7 +1007,6 @@ BillsNumberingModule=Faturas e notas de crédito no modelo de numeração BillsPDFModules=Modelos de documentos da fatura PaymentsPDFModules=Modelos dos documentos de pagamento ForceInvoiceDate=Forçar data de fatura para data de validação -SuggestedPaymentModesIfNotDefinedInInvoice=Sugerir formas de pagamentos na fatura por default se não estiver definida na fatura SuggestPaymentByRIBOnAccount=Sugerir pagamento por retirada na conta SuggestPaymentByChequeToAddress=Sugerir pagamento por cheque para FreeLegalTextOnInvoices=Texto livre nas fatura @@ -1016,7 +1017,6 @@ SupplierPaymentSetup=Configuração de pagamentos do fornecedor PropalSetup=Configurações do módulo de orçamentos ProposalsNumberingModules=Modelos de numeração de orçamentos ProposalsPDFModules=Modelos de documentos para Orçamentos -SuggestedPaymentModesIfNotDefinedInProposal=Modo de pagamentos sugeridos na proposta por padrão, se não definido para proposta FreeLegalTextOnProposal=Texto livre em orçamentos WatermarkOnDraftProposal=Marca d'água no rascunho de orçamentos (nenhum se vazio) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Informar conta bancária de destino da proposta diff --git a/htdocs/langs/pt_BR/bills.lang b/htdocs/langs/pt_BR/bills.lang index 093e7db169b..47a4ce850a6 100644 --- a/htdocs/langs/pt_BR/bills.lang +++ b/htdocs/langs/pt_BR/bills.lang @@ -45,15 +45,15 @@ SupplierInvoice=Fatura do fornecedores SuppliersInvoices=Faturas de fornecedores SupplierBill=Fatura do fornecedores SupplierBills=Faturas de fornecedores -PaymentBack=Reembolso de pagamento -CustomerInvoicePaymentBack=Reembolso de pagamento +PaymentBack=Reembolso +CustomerInvoicePaymentBack=Reembolso PaymentsBack=Reembolsos PaidBack=Reembolso pago DeletePayment=Deletar pagamento ConfirmDeletePayment=Você tem certeza que deseja excluir este pagamento? -ConfirmConvertToReduc=Deseja converter este %s em um desconto absoluto? +ConfirmConvertToReduc=Deseja converter este %s em um crédito disponível? ConfirmConvertToReduc2=O valor será salvo junto a todos os descontos e poderá ser usado como desconto em uma fatura atual ou futura deste cliente. -ConfirmConvertToReducSupplier=Deseja converter este %s em um desconto absoluto? +ConfirmConvertToReducSupplier=Deseja converter este %s em um crédito disponível? ConfirmConvertToReducSupplier2=O valor será salvo junto a todos os descontos e poderá ser usado como desconto em uma fatura atual ou futura deste fornecedor. SupplierPayments=Pagamentos do fornecedor ReceivedCustomersPayments=Pagamentos recebidos de cliente @@ -349,11 +349,10 @@ ClosePaidContributionsAutomatically=Classifique automaticamente todas as contrib AllCompletelyPayedInvoiceWillBeClosed=Todas as faturas sem saldo a pagar serão fechadas automaticamente com o status "Pago". ToMakePaymentBack=Pagar de volta NoteListOfYourUnpaidInvoices=Nota: Essa lista contém faturas de terceiros que você está a ligado como representante de vendas. -RevenueStamp=Selo de receita YouMustCreateInvoiceFromThird=Esta opção só está disponível ao criar uma fatura na guia "Cliente" de terceiros YouMustCreateInvoiceFromSupplierThird=Essa opção só está disponível ao criar uma fatura na guia "Fornecedor" de terceiros YouMustCreateStandardInvoiceFirstDesc=Você deve criar antes uma fatura padrão e convertê-la em um "tema" para criar um novo tema de fatura -PDFCrabeDescription=Modelo de fatura PDF Crabe. Um modelo de fatura completo (implementação antiga do modelo Sponge) +PDFCrabeDescription=Modelo de fatura PDF Crabe. Um modelo de fatura completo PDFCrevetteDescription=Tema Crevette para fatura em PDF. Um tema completo para a situação das faturas TerreNumRefModelDesc1=Retorna número com formato %syymm-nnnn para padrão de faturas e %syymm-nnnn para notas de crédito onde yy é ano, mm é mês e nnnn é uma sequência numérica sem quebra e sem retorno para 0 MarsNumRefModelDesc1=Número de retorno com o formato %syymm-nnnn para faturas padrão, %syymm-nnnn para faturas de substituição, %syymm-nnnn para faturas de adiantamento e %syymm-nnnn para notas de crédito onde yy é ano, mm é mês e nnnn é uma seqüência sem interrupção e não retornar para 0 diff --git a/htdocs/langs/pt_BR/blockedlog.lang b/htdocs/langs/pt_BR/blockedlog.lang index 52d033bd36e..390258dcf55 100644 --- a/htdocs/langs/pt_BR/blockedlog.lang +++ b/htdocs/langs/pt_BR/blockedlog.lang @@ -8,7 +8,6 @@ BrowseBlockedLog=Logs nao modificaveis ShowAllFingerPrintsMightBeTooLong=Mostrar todos os Logs Arquivados (pode ser demorado) ShowAllFingerPrintsErrorsMightBeTooLong=Mostrar todos os arquivos de log inválidos (pode demorar) DownloadBlockChain=Baixar impressoes digitais -KoCheckFingerprintValidity=A entrada de log arquivada não é válida. Isso significa que alguém (um hacker?) Modificou alguns dados desse arquivo depois que foi gravado ou apagou o registro arquivado anterior (verifique se a linha com o número anterior existe). OkCheckFingerprintValidity=O registro de log arquivado é válido. Os dados nesta linha não foram modificados e a entrada segue a anterior. OkCheckFingerprintValidityButChainIsKo=O log arquivado parece válido em comparação com o anterior, mas a cadeia foi previamente corrompida. AddedByAuthority=Salvo na autoridade remota diff --git a/htdocs/langs/pt_BR/cashdesk.lang b/htdocs/langs/pt_BR/cashdesk.lang index 7af01359574..eefa64d6102 100644 --- a/htdocs/langs/pt_BR/cashdesk.lang +++ b/htdocs/langs/pt_BR/cashdesk.lang @@ -34,8 +34,8 @@ TakeposNeedsCategories=TakePOS precisa de categorias de produtos para funcionar OrderNotes=Notas de pedidos CashDeskBankAccountFor=Conta padrão a ser usada para pagamentos em NoPaimementModesDefined=Nenhum modo de embalagem definido na configuração do TakePOS -TicketVatGrouped=Grupo de IVA por taxa em tickets -AutoPrintTickets=Imprimir automaticamente os tickets +TicketVatGrouped=Agrupar IVA por taxa em tickets | recibos +AutoPrintTickets=Imprimir automaticamente tickets | recibos EnableBarOrRestaurantFeatures=Ativar recursos para Bar ou Restaurante ConfirmDeletionOfThisPOSSale=Você confirma a exclusão desta venda atual? ConfirmDiscardOfThisPOSSale=Deseja descartar esta venda atual? diff --git a/htdocs/langs/pt_BR/compta.lang b/htdocs/langs/pt_BR/compta.lang index 3c0487dbe73..a5d7c9bb26f 100644 --- a/htdocs/langs/pt_BR/compta.lang +++ b/htdocs/langs/pt_BR/compta.lang @@ -118,9 +118,7 @@ AnnualByCompanies=Saldo de receitas e despesas, por grupos de conta predefinidos AnnualByCompaniesDueDebtMode=Saldo de receitas e despesas, detalhe por grupos predefinidos, modo <b> %sClaims-Debts%s </b> disse <b> Contabilidade de Compromisso </b>. AnnualByCompaniesInputOutputMode=Saldo de receitas e despesas, detalhe por grupos predefinidos, modo <b> %sIncomes-Expenses%s </b> chamada <b> fluxo de caixa </b>. RulesAmountWithTaxIncluded=- Valores apresentados estão com todos os impostos incluídos -RulesResultDue=- Isto inclui as faturas vencidas, despesas, ICMS (VAT), doações, pagas ou não. Isto também inclui os salários pagos. <br>- Isto isto baseado na data de validação das faturas e ICMS (VAT) e nas datas devidas para as despesas. Para os salários definidos com o módulo Salário, é usado o valor da data do pagamento. RulesResultInOut=- Isto inclui os pagamentos reais feitos nas faturas, despesas, ICMS (VAT) e salários. <br>- Isto é baseado nas datas de pagamento das faturas, despesas, ICMS (VAT) e salários. A data de doação para a doação. -RulesCADue=- Inclui as faturas do cliente, sejam elas pagas ou não. <br> - É baseado na data de validação dessas faturas. <br> RulesCAIn=- Inclui todos os pagamentos efetivos de faturas recebidas de clientes. <br> - É baseado na data de pagamento dessas faturas <br> RulesAmountOnInOutBookkeepingRecord=Inclui registro em seu Ledger com contas contábeis que tem o grupo "DESPESAS" ou "RENDIMENTO" RulesResultBookkeepingPredefined=Inclui registro em seu Ledger com contas contábeis que tem o grupo "DESPESAS" ou "RENDIMENTO" diff --git a/htdocs/langs/pt_BR/errors.lang b/htdocs/langs/pt_BR/errors.lang index 19ed3e2fa27..4b5f972e55f 100644 --- a/htdocs/langs/pt_BR/errors.lang +++ b/htdocs/langs/pt_BR/errors.lang @@ -95,6 +95,7 @@ ErrorLoginDoesNotExists=Não existe um usuário com login <b>%s</b>. ErrorLoginHasNoEmail=Este usuário não tem endereço de e-mail. Processo abortado. ErrorBadValueForCode=Valor inadequado para código de segurança. Tente novamente com um novo valor... ErrorBothFieldCantBeNegative=Os campos %s e %s não podem ser ambos negativos +ErrorLinesCantBeNegativeForOneVATRate=O total de linhas não pode ser negativo para uma determinada taxa de IVA. ErrorLinesCantBeNegativeOnDeposits=As linhas não podem ser negativas em um depósito. Você terá problemas quando precisar apagar o depósito na fatura final, se o fizer. ErrorQtyForCustomerInvoiceCantBeNegative=A quantidade nas linhas das notas de clientes não pode ser negativa ErrorWebServerUserHasNotPermission=A conta de usuário <b>%s</b> usada para executar o servidor web não possui permissão para isto diff --git a/htdocs/langs/pt_BR/link.lang b/htdocs/langs/pt_BR/link.lang index eb57e8c3b2e..f86a13d83c3 100644 --- a/htdocs/langs/pt_BR/link.lang +++ b/htdocs/langs/pt_BR/link.lang @@ -4,6 +4,7 @@ LinkedFiles=Arquivos vinculados e documentos NoLinkFound=Não há links registrados LinkComplete=O arquivo foi associada com sucesso ErrorFileNotLinked=O arquivo não pôde ser vinculado +LinkRemoved=A ligação %s foi removida ErrorFailedToDeleteLink=Falha ao remover link '<b>%s</b>' ErrorFailedToUpdateLink=Falha ao atualizar link '<b>%s</b>' URLToLink=URL para link diff --git a/htdocs/langs/pt_BR/mails.lang b/htdocs/langs/pt_BR/mails.lang index 6a462d11f01..773a06e5e08 100644 --- a/htdocs/langs/pt_BR/mails.lang +++ b/htdocs/langs/pt_BR/mails.lang @@ -96,6 +96,5 @@ NoContactWithCategoryFound=Nenhum foi encontrado nenhum contato/endereço com um NoContactLinkedToThirdpartieWithCategoryFound=Nenhum foi encontrado nenhum contato/endereço com uma categoria OutGoingEmailSetup=Configuração de e-mail de saída InGoingEmailSetup=Configuração de e-mail de entrada -OutGoingEmailSetupForEmailing=Configuração de e-mail de saída (para envio em massa) DefaultOutgoingEmailSetup=Configuração de e-mail de saída padrão ContactsWithThirdpartyFilter=Contatos com filtro de terceiros diff --git a/htdocs/langs/pt_BR/orders.lang b/htdocs/langs/pt_BR/orders.lang index 275ed444a69..3c6b39a8fa1 100644 --- a/htdocs/langs/pt_BR/orders.lang +++ b/htdocs/langs/pt_BR/orders.lang @@ -111,7 +111,7 @@ TypeContact_order_supplier_external_SHIPPING=Contato de remessa do fornecedor TypeContact_order_supplier_external_CUSTOMER=Ordem de acompanhamento de contato do fornecedor Error_OrderNotChecked=Nenhum pedido seleçionado para se faturar OrderByEMail=E-mail -PDFEinsteinDescription=Modelo de pedido completo (implementação antiga do modelo Eratosthene) +PDFEinsteinDescription=Modelo de pedido completo PDFEratostheneDescription=Modelo completo de pedidos PDFEdisonDescription=O modelo simplificado do pedido PDFProformaDescription=Modelo completo de fatura Proforma diff --git a/htdocs/langs/pt_BR/other.lang b/htdocs/langs/pt_BR/other.lang index 00661f29a01..36349482923 100644 --- a/htdocs/langs/pt_BR/other.lang +++ b/htdocs/langs/pt_BR/other.lang @@ -168,7 +168,7 @@ LibraryUsed=Biblioteca usada ExportableDatas=dados exportáveis NoExportableData=não existe dados exportáveis (sem módulos com dados exportáveis gastodos, necessitam de permissões) WebsiteSetup=Configuração do módulo website -WEBSITE_IMAGEDesc=Caminho relativo da mídia de imagem. Você pode mantê-lo vazio, pois raramente é usado (ele pode ser usado pelo conteúdo dinâmico para mostrar uma miniatura em uma lista de postagens do blog). Use __WEBSITEKEY__ no caminho se o caminho depender do nome do site. +WEBSITE_IMAGEDesc=Caminho relativo da mídia de imagem. Você pode mantê-lo vazio, pois raramente é usado (ele pode ser usado pelo conteúdo dinâmico para mostrar uma miniatura em uma lista de postagens do blog). Use __WEBSITE_KEY__ no caminho se o caminho depender do nome do site (por exemplo: image / __ WEBSITE_KEY __ / stories / myimage.png). LinesToImport=Linhas para importar MemoryUsage=Uso de memória RequestDuration=Duração do pedido diff --git a/htdocs/langs/pt_BR/products.lang b/htdocs/langs/pt_BR/products.lang index 9df938bca07..9d61b0be2e5 100644 --- a/htdocs/langs/pt_BR/products.lang +++ b/htdocs/langs/pt_BR/products.lang @@ -103,7 +103,6 @@ CustomerPrices=Preços de cliente SuppliersPrices=Preços de fornecedores SuppliersPricesOfProductsOrServices=Preços do fornecedor (produtos ou serviços) CountryOrigin=Pais de origem -Nature=Natureza do produto (matéria-prima/manufaturado) ShortLabel=Etiqueta curta set=conjunto se=conjunto diff --git a/htdocs/langs/pt_BR/projects.lang b/htdocs/langs/pt_BR/projects.lang index a752065eea8..21553851201 100644 --- a/htdocs/langs/pt_BR/projects.lang +++ b/htdocs/langs/pt_BR/projects.lang @@ -56,8 +56,6 @@ ProgressCalculated=calculado do progresso WhichIamLinkedTo=ao qual estou ligado WhichIamLinkedToProject=ao qual estou vinculado ao projeto GoToListOfTimeConsumed=Ir para a lista de dispêndios de tempo -GoToListOfTasks=Exibir como lista -GoToGanttView=mostrar como Gantt ListOrdersAssociatedProject=Lista de pedidos de vendas relacionadas ao projeto ListSupplierOrdersAssociatedProject=Lista de ordens de compra relacionadas ao projeto ListSupplierInvoicesAssociatedProject=Lista de faturas do fornec. relacionadas ao projeto @@ -114,7 +112,6 @@ SelectElement=Selecionar componente AddElement=Link para componente PlannedWorkload=carga horária planejada ProjectMustBeValidatedFirst=O projeto tem que primeiramente ser validado -FirstAddRessourceToAllocateTime=Atribuir o recurso de um usuário à tarefa para alocação do tempo ProjectsWithThisUserAsContact=Projetos com este usuário como contato TasksWithThisUserAsContact=As tarefas atribuídas a esse usuário ProjectOverview=Visão geral diff --git a/htdocs/langs/pt_BR/stripe.lang b/htdocs/langs/pt_BR/stripe.lang index 19d2d32ccec..fcb44212d4c 100644 --- a/htdocs/langs/pt_BR/stripe.lang +++ b/htdocs/langs/pt_BR/stripe.lang @@ -36,4 +36,3 @@ StripePayoutList=Lista de pagamentos do Stripe ToOfferALinkForTestWebhook=Link para configurar o Stripe WebHook para chamar o IPN (modo de teste) ToOfferALinkForLiveWebhook=Link para configurar Stripe WebHook para chamar o IPN (modo ao vivo) PaymentWillBeRecordedForNextPeriod=O pagamento será registrado para o próximo período. -CreationOfPaymentModeMustBeDoneFromStripeInterface=Devido às regras de autenticação forte do cliente, a criação de um cartão deve ser feita no backoffice do Stripe. Você pode clicar aqui para ativar o registro de cliente do Stripe: %s diff --git a/htdocs/langs/pt_BR/users.lang b/htdocs/langs/pt_BR/users.lang index b74be4d91f4..b6ba00dce9a 100644 --- a/htdocs/langs/pt_BR/users.lang +++ b/htdocs/langs/pt_BR/users.lang @@ -60,7 +60,7 @@ LoginAccountDisableInDolibarr=A conta está desativada no Dolibarr ExportDataset_user_1=Usuários e suas propriedades DomainUser=Usuário de Domínio CreateInternalUserDesc=Este formulário permite que você crie um usuário interno em sua empresa / organização. Para criar um usuário externo (cliente, fornecedor, etc.), use o botão 'Criar usuário Dolibarr' do cartão de contato de terceiros. -InternalExternalDesc=Um usuário <b>interno</b> é um usuário que faz parte de sua empresa/organização. <br> Um usuário <b>externo</b> é um cliente, fornecedor ou outro. <br><br> Em ambos os casos, permissões definem direitos no Dolibarr, também o usuário externo pode ter um gerenciador de menu diferente do usuário interno (Veja Início - Configurações - Exibir) +InternalExternalDesc=Usuário <b>interno</b> é um usuário que faz parte da sua empresa / organização. <br>Usuário <b>externo</b> é um cliente, fornecedor ou outro (a criação de um usuário externo para terceiros pode ser feita a partir do registro de contatos de terceiros). <br><br>Nos dois casos, as permissões definem os direitos no Dolibarr, também o usuário externo pode ter um gerenciador de menu diferente do usuário interno (consulte Página inicial - Configuração - Tela) PermissionInheritedFromAGroup=A permissão dá-se já que o herda de um grupo ao qual pertence o usuário. UserWillBeInternalUser=Usuario criado sera um usuario interno (porque nao esta conectado a um particular terceiro) UserWillBeExternalUser=Usuario criado sera um usuario externo (porque esta conectado a um particular terceiro) @@ -96,3 +96,6 @@ UserLogged=Usuário Conectado DateEmployment=Data de Início do Emprego DateEmploymentEnd=Data de término do emprego CantDisableYourself=Você não pode desativar seu próprio registro de usuário +ForceUserExpenseValidator=Forçar validação do relatório de despesas +ForceUserHolidayValidator=Forçar validação da solicitação de licença +ValidatorIsSupervisorByDefault=Por padrão, a validação é feita pelo supervisor do usuário. Mantenha vazio para continuar desta maneira. diff --git a/htdocs/langs/pt_BR/website.lang b/htdocs/langs/pt_BR/website.lang index a69e817c29a..65c7144a2c1 100644 --- a/htdocs/langs/pt_BR/website.lang +++ b/htdocs/langs/pt_BR/website.lang @@ -30,7 +30,6 @@ ViewPageInNewTab=Visualizar página numa nova aba SetAsHomePage=Definir com Página Inicial RealURL=URL real ViewWebsiteInProduction=Visualizar website usando origem URLs -SetHereVirtualHost=<u>Use com o Apache / NGinx / ...</u> <br> Se você puder criar, no seu servidor web (Apache, Nginx, ...), um Host Virtual dedicado com PHP habilitado e um diretório Root no <br> <strong>%s</strong> <br> em seguida, defina o nome do host virtual que você criou nas propriedades do site, para que a visualização possa ser feita também usando esse acesso ao servidor web dedicado, em vez do servidor Dolibarr interno. YouCanAlsoTestWithPHPS=<u> Usar com servidor embutido em PHP </ u> <br> No ambiente de desenvolvimento, você pode preferir testar o site com o servidor da Web incorporado em PHP (o PHP 5.5 é necessário) executando o <strong> php -S 0.0. 0,0: 8080 -t %s </ strong> TestDeployOnWeb=Testar / implementar na web PreviewSiteServedByWebServer=<u> Visualize %s em uma nova guia. </ u> <br> <br> O %s será servido por um servidor web externo (como Apache, Nginx, IIS). Você deve instalar e configurar este servidor antes de apontar para o diretório: <br> <strong> %s </ strong> <br> URL servido por servidor externo: <br> <strong> %s </ strong> @@ -56,7 +55,6 @@ SorryWebsiteIsCurrentlyOffLine=Desculpe, este site está off-line. Volte mais ta WEBSITE_USE_WEBSITE_ACCOUNTS=Habilitar a tabela da conta do site WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Ative a tabela para armazenar contas do site (login / senha) para cada site / terceiros YouMustDefineTheHomePage=Você deve primeiro definir a Home page padrão -OnlyEditionOfSourceForGrabbedContentFuture=Atenção: A criação de uma página da web através da importação de uma página web externa é reservada para usuários experientes. Dependendo da complexidade da página de origem, o resultado da importação pode diferir do original. Além disso, se a página de origem usar estilos CSS comuns ou javascript conflitante, isso poderá quebrar a aparência ou os recursos do editor de site ao trabalhar nesta página. Esse método é uma maneira mais rápida de criar uma página, mas é recomendável criar sua nova página a partir do zero ou de um modelo de página sugerido. <br> Note também que as edições de fontes HTML serão possíveis quando o conteúdo da página for inicializado, editando a partir de uma página externa (o editor 'Online' NÃO estará disponível) OnlyEditionOfSourceForGrabbedContent=Apenas uma edição de fonte HTML é possível quando o conteúdo foi extraído de um site externo GrabImagesInto=Pegue também imagens encontradas no css e na página. WebsiteRootOfImages=Diretório raiz para imagens do site diff --git a/htdocs/langs/pt_PT/admin.lang b/htdocs/langs/pt_PT/admin.lang index 8924d7d7e5d..53c118f9204 100644 --- a/htdocs/langs/pt_PT/admin.lang +++ b/htdocs/langs/pt_PT/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Nota: não está definido nenhum limite na sua configuração do PHP MaxSizeForUploadedFiles=Tamanho máximo para os ficheiros enviados (0 para rejeitar qualquer envio) UseCaptchaCode=Utilizar código gráfico (CAPTCHA) na página de iniciar a sessão -AntiVirusCommand= Caminho completo para o comando de antivírus -AntiVirusCommandExample= Exemplo para ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Exemplo para ClamAV: /usr/bin/clamscan +AntiVirusCommand=Caminho completo para o comando de antivírus +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Mais parâmetros na linha de comando -AntiVirusParamExample= Exemplo para ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Configuração do módulo de "Contabilidade" UserSetup=Configuração e gestão dos utilizadores MultiCurrencySetup=Configuração da utilização de várias moedas @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Opção desativada em demo FeatureAvailableOnlyOnStable=Funcionalidade apenas disponível em versões estáveis ​​oficiais BoxesDesc=Widgets são componentes que mostram algumas informações que você pode adicionar para personalizar algumas páginas. Você pode escolher entre mostrar o widget ou não selecionando a página de destino e clicando em "Ativar" ou clicando na lixeira para desativá-la. OnlyActiveElementsAreShown=Só são mostrados os elementos de <a href="%s">módulos ativos</a>. -ModulesDesc=Os módulos / aplicativos determinam quais recursos estão disponíveis no software. Alguns módulos requerem permissões para serem concedidos aos usuários depois de ativar o módulo. Clique no botão on / off (no final da linha do módulo) para ativar / desativar um módulo / aplicativo. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Pode encontrar mais módulos para descarregar noutros sites da internet... ModulesDeployDesc=Se as permissões em seu sistema de arquivos permitirem, você poderá usar essa ferramenta para implantar um módulo externo. O módulo ficará visível na aba <strong> %s </ strong>. ModulesMarketPlaces=Procurar aplicações/módulos externos @@ -212,6 +212,7 @@ CompatibleUpTo=Compatível com a versão %s NotCompatible=Este módulo não parece compatível com o seu Dolibarr %s (Min%s - Max%s). CompatibleAfterUpdate=Este módulo requer uma atualização para o seu Dolibarr %s(Min%s-Max%s). SeeInMarkerPlace=Veja no mercado de modulos +SeeSetupOfModule=Veja a configuração do módulo %s Updated=Atualizado Nouveauté=Novidade AchatTelechargement=Comprar / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=Lista de empresas que fornecem módulos ou recursos desenvolvid WebSiteDesc=Sites externos para módulos adicionais (não principais) ... DevelopYourModuleDesc=Algumas soluções para desenvolver seu próprio módulo ... URL=URL +RelativeURL=Relative URL BoxesAvailable=Aplicativos disponíveis BoxesActivated=Aplicativos ativados ActivateOn=Ativar sobre @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Deixar em branco para usar o valor por omissão DefaultLink=Hiperligação predefinida SetAsDefault=Definir como predefinição ValueOverwrittenByUserSetup=Aviso: Este valor pode ter sido modificado pela configuração específica de um utilizador (cada utilizador pode definir o seu próprio link ClickToDial) -ExternalModule=Módulo externo - Instalado no diretório %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Código de barras em massa init para terceiros BarcodeInitForProductsOrServices=Inicialização ou reposição de códigos de barras em massa para produtos ou serviços CurrentlyNWithoutBarCode=Atualmente, você tem o registo <strong>%s</strong> em <strong>%s</strong> %s sem o código de barras definido. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Distritos DictionaryCountry=Países DictionaryCurrency=Moedas -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Tipos de eventos da agenda DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=Taxa de IVA @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Taxa LocalTax1IsNotUsed=Não utilizar um segundo imposto LocalTax1IsUsedDesc=Use um segundo tipo de imposto (diferente do primeiro) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=A taxa de IRPF por padrão ao criar prospetos, faturas, or LocalTax2IsNotUsedDescES=Por defeito, o IRS proposto é 0. Fim da regra. LocalTax2IsUsedExampleES=Em Espanha, os freelancers e profissionais liberais que prestam serviços e empresas que escolheram o regime fiscal dos módulos. LocalTax2IsNotUsedExampleES=Em Espanha, são empresas não sujeitas ao sistema fiscal de módulos. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Relatórios sobre impostos locais CalcLocaltax1=Vendas - Compras CalcLocaltax1Desc=Os relatórios de impostos locais são calculados através da diferença entre as vendas de impostos locais e as compras de impostos locais @@ -1018,6 +1025,7 @@ CalcLocaltax2=Compras CalcLocaltax2Desc=Os relatórios de impostos locais são o total de compras de impostos locais CalcLocaltax3=Vendas CalcLocaltax3Desc=Os relatórios de impostos locais são o total de vendas de impostos locais +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Etiqueta que será utilizada por defeito se não for encontrada tradução para este código LabelOnDocuments=Etiqueta sobre documentos LabelOrTranslationKey=Etiqueta ou chave de tradução @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Antes de começar a usar o Dolibarr, alguns parâmetros iniciais devem ser definidos e módulos ativados / configurados. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Eventos de auditoria da segurança Audit=Auditoria @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Os parâmetros de configuração só podem ser definidos pelos <b>utilizadores administradores</b>. SystemInfoDesc=Esta informação do sistema é uma informação técnica acessível só para leitura dos administradores. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Configuração do módulo "Utilizadores" UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Configuração do módulo "GRH" ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Modelo de documentos de faturas BillsPDFModulesAccordindToInvoiceType=Modelos de documentos de faturas de acordo com o tipo de fatura PaymentsPDFModules=Modelos de documentos de pagamento ForceInvoiceDate=Forçar a data de fatura para a data de validação -SuggestedPaymentModesIfNotDefinedInInvoice=Formas de pagamento sugeridas para faturas por defeito, se não estiverem definidas explicitamente +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Texto livre em faturas @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Configuração do módulo de orçamentos ProposalsNumberingModules=Modelos de numeração do orçamento ProposalsPDFModules=Modelos de documentos de orçamento -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Texto livre nos orçamentos WatermarkOnDraftProposal=Marca de água nos orçamentos rascunhos (nenhuma, se vazio) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Pedir por conta bancária do destino do orçamento @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Pedir qual o armazém origem para a encomen ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Pedir conta bancária destinatária para encomendas a fornecedores ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Modelos de numeração de encomendas OrdersModelModule=Modelos de documentos de encomendas @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/pt_PT/bills.lang b/htdocs/langs/pt_PT/bills.lang index ce64ef91892..2dacb43642f 100644 --- a/htdocs/langs/pt_PT/bills.lang +++ b/htdocs/langs/pt_PT/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Fatura de fornecedor SupplierBills=faturas de fornecedores Payment=Pagamento -PaymentBack=Reembolso -CustomerInvoicePaymentBack=Reembolso +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Pagamentos PaymentsBack=Refunds paymentInInvoiceCurrency=na moeda das faturas PaidBack=Reembolsada DeletePayment=Eliminar pagamento ConfirmDeletePayment=Tem a certeza que deseja eliminar este pagamento? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Pagamentos recebidos @@ -219,7 +219,10 @@ ShowInvoiceSituation=Mostrar fatura da situação UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pagar ToMakePaymentBack=Reembolsar ListOfYourUnpaidInvoices=Lista de faturas não pagas NoteListOfYourUnpaidInvoices=Nota: Esta lista apenas contém fatura de terceiros dos quais você está definido como representante de vendas. -RevenueStamp=Selo fiscal +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=Você precisa criar uma fatura padrão primeiro e convertê-la em "modelo" para criar uma nova fatura modelo -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Modelo PDF da fatura Esponja. Um modelo de fatura completo PDFCrevetteDescription=Modelo PDF da fatura Crevette. Um modelo de fatura completo para faturas de situação TerreNumRefModelDesc1=Devolve o número com o formato %syymm-nnnn para facturas standard e %syymm-nnnn para notas de crédito em que yy é ano, mm é mês e nnnn é uma sequência sem pausa e sem retorno a 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Definir data final para a linha de serviço com a próxima data d AutoFillDateToShort=Definir data final MaxNumberOfGenerationReached=Número máximo de gen. alcançado BILL_DELETEInDolibarr=Fatura eliminada +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/pt_PT/blockedlog.lang b/htdocs/langs/pt_PT/blockedlog.lang index fced720f550..d50a1d77f48 100644 --- a/htdocs/langs/pt_PT/blockedlog.lang +++ b/htdocs/langs/pt_PT/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Logs inalteráveis ShowAllFingerPrintsMightBeTooLong=Mostrar todos os logs arquivados (podem ser longos) ShowAllFingerPrintsErrorsMightBeTooLong=Mostrar todos os logs de arquivo não válidos (podem ser longos) DownloadBlockChain=Baixe impressões digitais -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=O log arquivado parece válido em comparação com o anterior, mas a cadeia foi corrompida anteriormente. AddedByAuthority=Armazenado em autoridade remota diff --git a/htdocs/langs/pt_PT/cashdesk.lang b/htdocs/langs/pt_PT/cashdesk.lang index d7da654dbc5..43080da1bfc 100644 --- a/htdocs/langs/pt_PT/cashdesk.lang +++ b/htdocs/langs/pt_PT/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Adicionar este artigo RestartSelling=Voltar para vendas SellFinished=Venda efetuada PrintTicket=Imprimir recibo +SendTicket=Send ticket NoProductFound=Nenhum artigo encontrado ProductFound=produto encontrado NoArticle=Nenhum artigo @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nº de faturas Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Navegador BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/pt_PT/companies.lang b/htdocs/langs/pt_PT/companies.lang index f858136653d..79d4c087127 100644 --- a/htdocs/langs/pt_PT/companies.lang +++ b/htdocs/langs/pt_PT/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=A Empresa "%s" foi Eliminada ListOfContacts=Lista de Contactos ListOfContactsAddresses=Lista de Contactos ListOfThirdParties=Lista de Terceiros -ShowCompany=Mostrar terceiros ShowContact=Mostrar Contacto ContactsAllShort=Todos (sem filtro) ContactType=Tipo de Contacto @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Primeiro nome do representante de vendas SaleRepresentativeLastname=Último nome do representante de vendas ErrorThirdpartiesMerge=Houve um erro ao eliminar os terceiros. Por favor, verifique o registo. As alterações foram revertidas. NewCustomerSupplierCodeProposed=Customer or Vendor code already used, a new code is suggested +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/pt_PT/compta.lang b/htdocs/langs/pt_PT/compta.lang index 3a29e054498..c19fc1ec380 100644 --- a/htdocs/langs/pt_PT/compta.lang +++ b/htdocs/langs/pt_PT/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Consulte %sanálise de payments%s para um cálculo de SeeReportInDueDebtMode=Consulte %sanálise de invoices%s para um cálculo baseado em faturas registradas conhecidas, mesmo que elas ainda não tenham sido contabilizadas no Ledger. SeeReportInBookkeepingMode=Consulte <b> %sRelatório de reservas%s </ b> para um cálculo na <b> tabela Razão da contabilidade </ b> RulesAmountWithTaxIncluded=- Os montantes exibidos contêm todas as taxas incluídas -RulesResultDue=- Inclui faturas pendentes, despesas, IVA, doações, sejam elas pagas ou não. Inclui também salários pagos. <br> - Baseia-se na data de validação das faturas e do IVA e na data de vencimento das despesas. Para os salários definidos com o módulo Salário, a data-valor do pagamento é utilizada. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Inclui os pagamentos reais feitos em faturas, despesas, IVA e salários. <br> - Baseia-se nas datas de pagamento das faturas, despesas, IVA e salários. A data de doação para doação. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=Inclui todas as linhas de crédito do diário de venda. RulesAmountOnInOutBookkeepingRecord=Inclui registro em seu livro contábil com contas contábeis que tem o grupo "DESPESA" ou "LUCRO" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Volume de negócios faturado por taxa de imposto sobre vendas TurnoverCollectedbyVatrate=Volume de negócios cobrado pela taxa de imposto sobre vendas PurchasebyVatrate=Compra por taxa de imposto sobre vendas LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/pt_PT/errors.lang b/htdocs/langs/pt_PT/errors.lang index ae9275ab0c3..b86e65b680a 100644 --- a/htdocs/langs/pt_PT/errors.lang +++ b/htdocs/langs/pt_PT/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Arquivo não foi recebido completamente pelo servidor. ErrorNoTmpDir=directorio Temporário %s não existe. ErrorUploadBlockedByAddon=Upload bloqueado por um plugin PHP Apache /. ErrorFileSizeTooLarge=O tamanho do arquivo é muito grande. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Tamanho demasiado longo para o tipo int (%s máximo dígitos) ErrorSizeTooLongForVarcharType=Tamanho demasiado longo para o tipo string (%s máximo chars) ErrorNoValueForSelectType=Por favor, preencha o valor para lista de selecção @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=Uma senha foi definida para este membro. No entanto, nenhuma conta de usuário foi criada. Portanto, essa senha é armazenada, mas não pode ser usada para fazer login no Dolibarr. Pode ser usado por um módulo externo / interface, mas se você não precisa definir nenhum login nem senha para um membro, você pode desativar a opção "Gerenciar um login para cada membro" da configuração do módulo de membro. Se você precisar gerenciar um login, mas não precisar de nenhuma senha, poderá manter esse campo vazio para evitar esse aviso. Nota: O email também pode ser usado como um login se o membro estiver vinculado a um usuário. diff --git a/htdocs/langs/pt_PT/install.lang b/htdocs/langs/pt_PT/install.lang index 9b836cf1158..a13fa7eba64 100644 --- a/htdocs/langs/pt_PT/install.lang +++ b/htdocs/langs/pt_PT/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Este PHP suporta o Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=Este PHP suporta funções UTF8. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=A sua memória máxima da sessão PHP está definida para <b>%s.</b> Isto deverá ser suficiente. PHPMemoryTooLow=Sua memória de sessão do PHP max está configurada para <b> %s </ b> bytes. Isso é muito baixo. Altere seu <b> php.ini </ b> para definir o parâmetro <b> memory_limit </ b> para pelo menos <b> %s </ b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=A sua instalação PHP não suporta Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Sua instalação do PHP não suporta funções UTF8. Dolibarr não pode funcionar corretamente. Resolva isso antes de instalar o Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=A diretoria %s não existe. ErrorGoBackAndCorrectParameters=Volte e verifique / corrija os parâmetros. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=O aplicativo tentou fazer o upgrade automático, YouTryInstallDisabledByFileLock=O aplicativo tentou fazer o upgrade automático, mas as páginas de instalação / atualização foram desativadas para segurança (pela existência de um arquivo de bloqueio <strong> install.lock </ strong> no diretório de documentos dolibarr). ClickHereToGoToApp=Clique aqui para ir ao seu aplicativo ClickOnLinkOrRemoveManualy=Clique no link a seguir. Se você sempre vê esta mesma página, você deve remover / renomear o arquivo install.lock no diretório de documentos. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/pt_PT/link.lang b/htdocs/langs/pt_PT/link.lang index 7ff3b74a22c..49a5aaaef43 100644 --- a/htdocs/langs/pt_PT/link.lang +++ b/htdocs/langs/pt_PT/link.lang @@ -8,3 +8,4 @@ LinkRemoved=A hiperligação %s foi removida ErrorFailedToDeleteLink= falhou a remoção da ligação '<b>%s</b>' ErrorFailedToUpdateLink= Falha na atualização de ligação '<b>%s</b>' URLToLink=URL para hiperligação +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/pt_PT/mails.lang b/htdocs/langs/pt_PT/mails.lang index 24ce7015897..e742b00fd45 100644 --- a/htdocs/langs/pt_PT/mails.lang +++ b/htdocs/langs/pt_PT/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Nenhum contato / endereço com uma categoria encontra NoContactLinkedToThirdpartieWithCategoryFound=Nenhum contato / endereço com uma categoria encontrada OutGoingEmailSetup=Configuração de email de saída InGoingEmailSetup=Configuração de email de entrada -OutGoingEmailSetupForEmailing=Configuração de email de saída (para envio em massa) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Configuração de email de saída padrão Information=Informação ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/pt_PT/main.lang b/htdocs/langs/pt_PT/main.lang index 273f77e31c6..0b8162089a5 100644 --- a/htdocs/langs/pt_PT/main.lang +++ b/htdocs/langs/pt_PT/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Testar conexão ToClone=Clonar +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Não existem dados definidos para clonar. Of=de @@ -829,6 +830,8 @@ Gender=Género Genderman=Homem Genderwoman=Mulher ViewList=Ver Lista +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obrigatório Hello=Olá GoodBye=Adeus @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/pt_PT/other.lang b/htdocs/langs/pt_PT/other.lang index 1822aec2da0..0a33852c36e 100644 --- a/htdocs/langs/pt_PT/other.lang +++ b/htdocs/langs/pt_PT/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL da página WEBSITE_TITLE=Título WEBSITE_DESCRIPTION=Descrição WEBSITE_IMAGE=Imagem -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Palavras-chave LinesToImport=Linhas a importar diff --git a/htdocs/langs/pt_PT/products.lang b/htdocs/langs/pt_PT/products.lang index 59c7166cd74..ed279a0744a 100644 --- a/htdocs/langs/pt_PT/products.lang +++ b/htdocs/langs/pt_PT/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Inicialização por código de barras em massa MassBarcodeInitDesc=Esta página pode ser usada para inicializar um código de barras em objetos que não possuem código de barras definido. Verifique antes que a configuração do código de barras do módulo esteja concluída. ProductAccountancyBuyCode=Código de contabilidade (compra) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Código de contabilidade (venda) ProductAccountancySellIntraCode=Código contábil (venda intracomunitária) ProductAccountancySellExportCode=Código de contabilidade (venda exportação) @@ -165,7 +167,7 @@ SuppliersPrices=Preços de fornecedor SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Código Aduaneiro / Commodity / HS CountryOrigin=País de origem -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Rótulo curto Unit=Unidade p=você. diff --git a/htdocs/langs/pt_PT/projects.lang b/htdocs/langs/pt_PT/projects.lang index 73ad2b0c810..d1ec4809bb8 100644 --- a/htdocs/langs/pt_PT/projects.lang +++ b/htdocs/langs/pt_PT/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Tempo ListOfTasks=Lista de tarefas GoToListOfTimeConsumed=Ir para a lista de tempo consumido -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Vista de Gantt ListProposalsAssociatedProject=Lista das propostas comerciais relacionadas ao projeto ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Carga de trabalho prevista PlannedWorkloadShort=Carga de trabalho ProjectReferers=Itens relacionados ProjectMustBeValidatedFirst=Primeiro deve validar o projeto -FirstAddRessourceToAllocateTime=Atribuir um recurso do usuário à tarefa para alocar tempo +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Entrada por dia InputPerWeek=Entrada por semana InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Últimos %s projetos modificados OtherFilteredTasks=Outras tarefas filtradas NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Permitir comentários de usuários sobre tarefas AllowCommentOnProject=Permitir comentários de usuários em projetos @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Nova fatura OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/pt_PT/receiptprinter.lang b/htdocs/langs/pt_PT/receiptprinter.lang index 0a295c55579..b786db547bb 100644 --- a/htdocs/langs/pt_PT/receiptprinter.lang +++ b/htdocs/langs/pt_PT/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Impressora de Teste CONNECTOR_NETWORK_PRINT=Impressora de Rede CONNECTOR_FILE_PRINT=Impressora Local CONNECTOR_WINDOWS_PRINT=Impressora do Windows Local +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Impressora de Teste para testar, não faz nada CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Perfil Predefinido PROFILE_SIMPLE=Perfil Simples PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Ref. fatura +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/pt_PT/stripe.lang b/htdocs/langs/pt_PT/stripe.lang index cc9e30cffc6..ee0f48cc59a 100644 --- a/htdocs/langs/pt_PT/stripe.lang +++ b/htdocs/langs/pt_PT/stripe.lang @@ -32,6 +32,7 @@ VendorName=Nome do fornecedor CSSUrlForPaymentForm=CSS url folha de estilo para forma de pagamento NewStripePaymentReceived=Novo pagamento Stripe recebido NewStripePaymentFailed=Nova tentativa de pagamento Stripo, mas falhou +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Chave de teste secreta STRIPE_TEST_PUBLISHABLE_KEY=Chave de teste publicável STRIPE_TEST_WEBHOOK_KEY=Chave de teste Webhook @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/pt_PT/users.lang b/htdocs/langs/pt_PT/users.lang index b200b42a58a..a5e87314b36 100644 --- a/htdocs/langs/pt_PT/users.lang +++ b/htdocs/langs/pt_PT/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Utilizador de Domínio %s Reactivate=Reativar CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=A permissão dá-se já que o herda de um grupo ao qual pertenece o utilizador. Inherited=Herdado UserWillBeInternalUser=O utilizador criado irá ser um utilizador interno (porque não está interligado com um terceiro em particular) @@ -110,3 +110,8 @@ UserLogged=Utilizador conectado DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/pt_PT/website.lang b/htdocs/langs/pt_PT/website.lang index 5f3112d92c8..404cb9f8cec 100644 --- a/htdocs/langs/pt_PT/website.lang +++ b/htdocs/langs/pt_PT/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Ver página no novo separador SetAsHomePage=Definir como página de 'Início' RealURL=URL Real ViewWebsiteInProduction=Ver site da Web utilizando URLs de início -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u> Usar com servidor embutido em PHP </ u> <br> No ambiente de desenvolvimento, você pode preferir testar o site com o servidor da Web incorporado em PHP (requer PHP 5.5) executando <strong> php -S 0.0. 0,0: 8080 -t %s </ strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Verifique também se o host virtual tem permissão <strong> %s </ strong> em arquivos para o <strong> %s </ strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Ativar a tabela de contas do site WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=Primeiro deve definir a página de Início predefinida -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Somente edição de fonte HTML é possível quando o conteúdo foi obtido de um site externo GrabImagesInto=Pegue também imagens encontradas em css e página. ImagesShouldBeSavedInto=As imagens devem ser salvas no diretório @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/ro_RO/admin.lang b/htdocs/langs/ro_RO/admin.lang index 8f60b7aa1f2..31613a3ef4d 100644 --- a/htdocs/langs/ro_RO/admin.lang +++ b/htdocs/langs/ro_RO/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Notă: configurația <b> dvs. </b> PHP limitează în p NoMaxSizeByPHPLimit=Notă: Nicio limită setată în configuraţia dvs. PHP MaxSizeForUploadedFiles=Mărimea maximă pentru fişierele încărcate (0 pentru a interzice orice încărcare) UseCaptchaCode=Utilizaţi codul grafic (CAPTCHA) pe pagina de login -AntiVirusCommand= Calea completă la comanda antivirus -AntiVirusCommandExample= Exemplu pentru ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Examplu pentru ClamAv: /usr/bin/clamscan +AntiVirusCommand=Calea completă la comanda antivirus +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Mai multe despre parametrii în linia de comandă -AntiVirusParamExample= Exemplu pentru ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Setări Modul Contabilitate UserSetup=Setări Modul Utilizatori MultiCurrencySetup=Setarea în mai multe valute @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Funcţonalitate dezactivată în demo FeatureAvailableOnlyOnStable=Funcție disponibilă numai pe versiuni oficiale stabile BoxesDesc=Widgeturile sunt componente care prezintă unele informații pe care le puteți adăuga pentru a personaliza unele pagini. Puteți alege între afișarea sau neafișarea widget-ului , selectând pagina țintă și dând clic pe "Activați" sau făcând clic pe coșul de gunoi pentru a o dezactiva. OnlyActiveElementsAreShown=Numai elementele din <a href="%s"> module activate </a> sunt afişate. -ModulesDesc=Modulele / aplicațiile determină care caracteristici sunt disponibile în software. Unele module necesită permisiuni pentru a fi acordate utilizatorilor după activarea modulului. Faceți clic pe butonul on/off (la sfârșitul liniei de module) pentru a activa/dezactiva un modul/aplicație. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Puteți descărca mai multe module de pe site-uri externe de pe Internet ... ModulesDeployDesc=Dacă permisiunile sistemului dvs. de fișiere permit acest lucru, puteți utiliza acest instrument pentru a implementa un modul extern. Modulul va fi apoi vizibil în tab <strong> %s </strong>. ModulesMarketPlaces=Găsiți aplicația / modulele externe @@ -212,6 +212,7 @@ CompatibleUpTo=Compatibil cu versiunea %s NotCompatible=Acest modul nu pare compatibil cu Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=Acest modul necesită o actualizare la Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Consultați Market place +SeeSetupOfModule=Vezi setare modul %s Updated=Updatat Nouveauté=Noutate AchatTelechargement=Cumpărați / Descărcați @@ -221,6 +222,7 @@ DoliPartnersDesc=Lista companiilor care oferă module sau caracteristici dezvolt WebSiteDesc=Site-uri externe pentru module suplimentare (non-core) ... DevelopYourModuleDesc=Unele soluții pentru a vă dezvolta propriul modul ... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgeturi disponibile BoxesActivated=Widgeturile activate ActivateOn=Activaţi pe @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Lasă gol pentru utilizarea valorii implicite DefaultLink=Link implicit SetAsDefault=Setați ca implicit ValueOverwrittenByUserSetup=Atenție, această valoare poate fi suprascrisă de setările specifice utilizatorului (fiecare utilizator poate seta propriul url clicktodial) -ExternalModule=Modul extern - instalat în directorul %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Cod de bare de masă pentru terți BarcodeInitForProductsOrServices=Init sau reset cod de bare în masă pentru produse şi servicii CurrentlyNWithoutBarCode=În prezent, aveti <strong> %s </strong>inregistrari pe <strong> %s</strong> %s fără cod de bare definit. @@ -947,7 +950,7 @@ DictionaryCanton=State/Provincii DictionaryRegion=Regiuni DictionaryCountry=Ţări DictionaryCurrency=Monede -DictionaryCivility=Titlul de politețe +DictionaryCivility=Honorific titles DictionaryActions=Tipuri evenimente agenda DictionarySocialContributions=Tipuri de taxe sociale si fiscale DictionaryVAT=Cote TVA sau Cote Taxe Vanzări @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Implicit, taxa de vânzare propusă este 0, ea poate fi utiliza VATIsUsedExampleFR=În Franța, înseamnă companii sau organizații care au un sistem fiscal real (Simplificat real sau normal real). Un sistem în care TVA este declarată . VATIsNotUsedExampleFR=În Franța, înseamnă că sunt declarate asociații care nu sunt plătitoare de taxe sau societăți, organizații sau profesii liberale care au ales sistemul fiscal micro intreprindere (taxe de vânzări în franciză) şi plătesc taxe de vânzare de franciză fără nicio declarație de taxe de vânzare. Această opțiune va afișa referinţa "Vânzări cu taxe neaplicabile - art-293B de CGI" pe facturi. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rată LocalTax1IsNotUsed=Nu utilizează taxa secundă LocalTax1IsUsedDesc=Utilizați un al doilea tip de taxă (alta decât prima) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=Rata IRPF în mod implicit când se creează perspective, LocalTax2IsNotUsedDescES=În mod implicit propus IRPF este 0. Sfârşitul regulă. LocalTax2IsUsedExampleES=În Spania, liber profesionişti şi specialişti independenţi, care presta servicii şi companiile care au ales sistemul de impozitare de module. LocalTax2IsNotUsedExampleES=În Spania, sunt întreprinderi care nu sunt supuse sistemului de taxare pe module. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Rapoarte pe taxe locale CalcLocaltax1=Vânzări - Cumpârări CalcLocaltax1Desc=Rapoarte Taxe Locale este calcult ca diferenţă dintre taxele locale de vanzare şi taxele locale de cumparare @@ -1018,6 +1025,7 @@ CalcLocaltax2=Achiziţii CalcLocaltax2Desc=Rapoarte Taxe Locale este totalul taxelor locale de cumpărare CalcLocaltax3=Vânzări CalcLocaltax3Desc=Rapoarte Taxe Locale este totalul taxelor locale de vanzare +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Eticheta utilizat în mod implicit în cazul în care nu poate fi găsit de traducere pentru codul LabelOnDocuments=Eticheta de pe documente LabelOrTranslationKey=Etichetă sau cheie de traducere @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Raportul de cheltuieli pentru aprobare Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Înainte de a începe să utilizați Dolibarr, unii parametri inițiali trebuie să fie definiți and modulele activate/configurate. SetupDescription2=Următoarele două secțiuni sunt obligatorii (primele două intrări din meniul de configurare) -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Alte intrări în meniul de configurare gestionează parametrii opționali. LogEvents=Audit de securitate evenimente Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Activați autentificarea pentru anumite evenimente de securitate. A AreaForAdminOnly=Parametrii de configurare pot fi setați numai de <b> utilizatorii administratori </b>. SystemInfoDesc=Sistemul de informare este diverse informaţii tehnice ai citit doar în modul şi vizibil doar pentru administratori. SystemAreaForAdminOnly=Acest zonă este disponibilă numai administratori. Permisiunile utilizatorilor Dolibarr nu pot modifica această restricție -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parametrii care afectează aspectul şi comportamentul Dolibarr pot fi modificaţi aici. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Reguli pentru generarea și validarea parolelor DisableForgetPasswordLinkOnLogonPage=Nu afișați link-ul "Parola uitată" pe pagina de autentificare UsersSetup=Utilizatorii modul de configurare UserMailRequired=E-mailul necesar pentru a crea un utilizator nou +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Configurare Modul HRM ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Factura modele de documente BillsPDFModulesAccordindToInvoiceType=Modele de documente de facturare în funcție de tipul de factură PaymentsPDFModules=Modele de documente de plată ForceInvoiceDate=Vigoare la data facturii de validare data -SuggestedPaymentModesIfNotDefinedInInvoice=Sugestii cu privire la modul de plata facturii, în mod implicit, dacă nu este definit de factură +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Sugerați plata prin retragere din cont SuggestPaymentByChequeToAddress=Sugerați plata de prin cec către FreeLegalTextOnInvoices=Free text pe facturi @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Configurarea plăților furnizorului PropalSetup=Modul configurare Oferte Comerciale ProposalsNumberingModules=Modele numerotare Oferte Comerciale ProposalsPDFModules=Modele documente Oferte Comerciale -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Text liber pe ofertele comerciale WatermarkOnDraftProposal=Filigranul pe ofertele comerciale schiţă (niciunul daca e gol) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Cere contul bancar destinație al ofertei @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Cereţi sursa depozitului pentru comandă ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Cereţi contul bancar al beneficiarului unei comenzi de achiziție ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Setări pentru gestionarea comenzilor de vânzări OrdersNumberingModules=Ordinele de numerotare module OrdersModelModule=Ordinul modele de documente @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/ro_RO/bills.lang b/htdocs/langs/ro_RO/bills.lang index c973f37860a..e947ece0ec0 100644 --- a/htdocs/langs/ro_RO/bills.lang +++ b/htdocs/langs/ro_RO/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Facturi Furnizori SupplierBill=Factura furnizorului SupplierBills=Facturi Furnizori Payment=Plată -PaymentBack=Restituire Plată -CustomerInvoicePaymentBack=Restituire Plată +PaymentBack=Rambursare +CustomerInvoicePaymentBack=Rambursare Payments=Plăţi PaymentsBack=Refunds paymentInInvoiceCurrency=in moneda facturii PaidBack=Restituit DeletePayment=Ştergere plată ConfirmDeletePayment=Sunteţi sigur că doriţi să ştergeţi această plată? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Plățile furnizorului ReceivedPayments=Încasări primite @@ -219,7 +219,10 @@ ShowInvoiceSituation=Afişează factura de situaţie UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Plăteşte ToMakePaymentBack=Rambursează ListOfYourUnpaidInvoices=Lista facturilor neplătite NoteListOfYourUnpaidInvoices=Notă: Această listă conține numai facturile pentru partenerii la care sunteţi reprezentant de vânzării. -RevenueStamp=Timbru fiscal +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Această opțiune este disponibilă numai când creați o factură din fila "Client" al unui terț YouMustCreateInvoiceFromSupplierThird=Această opțiune este disponibilă numai când creați o factură din fila "Furnizor" al unui terț YouMustCreateStandardInvoiceFirstDesc=Intai se poate crea o factură standard si se transforma in model pentru a avea un nou model de factura. -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Factura PDF șablon Burete. Un șablon complet de factură PDFCrevetteDescription=Model factură PDF Crevette. Un model complet pentru factura de situaţie TerreNumRefModelDesc1=Returnează numărul sub forma %syymm-nnnn pentru facturile standard și %syymm-nnnn pentru notele de credit unde yy este anul, mm este luna și nnnn este o secvenţă fără nici o pauză și fără revenire la 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Setați data de încheiere pentru linia de servicii cu data urmă AutoFillDateToShort=Setați data de încheiere MaxNumberOfGenerationReached=Numărul maxim de gen. atins BILL_DELETEInDolibarr=Factură ştearsă +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/ro_RO/blockedlog.lang b/htdocs/langs/ro_RO/blockedlog.lang index 8606592e234..854459a81da 100644 --- a/htdocs/langs/ro_RO/blockedlog.lang +++ b/htdocs/langs/ro_RO/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Înregistrări nemodificate ShowAllFingerPrintsMightBeTooLong=Arată toate jurnalele arhivate (ar putea fi lungi) ShowAllFingerPrintsErrorsMightBeTooLong=Arată toate jurnalele de arhivă nevalide (ar putea fi lungi) DownloadBlockChain=Descărcați amprentele digitale -KoCheckFingerprintValidity=Intrarea în jurnal arhivată nu este validă. Aceasta înseamnă că cineva (un hacker?) a modificat unele date ale acestei inregistrări după ce a fost înregistrată sau a șters înregistrarea arhivată precedentă (verifică că linia cu # anterior există). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Intrarea în jurnal arhivată este validă. Datele de pe această linie nu au fost modificate şi intrarea urmează cele precedente. OkCheckFingerprintValidityButChainIsKo=Jurnalul arhivat pare valabil în comparație cu cel precedent, dar lanțul a fost corupt anterior. AddedByAuthority=Stocată în autoritate la distanţă diff --git a/htdocs/langs/ro_RO/cashdesk.lang b/htdocs/langs/ro_RO/cashdesk.lang index d22a54f9e2a..785065d2cf1 100644 --- a/htdocs/langs/ro_RO/cashdesk.lang +++ b/htdocs/langs/ro_RO/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Adauga acest articol RestartSelling=Du-te inapoi la vânzare SellFinished=Vanzare completa PrintTicket=Print bon +SendTicket=Send ticket NoProductFound=Niciun articol gasit ProductFound=produs găsit NoArticle=Niciun articol @@ -48,6 +49,7 @@ Footer=Subsol AmountAtEndOfPeriod=Valoare la sfârșitul perioadei (zi, lună sau an) TheoricalAmount=Valoare teoretică RealAmount=Sumă reală +CashFence=Cash fence CashFenceDone=Limita de bani realizată pentru perioada NbOfInvoices=Nr facturi Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS are nevoie de categorii de produse pentru a lucra OrderNotes=Note de comandă CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/ro_RO/companies.lang b/htdocs/langs/ro_RO/companies.lang index 0e79c39d744..0f27f96698a 100644 --- a/htdocs/langs/ro_RO/companies.lang +++ b/htdocs/langs/ro_RO/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Societatea " %s" a fost ştearsă din baza de date. ListOfContacts=Lista Contacte ListOfContactsAddresses=Lista Contacte ListOfThirdParties=Lista terților -ShowCompany=Arată terțul ShowContact=Afişeză contact ContactsAllShort=Toate (fără filtru) ContactType=Tip Contact @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Numele reprezentantului vânzări SaleRepresentativeLastname=Prenumele reprezentantului vânzări ErrorThirdpartiesMerge=A apărut o eroare la ștergerea terților Verificați jurnalul. S-a revenit la setarile anterioare. NewCustomerSupplierCodeProposed=Codul clientului sau furnizorului utilizat deja, este sugerat un nou cod +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Tip de plată - Client PaymentTermsCustomer=Conditii de plata - Client diff --git a/htdocs/langs/ro_RO/compta.lang b/htdocs/langs/ro_RO/compta.lang index 3793fa21abe..5a9926309ff 100644 --- a/htdocs/langs/ro_RO/compta.lang +++ b/htdocs/langs/ro_RO/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Vedeți %sanaliza plăților%s pentru un calcul al pl SeeReportInDueDebtMode=Vedeți %sanaliza facturilor%s pentru un calcul bazat pe facturi înregistrate cunoscute, chiar dacă acestea nu sunt încă înregistrate în registru. SeeReportInBookkeepingMode=Vedeți <b> %sraportul contabil%s </b> pentru un calcul la <b> Tabelul registrului contabil </b> RulesAmountWithTaxIncluded=- Valoarea afişată este cu toate taxele incluse -RulesResultDue=- Include facturi deschise, cheltuieli, TVA, donații, indiferent dacă sunt plătite sau nu. Include, de asemenea, salariile plătite <br> - Se ia în calcul data de validare a facturilor pentru TVA și data scadentă pentru cheltuieli. Pentru salarii definite cu modulul Salarii, este utilizată data plății. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Include plățile efective pe facturi, cheltuieli,TVA și salarii. <br> - Se ia în calcul data plăţii facturilor, cheltuielilor, TVA-ului și salariilor . -RulesCADue=- include facturile de plată ale clientului, indiferent dacă sunt plătite sau nu. <br> - Se bazează pe data de validare a acestor facturi. <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- include toate plățile efective ale facturilor primite de la clienți. <br> - se bazează pe data de plată a acestor facturi <br> RulesCATotalSaleJournal=Acesta include toate liniile de credit din jurnalul de vânzare. RulesAmountOnInOutBookkeepingRecord=Acesta include înregistrarea în registrul dvs. cu conturi contabile care are grupul "CHELTUIELI" sau "VENIT" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Cifra de afaceri facturată prin rata impozitului pe vânzare TurnoverCollectedbyVatrate=Cifra de afaceri colectată prin rata impozitului pe vânzare PurchasebyVatrate=Cumpărare prin rata de impozitare a vânzării LabelToShow=Etichetă scurta +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/ro_RO/errors.lang b/htdocs/langs/ro_RO/errors.lang index e4087e004cb..81bd2acc725 100644 --- a/htdocs/langs/ro_RO/errors.lang +++ b/htdocs/langs/ro_RO/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Fişierul nu a primit complet de server. ErrorNoTmpDir=Temporare directy %s nu există. ErrorUploadBlockedByAddon=Încărcaţi blocat de un PHP / Apache plug-in. ErrorFileSizeTooLarge=Dimensiunea fişierului este prea mare. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Prea mult timp pentru tipul int (%s cifre maxim) Dimensiune ErrorSizeTooLongForVarcharType=Prea mult timp pentru tipul de coarde (%s de caractere maxim) Dimensiune ErrorNoValueForSelectType=Completaţi valorile pentru lista de selecţie @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount= O parolă a fost trimisă către acest membru. Cu toate acestea, nu a fost creat nici un cont de utilizator. Astfel, această parolă este stocată, dar nu poate fi utilizată pentru autentificare. Poate fi utilizată de către un modul / interfată externă, dar dacă nu aveți nevoie să definiți un utilizator sau o parolă pentru un membru, puteți dezactiva opțiunea "Gestionați o conectare pentru fiecare membru" din modul de configurare membri. În cazul în care aveți nevoie să gestionați un utilizator, dar nu este nevoie de parolă, aveți posibilitatea să păstrați acest câmp gol pentru a evita acest avertisment. Notă: Adresa de e-mail poate fi utilizată ca utilizator la autentificare, în cazul în care membrul este legat de un utilizator. diff --git a/htdocs/langs/ro_RO/install.lang b/htdocs/langs/ro_RO/install.lang index 1dbbc1fd370..ed434445473 100644 --- a/htdocs/langs/ro_RO/install.lang +++ b/htdocs/langs/ro_RO/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Acest PHP suportă Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=Acest PHP suportă functiile UTF8. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=PHP max memorie sesiune este setată la <b>%s.</b> Acest lucru ar trebui să fie suficient. PHPMemoryTooLow=Memoria sesiunii PHP max este setată la <b> %s </b> octeți. Această valoare este prea mică. Schimbați-vă <b> php.ini </b> pentru a seta parametrul <b> memory_limit </b> la cel puțin <b> %s </b> octeți. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Instalarea dvs. PHP nu suportă Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Instalarea dvs. de PHP nu suportă funcții UTF8. Dolibarr nu poate funcționa corect. Rezolvați acest lucru înainte de a instala Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directorul %s nu există. ErrorGoBackAndCorrectParameters=Întoarceți-vă și verificați/corectați parametrii. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Aplicația a încercat să se autoactualizeze, î YouTryInstallDisabledByFileLock=Aplicația a încercat să se autoactualizeze, însă paginile de instalare / upgrade au fost dezactivate pentru securitate (prin existența unui fișier de blocare <strong> install.lock </strong> în directorul de documente Dolibarr). <br> ClickHereToGoToApp=Faceți clic aici pentru a merge la aplicația dvs. ClickOnLinkOrRemoveManualy=Faceți clic pe următorul link. Dacă vedeți întotdeauna aceeași pagină, trebuie să eliminați / redenumiți fișierul install.lock din directorul de documente. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/ro_RO/link.lang b/htdocs/langs/ro_RO/link.lang index 05dc60d8abc..9087a2eec65 100644 --- a/htdocs/langs/ro_RO/link.lang +++ b/htdocs/langs/ro_RO/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Linkul %s a fost înlăturat ErrorFailedToDeleteLink= Eşec la înlăturarea linkului '<b>%s</b>' ErrorFailedToUpdateLink= Eşec la modificarea linkului '<b>%s</b>' URLToLink=URL la link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/ro_RO/mails.lang b/htdocs/langs/ro_RO/mails.lang index 6a37037c8c4..e660aa77eb3 100644 --- a/htdocs/langs/ro_RO/mails.lang +++ b/htdocs/langs/ro_RO/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Nu s-a găsit niciun contact / adresă cu o categorie NoContactLinkedToThirdpartieWithCategoryFound=Nu s-a găsit niciun contact / adresă cu o categorie OutGoingEmailSetup=Setarea emailului de ieșire InGoingEmailSetup=Configurarea emailului de primire -OutGoingEmailSetupForEmailing=Setarea emailului de ieșire (pentru trimiterea de emailuri în masă) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Configurarea implicită a emailurilor de ieșire Information=Informatie ContactsWithThirdpartyFilter=Contacte cu filtrul terț diff --git a/htdocs/langs/ro_RO/main.lang b/htdocs/langs/ro_RO/main.lang index fa38056f25f..b9026ccd039 100644 --- a/htdocs/langs/ro_RO/main.lang +++ b/htdocs/langs/ro_RO/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test conexiune ToClone=Clonează +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Alegeți datele pe care doriți să le clonați: NoCloneOptionsSpecified=Nu există date definite pentru a clona . Of=de @@ -829,6 +830,8 @@ Gender=Gen Genderman=Barbat Genderwoman=Femeie ViewList=Vedere listă +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obligatoriu Hello=Salut GoodBye=La revedere @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/ro_RO/other.lang b/htdocs/langs/ro_RO/other.lang index cf65af8725e..f528c846026 100644 --- a/htdocs/langs/ro_RO/other.lang +++ b/htdocs/langs/ro_RO/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Comanda vânzărilor validată Notify_ORDER_SENTBYMAIL=Comanda vânzărilor a fost trimisă prin poștă Notify_ORDER_SUPPLIER_SENTBYMAIL=Comanda de cumparare trimisa prin e-mail @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL pagina WEBSITE_TITLE=Titlu WEBSITE_DESCRIPTION=Descriere WEBSITE_IMAGE=Imagine -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Cuvânt cheie LinesToImport=Linii de import diff --git a/htdocs/langs/ro_RO/products.lang b/htdocs/langs/ro_RO/products.lang index e1bfc320a42..90896e14ae9 100644 --- a/htdocs/langs/ro_RO/products.lang +++ b/htdocs/langs/ro_RO/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Acest instrument actualizează rata TVA definită pe < MassBarcodeInit=Init cod de bare în masă MassBarcodeInitDesc=Această pagină poate fi utilizată pentru a inițializa un cod de bare pe obiectele care nu au coduri de bare definit. Verificați înainte dacă modulul cod de bare este complet configurat. ProductAccountancyBuyCode=Codul contabil (achiziție) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Codul contabil (vânzare) ProductAccountancySellIntraCode=Codul contabil (vânzarea intracomunitară) ProductAccountancySellExportCode=Codul contabil (export de vânzare) @@ -165,7 +167,7 @@ SuppliersPrices=Prețurile furnizorului SuppliersPricesOfProductsOrServices=Prețurile furnizorilor (de produse sau servicii) CustomCode=Cod Vamal / Marfă / SA CountryOrigin=Ţara de origine -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Etichetă scurta Unit=Unit p=u. diff --git a/htdocs/langs/ro_RO/projects.lang b/htdocs/langs/ro_RO/projects.lang index e7fef439144..ff6bc18336d 100644 --- a/htdocs/langs/ro_RO/projects.lang +++ b/htdocs/langs/ro_RO/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Timp ListOfTasks=Lista de sarcini GoToListOfTimeConsumed=Accesați lista de timp consumată -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Vizualizare Gantt ListProposalsAssociatedProject=Lista propunerilor comerciale aferente proiectului ListOrdersAssociatedProject=Lista comenzilor de vânzări aferente proiectului @@ -188,7 +186,7 @@ PlannedWorkload=Volum de lucru Planificat PlannedWorkloadShort=Volum de muncă ProjectReferers=Obiecte asociate ProjectMustBeValidatedFirst=Proiectul trebuie validat mai întâi -FirstAddRessourceToAllocateTime=Atribuiți o resursă de utilizator sarcinii de a aloca timp +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Intrare pe zi InputPerWeek=Intrare pe saptamana InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Ultimele %s proiecte modificate OtherFilteredTasks=Alte sarcini filtrate NoAssignedTasks=Nu au fost găsite sarcini atribuite (atribuiți proiectul / sarcinile utilizatorului curent din caseta de selectare superioară pentru a introduce ora pe acesta) ThirdPartyRequiredToGenerateInvoice=Un terț trebuie definit pe proiect pentru a putea să fie facturat. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Permiteți comentariile utilizatorilor pe sarcini AllowCommentOnProject=Permiteți comentariile utilizatorilor pe proiecte @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Factură nouă OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/ro_RO/receiptprinter.lang b/htdocs/langs/ro_RO/receiptprinter.lang index e232e0a289e..046a9c068d1 100644 --- a/htdocs/langs/ro_RO/receiptprinter.lang +++ b/htdocs/langs/ro_RO/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Imprimanta Retea CONNECTOR_FILE_PRINT=Imprimanta locala CONNECTOR_WINDOWS_PRINT=Imprimanta locala Windows +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Imprimantă falsă de test, nu face nimic CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb: // FooUser: secret @ computername / workgroup / Printer Receipt +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profil PROFILE_SIMPLE=Simplu Profil PROFILE_EPOSTEP=Epos Tep Profil @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Ref Factură +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Cod de identificare TVA intracomunitar +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/ro_RO/stripe.lang b/htdocs/langs/ro_RO/stripe.lang index c4cd14aabde..9646bb98cf7 100644 --- a/htdocs/langs/ro_RO/stripe.lang +++ b/htdocs/langs/ro_RO/stripe.lang @@ -32,6 +32,7 @@ VendorName=Numele vânzătorului CSSUrlForPaymentForm=CSS foaie de URL-ul de stil pentru forma de plată NewStripePaymentReceived=Plata noua Stripe incasata NewStripePaymentFailed=Plata noua Stripe incercata dar esuata +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Cheie de testare secreta STRIPE_TEST_PUBLISHABLE_KEY=Cheia de test publicabilă STRIPE_TEST_WEBHOOK_KEY=Cheia de test Webhook @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/ro_RO/users.lang b/htdocs/langs/ro_RO/users.lang index f6bcf41b04b..efe38577914 100644 --- a/htdocs/langs/ro_RO/users.lang +++ b/htdocs/langs/ro_RO/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Utilizatorii și proprietățile acestora DomainUser=Domeniu utilizatorul %s Reactivate=Reactivaţi CreateInternalUserDesc=Acest formular vă permite să creați un utilizator intern în compania / organizația dvs. Pentru a crea un utilizator extern (client, furnizor etc.), utilizați butonul "Creare utilizator Dolibarr" de pe cartela de contact a terțului. -InternalExternalDesc=Un utilizator <b> intern </b> este un utilizator care face parte din compania / organizația dvs. <br> Un utilizator <b> extern </b> este un client, un furnizor sau altul. <br> <br> În ambele cazuri, permisiunile definesc drepturile asupra Dolibarr, de asemenea, utilizatorul extern poate avea un manager de meniu diferit de cel al utilizatorului intern (consultați Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permisiunea acordată deoarece moştenită de la un utilizator al unui grup. Inherited=Moştenit UserWillBeInternalUser=De utilizator creat va fi un utilizator intern (pentru că nu este legată de o parte terţă) @@ -113,3 +113,5 @@ CantDisableYourself=Nu vă puteți dezactiva propria înregistrare de utilizator ForceUserExpenseValidator=Forţează validarea raportului de cheltuieli ForceUserHolidayValidator=Forţează validarea cererii de concediu ValidatorIsSupervisorByDefault= În mod implicit, validatorul este superviser-rul utilizatorului. Nu completaţi pentru a păstra acest comportament. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/ro_RO/website.lang b/htdocs/langs/ro_RO/website.lang index 985c2e2f7b4..6a998de377e 100644 --- a/htdocs/langs/ro_RO/website.lang +++ b/htdocs/langs/ro_RO/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Afișați pagina în fila nouă SetAsHomePage=Seteaza ca pagina Home RealURL=Real URL ViewWebsiteInProduction=Vizualizați site-ul web utilizând URL-urile de home -SetHereVirtualHost= <u> Utilizați cu Apache / NGinx / ... </u> <br> Dacă puteți crea, pe serverul dvs. de web (Apache, Nginx, ...), un gazdă dedicat cu PHP activat și un director Root pe <br> <strong> %s </strong> <br> apoi setați numele gazdei virtuale pe care ați creat-o în proprietățile site-ului web, astfel încât previzualizarea poate fi făcută și utilizând acest acces dedicat serverului web în loc de serverul intern Dolibarr. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u> Utilizarea cu serverul încorporat PHP </u> <br> În mediul de dezvoltare, puteți prefera să testați site-ul cu serverul web încorporat PHP (PHP 5.5 necesar) executând <br> <strong> php -S 0.0.0.0:8080 -t %s </strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Verificați, de asemenea, că gazda virtuală are permisiunea <strong> %s </strong> pe fișiere în <br> <strong> %s </strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Activați tabelul contului site-ului web WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Activați tabelul pentru a stoca conturile site-urilor web (Autentificare/parola) pentru fiecare site / terț YouMustDefineTheHomePage=Mai întâi trebuie să definiți pagina de Home implicită -OnlyEditionOfSourceForGrabbedContentFuture=Avertisment: Crearea unei pagini web prin importarea unei pagini web externe este rezervată utilizatorilor experimentați. În funcție de complexitatea paginii sursă, rezultatul importului poate diferi de original. De asemenea, în cazul în care pagina sursă utilizează stiluri CSS comune sau javascript conflictual, este posibil să se spargă aspectul sau caracteristicile editorului de site Web atunci când lucrează pe această pagină. Această metodă reprezintă o modalitate mai rapidă de a crea o pagină, dar este recomandat să creați noua pagină de la zero sau dintr-un șablon de pagină sugerat. <br> Rețineți, de asemenea, că modificările sursei HTML vor fi posibile atunci când conținutul paginii a fost inițializat prin preluarea de pe o pagină externă (editorul "Online" NU va fi disponibil) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Numai ediția sursei HTML este posibilă atunci când conținutul a fost preluat de pe un site extern GrabImagesInto=Luați și imaginile găsite în CSS și pagină. ImagesShouldBeSavedInto=Imaginile trebuie salvate în director @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/ru_RU/admin.lang b/htdocs/langs/ru_RU/admin.lang index 063c10ed781..18a2d706a50 100644 --- a/htdocs/langs/ru_RU/admin.lang +++ b/htdocs/langs/ru_RU/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Примечание: <b>ваша</b> конфигура NoMaxSizeByPHPLimit=Примечание: в вашей конфигурации PHP установлено <b>no limit</b> MaxSizeForUploadedFiles=Максимальный размер загружаемых файлов (0 для запрещения каких-либо загрузок) UseCaptchaCode=Использовать графический код (CAPTCHA) на странице входа -AntiVirusCommand= Полный путь к антивирусной команде -AntiVirusCommandExample= Пример для ClamWin: C: \\ Program Files (x86) \\ ClamWin \\ Bin \\ clamscan.exe <br> Пример для ClamAV: / USR / BIN / clamscan +AntiVirusCommand=Полный путь к антивирусной команде +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Дополнительные параметры командной строки -AntiVirusParamExample= Пример для ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Настройка модуля бухгалтерского учета UserSetup=Настройка управления пользователями MultiCurrencySetup=Многовалютная настройка @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Функция отключена в демо - FeatureAvailableOnlyOnStable=Функция доступна только в официальных стабильных версиях BoxesDesc=Виджеты - это компоненты, показывающие некоторую информацию, которую можно добавить для персонализации некоторых страниц. Вы можете выбрать отображать или нет виджет, выбрав целевую страницу и нажав «Активировать», или щелкнув корзину, чтобы отключить ее. OnlyActiveElementsAreShown=Показаны только элементы из <a href="%s">включенных модулей</a> -ModulesDesc=Модули/приложения определяют, какие функции доступны в программном обеспечении. Некоторые модули требуют предоставления разрешений пользователям после активации модуля. Нажмите кнопку включения/выключения (в конце строки модуля), чтобы включить/отключить модуль/приложение. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=В интернете вы можете найти больше модулей для загрузки... ModulesDeployDesc=Если разрешения вашей файловой системе позволяют, вы можете использовать этот инструмент для развертывания внешнего модуля. Модуль будет виден на вкладке <strong>%s</strong> . ModulesMarketPlaces=Поиск внешних приложений/модулей @@ -212,6 +212,7 @@ CompatibleUpTo=Совместимость с версией %s NotCompatible=Этот модуль не совместим с вашим Dolibarr%s (Min%s - Max%s). CompatibleAfterUpdate=Этот модуль требует обновления вашего Dolibarr%s (Min%s - Max%s). SeeInMarkerPlace=См. На рынке +SeeSetupOfModule=Посмотреть настройку модуля %s Updated=Обновлено Nouveauté=Новое AchatTelechargement=Купить/Скачать @@ -221,6 +222,7 @@ DoliPartnersDesc=Список компаний, предоставляющих WebSiteDesc=Внешние веб-сайты для дополнительных модулей (неосновных) ... DevelopYourModuleDesc=Некоторые решения для разработки собственного модуля ... URL=URL +RelativeURL=Relative URL BoxesAvailable=Доступные виджеты BoxesActivated=Включенные виджеты ActivateOn=Активировать @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Оставьте пустым для использова DefaultLink=Ссылка по умолчанию SetAsDefault=Установить по умолчанию ValueOverwrittenByUserSetup=Предупреждение: это значение может быть перезаписано в настройках пользователя (каждый пользователь может задать свои настройки ссылки ClickToDial) -ExternalModule=Внешний модуль - установлен в директорию %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Массовая инициализация штрих-кода для контрагентов BarcodeInitForProductsOrServices=Массовое создание или удаление штрих-кода для Товаров или Услуг CurrentlyNWithoutBarCode=В настоящее время у вас есть <strong>%s</strong>запись на <strong>%s</strong>%s без определенного штрих-кода. @@ -947,7 +950,7 @@ DictionaryCanton=Штат/Провинция DictionaryRegion=Регионы DictionaryCountry=Страны DictionaryCurrency=Валюты -DictionaryCivility=Обращение +DictionaryCivility=Honorific titles DictionaryActions=Тип мероприятия DictionarySocialContributions=Типы социальных или налоговых сборов DictionaryVAT=Значения НДС или налога с продаж @@ -988,6 +991,7 @@ VATIsNotUsedDesc=По умолчанию предлагаемый налог с VATIsUsedExampleFR=Во Франции это означает компании или организации, имеющие реальную фискальную систему (упрощенная реальная или обычная реальная). Система, в которой декларируется НДС. VATIsNotUsedExampleFR=Во Франции это означает ассоциации, которые не декларируют НДС, или компании, организации или либеральные профессии, которые выбрали фискальную систему микропредприятий (НДС во франшизе) и уплатили налог на франшизу без какой-либо декларации НДС. При выборе этого варианта в счетах будет отображаться ссылка "Non applicable Sales tax - art-293B of CGI" («НДС не применяется - art-293B CGI»). ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Ставка LocalTax1IsNotUsed=Не использовать второй налог LocalTax1IsUsedDesc=Используйте второй тип налога (кроме первого) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=Ставка IRPF (подоходный налог для LocalTax2IsNotUsedDescES=По умолчанию предлагается IRPF 0. Конец правления. LocalTax2IsUsedExampleES=В Испании работают фрилансеры и независимые профессионалы, предлагающие услуги, и компании, которые выбрали налоговую систему модулей. LocalTax2IsNotUsedExampleES=В Испании это предприятия, не подпадающие под налоговую систему модулей. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Отчеты о местных налогах CalcLocaltax1=Продажи-Покупки CalcLocaltax1Desc=Отчёты о местных налогах - это разница между местными налогами с продаж и покупок @@ -1018,6 +1025,7 @@ CalcLocaltax2=Покупки CalcLocaltax2Desc=Отчёты о местных налогах - это итог местных налогов с покупок CalcLocaltax3=Продажи CalcLocaltax3Desc=Отчёты о местных налогах - это итог местных налогов с продаж +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Метки, используемые по умолчанию, если нет перевода можно найти код LabelOnDocuments=Этикетка на документах LabelOrTranslationKey=Метка или ключ перевода @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Отчет о расходах для утве Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Перед началом использования Dolibarr необходимо определить параметры и включить/настроить модули. SetupDescription2=Следующие два раздела являются обязательными (две первые записи в меню настройки): -SetupDescription3=<a href="%s">%s -> %s</a> <br> Основные параметры, используемые для настройки поведения вашего приложения по умолчанию (например, для функций, связанных со страной). -SetupDescription4=<a href="%s">%s -> %s</a> <br> Это программное обеспечение представляет собой набор из множества модулей/приложений, все более или менее независимые. Модули, соответствующие вашим потребностям, должны быть включены и настроены. Новые пункты/опции добавляются в меню при активации модуля. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Другие пункты меню настройки управляют дополнительными параметрами. LogEvents=Безопасность ревизии события Audit=Аудит @@ -1128,7 +1136,7 @@ LogEventDesc=Включите ведение журнала для опреде AreaForAdminOnly=Параметры настройки могут быть установлены только <b> пользователем администратора </b>. SystemInfoDesc=Система информации разного техническую информацию Вы получите в режиме только для чтения и видимые только для администраторов. SystemAreaForAdminOnly=Эта область доступна только для администраторов. Пользовательские разрешения Dolibarr не могут изменить это ограничение. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Если у вас есть внешний бухгалтер/бухгалтер, вы можете отредактировать здесь эту информацию. AccountantFileNumber=Код бухгалтера DisplayDesc=Параметры, влияющие на внешний вид и поведение Dolibarr, могут быть изменены здесь. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Правила генерации и проверки DisableForgetPasswordLinkOnLogonPage=Не показывать ссылку «Забыли пароль» на странице входа UsersSetup=Настройка модуля пользователя UserMailRequired=Требуется электронная почта для создания нового пользователя +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Настройка модуля HRM (Отдела кадров) ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Модели счетов-фактур BillsPDFModulesAccordindToInvoiceType=Модели документов счета в соответствии с типом счета PaymentsPDFModules=Модели платежных документов ForceInvoiceDate=Принудительно приравнять дату выставления счета к дате проверки -SuggestedPaymentModesIfNotDefinedInInvoice=Предложенный способ оплаты по умолчанию, если иной не определен в счете +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Предложить оплату выводом средств на счет SuggestPaymentByChequeToAddress=Предложить оплату чеком на FreeLegalTextOnInvoices=Свободный текст на счетах-фактурах @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Настройка платежей поставщику PropalSetup=Настройка модуля Коммерческих предложений ProposalsNumberingModules=Модели нумерации Коммерческих предложений ProposalsPDFModules=Модели документов Коммерческого предложения -SuggestedPaymentModesIfNotDefinedInProposal=Предлагаемый способ оплаты по предложению по умолчанию, если иной не определено предложением +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Свободный текст на Коммерческих предложениях WatermarkOnDraftProposal=Водяные знаки на черновиках Коммерческих предложений ("Нет" если пусто) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Запрос банковского счёта для предложения @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Попросите источник скл ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Запросить адрес банковского счета для заказа на поставку ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Настройка управления заказами на продажу OrdersNumberingModules=Модели нумерации заказов OrdersModelModule=Заказ документов моделей @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/ru_RU/bills.lang b/htdocs/langs/ru_RU/bills.lang index bf31ff2450f..9ea55716414 100644 --- a/htdocs/langs/ru_RU/bills.lang +++ b/htdocs/langs/ru_RU/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=счета-фактуры Поставщиков Payment=Платеж -PaymentBack=Возврат платежа -CustomerInvoicePaymentBack=Возврат платежа +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Платежи PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Возврат платежа DeletePayment=Удалить платеж ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Платежи поставщику ReceivedPayments=Полученные платежи @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Платить ToMakePaymentBack=Возврат платежа ListOfYourUnpaidInvoices=Список неоплаченных счетов NoteListOfYourUnpaidInvoices=Примечание: Этот список содержит счета только тех контрагентов, которые связаны с нами, как представители по сбыту. -RevenueStamp=Штамп о уплате налогов +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Функция возвращает номер в формате %syymm-nnnn для стандартных счетов и %syymm-nnnn для кредитных авизо, где yy год, mm месяц и nnnn является непрерывной последовательностью и не возвращает 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Счёт удалён +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/ru_RU/blockedlog.lang b/htdocs/langs/ru_RU/blockedlog.lang index 25d4540bff2..99bf472eed0 100644 --- a/htdocs/langs/ru_RU/blockedlog.lang +++ b/htdocs/langs/ru_RU/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Показать все архивные логи (может быть долго) ShowAllFingerPrintsErrorsMightBeTooLong=Показать все недействительные архивные логи (может быть долго) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Архивные записи недействительна. Это значит, что кто-то (хакер?) изменил некоторые данные этого после того, как они были записаны, или удалил предыдущую архивную запись (проверьте, что строка с предыдущим # существует). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Архивная запись в журнале действительна. Данные в этой строке не были изменены, и запись следует за предыдущей. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/ru_RU/cashdesk.lang b/htdocs/langs/ru_RU/cashdesk.lang index 6d6a4ce119c..23bb45edead 100644 --- a/htdocs/langs/ru_RU/cashdesk.lang +++ b/htdocs/langs/ru_RU/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Добавить эту статью RestartSelling=Вернитесь на продажу SellFinished=Продажа завершена PrintTicket=Печать билетов +SendTicket=Send ticket NoProductFound=Ни одна статья найдены ProductFound=продукт найден NoArticle=Ни одна статья @@ -48,6 +49,7 @@ Footer=Нижний колонтитул AmountAtEndOfPeriod=Сумма на конец периода (день, месяц или год) TheoricalAmount=Теоретическая сумма RealAmount=Действительная сумма +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Кол-во счетов-фактур Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Подтверждаете ли вы удаление этой продажи? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Браузер BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/ru_RU/companies.lang b/htdocs/langs/ru_RU/companies.lang index 2b688e7cb51..86a3fe13b24 100644 --- a/htdocs/langs/ru_RU/companies.lang +++ b/htdocs/langs/ru_RU/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Компания " %s" удалена из базы данных. ListOfContacts=Список контактов/адресов ListOfContactsAddresses=Список контактов/адресов ListOfThirdParties=Список контрагентов -ShowCompany=Показать контрагента ShowContact=Показать контакт ContactsAllShort=Все (без фильтра) ContactType=Вид контакт @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Имя торгового представителя SaleRepresentativeLastname=Фамилия торгового представителя ErrorThirdpartiesMerge=При удалении третьих сторон произошла ошибка. Проверьте журнал. Изменения были отменены. NewCustomerSupplierCodeProposed=Код Клиента или Поставщика уже используется, предлагается новый код +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Тип оплаты - Клиент PaymentTermsCustomer=Условия оплаты - Клиент diff --git a/htdocs/langs/ru_RU/compta.lang b/htdocs/langs/ru_RU/compta.lang index 1123381eec9..393e05bc995 100644 --- a/htdocs/langs/ru_RU/compta.lang +++ b/htdocs/langs/ru_RU/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded= - Суммы даны с учётом всех налогов -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Короткая метка +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/ru_RU/errors.lang b/htdocs/langs/ru_RU/errors.lang index dae49432ec1..b1594465426 100644 --- a/htdocs/langs/ru_RU/errors.lang +++ b/htdocs/langs/ru_RU/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Файл не получил полностью на серве ErrorNoTmpDir=Временная директория %s не существует. ErrorUploadBlockedByAddon=Добавить заблокирован PHP / Apache плагин. ErrorFileSizeTooLarge=Размер файла слишком велик. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Размер слишком долго для целого типа (%s цифр максимум) ErrorSizeTooLongForVarcharType=Размер слишком долго для струнного типа (%s символов максимум) ErrorNoValueForSelectType=Пожалуйста, заполните значение для выпадающего списка @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/ru_RU/install.lang b/htdocs/langs/ru_RU/install.lang index edfd3a9f826..926bf70b7f7 100644 --- a/htdocs/langs/ru_RU/install.lang +++ b/htdocs/langs/ru_RU/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK= Максимально допустимый размер памяти для сессии установлен <b>в %s.</b> Это должно быть достаточно. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Ваша установка PHP не поддержи ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Каталог %s не существует. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Нажмите здесь, чтобы перейти к вашей заявке 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/ru_RU/link.lang b/htdocs/langs/ru_RU/link.lang index 8e02c8350b7..6ec241979e2 100644 --- a/htdocs/langs/ru_RU/link.lang +++ b/htdocs/langs/ru_RU/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Ссылка на файл %s удалена ErrorFailedToDeleteLink= При удалении ссылки на файл '<b>%s</b>' возникла ошибка ErrorFailedToUpdateLink= При обновлении ссылки на файл '<b>%s</b>' возникла ошибка URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/ru_RU/mails.lang b/htdocs/langs/ru_RU/mails.lang index b059b4ada96..938569bc947 100644 --- a/htdocs/langs/ru_RU/mails.lang +++ b/htdocs/langs/ru_RU/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Информация ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/ru_RU/main.lang b/htdocs/langs/ru_RU/main.lang index f325f268aab..a284a80792b 100644 --- a/htdocs/langs/ru_RU/main.lang +++ b/htdocs/langs/ru_RU/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Проверка подключения ToClone=Дублировать +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Выберите данные для клонирования: NoCloneOptionsSpecified=Данные для дублирования не определены. Of=из @@ -829,6 +830,8 @@ Gender=Пол Genderman=Мужчина Genderwoman=Женщина ViewList=Посмотреть список +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Обязательно Hello=Здравствуйте GoodBye=До свидания @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/ru_RU/other.lang b/htdocs/langs/ru_RU/other.lang index d229559ec81..6e128840716 100644 --- a/htdocs/langs/ru_RU/other.lang +++ b/htdocs/langs/ru_RU/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Название WEBSITE_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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/ru_RU/products.lang b/htdocs/langs/ru_RU/products.lang index dc669d9b69d..371b5e9c53f 100644 --- a/htdocs/langs/ru_RU/products.lang +++ b/htdocs/langs/ru_RU/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Массовое создание штрих-кода MassBarcodeInitDesc=Эта страница может быть использована для создания штрих-кодов для объектов, у которых нет штрих-кода. Проверьте перед выполнением настройки модуля штрих-кодов. ProductAccountancyBuyCode=Учетный код (покупка) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Учетный код (продажа) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Учетный код (экспорт) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Таможенный / Товарный / HS код CountryOrigin=Страна происхождения -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Короткая метка Unit=Единица p=u. diff --git a/htdocs/langs/ru_RU/projects.lang b/htdocs/langs/ru_RU/projects.lang index c233f1d4a67..70aee875338 100644 --- a/htdocs/langs/ru_RU/projects.lang +++ b/htdocs/langs/ru_RU/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Время ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Запланированная нагрузка PlannedWorkloadShort=Рабочая нагрузка ProjectReferers=Связанные элементы ProjectMustBeValidatedFirst=Проект должен быть сначала подтверждён -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Ввод по дням InputPerWeek=Ввод по неделе InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Новый счёт OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/ru_RU/receiptprinter.lang b/htdocs/langs/ru_RU/receiptprinter.lang index 5fcf8b3f605..db6b24e5bb4 100644 --- a/htdocs/langs/ru_RU/receiptprinter.lang +++ b/htdocs/langs/ru_RU/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Референс Счета-фактуры +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Капитал +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/ru_RU/stripe.lang b/htdocs/langs/ru_RU/stripe.lang index 402a8c57df3..7f3d995c77b 100644 --- a/htdocs/langs/ru_RU/stripe.lang +++ b/htdocs/langs/ru_RU/stripe.lang @@ -32,6 +32,7 @@ VendorName=Имя поставщика CSSUrlForPaymentForm=CSS-стилей URL для оплаты форме NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/ru_RU/users.lang b/htdocs/langs/ru_RU/users.lang index 8fc8b5d136c..888fc7191ae 100644 --- a/htdocs/langs/ru_RU/users.lang +++ b/htdocs/langs/ru_RU/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Пользователи и их свойства DomainUser=Домен пользователя %s Reactivate=Возобновить CreateInternalUserDesc=Эта форма позволяет вам создать внутреннего пользователя в вашей компании. Чтобы создать внешнего пользователя (клиента, поставщика и т.д.), используйте кнопку «Создать пользователя Dolibarr» из карточки контакта этого контрагента. -InternalExternalDesc=<b>Внутренний</b> пользователь - это пользователь, который является частью вашей компании. <br> <b>Внешний</b> пользователь - это клиент, продавец или кто-то другой. <br><br> В обоих случаях права доступа определяют права в Dolibarr, также внешний пользователь может иметь менеджер меню, отличный от внутреннего пользователя (см. Главная - Настройка - Внешний вид). +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Разрешение предоставляется, поскольку унаследовал от одного из пользователей в группы. Inherited=Унаследованный UserWillBeInternalUser=Созданный пользователь будет внутреннего пользователя (потому что не связаны с определенным третьим лицам) @@ -110,3 +110,8 @@ UserLogged=Пользователь вошел DateEmployment=Дата начала трудоустройства DateEmploymentEnd=Дата окончания занятости CantDisableYourself=Вы не можете отключить свою собственную запись пользователя +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/ru_RU/website.lang b/htdocs/langs/ru_RU/website.lang index 0b410a27fbd..94d11400665 100644 --- a/htdocs/langs/ru_RU/website.lang +++ b/htdocs/langs/ru_RU/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/sk_SK/admin.lang b/htdocs/langs/sk_SK/admin.lang index b61fb750c2b..84124c3fb7f 100644 --- a/htdocs/langs/sk_SK/admin.lang +++ b/htdocs/langs/sk_SK/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Poznámka: No limit je nastavený v konfigurácii PHP MaxSizeForUploadedFiles=Maximálna veľkosť nahraných súborov (0, aby tak zabránil akejkoľvek odosielanie) UseCaptchaCode=Pomocou grafického kód (CAPTCHA) na prihlasovacej stránke -AntiVirusCommand= Úplná cesta k antivírusovej príkazu -AntiVirusCommandExample= Príklad pre ClamWin: C: \\ PROGRA ~ 1 \\ ClamWin \\ bin \\ clamscan.exe <br> Príklad pre ClamAV: / usr / bin / clamscan +AntiVirusCommand=Úplná cesta k antivírusovej príkazu +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Ďalšie parametre príkazového riadka -AntiVirusParamExample= Príklad ClamWin: - databáza = "C: \\ Program Files (x86) \\ ClamWin \\ lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Účtovné modul nastavenia UserSetup=Správa užívateľov Nastavenie MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Funkcia zakázaný v demo FeatureAvailableOnlyOnStable=Táto možnosť je dostupná iba v oficiálnej stabilnej verzií 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. OnlyActiveElementsAreShown=Iba prvky z <a href="%s">povolených modulov</a> sú uvedené. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Viac modulov na stiahnutie môžete nájst na internete 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Dostupné doplnky BoxesActivated=Aktivované doplnky ActivateOn=Aktivácia na @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Majte prázdny použiť predvolené hodnoty DefaultLink=Východiskový odkaz SetAsDefault=Nastaviť ako predvolené ValueOverwrittenByUserSetup=Pozor, táto hodnota môže byť prepísaná užívateľom špecifické nastavenia (každý užívateľ môže nastaviť vlastné clicktodial url) -ExternalModule=Externý modul - inštalovaný do adresára %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Masové načítanie čiarových kódov alebo reset pre produkty alebo služby CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Okres DictionaryCountry=Štáty DictionaryCurrency=Platobné meny -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Typy udalostí agendy DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=Sadzby DPH alebo Sociálnej dane @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Nepoužívajte druhá daň LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=V predvolenom nastavení je navrhovaná IRPF je 0. Koniec vlády. LocalTax2IsUsedExampleES=V Španielsku, na voľnej nohe a nezávislí odborníci, ktorí poskytujú služby a firmy, ktorí sa rozhodli daňového systému modulov. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Vypisy lokálnej dane CalcLocaltax1=Predaj - Platba CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Platby CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Predaje CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label používa v predvolenom nastavení, pokiaľ nie je preklad možno nájsť kód LabelOnDocuments=Štítok na dokumenty LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Udalosti bezpečnostný audit Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=Systémové informácie je rôzne technické informácie získate v režime iba pre čítanie a viditeľné len pre správcov. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Užívatelia modul nastavenia UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Fakturačné doklady modely BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force faktúry dátum Dátum overenia -SuggestedPaymentModesIfNotDefinedInInvoice=Navrhované platby režime na faktúre v predvolenom nastavení, ak nie je definovaný pre faktúry +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Voľný text na faktúrach @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Obchodné návrhy modul nastavenia ProposalsNumberingModules=Komerčné návrh číslovanie modely ProposalsPDFModules=Komerčné návrh doklady modely -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Voľný text o obchodných návrhov WatermarkOnDraftProposal=Vodoznak na predlôh návrhov komerčných (none ak prázdny) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Objednávky číslovanie modelov OrdersModelModule=Objednať dokumenty modely @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/sk_SK/bills.lang b/htdocs/langs/sk_SK/bills.lang index 3f27a2822d7..24fb68ab4e1 100644 --- a/htdocs/langs/sk_SK/bills.lang +++ b/htdocs/langs/sk_SK/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=dodávatelia faktúry Payment=Platba -PaymentBack=Platba späť -CustomerInvoicePaymentBack=Platba späť +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Platby PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Platené späť DeletePayment=Odstrániť platby ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Prijaté platby @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Zaplatiť ToMakePaymentBack=Oplatiť ListOfYourUnpaidInvoices=Zoznam nezaplatených faktúr NoteListOfYourUnpaidInvoices=Poznámka: Tento zoznam obsahuje iba faktúry pre tretie strany si sú prepojené ako obchodného zástupcu. -RevenueStamp=Kolek +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Faktúra zmazaná +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/sk_SK/blockedlog.lang b/htdocs/langs/sk_SK/blockedlog.lang index 4aa4b7616f7..bce0ea3bd25 100644 --- a/htdocs/langs/sk_SK/blockedlog.lang +++ b/htdocs/langs/sk_SK/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/sk_SK/cashdesk.lang b/htdocs/langs/sk_SK/cashdesk.lang index 44096e6bc4d..aabc1f6d1ef 100644 --- a/htdocs/langs/sk_SK/cashdesk.lang +++ b/htdocs/langs/sk_SK/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Pridať tento článok RestartSelling=Vráťte sa na predaj SellFinished=Predaj ukončený PrintTicket=Tlač vstupeniek +SendTicket=Send ticket NoProductFound=Žiadny článok nájdených ProductFound=výrobky, ktoré sa NoArticle=Žiadny článok @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb faktúr Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Prehliadač BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/sk_SK/companies.lang b/htdocs/langs/sk_SK/companies.lang index ba91a15b328..01282f4f853 100644 --- a/htdocs/langs/sk_SK/companies.lang +++ b/htdocs/langs/sk_SK/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Spoločnosť "%s" vymazaný z databázy. ListOfContacts=Zoznam kontaktov adries / ListOfContactsAddresses=Zoznam kontaktov adries / ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Zobraziť kontakt ContactsAllShort=Všetko (Bez filtra) ContactType=Kontaktujte typ @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/sk_SK/compta.lang b/htdocs/langs/sk_SK/compta.lang index 859d3e5ae70..49dc4cebc1c 100644 --- a/htdocs/langs/sk_SK/compta.lang +++ b/htdocs/langs/sk_SK/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Uvedené sumy sú so všetkými daňami -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Krátky názov +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/sk_SK/errors.lang b/htdocs/langs/sk_SK/errors.lang index e75d00a8928..2f24a7664d6 100644 --- a/htdocs/langs/sk_SK/errors.lang +++ b/htdocs/langs/sk_SK/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Súbor nedostali úplne servera. ErrorNoTmpDir=Dočasné direct %s neexistuje. ErrorUploadBlockedByAddon=Pridať zablokovaný PHP / Apache pluginu. ErrorFileSizeTooLarge=Súbor je príliš veľký. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Veľkosť príliš dlhá pre typ int (%s číslice maximum) ErrorSizeTooLongForVarcharType=Veľkosť príliš dlho typu string (%s znakov maximum) ErrorNoValueForSelectType=Vyplňte, prosím, hodnotu zoznamu vyberte @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/sk_SK/install.lang b/htdocs/langs/sk_SK/install.lang index acefbcaba3c..d635526db59 100644 --- a/htdocs/langs/sk_SK/install.lang +++ b/htdocs/langs/sk_SK/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Maximálna pamäť pre relácie v PHP je nastavená na <b>%s</b>. To by malo stačiť. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Vaše nainštalované PHP nepodporuje Curl ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Adresár %s neexistuje. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/sk_SK/link.lang b/htdocs/langs/sk_SK/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/sk_SK/link.lang +++ b/htdocs/langs/sk_SK/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/sk_SK/mails.lang b/htdocs/langs/sk_SK/mails.lang index 2235e30da51..fc8cb12b03f 100644 --- a/htdocs/langs/sk_SK/mails.lang +++ b/htdocs/langs/sk_SK/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Informácie ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/sk_SK/main.lang b/htdocs/langs/sk_SK/main.lang index 2cf453311ea..f288b52c783 100644 --- a/htdocs/langs/sk_SK/main.lang +++ b/htdocs/langs/sk_SK/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Skúšobné pripojenie ToClone=Klon +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Žiadne údaje nie sú k klonovať definovaný. Of=z @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=Zobrazenie zoznamu +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Ahoj GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/sk_SK/other.lang b/htdocs/langs/sk_SK/other.lang index ad1fb336b1f..af9a401705e 100644 --- a/htdocs/langs/sk_SK/other.lang +++ b/htdocs/langs/sk_SK/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Názov WEBSITE_DESCRIPTION=Popis 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/sk_SK/products.lang b/htdocs/langs/sk_SK/products.lang index ec2e1a7a291..503c6d5da77 100644 --- a/htdocs/langs/sk_SK/products.lang +++ b/htdocs/langs/sk_SK/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Hromadné načítanie čiarového kódu MassBarcodeInitDesc=Tu môžete načítať čiarový kód pre produkt kde nie je definovaný. Skontroluje pred načítaním modulu čiarového kódu ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Krajina pôvodu -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Krátky názov Unit=Jednotka p=u. diff --git a/htdocs/langs/sk_SK/projects.lang b/htdocs/langs/sk_SK/projects.lang index 6151c06cbb8..6563c5fe07c 100644 --- a/htdocs/langs/sk_SK/projects.lang +++ b/htdocs/langs/sk_SK/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Čas ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Plánované zaťaženie PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Nová faktúra OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/sk_SK/receiptprinter.lang b/htdocs/langs/sk_SK/receiptprinter.lang index 4b6b0f8b42c..bb556776a93 100644 --- a/htdocs/langs/sk_SK/receiptprinter.lang +++ b/htdocs/langs/sk_SK/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Fiktívna tlačiareň CONNECTOR_NETWORK_PRINT=Sieťová tlačiareň CONNECTOR_FILE_PRINT=Lokálna tlačiareň CONNECTOR_WINDOWS_PRINT=Lokálna Windows tlačiareň +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Testovacia tlačiareň, nič nerobí CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Základný profil PROFILE_SIMPLE=Jednoduchý profil PROFILE_EPOSTEP=Epos Tep Profil @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Faktúra ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Kapitál +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/sk_SK/stripe.lang b/htdocs/langs/sk_SK/stripe.lang index b8fc19af2e8..dca68cf8cda 100644 --- a/htdocs/langs/sk_SK/stripe.lang +++ b/htdocs/langs/sk_SK/stripe.lang @@ -32,6 +32,7 @@ VendorName=Názov dodávateľa CSSUrlForPaymentForm=CSS štýlov url platobného formulára NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/sk_SK/users.lang b/htdocs/langs/sk_SK/users.lang index 866513bc538..a5c18482b77 100644 --- a/htdocs/langs/sk_SK/users.lang +++ b/htdocs/langs/sk_SK/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Užívateľ domény %s Reactivate=Reaktivácia CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Povolenie udelené, pretože dedia z jednej zo skupiny užívateľov. Inherited=Zdedený UserWillBeInternalUser=Vytvorený užívateľ bude interný užívateľ (pretože nie je spojený s určitou treťou stranou) @@ -110,3 +110,8 @@ UserLogged=Užívateľ prihlásený DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/sk_SK/website.lang b/htdocs/langs/sk_SK/website.lang index 6881e75021b..c1ecdc37147 100644 --- a/htdocs/langs/sk_SK/website.lang +++ b/htdocs/langs/sk_SK/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Zobraziť stránku na novej karte SetAsHomePage=Nastaviť ako domovskú stránku RealURL=Skutočná URL ViewWebsiteInProduction=Zobraziť web stránku použitím domovskej URL -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/sl_SI/admin.lang b/htdocs/langs/sl_SI/admin.lang index 23ec165b087..5ce59884f3d 100644 --- a/htdocs/langs/sl_SI/admin.lang +++ b/htdocs/langs/sl_SI/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Opomba: V vaši PHP konfiguraciji ni nastavljenih omejitev MaxSizeForUploadedFiles=Največja velikost prenesene datoteke (0 za prepoved vseh prenosov) UseCaptchaCode=Na prijavni strani uporabi grafično kodo (CAPTCHA) -AntiVirusCommand= Celotna pot za antivirusno ukazno vrstico -AntiVirusCommandExample= Primer za ClamWin: c:\\Program Files (x86)\\ClamWin\\bin\\clamscan.exe<br>Primer za ClamAv: /usr/bin/clamscan +AntiVirusCommand=Celotna pot za antivirusno ukazno vrstico +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Več parametrov v ukazni vrstici -AntiVirusParamExample= Primer za ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Nastavitve računovodskega modula UserSetup=Nastavitve upravljanja uporabnikov MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Funkcija onemogočena v demo različici 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. OnlyActiveElementsAreShown=Prikazani so samo elementi <a href="%s">omogočenih modulov </a>. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=Glejte nastavitev modula %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Aktiviran na @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Pusti prazno za uporabo privzete vrednosti DefaultLink=Privzeta povezava SetAsDefault=Set as default ValueOverwrittenByUserSetup=Pozor, ta vrednost bo morda prepisana s specifično nastavitvijo uporabnika (vsak uporabnik lahko nastavi lastno povezavo za klic s klikom) -ExternalModule=Zunanji modul - nameščen v mapo %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Vzpostavitev ali resetiranje masovne črtne kode za proizvode in storitve CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regije DictionaryCountry=Države DictionaryCurrency=Valute -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=Stopnje DDV ali davkov @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Stopnja LocalTax1IsNotUsed=Ne uporabi drugega davka LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=Privzeto predlagani IRPF je 0. Konec pravila. LocalTax2IsUsedExampleES=V Španiji, samostojnimi in neodvisni strokovnjaki, ki opravljajo storitve in podjetja, ki so se odločili davčni sistem modulov. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Poročila o lokalnih davkih CalcLocaltax1=Prodaja - Nabava CalcLocaltax1Desc=Poročila o lokalnih davkih so izračunana kot razlika med nabavnimi in prodajnimi davki @@ -1018,6 +1025,7 @@ CalcLocaltax2=Nabava CalcLocaltax2Desc=Poročila o lokalnih davkih so seštevek nabavnih davkov CalcLocaltax3=Prodaja CalcLocaltax3Desc=Poročila o lokalnih davkih so seštevek prodajnih davkov +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Privzet naziv, če za kodo ne obstaja prevod LabelOnDocuments=Naslov na dokumentu LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Dogodki v zvezi z nadzorovanjem varnosti Audit=Nadzor @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=Sistemske informacije so raznovrstne tehnične informacije, ki so na voljo samo v bralnem načinu in jih vidi samo administrator. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Nastavitve modula uporabnikov UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Modeli obrazcev računov BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Vsili datum računa kot datum potrditve -SuggestedPaymentModesIfNotDefinedInInvoice=Privzet predlagan način plačila na računu, če ni definiran drugačen način +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Poljubno besedilo na računu @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Nastavitve modula za komercialne ponudbe ProposalsNumberingModules=Moduli za številčenje komercialnih ponudb ProposalsPDFModules=Modeli obrazcev komercialnih ponudb -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Poljubno besedilo na komercialni ponudbi WatermarkOnDraftProposal=Vodni tisk na osnutkih komercialnih ponudb (brez, če je prazno) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Vprašajte za ciljni bančni račun ponudbe @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Moduli za številčenje naročil OrdersModelModule=Modeli obrazcev naročil @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/sl_SI/bills.lang b/htdocs/langs/sl_SI/bills.lang index 2f982841f8b..31b4151c077 100644 --- a/htdocs/langs/sl_SI/bills.lang +++ b/htdocs/langs/sl_SI/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=Računi dobaviteljev Payment=Plačilo -PaymentBack=Vrnitev plačila -CustomerInvoicePaymentBack=Vrnitev plačila +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Plačila PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Vrnjeno plačilo DeletePayment=Brisanje plačila ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Prejeta plačila @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Plačati ToMakePaymentBack=Vrniti plačilo ListOfYourUnpaidInvoices=Seznam neplačanih računov NoteListOfYourUnpaidInvoices=Opomba: Ta seznam vsebuje samo račune za partnerje, ki so povezani z referentom. -RevenueStamp=Žig prihodka +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Predlaga številko v formatu %syymm-nnnn za standardne račune in %syymm-nnnn za dobropise kjer je yy leto, mm mesec in nnnn zaporedna številka brez presledkov in večja od 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/sl_SI/blockedlog.lang b/htdocs/langs/sl_SI/blockedlog.lang index 45943d31b76..84dc7eb9c06 100644 --- a/htdocs/langs/sl_SI/blockedlog.lang +++ b/htdocs/langs/sl_SI/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/sl_SI/cashdesk.lang b/htdocs/langs/sl_SI/cashdesk.lang index c837cdf5f5d..8238cbd78d0 100644 --- a/htdocs/langs/sl_SI/cashdesk.lang +++ b/htdocs/langs/sl_SI/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Dodaj ta proizvod RestartSelling=Vrni se na prodajo SellFinished=Sale complete PrintTicket=Natisni račun +SendTicket=Send ticket NoProductFound=Proizvod ne obstaja ProductFound=Najden proizvod NoArticle=Ni proizvoda @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Število računov Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Iskalnik BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/sl_SI/companies.lang b/htdocs/langs/sl_SI/companies.lang index 4ae82256d89..912b2494f8e 100644 --- a/htdocs/langs/sl_SI/companies.lang +++ b/htdocs/langs/sl_SI/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Podjetje "%s" izbrisano iz baze. ListOfContacts=Seznam kontaktov ListOfContactsAddresses=Seznam kontaktov ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Pokaži kontakt ContactsAllShort=Vsi (brez filtra) ContactType=Vrsta kontakta @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/sl_SI/compta.lang b/htdocs/langs/sl_SI/compta.lang index f10f0569bd5..4af0e6f6512 100644 --- a/htdocs/langs/sl_SI/compta.lang +++ b/htdocs/langs/sl_SI/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Prikazane vrednosti vključujejo vse davke -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Kratek naziv +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/sl_SI/errors.lang b/htdocs/langs/sl_SI/errors.lang index 276aa6fc50e..58c06bd93f3 100644 --- a/htdocs/langs/sl_SI/errors.lang +++ b/htdocs/langs/sl_SI/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=V strežnik ni bila prenešena celotna datoteka. ErrorNoTmpDir=Začasna mapa %s ne obstaja. ErrorUploadBlockedByAddon=PHP/Apache vtičnik je blokiral nalaganje. ErrorFileSizeTooLarge=Datoteka je prevelika. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Velikost predolgo int tip (%s številke največ) ErrorSizeTooLongForVarcharType=Velikost predolgo za tip za nize (%s znakov največ) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/sl_SI/install.lang b/htdocs/langs/sl_SI/install.lang index 32184850fbb..6c3e9d43d0d 100644 --- a/htdocs/langs/sl_SI/install.lang +++ b/htdocs/langs/sl_SI/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Maksimalni spomin za sejo vašega PHP je nastavljen na <b>%s</b>. To bi moralo zadoščati. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Mapa %s ne obstaja. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/sl_SI/link.lang b/htdocs/langs/sl_SI/link.lang index 3a10359abad..0e71c159759 100644 --- a/htdocs/langs/sl_SI/link.lang +++ b/htdocs/langs/sl_SI/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Povezava %s je bila odstranjena ErrorFailedToDeleteLink= Napaka pri odstranitvi povezave '<b>%s</b>'. ErrorFailedToUpdateLink= Napaka pri posodobitvi povezave '<b>%s</b>'. URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/sl_SI/mails.lang b/htdocs/langs/sl_SI/mails.lang index ba9d3b65e69..aa37bd15448 100644 --- a/htdocs/langs/sl_SI/mails.lang +++ b/htdocs/langs/sl_SI/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Informacija ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/sl_SI/main.lang b/htdocs/langs/sl_SI/main.lang index a8d2be54027..1f758fda89b 100644 --- a/htdocs/langs/sl_SI/main.lang +++ b/htdocs/langs/sl_SI/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test povezave ToClone=Kloniraj +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Ni definiranih podatkov za kloniranje. Of=od @@ -829,6 +830,8 @@ Gender=Spol Genderman=Moški Genderwoman=Ženska ViewList=Glej seznam +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obvezno Hello=Pozdravljeni GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/sl_SI/other.lang b/htdocs/langs/sl_SI/other.lang index 6c6f44e83e2..96dee868c4e 100644 --- a/htdocs/langs/sl_SI/other.lang +++ b/htdocs/langs/sl_SI/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Naziv WEBSITE_DESCRIPTION=Opis 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/sl_SI/products.lang b/htdocs/langs/sl_SI/products.lang index 1f35bae2caf..876f92df779 100644 --- a/htdocs/langs/sl_SI/products.lang +++ b/htdocs/langs/sl_SI/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Vzpostavitev masovne črtne kode MassBarcodeInitDesc=Na tej strani lahko vzpostavite črtno kodo za objekte, ki črtne kode nimajo določene. Pred tem preverite, da je zaključena nastavitev modula za črtne kode. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Država porekla -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Kratek naziv Unit=Enota p=e. diff --git a/htdocs/langs/sl_SI/projects.lang b/htdocs/langs/sl_SI/projects.lang index 2234b08a74c..415d234eec8 100644 --- a/htdocs/langs/sl_SI/projects.lang +++ b/htdocs/langs/sl_SI/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Čas ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planirana delovna obremenitev PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Projekt mora biti najprej potrjen -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Nov račun OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/sl_SI/receiptprinter.lang b/htdocs/langs/sl_SI/receiptprinter.lang index 0f6086b22fb..406600eff5d 100644 --- a/htdocs/langs/sl_SI/receiptprinter.lang +++ b/htdocs/langs/sl_SI/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Referenca računa +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Kapital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/sl_SI/stripe.lang b/htdocs/langs/sl_SI/stripe.lang index 3793e15c016..71e190cf1fa 100644 --- a/htdocs/langs/sl_SI/stripe.lang +++ b/htdocs/langs/sl_SI/stripe.lang @@ -32,6 +32,7 @@ VendorName=Ime prodajalca CSSUrlForPaymentForm=url CSS vzorca obrazca plačila NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/sl_SI/users.lang b/htdocs/langs/sl_SI/users.lang index e9c0d301d11..2851c76fc90 100644 --- a/htdocs/langs/sl_SI/users.lang +++ b/htdocs/langs/sl_SI/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Uporabnik domene %s Reactivate=Ponovno aktiviraj CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Dovoljenje dodeljeno zaradi podedovanja od druge uporabniške skupine. Inherited=Podedovan UserWillBeInternalUser=Kreiran uporabnik bo interni uporabnik (ker ni povezan z določenim partnerjem) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/sl_SI/website.lang b/htdocs/langs/sl_SI/website.lang index 4fda52e2721..f5f8502d7e8 100644 --- a/htdocs/langs/sl_SI/website.lang +++ b/htdocs/langs/sl_SI/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/sq_AL/admin.lang b/htdocs/langs/sq_AL/admin.lang index e83fede6fe0..73bb36b8597 100644 --- a/htdocs/langs/sq_AL/admin.lang +++ b/htdocs/langs/sq_AL/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Bli / Shkarko @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/sq_AL/bills.lang b/htdocs/langs/sq_AL/bills.lang index ab5c2a41c39..c76900fe8a7 100644 --- a/htdocs/langs/sq_AL/bills.lang +++ b/htdocs/langs/sq_AL/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=Lista e faturave të papaguara NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/sq_AL/blockedlog.lang b/htdocs/langs/sq_AL/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/sq_AL/blockedlog.lang +++ b/htdocs/langs/sq_AL/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/sq_AL/cashdesk.lang b/htdocs/langs/sq_AL/cashdesk.lang index 24afe7ea7ad..71618eff28b 100644 --- a/htdocs/langs/sq_AL/cashdesk.lang +++ b/htdocs/langs/sq_AL/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/sq_AL/companies.lang b/htdocs/langs/sq_AL/companies.lang index 2aac2fc23b4..514473dbd97 100644 --- a/htdocs/langs/sq_AL/companies.lang +++ b/htdocs/langs/sq_AL/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/sq_AL/compta.lang b/htdocs/langs/sq_AL/compta.lang index 7bea59962f2..6d530dd3923 100644 --- a/htdocs/langs/sq_AL/compta.lang +++ b/htdocs/langs/sq_AL/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/sq_AL/errors.lang b/htdocs/langs/sq_AL/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/sq_AL/errors.lang +++ b/htdocs/langs/sq_AL/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/sq_AL/install.lang b/htdocs/langs/sq_AL/install.lang index ca3ac621bd7..686f2884cca 100644 --- a/htdocs/langs/sq_AL/install.lang +++ b/htdocs/langs/sq_AL/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/sq_AL/link.lang b/htdocs/langs/sq_AL/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/sq_AL/link.lang +++ b/htdocs/langs/sq_AL/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/sq_AL/mails.lang b/htdocs/langs/sq_AL/mails.lang index 5edad1a7673..7d0a2626fb9 100644 --- a/htdocs/langs/sq_AL/mails.lang +++ b/htdocs/langs/sq_AL/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/sq_AL/main.lang b/htdocs/langs/sq_AL/main.lang index 824703a6761..998a733182b 100644 --- a/htdocs/langs/sq_AL/main.lang +++ b/htdocs/langs/sq_AL/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gjinia Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/sq_AL/other.lang b/htdocs/langs/sq_AL/other.lang index 78d91f32b94..ea794014393 100644 --- a/htdocs/langs/sq_AL/other.lang +++ b/htdocs/langs/sq_AL/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title WEBSITE_DESCRIPTION=Përshkrimi 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/sq_AL/products.lang b/htdocs/langs/sq_AL/products.lang index 6f49421dacc..f3aea3ae0f5 100644 --- a/htdocs/langs/sq_AL/products.lang +++ b/htdocs/langs/sq_AL/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/sq_AL/projects.lang b/htdocs/langs/sq_AL/projects.lang index e51bf91ad44..c7a65cff25d 100644 --- a/htdocs/langs/sq_AL/projects.lang +++ b/htdocs/langs/sq_AL/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/sq_AL/receiptprinter.lang b/htdocs/langs/sq_AL/receiptprinter.lang index c615b6619d6..0e7cb8a8d7a 100644 --- a/htdocs/langs/sq_AL/receiptprinter.lang +++ b/htdocs/langs/sq_AL/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Printer rrjeti CONNECTOR_FILE_PRINT=Printer lokal CONNECTOR_WINDOWS_PRINT=Printer lokal Windows +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Pritner falso pёr test, s'bёn asgjё CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/sq_AL/stripe.lang b/htdocs/langs/sq_AL/stripe.lang index 74d3e35e22c..a40c8e67339 100644 --- a/htdocs/langs/sq_AL/stripe.lang +++ b/htdocs/langs/sq_AL/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/sq_AL/users.lang b/htdocs/langs/sq_AL/users.lang index 84bc13176ae..de230588802 100644 --- a/htdocs/langs/sq_AL/users.lang +++ b/htdocs/langs/sq_AL/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/sq_AL/website.lang b/htdocs/langs/sq_AL/website.lang index 9e5c4ba3ff8..c802b2d2ae8 100644 --- a/htdocs/langs/sq_AL/website.lang +++ b/htdocs/langs/sq_AL/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/sr_RS/admin.lang b/htdocs/langs/sr_RS/admin.lang index 6f1b3c1b0c3..658acef8a25 100644 --- a/htdocs/langs/sr_RS/admin.lang +++ b/htdocs/langs/sr_RS/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=Vidi podešavanja modula %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Podešavanja HRM modula ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Pitaj za izvorni magacin za narudžbinu ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/sr_RS/bills.lang b/htdocs/langs/sr_RS/bills.lang index c2348e4b581..8da848053e3 100644 --- a/htdocs/langs/sr_RS/bills.lang +++ b/htdocs/langs/sr_RS/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=računi dobavljača Payment=Plaćanje -PaymentBack=Refundiranje -CustomerInvoicePaymentBack=Refundiranje +PaymentBack=Povraćaj +CustomerInvoicePaymentBack=Povraćaj Payments=Plaćanja PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Refundirano DeletePayment=Obriši plaćanje ConfirmDeletePayment=Da li ste sigurni da želite da obrišete ovu uplatu? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Primljene uplate @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/sr_RS/cashdesk.lang b/htdocs/langs/sr_RS/cashdesk.lang index 33f7cac33cb..120721fcf9b 100644 --- a/htdocs/langs/sr_RS/cashdesk.lang +++ b/htdocs/langs/sr_RS/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Dodaj ovaj artikal RestartSelling=Vrati se nazad na prodaju SellFinished=Prodaja završena PrintTicket=Štampaj kartu +SendTicket=Send ticket NoProductFound=Artikal nije pronađen ProductFound=proizvod pronađen NoArticle=Nema artikla @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/sr_RS/companies.lang b/htdocs/langs/sr_RS/companies.lang index b3dc0d176c8..d210f745fe3 100644 --- a/htdocs/langs/sr_RS/companies.lang +++ b/htdocs/langs/sr_RS/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Kompanija "%s" je obrisana iz baze. ListOfContacts=Lista kontakta/adresa ListOfContactsAddresses=Lista kontakta/adresa ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Prikaži kontakt ContactsAllShort=Sve (Bez filtera) ContactType=Tip kontakta @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/sr_RS/compta.lang b/htdocs/langs/sr_RS/compta.lang index 6c862fdd0cc..6e3b7c3777d 100644 --- a/htdocs/langs/sr_RS/compta.lang +++ b/htdocs/langs/sr_RS/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Prikazani su bruto iznosi -RulesResultDue=- Sadrži sve račune, troškove, PDV, donacije, bez obzira da li su uplaćene ili ne. Takođe sadrži isplaćene zarade<br>- Zasniva se na datumu potvrde računa i PDV-a i na zadatom datumu troškova. Za zarade definisane u modulu Zarade se koristi vrednosni datum isplate. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Sadrži realne uplate računa, troškova, PDV-a i zarada.<br>- Zasniva se na datumima isplate računa, troškova, PDV-a i zarada. Za donacije se zasniva na datumu donacije. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Kratak naziv +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/sr_RS/errors.lang b/htdocs/langs/sr_RS/errors.lang index 0a117fcfffc..9d7c709b7d6 100644 --- a/htdocs/langs/sr_RS/errors.lang +++ b/htdocs/langs/sr_RS/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Fajl nije u celosti primljen na server. ErrorNoTmpDir=Privremeni folder %s ne postoji. ErrorUploadBlockedByAddon=Upload blokiran PHP/Apache pluginom. ErrorFileSizeTooLarge=Fajl je preveliki. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Predugačka vrednost za int tip (%s cifara maksimum) ErrorSizeTooLongForVarcharType=Predugačka vrednost za string tip (%s karaktera maksimum) ErrorNoValueForSelectType=Molimo izaberite vrednost u select listi @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=Lozinka je podešena za ovog člana, ali korisnik nije kreiran. To znači da je lozinka sačuvana, ali se član ne može ulogovati na Dolibarr. Informaciju može koristiti neka eksterna komponenta, ali ako nemate potrebe da definišete korisnika/lozinku za članove, možete deaktivirati opciju "Upravljanje lozinkama za svakog člana" u podešavanjima modula Članovi. Ukoliko morate da kreirate login, ali Vam nije potrebna lozinka, ostavite ovo polje prazno da se ovo upozorenje ne bi prikazivalo. Napomena: email može biti korišćen kao login ako je član povezan sa korisnikom. diff --git a/htdocs/langs/sr_RS/install.lang b/htdocs/langs/sr_RS/install.lang index b5dc57a6069..62075489dad 100644 --- a/htdocs/langs/sr_RS/install.lang +++ b/htdocs/langs/sr_RS/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Maksimalna memorija za sesije je <b>%s</b>. To bi trebalo biti dovoljno. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Folder %s ne postoji. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/sr_RS/link.lang b/htdocs/langs/sr_RS/link.lang index 81f23a8b366..36e3aaf6aea 100644 --- a/htdocs/langs/sr_RS/link.lang +++ b/htdocs/langs/sr_RS/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Link %s je uklonjen ErrorFailedToDeleteLink= Greška prilikom uklanjanja linka '<b>%s</b>' ErrorFailedToUpdateLink= Greška prilikom ažuriranja linka '<b>%s</b>' URLToLink=URL za link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/sr_RS/mails.lang b/htdocs/langs/sr_RS/mails.lang index f218481df16..e5c1eb91c6a 100644 --- a/htdocs/langs/sr_RS/mails.lang +++ b/htdocs/langs/sr_RS/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Informacija ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/sr_RS/main.lang b/htdocs/langs/sr_RS/main.lang index 3c34cb00fe6..5d825d7454e 100644 --- a/htdocs/langs/sr_RS/main.lang +++ b/htdocs/langs/sr_RS/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Testiraj konekciju ToClone=Kloniraj +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=Podaci za dupliranje nisu definisani: Of=od @@ -829,6 +830,8 @@ Gender=Pol Genderman=Muško Genderwoman=Žensko ViewList=Prikaz liste +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obavezno Hello=Zdravo GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/sr_RS/other.lang b/htdocs/langs/sr_RS/other.lang index 30bd32cca66..e5f9f4c63ed 100644 --- a/htdocs/langs/sr_RS/other.lang +++ b/htdocs/langs/sr_RS/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL stranice WEBSITE_TITLE=Naslov WEBSITE_DESCRIPTION=Opis 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Ključne reči LinesToImport=Lines to import diff --git a/htdocs/langs/sr_RS/products.lang b/htdocs/langs/sr_RS/products.lang index 8db9e1111a7..c48e11cd93e 100644 --- a/htdocs/langs/sr_RS/products.lang +++ b/htdocs/langs/sr_RS/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Masivna inicijalizacija bar code-a. MassBarcodeInitDesc=Na ovoj strani možete inicijalizovati bar kod za objekte koji još uvek nemaju definisan kod. Prethodno proverite da li je završeno podešavanje modula bar kod. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Zemlja porekla -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Kratak naziv Unit=Jedinica p=j. diff --git a/htdocs/langs/sr_RS/projects.lang b/htdocs/langs/sr_RS/projects.lang index ce609997c1e..3717041a79c 100644 --- a/htdocs/langs/sr_RS/projects.lang +++ b/htdocs/langs/sr_RS/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Vreme ListOfTasks=Lista zadataka GoToListOfTimeConsumed=Idi na listu utrošenog vremena -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planirano utrošeno vreme PlannedWorkloadShort=Utrošeno vreme ProjectReferers=Related items ProjectMustBeValidatedFirst=Projekat prvo mora biti odobren -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Ulaz po danu InputPerWeek=Ulaz po nedelji InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Novi račun OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/sr_RS/users.lang b/htdocs/langs/sr_RS/users.lang index 122c5389901..29da9e8dd7e 100644 --- a/htdocs/langs/sr_RS/users.lang +++ b/htdocs/langs/sr_RS/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Korisnik domena %s Reactivate=Reaktiviraj CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Prava su dodeljena jer su nasleđena od jedne od korisnikovih grupa. Inherited=Nasleđeno UserWillBeInternalUser=Kreirani korisnik će biti interni korisnik (jer nije vezan za određeni subjekat) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/sv_SE/admin.lang b/htdocs/langs/sv_SE/admin.lang index 18b2269d80c..c8505262020 100644 --- a/htdocs/langs/sv_SE/admin.lang +++ b/htdocs/langs/sv_SE/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Obs! <b> din </b> konfiguration för PHP begränsar för NoMaxSizeByPHPLimit=Obs: Ingen gräns som anges i din PHP konfiguration MaxSizeForUploadedFiles=Maximala storleken för uppladdade filer (0 att förkasta varje uppladdning) UseCaptchaCode=Använd grafisk kod (CAPTCHA) på inloggningssidan -AntiVirusCommand= Fullständiga sökvägen till antivirus kommandot -AntiVirusCommandExample= Exempel för ClamWin: C: \\ Program Files (x86) \\ ClamWin \\ bin \\ clamscan.exe <br> Exempel för clamav: / usr / bin / clamscan +AntiVirusCommand=Fullständiga sökvägen till antivirus kommandot +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Fler parametrar på kommandoraden -AntiVirusParamExample= Exempel för ClamWin - databas = "C: \\ Program Files (x86) \\ ClamWin \\ lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Redovisning modul inställning UserSetup=Användarens hantering inställning MultiCurrencySetup=Multi-valuta inställning @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Funktion avstängd i demo FeatureAvailableOnlyOnStable=Funktionen är endast tillgänglig på officiella stabila versioner BoxesDesc=Widgets är komponenter som visar lite information som du kan lägga till för att anpassa vissa sidor. Du kan välja mellan att visa widgeten eller inte, genom att välja målsida och klicka på "Aktivera", eller genom att klicka på papperskorgen för att inaktivera den. OnlyActiveElementsAreShown=Endast delar av <a href="%s">aktiverade moduler</a> visas. -ModulesDesc=Modulerna / programmen bestämmer vilka funktioner som finns i programvaran. Vissa moduler kräver att behörigheter beviljas användare efter aktivering av modulen. Klicka på på / av-knappen (vid slutet av modullinjen) för att aktivera / inaktivera en modul / applikation. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Du kan hitta fler moduler att ladda ner på externa webbplatser på Internet ... ModulesDeployDesc=Om behörigheter i ditt filsystem tillåter det kan du använda det här verktyget för att distribuera en extern modul. Modulen kommer då att visas på fliken <strong> %s </strong>. ModulesMarketPlaces=Hitta externa app / moduler @@ -212,6 +212,7 @@ CompatibleUpTo=Kompatibel med version %s NotCompatible=Den här modulen verkar inte vara kompatibel med din Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=Den här modulen kräver en uppdatering av din Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Se på marknaden +SeeSetupOfModule=See setup of module %s Updated=Uppdaterad Nouveauté=Nyhet AchatTelechargement=Köp / Hämta @@ -221,6 +222,7 @@ DoliPartnersDesc=Lista över företag som tillhandahåller anpassade moduler ell WebSiteDesc=Externa webbplatser för fler moduler utan tillägg... DevelopYourModuleDesc=Några lösningar för att utveckla din egen modul ... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets tillgängliga BoxesActivated=Widgets aktiverade ActivateOn=Aktivera på @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Lämna tom för standardvärde DefaultLink=Standardlänk SetAsDefault=Ange som standard ValueOverwrittenByUserSetup=Varning, kan detta värde skrivas över av användarspecifik installation (varje användare kan ställa in sin egen clicktodial url) -ExternalModule=Extern modul - Installerad i katalogen %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass streckkod init för tredje part BarcodeInitForProductsOrServices=Mass streckkod init eller återställning efter produkter eller tjänster CurrentlyNWithoutBarCode=För närvarande har du <strong>%s</strong> rader på <strong>%s</strong> %s utan steckkod angett. @@ -947,7 +950,7 @@ DictionaryCanton=Stater / Provinser DictionaryRegion=Regioner DictionaryCountry=Länder DictionaryCurrency=Valutor -DictionaryCivility=Behörighetens namn +DictionaryCivility=Honorific titles DictionaryActions=Typer av agendahändelser DictionarySocialContributions=Typer av sociala eller skattemässiga skatter DictionaryVAT=Moms Priser och Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Den föreslagna försäljningsskatten är som standard 0 som ka VATIsUsedExampleFR=I Frankrike betyder det att företag eller organisationer har ett riktigt finanssystem (förenklad verklig eller normal verklig). Ett system där momsen deklareras. VATIsNotUsedExampleFR=I Frankrike betyder det föreningar som inte är Försäljningsskatt deklarerade eller företag, organisationer eller liberala yrken som har valt mikroföretagets skattesystem (Försäljningsskatt i franchise) och betalat en franchise Försäkringsskatt utan någon momsdeklaration. Detta val kommer att visa referensen "Ej tillämplig Försäljningsskatt - art-293B av CGI" på fakturor. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Betyg LocalTax1IsNotUsed=Använd inte andra skatte LocalTax1IsUsedDesc=Använd en andra typ av skatt (annan än den första) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=IRPF-räntan som standard när du skapar prospekt, fakturo LocalTax2IsNotUsedDescES=Som standard föreslås IRPF är 0. Slut på regeln. LocalTax2IsUsedExampleES=I Spanien, frilansare och oberoende yrkesutövare som tillhandahåller tjänster och företag som har valt skattesystemet i moduler. LocalTax2IsNotUsedExampleES=I Spanien är de företag som inte omfattas av skattesystem för moduler. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Rapporter om lokala skatter CalcLocaltax1=Försäljning - Inköp CalcLocaltax1Desc=Lokala skatter rapporter beräknas med skillnaden mellan localtaxes försäljning och localtaxes inköp @@ -1018,6 +1025,7 @@ CalcLocaltax2=Inköp CalcLocaltax2Desc=Lokala skatter rapporter är summan av localtaxes inköp CalcLocaltax3=Försäljning CalcLocaltax3Desc=Lokala skatter rapporter är summan av localtaxes försäljning +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Etikett som används som standard om ingen översättning kan hittas för kod LabelOnDocuments=Etikett på dokument LabelOrTranslationKey=Etikett eller översättningstangent @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Utläggsrapport att godkänna Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Innan du börjar använda Dolibarr måste vissa initialparametrar definieras och moduler aktiveras / konfigureras. SetupDescription2=Följande två avsnitt är obligatoriska (de två första inmatningarna i inställningsmenyn): -SetupDescription3= <a href="%s"> %s -> %s </a> <br> Grundläggande parametrar som används för att anpassa standardbeteendet för din applikation (t.ex. för landrelaterade funktioner). -SetupDescription4= <a href="%s"> %s -> %s </a> <br> Denna programvara är en serie med många moduler / applikationer, allt mer eller mindre oberoende. Modulerna som är relevanta för dina behov måste aktiveras och konfigureras. Nya objekt / alternativ läggs till i menyer med aktivering av en modul. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Andra inställningsmenyposter hanterar valfria parametrar. LogEvents=Säkerhetsgranskning evenemang Audit=Revision @@ -1128,7 +1136,7 @@ LogEventDesc=Aktivera loggning för specifika säkerhetshändelser. Administrat AreaForAdminOnly=Inställningsparametrar kan ställas in av <b> endast administratörs användare </b>. SystemInfoDesc=System information diverse teknisk information får du i skrivskyddad läge och synlig för administratörer bara. SystemAreaForAdminOnly=Det här området är endast tillgängligt för administratörsanvändare. Dolibarr användarbehörigheter kan inte ändra denna begränsning. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parametrar som påverkar utseende och beteende hos Dolibarr kan ändras här. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Regler för att generera och bekräfta lösenord DisableForgetPasswordLinkOnLogonPage=Visa inte länken "Glömt lösenord" på sidan Inloggning UsersSetup=Användare modul inställning UserMailRequired=E-post krävs för att skapa en ny användare +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Inställning av HRM-modulen ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Faktura dokument modeller BillsPDFModulesAccordindToInvoiceType=Faktura dokumentmodeller enligt fakturatyp PaymentsPDFModules=Betalningsdokumentmodeller ForceInvoiceDate=Force fakturadatum till giltighetsdatum -SuggestedPaymentModesIfNotDefinedInInvoice=Föreslagna betalningar läge på faktura som standard om inte definierat för faktura +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Föreslå betalning genom uttag på konto SuggestPaymentByChequeToAddress=Föreslå betalning med check till FreeLegalTextOnInvoices=Fri text på fakturor @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Inställningar för leverantörsbetalningar PropalSetup=Kommersiella förslag modul inställning ProposalsNumberingModules=Kommersiella förslag numrering moduler ProposalsPDFModules=Kommersiella förslag dokument modeller -SuggestedPaymentModesIfNotDefinedInProposal=Förslag till betalningsläge på förslag som standard om det inte är definierat för förslag +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Fri text på affärsförslag WatermarkOnDraftProposal=Vattenstämpel på utkast till affärsförslag (ingen om tom) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Be om bankkonto destination förslag @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Be om lagerkälla för order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Be om kontokortdestination för inköpsorder ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Försäljningsorderhanteringsinställningar OrdersNumberingModules=Beställningar numrering moduler OrdersModelModule=Beställ dokument modeller @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Varning, högre värden sänker dramati ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Exportmodeller delas med alla ExportSetup=Inställning av modul Export +ImportSetup=Setup of module Import InstanceUniqueID=Unikt ID för förekomsten SmallerThan=Mindre än LargerThan=Större än @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/sv_SE/bills.lang b/htdocs/langs/sv_SE/bills.lang index d802fcefff9..a2e64a6b307 100644 --- a/htdocs/langs/sv_SE/bills.lang +++ b/htdocs/langs/sv_SE/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Leverantörer fakturor SupplierBill=Leverantörsfaktura SupplierBills=leverantörer fakturor Payment=Betalning -PaymentBack=Betalning tillbaka -CustomerInvoicePaymentBack=Betalning tillbaka +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Betalningar PaymentsBack=Refunds paymentInInvoiceCurrency=i faktura valuta PaidBack=Återbetald DeletePayment=Radera betalning ConfirmDeletePayment=Är du säker på att du vill radera denna betalning? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Leverantörsbetalningar ReceivedPayments=Mottagna betalningar @@ -219,7 +219,10 @@ ShowInvoiceSituation=Visa lägesfaktura UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Betala ToMakePaymentBack=Återbetala ListOfYourUnpaidInvoices=Lista över obetalda fakturor NoteListOfYourUnpaidInvoices=OBS: Denna lista innehåller bara fakturor för tredje parti som du är kopplade till som en försäljning representant. -RevenueStamp=Intäkt stämpel +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Det här alternativet är endast tillgängligt när du skapar en faktura från fliken "Kund" från tredje part YouMustCreateInvoiceFromSupplierThird=Det här alternativet är endast tillgängligt när du skapar en faktura från fliken "Leverantör" till tredje part YouMustCreateStandardInvoiceFirstDesc=Du måste först skapa en standardfaktura och konvertera den till "mall" för att skapa en ny mallfaktura -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Faktura PDF mall Svamp. En komplett fakturamall PDFCrevetteDescription=Faktura PDF-mall Crevette. En komplett faktura mall för lägesfakturor TerreNumRefModelDesc1=Återger nummer med formatet %syymm-nnnn för standardfakturor och %syymm-NNNN för kreditnotor där yy är året, mm månaden och nnnn är en sekvens med ingen paus och ingen återgång till 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Ange slutdatum för servicelinje med nästa fakturadatum AutoFillDateToShort=Ange slutdatum MaxNumberOfGenerationReached=Max antal gen. nådde BILL_DELETEInDolibarr=Faktura deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/sv_SE/blockedlog.lang b/htdocs/langs/sv_SE/blockedlog.lang index 192f1020baa..480f38a923d 100644 --- a/htdocs/langs/sv_SE/blockedlog.lang +++ b/htdocs/langs/sv_SE/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Oföränderliga loggar ShowAllFingerPrintsMightBeTooLong=Visa alla arkiverade loggar (kan vara långa) ShowAllFingerPrintsErrorsMightBeTooLong=Visa alla icke-giltiga arkivloggar (kan vara långa) DownloadBlockChain=Ladda ner fingeravtryck -KoCheckFingerprintValidity=Arkiverad loggpost är inte giltig. Det betyder att någon (en hackare?) Har ändrat vissa data av det här reet efter det har spelats in eller har raderat den tidigare arkiverade posten (kontrollera den raden med tidigare # existerar). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Arkiverad loggpost är giltig. Uppgifterna på den här raden ändrades inte och posten följer den föregående. OkCheckFingerprintValidityButChainIsKo=Arkiverad logg verkar giltig jämfört med tidigare men kedjan förstördes tidigare. AddedByAuthority=Lagras i fjärrmyndighet diff --git a/htdocs/langs/sv_SE/cashdesk.lang b/htdocs/langs/sv_SE/cashdesk.lang index 37ff85fd139..9db8feed413 100644 --- a/htdocs/langs/sv_SE/cashdesk.lang +++ b/htdocs/langs/sv_SE/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Lägg till den här artikeln RestartSelling=Gå tillbaka på sälj SellFinished=Försäljning avslutad PrintTicket=Skriv ut biljetten +SendTicket=Send ticket NoProductFound=Ingen artikel hittades ProductFound=Produkt hittad NoArticle=Ingen artikel @@ -48,6 +49,7 @@ Footer=sidfot AmountAtEndOfPeriod=Belopp vid periodens utgång (dag, månad eller år) TheoricalAmount=Teoretisk mängd RealAmount=Verklig mängd +CashFence=Cash fence CashFenceDone=Kassaskydd gjord för perioden NbOfInvoices=Antal av fakturor Paymentnumpad=Typ av kudde för att komma in i betalningen @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS behöver produktkategorier för att fungera OrderNotes=Beställ anteckningar CashDeskBankAccountFor=Standardkonto som ska användas för betalningar i NoPaimementModesDefined=Inget paimentläge definierat i TakePOS-konfiguration -TicketVatGrouped=Grupp moms enligt sats i biljetter -AutoPrintTickets=Skriv ut biljetter automatiskt +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Aktivera funktioner för bar eller restaurang ConfirmDeletionOfThisPOSSale=Bekräftar du att du har raderat den aktuella försäljningen? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Webbläsare BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/sv_SE/companies.lang b/htdocs/langs/sv_SE/companies.lang index 1061325c921..28d99141d05 100644 --- a/htdocs/langs/sv_SE/companies.lang +++ b/htdocs/langs/sv_SE/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Företaget "%s" raderad från databasen. ListOfContacts=Lista med kontakter / adresser ListOfContactsAddresses=Lista med kontakter / adresser ListOfThirdParties=Förteckning över tredjeparter -ShowCompany=Visa tredjepart ShowContact=Visa kontakt ContactsAllShort=Alla (inget filter) ContactType=Kontakttyp @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Förnamn på försäljningsrepresentant SaleRepresentativeLastname=Efternamn för försäljare ErrorThirdpartiesMerge=Ett fel uppstod vid borttagning av tredjepart. Kontrollera loggen. Ändringar har återställts. NewCustomerSupplierCodeProposed=Kunder eller leverantörskod som redan används, föreslås en ny kod +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Betalningstyp - Kund PaymentTermsCustomer=Betalningsvillkor - Kund diff --git a/htdocs/langs/sv_SE/compta.lang b/htdocs/langs/sv_SE/compta.lang index 18229edd1cf..defa9852e23 100644 --- a/htdocs/langs/sv_SE/compta.lang +++ b/htdocs/langs/sv_SE/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Se %sanalys av payments%s för en beräkning av fakti SeeReportInDueDebtMode=Se %sanalys av fakturor%s för en beräkning baserad på kända inspelade fakturor, även om de ännu inte är redovisade i huvudboken. SeeReportInBookkeepingMode=Se <b> %sBokföringsrapport%s </b> för en beräkning på <b> Bokföring huvudboken tabell </b> RulesAmountWithTaxIncluded=- Belopp som visas är med alla skatter inkluderade -RulesResultDue=- Det inkluderar utestående fakturor, utgifter, moms, donationer om de betalas eller inte. Ingår även betalda löner. <br> - Det baseras på datum för bekräftande för fakturor och moms och på förfallodagen för utgifter. För löner som definieras med lönemodul används värdet för betalningen. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Det inkluderar de reala betalningarna på fakturor, utgifter, moms och löner. <br> - Det baseras på fakturadatum för fakturor, utgifter, moms och löner. Donationsdatum för donation. -RulesCADue=- Det inkluderar kundens fakturaer om de betalas eller inte. <br> - Det baseras på bekräftandesdatumet för dessa fakturor. <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Det inkluderar alla effektiva betalningar av fakturor som mottagits från kunder. <br> - Det är baserat på betalningsdatum för dessa fakturor <br> RulesCATotalSaleJournal=Den innehåller alla kreditlinjer från försäljningsloggboken. RulesAmountOnInOutBookkeepingRecord=Det innehåller post i din huvudboken med bokföringskonto som har gruppen "EXPENSE" eller "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Omsättning fakturerad med försäljningsskattesats TurnoverCollectedbyVatrate=Omsättning upptagen med försäljningsskattesats PurchasebyVatrate=Inköp med försäljningsskattesats LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/sv_SE/errors.lang b/htdocs/langs/sv_SE/errors.lang index 86bfc3d9a3d..b96d1461a0e 100644 --- a/htdocs/langs/sv_SE/errors.lang +++ b/htdocs/langs/sv_SE/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Handlingar den mottagit inte helt av server. ErrorNoTmpDir=Tillfälliga directy %s inte existerar. ErrorUploadBlockedByAddon=Ladda upp blockeras av en PHP / Apache plugin. ErrorFileSizeTooLarge=Filen är för stor. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Storlek för lång för int typ (%s siffror max) ErrorSizeTooLongForVarcharType=Storlek för lång för sträng typ (%s tecken max) ErrorNoValueForSelectType=Vänligen fyll i värde för utvald lista @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=Ett lösenord har ställts för den här medlemmen. Men inget användarkonto skapades. Så det här lösenordet är lagrat men kan inte användas för att logga in till Dolibarr. Den kan användas av en extern modul / gränssnitt men om du inte behöver definiera någon inloggning eller ett lösenord för en medlem kan du inaktivera alternativet "Hantera en inloggning för varje medlem" från inställningen av medlemsmodulen. Om du behöver hantera en inloggning men inte behöver något lösenord, kan du hålla fältet tomt för att undvika denna varning. Obs! Email kan också användas som inloggning om medlemmen är länkad till en användare. diff --git a/htdocs/langs/sv_SE/install.lang b/htdocs/langs/sv_SE/install.lang index 491874ee286..cdce0b03cda 100644 --- a/htdocs/langs/sv_SE/install.lang +++ b/htdocs/langs/sv_SE/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Detta PHP stöder Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=Detta PHP stöder UTF8 funktioner. PHPSupportIntl=Detta PHP stöder Intl-funktioner. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Din PHP max session minne är inställt på <b>%s.</b> Detta bör vara nog. PHPMemoryTooLow=Ditt PHP max-sessionminne är inställt på <b> %s </b> bytes. Detta är för lågt. Ändra din <b> php.ini </b> för att ställa in <b> memory_limit </b> parameter till minst <b> %s </b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Din PHP-installation stöder inte Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Din PHP-installation stöder inte UTF8-funktioner. Dolibarr kan inte fungera korrekt. Lös det här innan du installerar Dolibarr. ErrorPHPDoesNotSupportIntl=Din PHP-installation stöder inte Intl-funktioner. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Nummer %s finns inte. ErrorGoBackAndCorrectParameters=Gå tillbaka och kontrollera / korrigera parametrarna. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Applikationen försökte självuppgradera, men in YouTryInstallDisabledByFileLock=Applikationen försökte självuppgradera, men installations- / uppgraderingssidorna har inaktiverats för säkerhet (genom att det finns en låsfil <strong> install.lock </strong> i katalogen dolibarr documents). <br> ClickHereToGoToApp=Klicka här för att gå till din ansökan ClickOnLinkOrRemoveManualy=Klicka på följande länk. Om du alltid ser samma sida måste du ta bort / byta namn på filen install.lock i dokumentkatalogen. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/sv_SE/link.lang b/htdocs/langs/sv_SE/link.lang index 2abbb488f14..123ec53d089 100644 --- a/htdocs/langs/sv_SE/link.lang +++ b/htdocs/langs/sv_SE/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Länken %s har tagits bort ErrorFailedToDeleteLink= Det gick inte att ta bort länk '<b>%s</b>' ErrorFailedToUpdateLink= Det gick inte att uppdatera länken '<b>%s</b>' URLToLink=URL för länk +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/sv_SE/mails.lang b/htdocs/langs/sv_SE/mails.lang index b9b24d111c8..0ba4ba088f7 100644 --- a/htdocs/langs/sv_SE/mails.lang +++ b/htdocs/langs/sv_SE/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Ingen kontakt / adress med en kategori hittad NoContactLinkedToThirdpartieWithCategoryFound=Ingen kontakt / adress med en kategori hittad OutGoingEmailSetup=Utgående e-postinstallation InGoingEmailSetup=Inkommande e-postinstallation -OutGoingEmailSetupForEmailing=Utgående e-postuppsättning (för massmailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Standard utgående e-postinstallation Information=Information ContactsWithThirdpartyFilter=Kontakter med filter från tredje part diff --git a/htdocs/langs/sv_SE/main.lang b/htdocs/langs/sv_SE/main.lang index 0e50639d12d..96783492da5 100644 --- a/htdocs/langs/sv_SE/main.lang +++ b/htdocs/langs/sv_SE/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Testa anslutning ToClone=Klon +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Välj data du vill klona: NoCloneOptionsSpecified=Inga uppgifter att klona definierade. Of=av @@ -829,6 +830,8 @@ Gender=Kön Genderman=Man Genderwoman=Kvinna ViewList=Visa lista +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Obligatorisk Hello=Hallå GoodBye=Adjö @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/sv_SE/other.lang b/htdocs/langs/sv_SE/other.lang index 9eeffcccdb4..f26e71b3a70 100644 --- a/htdocs/langs/sv_SE/other.lang +++ b/htdocs/langs/sv_SE/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Försäljningsorder bekräftat Notify_ORDER_SENTBYMAIL=Försäljningsorder skickad via post Notify_ORDER_SUPPLIER_SENTBYMAIL=Beställningsorder skickad via e-post @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=Webbadressen WEBSITE_TITLE=Titel WEBSITE_DESCRIPTION=Beskrivning WEBSITE_IMAGE=Bild -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Nyckelord LinesToImport=Rader att importera diff --git a/htdocs/langs/sv_SE/products.lang b/htdocs/langs/sv_SE/products.lang index b6d4440a3e5..8e916fcbdf3 100644 --- a/htdocs/langs/sv_SE/products.lang +++ b/htdocs/langs/sv_SE/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Detta verktyg uppdaterar mervärdesskattesatsen som def MassBarcodeInit=Massvis streckkodinitiering MassBarcodeInitDesc=Denna sida kan användas för att initialisera en streckkod på objekt som inte har någon streckkod definierad. Kontrollera först att streckkodsmodulen har fullständiga inställningar. ProductAccountancyBuyCode=Redovisningskod (köp) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Redovisningskod (försäljning) ProductAccountancySellIntraCode=Redovisningskod (försäljning inom gemenskapen) ProductAccountancySellExportCode=Redovisningskod (försäljningsexport) @@ -165,7 +167,7 @@ SuppliersPrices=Leverantörspriser SuppliersPricesOfProductsOrServices=Leverantörspriser (av produkter eller tjänster) CustomCode=Tull / Varu / HS-kod CountryOrigin=Ursprungsland -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Kort etikett Unit=Enhet p=u. diff --git a/htdocs/langs/sv_SE/projects.lang b/htdocs/langs/sv_SE/projects.lang index 1b943aef3cc..094019b2be1 100644 --- a/htdocs/langs/sv_SE/projects.lang +++ b/htdocs/langs/sv_SE/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Tid ListOfTasks=Lista över uppgifter GoToListOfTimeConsumed=Gå till listan över tidskrävt -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=Förteckning över de kommersiella förslagen relaterade till projektet ListOrdersAssociatedProject=Förteckning över försäljningsorder relaterade till projektet @@ -188,7 +186,7 @@ PlannedWorkload=Planerad arbetsbelastning PlannedWorkloadShort=Arbetsbelastning ProjectReferers=Relaterade saker ProjectMustBeValidatedFirst=Projekt måste bekräftas först -FirstAddRessourceToAllocateTime=Tilldela en användarresurs till uppgift för att allokera tid +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Ingång per dag InputPerWeek=Ingång per vecka InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Senaste %s modifierade projekten OtherFilteredTasks=Andra filtrerade uppgifter NoAssignedTasks=Inga tilldelade uppgifter hittades (tilldela projekt / uppgifter till den nuvarande användaren från den övre väljrutan för att ange tid på det) ThirdPartyRequiredToGenerateInvoice=En tredje part måste definieras på projekt för att kunna fakturera det. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Tillåt användar kommentarer på uppgifter AllowCommentOnProject=Tillåt användar kommentarer på projekt @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Ny faktura OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/sv_SE/receiptprinter.lang b/htdocs/langs/sv_SE/receiptprinter.lang index 50c2ff73257..b4e931e94a2 100644 --- a/htdocs/langs/sv_SE/receiptprinter.lang +++ b/htdocs/langs/sv_SE/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy-skrivare CONNECTOR_NETWORK_PRINT=Nätverksskrivare CONNECTOR_FILE_PRINT=Lokal skrivare CONNECTOR_WINDOWS_PRINT=Lokal Windows-skrivare +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer för test, gör ingenting CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x: 9100 CONNECTOR_FILE_PRINT_HELP=/ dev / usb / lp0, / dev / usb / lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb: // FooUser: hemligt @ datornamn / arbetsgrupp / mottagningsskrivare +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Standardprofil PROFILE_SIMPLE=Enkel profil PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Faktura ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Kapital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/sv_SE/stripe.lang b/htdocs/langs/sv_SE/stripe.lang index 7d7cd49c57f..e4e1a522be6 100644 --- a/htdocs/langs/sv_SE/stripe.lang +++ b/htdocs/langs/sv_SE/stripe.lang @@ -32,6 +32,7 @@ VendorName=Namn på leverantör CSSUrlForPaymentForm=CSS-formatmall URL för inbetalningskort NewStripePaymentReceived=Ny Stripbetalning mottagen NewStripePaymentFailed=Ny Stripbetalning försökte men misslyckades +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Hemlig testnyckel STRIPE_TEST_PUBLISHABLE_KEY=Publicerbar testnyckel STRIPE_TEST_WEBHOOK_KEY=Webhook testnyckel @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/sv_SE/users.lang b/htdocs/langs/sv_SE/users.lang index 7c65184e1da..36c4c77529d 100644 --- a/htdocs/langs/sv_SE/users.lang +++ b/htdocs/langs/sv_SE/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Användare och deras egenskaper DomainUser=Domän användare %s Reactivate=Återaktivera CreateInternalUserDesc=I det här formuläret kan du skapa en intern användare i ditt företag / organisation. För att skapa en extern användare (kund, leverantör etc.), använd knappen "Create Dolibarr User" från den tredje partens kontaktkort. -InternalExternalDesc=En <b> intern </b> användare är en användare som ingår i ditt företag / organisation. <br> En <b> extern </b> användare är en kund, leverantör eller annan. <br> <br> I båda fallen definierar behörigheter rättigheter på Dolibarr, även extern användare kan ha en annan menyhanterare än intern användare (Se Hem - Inställning - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Tillstånd beviljas, eftersom ärvt från en av en användares grupp. Inherited=Ärvda UserWillBeInternalUser=Skapad användare kommer att vara en intern användare (eftersom inte kopplade till en viss tredje part) @@ -109,4 +109,9 @@ UserLogoff=Användarutloggning UserLogged=Användare loggad DateEmployment=Anställningens startdatum DateEmploymentEnd=Anställningens slutdatum -CantDisableYourself=You can't disable your own user record +CantDisableYourself=Du kan inte inaktivera din egen användarrekord +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/sv_SE/website.lang b/htdocs/langs/sv_SE/website.lang index 9f7c08790bb..20a211e774d 100644 --- a/htdocs/langs/sv_SE/website.lang +++ b/htdocs/langs/sv_SE/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Visa sida i ny flik SetAsHomePage=Sätt som hemsida RealURL=Verklig URL ViewWebsiteInProduction=Visa webbplats med hjälp av hemadresser -SetHereVirtualHost=<u> Använd med Apache / NGinx / ... </u> <br> Om du kan skapa, på din webbserver (Apache, Nginx, ...), en dedikerad Virtual Host med PHP aktiverad och en Root-katalog på <br><strong> %s </strong><br> sedan ställa in namnet på den virtuella värd som du har skapat i egenskaperna hos webbplatsen, så förhandsgranskningen kan också göras med hjälp av den här dedicerade webbserveråtkomsten i stället för den interna Dolibarr-servern. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS= <u> Använd med PHP-inbäddad server </u> <br> På utvecklingsmiljö kan du föredra att testa webbplatsen med PHP-inbäddad webbserver (PHP 5.5 krävs) genom att köra <br> <strong> php -S 0.0.0.0:8080 -t %s </strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Kontrollera också att virtuell värd har tillstånd <strong> %s </strong> på filer i <br> <strong> %s </strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Aktivera webbsidokontotabellen WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Aktivera tabellen för att lagra webbplatskonton (inloggning / överföring) för varje webbplats / tredje part YouMustDefineTheHomePage=Du måste först definiera standard startsida -OnlyEditionOfSourceForGrabbedContentFuture=Varning: Skapa en webbsida genom att importera en extern webbsida är reserverad för erfarna användare. Beroende på källsidans komplexitet kan resultatet av importen skilja sig från originalet. Även om källsidan använder vanliga CSS-format eller motstridigt javascript kan det bryta utseendet eller funktionerna på webbplatsredigeraren när du arbetar på den här sidan. Den här metoden är ett snabbare sätt att skapa en sida men det rekommenderas att du skapar din nya sida från början eller från en föreslagen sidmall. <br> Observera att redigeringar av HTML-källan kommer att vara möjliga när sidinnehållet har initierats genom att ta tag i det från en extern sida ("Online" -redigeraren kommer INTE att vara tillgänglig) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Endast upplagan av HTML-källan är möjlig när innehållet greppades från en extern webbplats GrabImagesInto=Ta även bilder som finns i css och sidan. ImagesShouldBeSavedInto=Bilder ska sparas i katalogen @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/sw_SW/admin.lang b/htdocs/langs/sw_SW/admin.lang index 2f36c876c1a..0205f246b0c 100644 --- a/htdocs/langs/sw_SW/admin.lang +++ b/htdocs/langs/sw_SW/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/sw_SW/bills.lang b/htdocs/langs/sw_SW/bills.lang index 6d7c61784f7..8c22ce0159a 100644 --- a/htdocs/langs/sw_SW/bills.lang +++ b/htdocs/langs/sw_SW/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/sw_SW/cashdesk.lang b/htdocs/langs/sw_SW/cashdesk.lang index 7ddbc71f3e9..f9f00015840 100644 --- a/htdocs/langs/sw_SW/cashdesk.lang +++ b/htdocs/langs/sw_SW/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/sw_SW/companies.lang b/htdocs/langs/sw_SW/companies.lang index c569a48c84a..f8b3d0354e2 100644 --- a/htdocs/langs/sw_SW/companies.lang +++ b/htdocs/langs/sw_SW/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/sw_SW/compta.lang b/htdocs/langs/sw_SW/compta.lang index 1de030a1905..6cd046c5607 100644 --- a/htdocs/langs/sw_SW/compta.lang +++ b/htdocs/langs/sw_SW/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/sw_SW/errors.lang b/htdocs/langs/sw_SW/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/sw_SW/errors.lang +++ b/htdocs/langs/sw_SW/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/sw_SW/install.lang b/htdocs/langs/sw_SW/install.lang index bf9c08c4ba7..f67dff57184 100644 --- a/htdocs/langs/sw_SW/install.lang +++ b/htdocs/langs/sw_SW/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/sw_SW/link.lang b/htdocs/langs/sw_SW/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/sw_SW/link.lang +++ b/htdocs/langs/sw_SW/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/sw_SW/mails.lang b/htdocs/langs/sw_SW/mails.lang index 8b92cef3103..7b3bfd3852a 100644 --- a/htdocs/langs/sw_SW/mails.lang +++ b/htdocs/langs/sw_SW/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/sw_SW/main.lang b/htdocs/langs/sw_SW/main.lang index 686f3ac1849..2082506c405 100644 --- a/htdocs/langs/sw_SW/main.lang +++ b/htdocs/langs/sw_SW/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/sw_SW/other.lang b/htdocs/langs/sw_SW/other.lang index 00259d976bc..ba85f51e739 100644 --- a/htdocs/langs/sw_SW/other.lang +++ b/htdocs/langs/sw_SW/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/sw_SW/products.lang b/htdocs/langs/sw_SW/products.lang index d8a3192551f..a31243a07b6 100644 --- a/htdocs/langs/sw_SW/products.lang +++ b/htdocs/langs/sw_SW/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/sw_SW/projects.lang b/htdocs/langs/sw_SW/projects.lang index 94e440f9ab9..cdc0e6b3c95 100644 --- a/htdocs/langs/sw_SW/projects.lang +++ b/htdocs/langs/sw_SW/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/sw_SW/users.lang b/htdocs/langs/sw_SW/users.lang index 43fa5342da3..aea4e7676e4 100644 --- a/htdocs/langs/sw_SW/users.lang +++ b/htdocs/langs/sw_SW/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/th_TH/admin.lang b/htdocs/langs/th_TH/admin.lang index a5ff9a413ac..773bab926c6 100644 --- a/htdocs/langs/th_TH/admin.lang +++ b/htdocs/langs/th_TH/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=หมายเหตุ: ไม่ จำกัด มีการตั้งค่าในการกำหนดค่าของ PHP MaxSizeForUploadedFiles=ขนาดสูงสุดของไฟล์ที่อัปโหลด (0 ไม่อนุญาตให้อัปโหลดใด ๆ ) UseCaptchaCode=ใช้รหัสแบบกราฟิก (CAPTCHA) บนหน้าเข้าสู่ระบบ -AntiVirusCommand= เส้นทางแบบเต็มคำสั่งป้องกันไวรัส -AntiVirusCommandExample= ตัวอย่าง ClamWin: c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe <br> ตัวอย่าง ClamAV: / usr / bin / clamscan +AntiVirusCommand=เส้นทางแบบเต็มคำสั่งป้องกันไวรัส +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= พารามิเตอร์เพิ่มเติมเกี่ยวกับบรรทัดคำสั่ง -AntiVirusParamExample= ตัวอย่าง ClamWin: --database = "C: \\ Program Files (x86) \\ ClamWin \\ lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=บัญชีการติดตั้งโมดูล UserSetup=การตั้งค่าการจัดการผู้ใช้ MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=ปิดใช้งานคุณลักษณะใ 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. OnlyActiveElementsAreShown=องค์ประกอบเฉพาะจาก <a href="%s">โมดูลที่เปิดใช้งาน</a> จะแสดง -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=ดูการตั้งค่าของโมดูล% s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=เปิดใช้งานบน @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=ให้ว่างเพื่อใช้ค่าเ DefaultLink=เริ่มต้นการเชื่อมโยง SetAsDefault=Set as default ValueOverwrittenByUserSetup=คำเตือนค่านี้อาจถูกเขียนทับโดยการตั้งค่าของผู้ใช้เฉพาะ (ผู้ใช้แต่ละคนสามารถตั้งค่า URL clicktodial ของตัวเอง) -ExternalModule=โมดูลภายนอก - ติดตั้งลงในไดเรกทอรี% s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=init บาร์โค้ดมวลหรือตั้งค่าสำหรับผลิตภัณฑ์หรือบริการ CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=ภูมิภาค DictionaryCountry=ประเทศ DictionaryCurrency=สกุลเงิน -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=ภาษีมูลค่าเพิ่มราคาหรืออัตราภาษีการขาย @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=ประเมิน LocalTax1IsNotUsed=อย่าใช้ภาษีที่สอง LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=โดยค่าเริ่มต้น IRPF เสนอคือ 0 สิ้นสุดของการปกครอง LocalTax2IsUsedExampleES=ในสเปนมือปืนรับจ้างและอาชีพอิสระที่ให้บริการและ บริษัท ที่ได้รับเลือกให้ระบบภาษีของโมดูล LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=รายงานเกี่ยวกับภาษีท้องถิ่น CalcLocaltax1=ขาย - ซื้อ CalcLocaltax1Desc=รายงานภาษีท้องถิ่นที่มีการคำนวณมีความแตกต่างระหว่างการขายและการซื้อ localtaxes localtaxes @@ -1018,6 +1025,7 @@ CalcLocaltax2=การสั่งซื้อสินค้า CalcLocaltax2Desc=รายงานภาษีท้องถิ่นรวมของการซื้อ localtaxes CalcLocaltax3=ขาย CalcLocaltax3Desc=รายงานภาษีท้องถิ่นรวมของยอดขาย localtaxes +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=ฉลากใช้โดยเริ่มต้นถ้าแปลไม่สามารถพบได้สำหรับรหัส LabelOnDocuments=ป้ายเกี่ยวกับเอกสาร LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=ตรวจสอบเหตุการณ์การรักษาความปลอดภัย Audit=การตรวจสอบบัญชี @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=ข้อมูลระบบข้อมูลทางด้านเทคนิคอื่น ๆ ที่คุณได้รับในโหมดอ่านอย่างเดียวและมองเห็นสำหรับผู้ดูแลระบบเท่านั้น SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=ผู้ใช้ติดตั้งโมดูล UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=รูปแบบเอกสารใบแจ้งหนี BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=วันที่ใบแจ้งหนี้กองทัพวันที่ตรวจสอบ -SuggestedPaymentModesIfNotDefinedInInvoice=โหมดการชำระเงินในใบแจ้งหนี้ที่แนะนำโดยค่าเริ่มต้นหากไม่ได้กำหนดไว้สำหรับใบแจ้งหนี้ +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=ข้อความฟรีในใบแจ้งหนี้ @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=ข้อเสนอเชิงพาณิชย์การติดตั้งโมดูล ProposalsNumberingModules=จำนวนข้อเสนอในเชิงพาณิชย์รุ่น ProposalsPDFModules=เอกสารข้อเสนอในเชิงพาณิชย์รุ่น -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=ข้อความฟรีเกี่ยวกับข้อเสนอในเชิงพาณิชย์ WatermarkOnDraftProposal=ลายน้ำในร่างข้อเสนอในเชิงพาณิชย์ (ไม่มีถ้าว่างเปล่า) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=ขอปลายทางบัญชีธนาคารของข้อเสนอ @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=สั่งซื้อจำนวนรุ่น OrdersModelModule=เอกสารการสั่งซื้อรุ่น @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/th_TH/bills.lang b/htdocs/langs/th_TH/bills.lang index 61606afb95b..c78795bd6d4 100644 --- a/htdocs/langs/th_TH/bills.lang +++ b/htdocs/langs/th_TH/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=ซัพพลายเออร์ใบแจ้งหนี้ Payment=การชำระเงิน -PaymentBack=การชำระเงินกลับ -CustomerInvoicePaymentBack=การชำระเงินกลับ +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=วิธีการชำระเงิน PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=จ่ายคืน DeletePayment=ลบการชำระเงิน ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=การชำระเงินที่ได้รับ @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=จ่ายเงิน ToMakePaymentBack=คืนทุน ListOfYourUnpaidInvoices=รายการของใบแจ้งหนี้ที่ค้างชำระ NoteListOfYourUnpaidInvoices=หมายเหตุ: รายการนี​​้จะมีใบแจ้งหนี้เฉพาะบุคคลที่สามคุณจะเชื่อมโยงกับการเป็นตัวแทนขาย -RevenueStamp=อากรแสตมป์ +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=จำนวนกลับมาพร้อมกับรูปแบบ% syymm-nnnn สำหรับใบแจ้งหนี้และมาตรฐาน% syymm-nnnn สำหรับการบันทึกเครดิตที่ yy เป็นปีเป็นเดือนมิลลิเมตรและ nnnn เป็นลำดับที่มีการหยุดพักและกลับไปที่ 0 ไม่มี @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/th_TH/blockedlog.lang b/htdocs/langs/th_TH/blockedlog.lang index b7e41472b88..88511cd5fbd 100644 --- a/htdocs/langs/th_TH/blockedlog.lang +++ b/htdocs/langs/th_TH/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/th_TH/cashdesk.lang b/htdocs/langs/th_TH/cashdesk.lang index e128eaefc3a..37114cb5d8f 100644 --- a/htdocs/langs/th_TH/cashdesk.lang +++ b/htdocs/langs/th_TH/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=เพิ่มบทความนี้ RestartSelling=กลับไปขาย SellFinished=Sale complete PrintTicket=ตั๋วพิมพ์ +SendTicket=Send ticket NoProductFound=บทความไม่พบ ProductFound=สินค้าที่พบ NoArticle=บทความไม่มี @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=nb ของใบแจ้งหนี้ Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=เบราว์เซอร์ BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/th_TH/companies.lang b/htdocs/langs/th_TH/companies.lang index 7bfd0bcff28..3cb75476145 100644 --- a/htdocs/langs/th_TH/companies.lang +++ b/htdocs/langs/th_TH/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=บริษัท "% s" ลบออกจากฐานข้ ListOfContacts=รายชื่อผู้ติดต่อ / ที่อยู่ ListOfContactsAddresses=รายชื่อผู้ติดต่อ / ที่อยู่ ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=แสดงรายชื่อผู้ติดต่อ ContactsAllShort=ทั้งหมด (ไม่กรอง) ContactType=ประเภทติดต่อ @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/th_TH/compta.lang b/htdocs/langs/th_TH/compta.lang index 5d8340365f7..9b30b80baca 100644 --- a/htdocs/langs/th_TH/compta.lang +++ b/htdocs/langs/th_TH/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- จํานวนเงินที่แสดงเป็นกับภาษีรวมทั้งหมด -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=ป้ายสั้น +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/th_TH/errors.lang b/htdocs/langs/th_TH/errors.lang index fa3e3db00dd..a300df92288 100644 --- a/htdocs/langs/th_TH/errors.lang +++ b/htdocs/langs/th_TH/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=ไฟล์ไม่ได้รับอย่างสมบ ErrorNoTmpDir=ชั่วคราวโดยตรงได้% s ไม่ได้มีอยู่ ErrorUploadBlockedByAddon=อัพโหลดบล็อกโดย PHP / ปลั๊กอินอาปาเช่ ErrorFileSizeTooLarge=ขนาดไฟล์มีขนาดใหญ่เกินไป +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=ขนาดยาวเกินไปสำหรับประเภท int (s% ตัวเลขสูงสุด) ErrorSizeTooLongForVarcharType=ขนาดยาวเกินไปสำหรับประเภทสตริง (% s ตัวอักษรสูงสุด) ErrorNoValueForSelectType=กรุณากรอกค่าส​​ำหรับรายการเลือก @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/th_TH/install.lang b/htdocs/langs/th_TH/install.lang index 91b703ed8fa..cd4c2c1f6cb 100644 --- a/htdocs/langs/th_TH/install.lang +++ b/htdocs/langs/th_TH/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=หน่วยความจำสูงสุด PHP <b>เซสชั่นของคุณตั้ง%</b> s นี้ควรจะเพียงพอ PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=สารบบ% s ไม่ได้อยู่ ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/th_TH/link.lang b/htdocs/langs/th_TH/link.lang index 1d7f7021311..7a1e16ba362 100644 --- a/htdocs/langs/th_TH/link.lang +++ b/htdocs/langs/th_TH/link.lang @@ -8,3 +8,4 @@ LinkRemoved=การเชื่อมโยง% s ได้ถูกลบอ ErrorFailedToDeleteLink= ล้มเหลวในการลบการเชื่อมโยง <b>'% s'</b> ErrorFailedToUpdateLink= ล้มเหลวในการปรับปรุงการเชื่อมโยง <b>'% s'</b> URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/th_TH/mails.lang b/htdocs/langs/th_TH/mails.lang index 74c88d35808..e880ef23289 100644 --- a/htdocs/langs/th_TH/mails.lang +++ b/htdocs/langs/th_TH/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=ข้อมูล ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/th_TH/main.lang b/htdocs/langs/th_TH/main.lang index b1b92cb459a..9951363424e 100644 --- a/htdocs/langs/th_TH/main.lang +++ b/htdocs/langs/th_TH/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=ทดสอบการเชื่อมต่อ ToClone=โคลน +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=ไม่มีข้อมูลที่จะโคลนที่กำหนดไว้ Of=ของ @@ -829,6 +830,8 @@ Gender=Gender Genderman=คน Genderwoman=หญิง ViewList=มุมมองรายการ +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=สวัสดี GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/th_TH/other.lang b/htdocs/langs/th_TH/other.lang index 2bc5e24fb97..3852fa08125 100644 --- a/htdocs/langs/th_TH/other.lang +++ b/htdocs/langs/th_TH/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=ชื่อเรื่อง WEBSITE_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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/th_TH/products.lang b/htdocs/langs/th_TH/products.lang index f5768cbb3c5..25d33c1d271 100644 --- a/htdocs/langs/th_TH/products.lang +++ b/htdocs/langs/th_TH/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=init บาร์โค้ดมวล MassBarcodeInitDesc=หน้านี้สามารถนำมาใช้ในการเริ่มต้นบาร์โค้ดบนวัตถุที่ไม่ได้มีการกำหนดบาร์โค้ด ก่อนที่จะตรวจสอบการตั้งค่าของบาร์โค้ดโมดูลที่เสร็จสมบูรณ์ ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=ประเทศแหล่งกำเนิดสินค้า -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=ป้ายสั้น Unit=หน่วย p=ยู diff --git a/htdocs/langs/th_TH/projects.lang b/htdocs/langs/th_TH/projects.lang index c9975018266..58543c6538b 100644 --- a/htdocs/langs/th_TH/projects.lang +++ b/htdocs/langs/th_TH/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=เวลา ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=ภาระงานที่วางแผนไว้ PlannedWorkloadShort=จำนวนงาน ProjectReferers=Related items ProjectMustBeValidatedFirst=โครงการจะต้องผ่านการตรวจสอบครั้งแรก -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=การป้อนข้อมูลต่อวัน InputPerWeek=การป้อนข้อมูลต่อสัปดาห์ InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=ใบแจ้งหนี้ใหม่ OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/th_TH/receiptprinter.lang b/htdocs/langs/th_TH/receiptprinter.lang index 6585fbf8b0e..4c11334a70d 100644 --- a/htdocs/langs/th_TH/receiptprinter.lang +++ b/htdocs/langs/th_TH/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=อ้างอิงใบแจ้งหนี้ +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=เมืองหลวง +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/th_TH/stripe.lang b/htdocs/langs/th_TH/stripe.lang index bd13d3c44da..4da17697604 100644 --- a/htdocs/langs/th_TH/stripe.lang +++ b/htdocs/langs/th_TH/stripe.lang @@ -32,6 +32,7 @@ VendorName=ชื่อของผู้ขาย CSSUrlForPaymentForm=รูปแบบ CSS url ของแผ่นสำหรับรูปแบบการชำระเงิน NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/th_TH/users.lang b/htdocs/langs/th_TH/users.lang index d2daca778b2..8bee6d24478 100644 --- a/htdocs/langs/th_TH/users.lang +++ b/htdocs/langs/th_TH/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=โดเมนของผู้ใช้% s Reactivate=ฟื้นฟู CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=ได้รับอนุญาตเพราะรับมาจากหนึ่งในกลุ่มของผู้ใช้ Inherited=ที่สืบทอด UserWillBeInternalUser=ผู้ใช้ที่สร้างจะเป็นผู้ใช้งานภายใน (เพราะไม่เชื่อมโยงกับบุคคลที่สามโดยเฉพาะ) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/th_TH/website.lang b/htdocs/langs/th_TH/website.lang index b23ac9dce8a..4925729beba 100644 --- a/htdocs/langs/th_TH/website.lang +++ b/htdocs/langs/th_TH/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index ec470f8f06f..4fdacce278c 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -69,8 +69,8 @@ DisableJavascript=Javascript ve Ajax fonksiyonlarını engelle DisableJavascriptNote=Not: Test veya hata ayıklama amaçlıdır. Görme engelli kişiler veya metin tarayıcılara yönelik optimizasyon için kullanıcı profilinde yer alan ayarları kullanmayı tercih edebilirsiniz. UseSearchToSelectCompanyTooltip=Ayrıca çok fazla sayıda üçüncü partiye sahipseniz (>100.000), Ayarlar->Diğer Ayarlar menüsünden COMPANY_DONOTSEARCH_ANYWHERE sabitini 1 olarak ayarlayarak hızı arttırabilirsiniz. Bu durumda, arama dizenin başlangıcıyla sınırlı olacaktır. UseSearchToSelectContactTooltip=Ayrıca çok fazla sayıda üçüncü partiye sahipseniz (>100.000), Ayarlar->Diğer Ayarlar menüsünden CONTACT_DONOTSEARCH_ANYWHERE sabitini 1 olarak ayarlayarak hızı arttırabilirsiniz. Bu durumda, arama dizenin başlangıcıyla sınırlı olacaktır. -DelaiedFullListToSelectCompany=Wait until a key is pressed before loading content of Third Parties combo list.<br>This may increase performance if you have a large number of third parties, but it is less convenient. -DelaiedFullListToSelectContact=Wait until a key is pressed before loading content of Contact combo list.<br>This may increase performance if you have a large number of contacts, but it is less convenient) +DelaiedFullListToSelectCompany=Aşağı açılır listeden Üçüncü Parti içeriği listelemeden önce bir tuşa basarak arama yapmanızı bekler.<br>Çok sayıda üçüncü parti mevcutsa bu performansı artırabilir, fakat daha az kullanışlıdır +DelaiedFullListToSelectContact=Aşağı açılır listeden Kişi içeriği listelemeden önce bir tuşa basarak arama yapmanızı bekler.<br>Çok sayıda kişi mevcutsa bu performansı artırabilir, fakat daha az kullanışlıdır NumberOfKeyToSearch=Aramayı tetikleyecek karakter sayısı: %s NumberOfBytes=Bayt Sayısı SearchString=Arama dizisi @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Not: Mevcut <b>PHP yapılandırmanız</b> yükleme için NoMaxSizeByPHPLimit=Not: PHP yapılandırmanızda hiç sınır ayarlanmamış MaxSizeForUploadedFiles=Yüklenen dosyalar için maksimum boyut (herhangi bir yüklemeye izin vermemek için 0 olarak ayarlayın) UseCaptchaCode=Oturum açma sayfasında grafiksel kod (CAPTCHA) kullan -AntiVirusCommand= Antivirüs komutu tam yolu -AntiVirusCommandExample= ClamWin için örnek: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>ClamAv için örnek: /usr/bin/clamscan +AntiVirusCommand=Antivirüs komutu tam yolu +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Komut satırında daha çok parametre -AntiVirusParamExample= ClamWin için örnek: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Muhasebe modülü ayarları UserSetup=Kullanıcı yönetimi ayarları MultiCurrencySetup=Çoklu para birimi ayarları @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Özellik demoda devre dışıdır 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 etiketini göstermeyi veya çöp kutusuna tıklayarak devre dışı bırakıp göstermemeyi seçebilirsiniz. OnlyActiveElementsAreShown=Yalnızca <a href="%s">etkinleştirilmiş modüllerin</a> öğeleri gösterilir. -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. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Internette dış web sitelerinde indirmek için daha çok modül bulabilirsiniz... ModulesDeployDesc=Dosya sisteminizdeki izinler imkan veriyorsa harici bir modül kurmak için bu aracı kullanabilirsiniz. Modül daha sonra <strong>%s</strong> sekmede görünecektir. ModulesMarketPlaces=Dış uygulama/modül bul @@ -212,6 +212,7 @@ CompatibleUpTo=%ssürümü ile uyumlu NotCompatible=Bu modül Dolibarr'ınızla uyumlu görünmüyor %s (Min %s - Maks %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Market place alanına bakın +SeeSetupOfModule=%s modülü kurulumuna bak Updated=Güncellendi Nouveauté=Novelty AchatTelechargement=Satın Al / Yükle @@ -221,6 +222,7 @@ DoliPartnersDesc=Özel olarak geliştirilmiş modüller veya özellikler sağlay WebSiteDesc=Daha fazla eklenti modülleri (ana yazılımda bulunmayan) için harici web siteleri DevelopYourModuleDesc=Kendi modülünüzü geliştirmek için bazı çözümler... URL=URL +RelativeURL=Relative URL BoxesAvailable=Mevcut ekran etiketleri BoxesActivated=Etkin ekran etiketleri ActivateOn=Etkinleştirme açık @@ -270,7 +272,7 @@ Emails=E-postalar EMailsSetup=E-posta kurulumları 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=E-posta gönderici profilleri -EMailsSenderProfileDesc=You can keep this section empty. If you enter some emails here, they will be added to the list of possible senders into the combobox when your write a new email. +EMailsSenderProfileDesc=Bu bölümü boş bırakabilirsiniz. Buraya gireceğiniz e-posta adresleri, yeni bir e-posta adresi yazdığınızda comboboxtaki olası gönderenler listesine eklenecekler. MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Portu (php.ini içinde varsayılan değer: <b>%s</b>) MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Sunucusu (php.ini içinde varsayılan değer: <b>%s</b>) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Portu (Unix benzeri sistemlerdeki PHP'de tanımlanmamış) @@ -356,7 +358,7 @@ UMask=Unix/Linux/BSD dosya sisteminde yeni dosyalar için Umask parametresi. UMaskExplanation=Bu parametre Dolibarr tarafından sunucuda oluşturulan dosyaların izinlerini varsayılan olarak tanımlamanıza (örneğin yükleme sırasında) izin verir.<br>Bu sekizli değer olmalıdır (örneğin, 0666 herkes için okuma ve yazma anlamına gelir).<br>Bu parametre Windows sunucusunda kullanılmaz. SeeWikiForAllTeam=Katkıda bulunanlar ve kuruluşlarının bir listesi için Wiki sayfasına göz atın UseACacheDelay= Saniye olarak önbellek aktarması tepki gecikmesi (hiç önbellek yoksa 0 ya da boş) -DisableLinkToHelpCenter=oturum açma sayfasında "<b>Yardım ya da destek gerekli</b>" bağlantısını gizle +DisableLinkToHelpCenter=Oturum açma sayfasında "<b>Yardım ya da destek gerekli</b>" bağlantısını gizle DisableLinkToHelp=Çevrimiçi yardım bağlantısını gizle "<b>%s</b>" AddCRIfTooLong=Otomatik metin kaydırma özelliği olmadığı çok uzun metinlerdeki taşmalar belgeler üzerinde gösterilmeyecektir. Lütfen gerekirse metin alanına satır başı ekleyin. ConfirmPurge=Bu temizleme işlemini çalıştırmak istediğinizden emin misiniz?<br>Bu işlem tüm veri dosyalarınızı bir daha geri alınamayacak şekilde kalıcı olarak silecektir (ECM dosyaları, ekli dosyalar…). @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Varsayılan değeri kullanmak için boş bırak DefaultLink=Varsayılan bağlantı SetAsDefault=Varsayılan olarak ayarla ValueOverwrittenByUserSetup=Uyarı, bu değer kullanıcıya özel kurulum ile üzerine yazılabilir (her kullanıcı kendine ait clicktodial url ayarlayabilir) -ExternalModule=Dış modül - %s dizinine kurulmuştur +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Üçüncü partiler için toplu barkod girişi BarcodeInitForProductsOrServices=Ürünler ve hizmetler için toplu barkod başlatma ve sıfırlama CurrentlyNWithoutBarCode=Şu anda, bazı <strong>%s</strong> kayıtlarınızda <strong>%s</strong> %s tanımlı barkod bulunmamaktadır. @@ -605,7 +608,7 @@ Module2000Desc=CKEditor (html) kullanarak metin alanlarının düzenlenmesine/bi Module2200Name=Dinamik Fiyatlar Module2200Desc=Otomatik fiyat üretimi için matematiksel ifadeler kullanın Module2300Name=Planlı İşler -Module2300Desc=Scheduled jobs management (alias cron or chrono table) +Module2300Desc=Zamanlanmış iş yönetimi (alias cron veya chrono tablosu) Module2400Name=Etkinlik/Gündem Module2400Desc=Etkinlikleri takip edin. İzleme amacıyla otomatik etkinlikleri günlüğe geçirin veya manuel etkinlikleri ya da toplantıları kaydedin. Bu, iyi bir Müşteri veya Tedarikçi İlişkileri Yönetimi için temel modüldür. Module2500Name=DMS / ECM @@ -947,7 +950,7 @@ DictionaryCanton=İller Listesi DictionaryRegion=Bölgeler DictionaryCountry=Ülkeler DictionaryCurrency=Para birimleri -DictionaryCivility=Mesleki ünvanlar +DictionaryCivility=Honorific titles DictionaryActions=Gündem etkinlik türleri DictionarySocialContributions=Sosyal veya mali vergi türleri DictionaryVAT=KDV Oranları veya Satış Vergisi Oranları @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Dernekler, şahıslar veya küçük şirketler söz konusu oldu VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Oran LocalTax1IsNotUsed=İkinci vergiyi kullanma LocalTax1IsUsedDesc=İkinci bir vergi türü kullanın (birinci dışında) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=Varsayılan olarak önerilen IRPF 0. Kural sonu. LocalTax2IsUsedExampleES=İspanya'da, hizmet işleri yapan serbest meslek sahipleri ve bağımsız uzmanlar ile bu vergi sistemini seçen firmalardır. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Yerel vergi raporları CalcLocaltax1=Satışlar - Alışlar CalcLocaltax1Desc=Yerel Vergi raporları, yerel satış vergileri ile yerel alış vergileri farkı olarak hesaplanır @@ -1018,6 +1025,7 @@ CalcLocaltax2=Alışlar CalcLocaltax2Desc=Yerel Vergi raporları alımların yerel vergileri toplamıdır CalcLocaltax3=Satışlar CalcLocaltax3Desc=Yerel Vergi raporları satışların yerel vergileri toplamıdır +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Hiçbir çeviri kodu bulunmuyorsa varsayılan olarak kullanılan etiket LabelOnDocuments=Belgeler üzerindeki etiket LabelOrTranslationKey=Etiket veya çeviri anahtarı @@ -1067,7 +1075,7 @@ BackgroundImageLogin=Arka plan görüntüsü PermanentLeftSearchForm=Sol menüdeki sabit arama formu DefaultLanguage=Varsayılan dil EnableMultilangInterface=Çoklu dil desteğini etkinleştir -EnableShowLogo=Show the company logo in the menu +EnableShowLogo=Şirket logosunu menüde göster CompanyInfo=Şirket/Kuruluş CompanyIds=Şirket/Kuruluş kimlik bilgileri CompanyName=Adı @@ -1076,11 +1084,11 @@ CompanyZip=Posta Kodu CompanyTown=İlçesi CompanyCountry=Ülkesi CompanyCurrency=Ana para birimi -CompanyObject=Firmaya ait öğe +CompanyObject=Şirketin amacı IDCountry=ID country Logo=Logo LogoDesc=Main logo of company. Will be used into generated documents (PDF, ...) -LogoSquarred=Logo (squarred) +LogoSquarred=Logo (kare) LogoSquarredDesc=Must be a squarred icon (width = height). This logo will be used as the favorite icon or other need like for the top menu bar (if not disabled into display setup). DoNotSuggestPaymentMode=Önerme NoActiveBankAccountDefined=Tanımlı etkin banka hesabı yok @@ -1105,11 +1113,11 @@ Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Bekleyen banka mutabakatı Delays_MAIN_DELAY_MEMBERS=Gecikmiş üyelik ücreti Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Yapılmayan çek ödemesi Delays_MAIN_DELAY_EXPENSEREPORTS=Onaylanacak gider raporu -Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve +Delays_MAIN_DELAY_HOLIDAYS=Onaylanacak izin istekleri SetupDescription1=Dolibarr yazılımını kullanmaya başlamadan önce bazı başlangıç parametreleri tanımlanmalı, gerekli modüller etkinleştirilip/yapılandırılmalıdır. SetupDescription2=Aşağıdaki iki bölümün kurulumu zorunludur (Ayarlar menüsündeki ilk iki kayıt) -SetupDescription3=<a href="%s">%s -> %s</a><br>Uygulamanızın varsayılan davranışını özelleştirmek için kullanılan temel parametreler (örneğin ülkeyle ilişkili özellikler). -SetupDescription4=<a href="%s">%s -> %s</a><br>Bu yazılım, tamamı hemen hemen bağımsız olan birçok modül ve uygulamanın paket halidir. İ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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Ayarlar menüsündeki diğer girişler isteğe bağlı parametreleri yönetmenizi sağlar. LogEvents=Güvenlik denetimi etkinlikleri Audit=Denetim @@ -1128,7 +1136,7 @@ LogEventDesc=Belirli güvenlik etkinlikleri için günlüğe kaydetmeyi etkinle AreaForAdminOnly=Kurulum parametreleri sadece <b>yönetici olan kullanıcılar</b> 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ızca yönetici kullanıcılar tarafından kullanılabilir. Dolibarr kullanıcı izinleri bu kısıtlamayı değiştiremez. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Şirketinizin/kuruluşunuzun bilgilerini düzenleyebilirsiniz. İşiniz bittiğinde sayfanın altındaki "%s" butonuna tıklayarak işleminizi tamamlayın. AccountantDesc=Harici bir muhasebeciniz/saymanınız varsa, onun bilgilerini burada düzenleyebilirsiniz. AccountantFileNumber=Muhasebeci kodu DisplayDesc=Dolibarr'ın görünümünü ve davranışını etkileyen parametreler buradan özelleştirilebilir. @@ -1144,7 +1152,7 @@ TriggerAlwaysActive=Bu dosyadaki tetikleyiciler, etkin Dolibarr modülleri ne ol TriggerActiveAsModuleActive=Bu dosyadaki tetikleyiciler <b>%s</b> modülü etkinleştirildiğinde etkin olur. GeneratedPasswordDesc=Otomatik olarak oluşturulan şifreler için kullanılacak yöntemi seçin. DictionaryDesc=Bütün referans verisini ekleyin. Değerlerinizi varsayılana ekleyebilirsiniz. -ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +ConstDesc=Bu sayfa, diğer sayfalarda bulunmayan parametreleri düzenlemenizi (üzerine yazmanızı) sağlar. Bunlar çoğunlukla sadece geliştiriciler/gelişmiş sorun giderme için ayrılmış parametrelerdir. MiscellaneousDesc=Burada güvenlik ile ilgili diğer tüm parametreler tanımlanır. LimitsSetup=Sınırlar/Doğruluk kurulumu LimitsDesc=Dolibarr tarafından kullanılan limitleri, hassasiyetleri ve iyileştirmeleri buradan tanımlayabilirsiniz @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Parola oluşturma ve doğrulama kuralları DisableForgetPasswordLinkOnLogonPage=Oturum açma sayfasında “Parolanızı mı unuttunuz?” bağlantısını gösterme UsersSetup=Kullanıcılar modülü kurulumu UserMailRequired=Yeni bir kullanıcı oluşturmak için e-posta gerekli +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=İK modülü ayarları ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Fatura belgesi modelleri BillsPDFModulesAccordindToInvoiceType=Fatura türüne göre fatura döküman modelleri PaymentsPDFModules=Ödeme belge modelleri ForceInvoiceDate=Fatura tarihini fatura doğrulama tarihine zorla -SuggestedPaymentModesIfNotDefinedInInvoice=Varsayılan olarak faturada tanımlanmamışsa önerilen ödeme biçimi +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Faturada serbest metin @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Tedarikçi ödemesi ayarları PropalSetup=Teklif modülü kurulumu ProposalsNumberingModules=Teklif numaralandırma modülü ProposalsPDFModules=Teklif belge modelleri -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Teklifler üzerinde serbest metin WatermarkOnDraftProposal=Taslak tekliflerde filigran (boşsa yoktur) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Teklif için banka hesabı iste @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Sipariş için Kaynak Depo iste ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Müşteri Siparişleri yönetim ayarları OrdersNumberingModules=Sipariş numaralandırma modülü OrdersModelModule=Sipariş belgesi modelleri @@ -1523,8 +1534,8 @@ NumberOfProductShowInSelect=Aşağı açılan seçim listelerinde gösterilecek ViewProductDescInFormAbility=Ürün açıklamalarını formlarda göster (aksi takdirde araç ipucu penceresinde gösterilir) 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=Ü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) +UseSearchToSelectProductTooltip=Ayrıca çok fazla sayıda ürüne sahipseniz (>100.000), Ayarlar->Diğer Ayarlar menüsünden PRODUCT_DONOTSEARCH_ANYWHERE sabitini 1 olarak ayarlayarak hızı arttırabilirsiniz. Bu durumda, arama dizenin başlangıcıyla sınırlı olacaktır. +UseSearchToSelectProduct=Aşağı açılır listeden ürün içeriği listelemeden önce bir tuşa basarak arama yapmanızı bekler (Çok sayıda ürününüz varsa bu performansı artırabilir, fakat daha az kullanışlıdır) SetDefaultBarcodeTypeProducts=Ürünler için kullanılacak varsayılan barkod türü SetDefaultBarcodeTypeThirdParties=Üçüncü partiler için kullanılacak varsayılan barkod tipi UseUnits=Sipariş, teklif ya da fatura satırlarının yazımı sırasında kullanmak üzere Miktar için bir ölçü birimi tanımlayın @@ -1601,7 +1612,7 @@ FCKeditorForProductDetails=WYSIWIG creation/edition of products details lines fo FCKeditorForMailing= Toplu e-postalar için WYSIWIG oluşturma/düzenleme (Araçlar->E-postalamalar) FCKeditorForUserSignature=Kullanıcı imzasının WYSIWIG olarak oluşturulması/düzenlenmesi FCKeditorForMail=Tüm mailler için WYSIWIG oluşturma/düzenleme (Araçlar->E-postalamalar hariç) -FCKeditorForTicket=WYSIWIG creation/edition for tickets +FCKeditorForTicket=Destek bildirimleri için WYSIWIG oluşturma/düzenleme ##### Stock ##### StockSetup=Stok modülü kurulumu IfYouUsePointOfSaleCheckModule=If you use the Point of Sale module (POS) provided by default or an external module, this setup may be ignored by your POS module. Most POS modules are designed by default to create an invoice immediately and decrease stock irrespective of the options here. So if you need or not to have a stock decrease when registering a sale from your POS, check also your POS module setup. @@ -1737,7 +1748,7 @@ ProjectsSetup=Proje modülü kurulumu ProjectsModelModule=Proje raporu belge modeli TasksNumberingModules=Görev numaralandırma modülü TaskModelModule=Görev raporu belge modeli -UseSearchToSelectProject=Wait until a key is pressed before loading content of Project combo list.<br>This may improve performance if you have a large number of projects, but it is less convenient. +UseSearchToSelectProject=Aşağı açılır listeden Proje içeriği listelemeden önce bir tuşa basarak arama yapmanızı bekler.<br>Çok sayıda projeniz mevcutsa bu performansı artırabilir, fakat daha az kullanışlıdır ##### ECM (GED) ##### ##### Fiscal Year ##### AccountingPeriods=Muhasebe dönemleri @@ -1885,7 +1896,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed GDPRContact=Veri Koruma Görevlisi (DPO, Veri Gizliliği veya GDPR kişisi) -GDPRContactDesc=If you store data about European companies/citizens, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=Avrupalı şirketler veya vatandaşlar hakkında veri depoluyorsanız Genel Veri Koruma Yönetmeliği'nden (GDPR) sorumlu kişiyi burada adlandırabilirsiniz HelpOnTooltip=Araç ipucunda gösterilecek yardım metni HelpOnTooltipDesc=Put text or a translation key here for the text to show in a tooltip when this field appears in a form YouCanDeleteFileOnServerWith=You can delete this file on the server with Command Line:<br>%s @@ -1893,7 +1904,7 @@ ChartLoaded=Chart of account loaded SocialNetworkSetup=Sosyal Ağlar modülünün kurulumu EnableFeatureFor=<strong>%s</strong> için özellikleri etkinleştir VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to <strong>Off</strong> in the menu %s - %s, so Sales tax or Vat used will always be 0 for sales. -SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents +SwapSenderAndRecipientOnPDF=PDF üzerindeki gönderen ve alıcı adreslerinin yerini birbiriyle değiştir FeatureSupportedOnTextFieldsOnly=Uyarı: Bu özellik yalnızca metin alanlarında desteklenir. Bu özelliği tetiklemek için ayrıca bir URL parametresi action=create ya da action=edit ayarlanmalı VEYA sayfa adı 'new.php' ile bitmelidir. 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 records automatically (like leads). @@ -1927,7 +1938,7 @@ MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Otomatik ECM ağacını göster OperationParamDesc=Define values to use for action, or how to extract values. For example:<br>objproperty1=SET:abc<br>objproperty1=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:abc<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey.*[^\\s]+(.*)<br>options_myextrafield=EXTRACT:SUBJECT:([^\\s]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties. OpeningHours=Açılış saatleri -OpeningHoursDesc=Enter here the regular opening hours of your company. +OpeningHoursDesc=Buraya şirketinizin normal çalışma saatlerini girin. ResourceSetup=Configuration of Resource module UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). DisabledResourceLinkUser=Disable feature to link a resource to users @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Dışa aktarma modelleri herkesle paylaşılır ExportSetup=Dışa aktarma modülünün kurulumu +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/tr_TR/bills.lang b/htdocs/langs/tr_TR/bills.lang index 14f091f6081..73cb73cd3ff 100644 --- a/htdocs/langs/tr_TR/bills.lang +++ b/htdocs/langs/tr_TR/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Tedarikçi faturaları SupplierBill=Tedarikçi faturası SupplierBills=tedarikçi faturaları Payment=Ödeme -PaymentBack=Geri ödeme -CustomerInvoicePaymentBack=Geri ödeme +PaymentBack=İade +CustomerInvoicePaymentBack=İade Payments=Ödemeler PaymentsBack=Refunds paymentInInvoiceCurrency=fatura para biriminde PaidBack=Geri ödenen DeletePayment=Ödeme sil ConfirmDeletePayment=Bu ödemeyi silmek istediğinizden emin misiniz? -ConfirmConvertToReduc=Bu %s öğesini mutlak bir indirime dönüştürmek ister misiniz? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Bu %s öğesini mutlak bir indirime dönüştürmek ister misiniz? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Tedarikçi ödemeleri ReceivedPayments=Alınan ödemeler @@ -219,7 +219,10 @@ ShowInvoiceSituation=Hakediş faturası göster UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Öde ToMakePaymentBack=Geri öde ListOfYourUnpaidInvoices=Ödenmemiş fatura listesi NoteListOfYourUnpaidInvoices=Not: Bu liste, satış temsilcisi olarak bağlı olduğunuz üçüncü partilere ait faturaları içerir. -RevenueStamp=Bandrol +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=Yeni bir fatura şablonu oluşturmak için önce bir standart fatura oluşturmalı ve onu "şablona" dönüştürmelisiniz -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Fatura PDF şablonu Crevette. Durum faturaları için eksiksiz bir fatura şablonu TerreNumRefModelDesc1=Standart faturalar için numarayı %syymm-nnnn biçiminde ve iade faturaları için %syymm-nnnn biçiminde göster, yy yıl, mm ay ve nnnn boşluksuz ve 0 olmayan bir dizidir. @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Bitiş tarihini ayarla MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Fatura silindi +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/tr_TR/blockedlog.lang b/htdocs/langs/tr_TR/blockedlog.lang index 7797a0814fd..072bf60a6d8 100644 --- a/htdocs/langs/tr_TR/blockedlog.lang +++ b/htdocs/langs/tr_TR/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/tr_TR/cashdesk.lang b/htdocs/langs/tr_TR/cashdesk.lang index dfc653aa7bb..552521dd61a 100644 --- a/htdocs/langs/tr_TR/cashdesk.lang +++ b/htdocs/langs/tr_TR/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Bu malı ekle RestartSelling=Satışa geri dön SellFinished=Satış tamamlandı PrintTicket=Fiş yazdır +SendTicket=Destek bildirimini gönder NoProductFound=Hiç mal bulunamadı ProductFound=ürün bulundu NoArticle=Mal yok @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Teorik tutar RealAmount=Gerçek tutar +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Fatura sayısı Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Sipariş Notları CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Destek bildirimlerini otomatik olarak yazdır +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Tarayıcı BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/tr_TR/companies.lang b/htdocs/langs/tr_TR/companies.lang index ba12f3799a1..56cd0f70353 100644 --- a/htdocs/langs/tr_TR/companies.lang +++ b/htdocs/langs/tr_TR/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted="%s" Firması veritabanından silindi. ListOfContacts=Kişi/adres listesi ListOfContactsAddresses=Kişi/adres listesi ListOfThirdParties=Üçüncü Partilerin Listesi -ShowCompany=Üçüncü Partiyi Göster ShowContact=Kişi göster ContactsAllShort=Hepsi (süzmeden) ContactType=Kişi tipi @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Satış temsilcisinin adı SaleRepresentativeLastname=Satış temsilcisinin soyadı 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 kullanılmış, yeni bir kod önerilir +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Ödeme Türü - Müşteri PaymentTermsCustomer=Ödeme Koşulları - Müşteri diff --git a/htdocs/langs/tr_TR/compta.lang b/htdocs/langs/tr_TR/compta.lang index 8f49b0d36b6..925d1926f02 100644 --- a/htdocs/langs/tr_TR/compta.lang +++ b/htdocs/langs/tr_TR/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Gösterilen tutarlara tüm vergiler dahildir -RulesResultDue=- Ödenmemiş faturaları, giderleri ve KDV ni, ödenmiş ya da ödenmemiş bağışları içerir. Aynı zamanda ödenmiş maaşları da içerir.<br>- Faturaların ve KDV nin doğrulanma tarihleri ve giderlerin ödenme tarihleri baz alınır. Ücretler Maaş modülünde tanımlanır, ödeme tarihi değeri kullanılır. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Faturalarda, giderlerde, KDV inde ve maaşlarda yapılan gerçek ödemeleri içerir. <br>- Faturaların, giderleri, KDV nin ve maaşların ödeme tarihleri baz alınır. Bağışlar için bağış tarihi. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Kısa etiket +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/tr_TR/errors.lang b/htdocs/langs/tr_TR/errors.lang index 762f5e44590..96c1a4b6e2a 100644 --- a/htdocs/langs/tr_TR/errors.lang +++ b/htdocs/langs/tr_TR/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=Dosya sunucu tarafından tamamen alınmadı. ErrorNoTmpDir=Geçici %s dizini yok. ErrorUploadBlockedByAddon=Dosya gönderme PHP/Apache eklentisi tarafından bloke edilmiş. ErrorFileSizeTooLarge=Dosya boyutu çok büyük. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Tam sayı türü için boyut çok uzun (ençok %s ondalık) ErrorSizeTooLongForVarcharType=Dize türü için boyut çok uzun (ençok %s karakter) ErrorNoValueForSelectType=Değer gir ya da liste seç @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHP'nizdeki upload_max_filesize (%s) parametresi, post_max_size (%s) PHP parametresinden daha yüksek. Bu tutarlı bir kurulum değil. WarningPasswordSetWithNoAccount=Bu üye için bir parola ayarlıdır. Ancak, hiçbir kullanıcı hesabı oluşturulmamıştır. Yani bu şifre saklanır ama Dolibarr'a giriş için kullanılamaz. Dış bir modül/arayüz tarafından kullanılıyor olabilir, ama bir üye için ne bir kullanıcı adı ne de parola tanımlamanız gerekmiyorsa "Her üye için bir kullanıcı adı yönet" seçeneğini devre dışı bırakabilirsiniz. Bir kullanıcı adı yönetmeniz gerekiyorsa ama herhangi bir parolaya gereksinim duymuyorsanız bu uyarıyı engellemek için bu alanı boş bırakabilirsiniz. Not: Eğer bir üye bir kullanıcıya bağlıysa kullanıcı adı olarak e-posta adresi de kullanılabilir. diff --git a/htdocs/langs/tr_TR/install.lang b/htdocs/langs/tr_TR/install.lang index 83da2e22b2a..f06e9617411 100644 --- a/htdocs/langs/tr_TR/install.lang +++ b/htdocs/langs/tr_TR/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=Bu PHP, Curl'u destekliyor. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=Bu PHP, UTF8 işlevlerini destekliyor. PHPSupportIntl=Bu PHP, Intl fonksiyonlarını destekliyor. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=PHP nizin ençok oturum belleği <b>%s</b> olarak ayarlanmış. Bu yeterli olacaktır. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=PHP kurulumunuz Curl. desteklemiyor ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=PHP kurulumunuz UTF8 işlevlerini desteklemiyor. Dolibarr düzgün çalışamaz. Dolibarr'ı yüklemeden önce bunu çözün. ErrorPHPDoesNotSupportIntl=PHP kurulumunuz Intl fonksiyonlarını desteklemiyor. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=%s Dizini yoktur. ErrorGoBackAndCorrectParameters=Geri gidin ve parametreleri kontrol edin/düzeltin. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/tr_TR/link.lang b/htdocs/langs/tr_TR/link.lang index 244396b0e8f..daaf0291ac3 100644 --- a/htdocs/langs/tr_TR/link.lang +++ b/htdocs/langs/tr_TR/link.lang @@ -8,3 +8,4 @@ LinkRemoved=%s bağlantısı kaldırıldı ErrorFailedToDeleteLink= '<b>%s</b>' bağlantısı kaldırılamadı ErrorFailedToUpdateLink= '<b>%s</b>' bağlantısı güncellenemedi URLToLink=Bağlantılanalıcak URL +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/tr_TR/mails.lang b/htdocs/langs/tr_TR/mails.lang index 4ae97915eae..0787f4873f1 100644 --- a/htdocs/langs/tr_TR/mails.lang +++ b/htdocs/langs/tr_TR/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Kategorisi olan hiç bir kişi/adres bulunamadı NoContactLinkedToThirdpartieWithCategoryFound=Kategorisi olan hiç bir kişi/adres bulunamadı OutGoingEmailSetup=Giden e-posta kurulumu InGoingEmailSetup=Gelen e-posta kurulumu -OutGoingEmailSetupForEmailing=Giden e-posta kurulumu (toplu e-posta için) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Varsayılan giden e-posta kurulumu Information=Bilgi ContactsWithThirdpartyFilter=Üçüncü parti filtreli kişiler diff --git a/htdocs/langs/tr_TR/main.lang b/htdocs/langs/tr_TR/main.lang index 83574648634..291b24e3c1b 100644 --- a/htdocs/langs/tr_TR/main.lang +++ b/htdocs/langs/tr_TR/main.lang @@ -4,8 +4,8 @@ DIRECTION=ltr # msungstdlight or cid0ct are for traditional Chinese (traditional does not render with Ubuntu pdf reader) # stsongstdlight or cid0cs are for simplified Chinese # To read Chinese pdf with Linux: sudo apt-get install poppler-data -FONTFORPDF=DejaVuSans -FONTSIZEFORPDF=8 +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=, SeparatorThousand=. FormatDateShort=%d/%m/%Y @@ -28,7 +28,7 @@ NoTemplateDefined=Bu e-posta türü için mevcut şablon yok AvailableVariables=Mevcut yedek değişkenler NoTranslation=Çeviri yok Translation=Çeviri -EmptySearchString=Enter a non empty search string +EmptySearchString=Boş olmayan bir arama dizesi girin NoRecordFound=Kayıt bulunamadı NoRecordDeleted=Hiç kayıt silinmedi NotEnoughDataYet=Yeterli bilgi yok @@ -174,6 +174,7 @@ SaveAndStay=Kaydet ve kal SaveAndNew=Save and new TestConnection=Deneme bağlantısı ToClone=Kopyasını oluştur +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Kopyasını oluşturmak istediğiniz verileri seçin: NoCloneOptionsSpecified=Kopyası oluşturulacak hiçbir veri tanımlanmamış. Of=ile ilgili @@ -535,7 +536,7 @@ Photos=Resimler AddPhoto=Resim ekle DeletePicture=Resim sil ConfirmDeletePicture=Resim silmeyi onayla -Login=Oturum açma +Login=Kullanıcı adı LoginEmail=Giriş (e-posta) LoginOrEmail=Oturum açma adı veya E-posta adresi CurrentLogin=Geçerli kullanıcı @@ -771,7 +772,7 @@ LinkToSupplierProposal=Tedarikçi teklifine bağlantıla LinkToSupplierInvoice=Tedarikçi faturasına bağlantıla LinkToContract=Kişiye bağlantıla LinkToIntervention=Müdahaleye bağlantıla -LinkToTicket=Link to ticket +LinkToTicket=Destek bildirimine bağlantı CreateDraft=Taslak oluştur SetToDraft=Taslağa geri dön ClickToEdit=Düzenlemek için tıklayın @@ -829,6 +830,8 @@ Gender=Cinsiyet Genderman=Adam Genderwoman=Kadın ViewList=Liste görünümü +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Zorunlu Hello=Merhaba GoodBye=Güle güle @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/tr_TR/other.lang b/htdocs/langs/tr_TR/other.lang index 8e39c3c450b..1033709c7a1 100644 --- a/htdocs/langs/tr_TR/other.lang +++ b/htdocs/langs/tr_TR/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Müşteri siparişi doğrulandı Notify_ORDER_SENTBYMAIL=Müşteri siparişi e-posta ile gönderildi Notify_ORDER_SUPPLIER_SENTBYMAIL=Tedarikçi siparişi e-posta ile gönderildi @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=Sayfanın URL si WEBSITE_TITLE=Unvan WEBSITE_DESCRIPTION=Açıklama 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Anahtar kelimeler LinesToImport=Lines to import diff --git a/htdocs/langs/tr_TR/products.lang b/htdocs/langs/tr_TR/products.lang index 53c71e2f9f1..d79bf8cc61c 100644 --- a/htdocs/langs/tr_TR/products.lang +++ b/htdocs/langs/tr_TR/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Bu araç <b><u>TÜM</u></b> ürün ve hizmetler üzerin MassBarcodeInit=Toplu barkod başlatma MassBarcodeInitDesc=Bu sayfa, barkod tanımlanmamış nesneler üzerinde barkod başlatmak için kullanılabilir. Önce barkod modülü kurulumunun tamamlandığını denetleyin. ProductAccountancyBuyCode=Muhasebe kodu (satın alma) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Muhasebe kodu (satış) ProductAccountancySellIntraCode=Muhasebe kodu (Topluluk içi satış) ProductAccountancySellExportCode=Muhasebe kodu (ihracat) @@ -153,7 +155,7 @@ RowMaterial=Ham madde ConfirmCloneProduct=<b>%s</b> ürünü ve siparişinin kopyasını oluşturmak istediğinizden emin misiniz? CloneContentProduct=Ürün/hizmet ile ilgili tüm temel bilgilerin kopyasını oluştur ClonePricesProduct=Fiyatların kopyasını oluştur -CloneCategoriesProduct=Clone tags/categories linked +CloneCategoriesProduct=Bağlı etiketleri/kategorileri kopyala CloneCompositionProduct=Sanal ürünü/hizmetin kopyasını oluştur CloneCombinationsProduct=Ürün değişkenlerinin kopyasını oluştur ProductIsUsed=Bu ürün kullanılır. @@ -165,7 +167,7 @@ SuppliersPrices=Tedarikçi fiyatları SuppliersPricesOfProductsOrServices=Tedarikçi fiyatları (ürün veya hizmetlerin) CustomCode=G.T.İ.P Numarası CountryOrigin=Menşei ülke -Nature=Ürün yapısı (ham madde/bitmiş ürün) +Nature=Nature of product (material/finished) ShortLabel=Kısa etiket Unit=Birim p=Adet @@ -238,8 +240,8 @@ UseMultipriceRules=İlk segmente göre diğer tüm segmentlerin fiyatlarını ot PercentVariationOver=%s üzerindeki %% değişim PercentDiscountOver=%s üzerindeki %% indirim KeepEmptyForAutoCalculation=Bunun ürünlerin ağırlık veya hacimlerinden otomatik olarak hesaplanması için boş bırakın. -VariantRefExample=Examples: COL, SIZE -VariantLabelExample=Examples: Color, Size +VariantRefExample=Örnek: RENK, EBAT +VariantLabelExample=Örnek: Renk, Ebat ### composition fabrication Build=Üret ProductsMultiPrice=Her fiyat düzeyi için ürünler ve fiyatlar @@ -317,10 +319,10 @@ ProductWeight=1 ürün ağırlığı ProductVolume=1 ürün hacmi WeightUnits=Ağırlık birimi VolumeUnits=Hacim birimi -WidthUnits=Width unit -LengthUnits=Length unit -HeightUnits=Height unit -SurfaceUnits=Surface unit +WidthUnits=Genişlik birimi +LengthUnits=Uzunluk birimi +HeightUnits=Yükseklik birimi +SurfaceUnits=Yüzey birimi SizeUnits=Boyut birimi DeleteProductBuyPrice=Satınalma fiyatı sil ConfirmDeleteProductBuyPrice=Bu satınalma fiyatını silmek istediğinizden emin misiniz? @@ -332,7 +334,7 @@ GoOnMenuToCreateVairants=Nitelik varyantlarını hazırlamak için (renk, boyut UseProductFournDesc=Müşterilere yönelik açıklamalara ek olarak, tedarikçiler tarafından belirlenen ürün açıklamalarını tanımlamak için bir özellik ekleyin ProductSupplierDescription=Ürün için tedarikçi açıklaması UseProductSupplierPackaging=Use packaging on supplier prices (recalculate quantities according to packaging set on supplier price when adding/updating line in supplier documents) -PackagingForThisProduct=Packaging +PackagingForThisProduct=Paketleme QtyRecalculatedWithPackaging=The quantity of the line were recalculated according to supplier packaging #Attributes @@ -367,7 +369,7 @@ UsePercentageVariations=Yüzde varyasyonlarını kullan PercentageVariation=Yüzde varyasyonu ErrorDeletingGeneratedProducts=Mevcut ürün varyantlarını silmeye çalışırken bir hata oluştu NbOfDifferentValues=Farklı değerlerin sayısı -NbProducts=Number of products +NbProducts=Ürün sayısı ParentProduct=Ana ürün HideChildProducts=Değişken ürünleri sakla ShowChildProducts=Varyant ürünlerini göster @@ -379,5 +381,5 @@ ErrorDestinationProductNotFound=Hedef ürün bulunamadı ErrorProductCombinationNotFound=Ürün değişkeni bulunamadı ActionAvailableOnVariantProductOnly=Eylem yalnızca ürün değişkeninde mevcuttur ProductsPricePerCustomer=Müşteri başına ürün fiyatları -ProductSupplierExtraFields=Additional Attributes (Supplier Prices) -DeleteLinkedProduct=Delete the child product linked to the combination +ProductSupplierExtraFields=Ek Nitelikler (Tedarikçi Fiyatları) +DeleteLinkedProduct=Kombinasyonla bağlantılı alt ürünü silin diff --git a/htdocs/langs/tr_TR/projects.lang b/htdocs/langs/tr_TR/projects.lang index a37d8e3050e..44d35644f1c 100644 --- a/htdocs/langs/tr_TR/projects.lang +++ b/htdocs/langs/tr_TR/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Süre ListOfTasks=Görevler listesi GoToListOfTimeConsumed=Tüketilen süre listesine git -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=Proje ile ilgili müşteri siparişlerinin listesi @@ -188,7 +186,7 @@ PlannedWorkload=Planlı işyükü PlannedWorkloadShort=İşyükü ProjectReferers=İlgili öğeler ProjectMustBeValidatedFirst=Projeler önce doğrulanmalıdır -FirstAddRessourceToAllocateTime=Zaman tahsisi için göreve bir kullanıcı kaynağı ilişkilendir +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Günlük giriş InputPerWeek=Haftalık giriş InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Değiştirilen son %s proje OtherFilteredTasks=Diğer filtrelenmiş görevler NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Görevlere kullanıcı yorumlarına izin ver AllowCommentOnProject=Projelerde kullanıcı yorumlarına izin ver @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Yeni fatura OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/tr_TR/receiptprinter.lang b/htdocs/langs/tr_TR/receiptprinter.lang index 775969b454e..0fdd7f993a5 100644 --- a/htdocs/langs/tr_TR/receiptprinter.lang +++ b/htdocs/langs/tr_TR/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Yardımcı Yazıcı CONNECTOR_NETWORK_PRINT=Ağ Yazıcısı CONNECTOR_FILE_PRINT=Yerel Yazıcı CONNECTOR_WINDOWS_PRINT=Yerel Windows Yazıcısı +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Deneme için Sahte Yazıcı, hiçbir şey yapmaz CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Varsayılan profil PROFILE_SIMPLE=Basit profil PROFILE_EPOSTEP=Epos Tep Profili @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Fatura ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Topluluk İçi Vergi Numarası +DOL_VALUE_MYSOC_CAPITAL=Sermaye +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/tr_TR/stripe.lang b/htdocs/langs/tr_TR/stripe.lang index 97dc7ae5661..faabde173b6 100644 --- a/htdocs/langs/tr_TR/stripe.lang +++ b/htdocs/langs/tr_TR/stripe.lang @@ -32,6 +32,7 @@ VendorName=Satıcının Adı CSSUrlForPaymentForm=Ödeme formu için CSS stil sayfası url'si NewStripePaymentReceived=Yeni Stripe ödemesi alındı NewStripePaymentFailed=Yeni Stripe ödemesi denendi ancak başarısız oldu +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Gizli test anahtarı STRIPE_TEST_PUBLISHABLE_KEY=Yayımlanabilir test anahtarı STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Ödeme gelecek dönem için kaydedilecektir. ClickHereToTryAgain=<a href="%s">Tekrar denemek için burayı tıklayın...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/tr_TR/users.lang b/htdocs/langs/tr_TR/users.lang index 50b800b2d52..2ca8694ed66 100644 --- a/htdocs/langs/tr_TR/users.lang +++ b/htdocs/langs/tr_TR/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Kullanıcılar ve özellikleri DomainUser=Etki alanı kullanıcısı %s Reactivate=Yeniden etkinleştir CreateInternalUserDesc=Bu form, şirketiniz/kuruluşunuz içinde bir iç kullanıcı oluşturmanıza olanak tanır. Bir dış kullanıcı oluşturmak için (müşteri, tedarikçi, vb ...), üçüncü parti kişi kartından 'Dolibarr Kullanıcısı Oluştur' butonunu kullanın. -InternalExternalDesc=Bir <b>İç</b> kullanıcı, şirketinizin/kuruluşunuzun parçası olan bir kullanıcıdır.<br>Bir <b>Dış</b> kullanıcı ise, müşteri, tedarikçi veya buna benzer bir kullanıcıdır.<br><br>Her iki durumda da, verilen izinler Dolibarr üzerindeki hakları tanımlar. Bunun yanı sıra dış kullanıcı, iç kullanıcıdan farklı bir menü yöneticisine sahip olabilir (Giriş - Ayarlar - Ekran bölümüne bakın). +InternalExternalDesc=Bir <b>İç</b> kullanıcı, şirketinizin/kuruluşunuzun parçası olan bir kullanıcıdır.<br>Bir <b>Dış</b> kullanıcı ise, müşteri, tedarikçi veya diğer (Bir üçüncü parti için dış kullanıcı oluşturmak isteniyorsa, oluşturulmak istenen kişinin sayfasında "Bir kullanıcı oluştur" butonu kullanılabilir) bir kullanıcıdır.<br><br>Her iki durumda da, verilen izinler Dolibarr üzerindeki hakları tanımlar. Bunun yanı sıra dış kullanıcı, iç kullanıcıdan farklı bir menü yöneticisine sahip olabilir (Giriş - Ayarlar - Ekran bölümüne bakın). PermissionInheritedFromAGroup=İzin hak tanındı çünkü bir kullanıcının grubundan intikal etti. Inherited=İntikal eden UserWillBeInternalUser=Oluşturulacak kullanıcı bir iç kullanıcı olacaktır (çünkü belirli bir üçüncü parti ile bağlantılı değildir) @@ -105,8 +105,13 @@ ExpectedWorkedHours=Haftalık beklenen çalışma saatleri ColorUser=Kullanıcı rengi DisabledInMonoUserMode=Bakım modunda devre dışıdır UserAccountancyCode=Kullanıcı muhasebe kodu -UserLogoff=Kullanıcı çıktı -UserLogged=Kullanıcı bağlandı +UserLogoff=Kullanıcı çıkış yaptı +UserLogged=Kullanıcı giriş yaptı DateEmployment=İşe Başlama Tarihi DateEmploymentEnd=İşi Bırakma Tarihi CantDisableYourself=Kendi kullanıcı kaydınızı devre dışı bırakamazsınız +ForceUserExpenseValidator=Gider raporu doğrulayıcısını zorla +ForceUserHolidayValidator=İzin isteği doğrulayıcısını zorla +ValidatorIsSupervisorByDefault=Varsayılan olarak, doğrulayıcı kullanıcının denetimcisidir. Bu durumu korumak için boş bırakın. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/tr_TR/website.lang b/htdocs/langs/tr_TR/website.lang index 28380e99411..2c6025eb4dd 100644 --- a/htdocs/langs/tr_TR/website.lang +++ b/htdocs/langs/tr_TR/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Siteyi yeni sekmede izle SetAsHomePage=Giriş Sayfası olarak ayarla RealURL=Gerçek URL ViewWebsiteInProduction=Web sitesini giriş URL si kullanarak izle -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>PHP gömülü sunucu ile kullanın</u><br>Geliştirme ortamında, siteyi PHP gömülü web sunucusu ile test etmeyi tercih edebilirsiniz (PHP 5.5 gerekli)<br><strong>php -S 0.0.0.0:8080 -t%s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Web sitesi hesap tablosunu etkinleştir WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=Öncelikle varsayılan Giriş sayfasını tanımlamanız gerekir -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Görüntüler dizine kaydedilmelidir @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/uk_UA/admin.lang b/htdocs/langs/uk_UA/admin.lang index 17b0f823011..2e96db5c8dc 100644 --- a/htdocs/langs/uk_UA/admin.lang +++ b/htdocs/langs/uk_UA/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/uk_UA/bills.lang b/htdocs/langs/uk_UA/bills.lang index 4fc90ffb4fa..d481e665112 100644 --- a/htdocs/langs/uk_UA/bills.lang +++ b/htdocs/langs/uk_UA/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=рахунки-фактури постачальників Payment=Платіж -PaymentBack=Повернення платежу -CustomerInvoicePaymentBack=Повернення платежу +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Платежі PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Повернення платежу DeletePayment=Видалити платіж ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Отримані платежі @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Повернення платежу ListOfYourUnpaidInvoices=Список неоплачених рахунків NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/uk_UA/blockedlog.lang b/htdocs/langs/uk_UA/blockedlog.lang index cff8f7d657b..5afae6e9e53 100644 --- a/htdocs/langs/uk_UA/blockedlog.lang +++ b/htdocs/langs/uk_UA/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/uk_UA/cashdesk.lang b/htdocs/langs/uk_UA/cashdesk.lang index 72238fe1fed..05314c6dd09 100644 --- a/htdocs/langs/uk_UA/cashdesk.lang +++ b/htdocs/langs/uk_UA/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=К-ть рахунків-фактур Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/uk_UA/companies.lang b/htdocs/langs/uk_UA/companies.lang index b4ff027e4df..64082ef929a 100644 --- a/htdocs/langs/uk_UA/companies.lang +++ b/htdocs/langs/uk_UA/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/uk_UA/compta.lang b/htdocs/langs/uk_UA/compta.lang index db4c2fecf25..25d9f2b34e4 100644 --- a/htdocs/langs/uk_UA/compta.lang +++ b/htdocs/langs/uk_UA/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/uk_UA/errors.lang b/htdocs/langs/uk_UA/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/uk_UA/errors.lang +++ b/htdocs/langs/uk_UA/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/uk_UA/install.lang b/htdocs/langs/uk_UA/install.lang index bf9c08c4ba7..f67dff57184 100644 --- a/htdocs/langs/uk_UA/install.lang +++ b/htdocs/langs/uk_UA/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/uk_UA/link.lang b/htdocs/langs/uk_UA/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/uk_UA/link.lang +++ b/htdocs/langs/uk_UA/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/uk_UA/mails.lang b/htdocs/langs/uk_UA/mails.lang index 5650dbb3967..8b1cb50fe79 100644 --- a/htdocs/langs/uk_UA/mails.lang +++ b/htdocs/langs/uk_UA/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/uk_UA/main.lang b/htdocs/langs/uk_UA/main.lang index 29fc4f2f58c..4a8db0781af 100644 --- a/htdocs/langs/uk_UA/main.lang +++ b/htdocs/langs/uk_UA/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/uk_UA/other.lang b/htdocs/langs/uk_UA/other.lang index 00259d976bc..ba85f51e739 100644 --- a/htdocs/langs/uk_UA/other.lang +++ b/htdocs/langs/uk_UA/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/uk_UA/products.lang b/htdocs/langs/uk_UA/products.lang index 21d7b5eaca1..ae0f5ef2874 100644 --- a/htdocs/langs/uk_UA/products.lang +++ b/htdocs/langs/uk_UA/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/uk_UA/projects.lang b/htdocs/langs/uk_UA/projects.lang index 7e9b2dca54e..5e499f4b2c7 100644 --- a/htdocs/langs/uk_UA/projects.lang +++ b/htdocs/langs/uk_UA/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Новий рахунок-фактура OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/uk_UA/receiptprinter.lang b/htdocs/langs/uk_UA/receiptprinter.lang index 9681691ae48..807a476009d 100644 --- a/htdocs/langs/uk_UA/receiptprinter.lang +++ b/htdocs/langs/uk_UA/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Dummy Printer CONNECTOR_NETWORK_PRINT=Network Printer CONNECTOR_FILE_PRINT=Local Printer CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Default Profile PROFILE_SIMPLE=Simple Profile PROFILE_EPOSTEP=Epos Tep Profile @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=Capital +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/uk_UA/stripe.lang b/htdocs/langs/uk_UA/stripe.lang index eb77441d2cd..844762040af 100644 --- a/htdocs/langs/uk_UA/stripe.lang +++ b/htdocs/langs/uk_UA/stripe.lang @@ -32,6 +32,7 @@ VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Secret test key STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key STRIPE_TEST_WEBHOOK_KEY=Webhook test key @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/uk_UA/users.lang b/htdocs/langs/uk_UA/users.lang index 43fa5342da3..aea4e7676e4 100644 --- a/htdocs/langs/uk_UA/users.lang +++ b/htdocs/langs/uk_UA/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/uk_UA/website.lang b/htdocs/langs/uk_UA/website.lang index 7fe18b58621..1fe75b2993e 100644 --- a/htdocs/langs/uk_UA/website.lang +++ b/htdocs/langs/uk_UA/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/uz_UZ/admin.lang b/htdocs/langs/uz_UZ/admin.lang index 2f36c876c1a..0205f246b0c 100644 --- a/htdocs/langs/uz_UZ/admin.lang +++ b/htdocs/langs/uz_UZ/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Feature disabled in demo 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. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=You can find more modules to download on external websites on the 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 <strong>%s</strong>. ModulesMarketPlaces=Find external app/modules @@ -212,6 +212,7 @@ CompatibleUpTo=Compatible with version %s NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s Updated=Updated Nouveauté=Novelty AchatTelechargement=Buy / Download @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Keep empty to use default value DefaultLink=Default link SetAsDefault=Set as default ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined. @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Rate LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes CalcLocaltax1=Sales - Purchases CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases @@ -1018,6 +1025,7 @@ CalcLocaltax2=Purchases CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases CalcLocaltax3=Sales CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Label used by default if no translation can be found for code LabelOnDocuments=Label on documents LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events Audit=Audit @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=HRM module setup ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Invoice documents models BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=Payment documents models ForceInvoiceDate=Force invoice date to validation date -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models ProposalsPDFModules=Commercial proposal documents models -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/uz_UZ/bills.lang b/htdocs/langs/uz_UZ/bills.lang index 6d7c61784f7..8c22ce0159a 100644 --- a/htdocs/langs/uz_UZ/bills.lang +++ b/htdocs/langs/uz_UZ/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment -PaymentBack=Payment back -CustomerInvoicePaymentBack=Payment back +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=Payments PaymentsBack=Refunds paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments @@ -219,7 +219,10 @@ ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Set end date for service line with next invoice date AutoFillDateToShort=Set end date MaxNumberOfGenerationReached=Max number of gen. reached BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/uz_UZ/cashdesk.lang b/htdocs/langs/uz_UZ/cashdesk.lang index 7ddbc71f3e9..f9f00015840 100644 --- a/htdocs/langs/uz_UZ/cashdesk.lang +++ b/htdocs/langs/uz_UZ/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Add this article RestartSelling=Go back on sell SellFinished=Sale complete PrintTicket=Print ticket +SendTicket=Send ticket NoProductFound=No article found ProductFound=product found NoArticle=No article @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=Nb of invoices Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Browser BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/uz_UZ/companies.lang b/htdocs/langs/uz_UZ/companies.lang index c569a48c84a..f8b3d0354e2 100644 --- a/htdocs/langs/uz_UZ/companies.lang +++ b/htdocs/langs/uz_UZ/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=Show contact ContactsAllShort=All (No filter) ContactType=Contact type @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative 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 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/uz_UZ/compta.lang b/htdocs/langs/uz_UZ/compta.lang index 1de030a1905..6cd046c5607 100644 --- a/htdocs/langs/uz_UZ/compta.lang +++ b/htdocs/langs/uz_UZ/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on act SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger. SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b> RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included -RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/uz_UZ/errors.lang b/htdocs/langs/uz_UZ/errors.lang index 3ffc686e62f..7c67aeca8b5 100644 --- a/htdocs/langs/uz_UZ/errors.lang +++ b/htdocs/langs/uz_UZ/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File not received completely by server. ErrorNoTmpDir=Temporary directy %s does not exists. ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. ErrorFileSizeTooLarge=File size is too large. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) ErrorNoValueForSelectType=Please fill value for select list @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. 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. diff --git a/htdocs/langs/uz_UZ/install.lang b/htdocs/langs/uz_UZ/install.lang index bf9c08c4ba7..f67dff57184 100644 --- a/htdocs/langs/uz_UZ/install.lang +++ b/htdocs/langs/uz_UZ/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Directory %s does not exist. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=Click here to go to your application 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/uz_UZ/link.lang b/htdocs/langs/uz_UZ/link.lang index fdcf07aeff4..1ffcd41a18b 100644 --- a/htdocs/langs/uz_UZ/link.lang +++ b/htdocs/langs/uz_UZ/link.lang @@ -8,3 +8,4 @@ LinkRemoved=The link %s has been removed ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/uz_UZ/mails.lang b/htdocs/langs/uz_UZ/mails.lang index 8b92cef3103..7b3bfd3852a 100644 --- a/htdocs/langs/uz_UZ/mails.lang +++ b/htdocs/langs/uz_UZ/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/uz_UZ/main.lang b/htdocs/langs/uz_UZ/main.lang index 0b31a6d85e2..e571f74d43e 100644 --- a/htdocs/langs/uz_UZ/main.lang +++ b/htdocs/langs/uz_UZ/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of @@ -829,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/uz_UZ/other.lang b/htdocs/langs/uz_UZ/other.lang index 00259d976bc..ba85f51e739 100644 --- a/htdocs/langs/uz_UZ/other.lang +++ b/htdocs/langs/uz_UZ/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title 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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/uz_UZ/products.lang b/htdocs/langs/uz_UZ/products.lang index d8a3192551f..a31243a07b6 100644 --- a/htdocs/langs/uz_UZ/products.lang +++ b/htdocs/langs/uz_UZ/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=Accounting code (sale export) @@ -165,7 +167,7 @@ SuppliersPrices=Vendor prices SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/langs/uz_UZ/projects.lang b/htdocs/langs/uz_UZ/projects.lang index 94e440f9ab9..cdc0e6b3c95 100644 --- a/htdocs/langs/uz_UZ/projects.lang +++ b/htdocs/langs/uz_UZ/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=Planned workload PlannedWorkloadShort=Workload ProjectReferers=Related items ProjectMustBeValidatedFirst=Project must be validated first -FirstAddRessourceToAllocateTime=Assign a user resource to task to allocate time +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Input per day InputPerWeek=Input per week InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=New invoice OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/uz_UZ/users.lang b/htdocs/langs/uz_UZ/users.lang index 43fa5342da3..aea4e7676e4 100644 --- a/htdocs/langs/uz_UZ/users.lang +++ b/htdocs/langs/uz_UZ/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) @@ -110,3 +110,8 @@ UserLogged=User logged DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/vi_VN/admin.lang b/htdocs/langs/vi_VN/admin.lang index af3b098f54f..5c39e62c272 100644 --- a/htdocs/langs/vi_VN/admin.lang +++ b/htdocs/langs/vi_VN/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Lưu ý: cấu hình PHP <b>của bạn</b> hiện giớ NoMaxSizeByPHPLimit=Ghi chú: Không có giới hạn được chỉnh sửa trong phần chỉnh sửa PHP MaxSizeForUploadedFiles=Kích thước tối đa của tập tin được tải lên (0 sẽ tắt chế độ tải lên) UseCaptchaCode=Sử dụng mã xác nhận (CAPTCHA) ở trang đăng nhập -AntiVirusCommand= Đường dẫn đầy đủ để thi hành việc quét virus -AntiVirusCommandExample= Thí dụ dành cho ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Thí dụ cho ClamAv: /usr/bin/clamscan +AntiVirusCommand=Đường dẫn đầy đủ để thi hành việc quét virus +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Nhiều thông số trên dòng lệnh -AntiVirusParamExample= Thí dụ với ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Cài đặt module kế toán UserSetup=Cài đặt quản lý người dùng MultiCurrencySetup=Thiết lập đa tiền tệ @@ -199,7 +199,7 @@ FeatureDisabledInDemo=Tính năng đã vô hiệu hóa trong bản demo FeatureAvailableOnlyOnStable=Tính năng chỉ khả dụng trên các phiên bản ổn định chính thức BoxesDesc=Widget là các thành phần hiển thị một số thông tin mà bạn có thể thêm để cá nhân hóa một số trang. Bạn có thể chọn giữa hiển thị tiện ích hoặc không bằng cách chọn trang đích và nhấp vào 'Kích hoạt' hoặc bằng cách nhấp vào thùng rác để tắt nó. OnlyActiveElementsAreShown=Chỉ có các yếu tố từ <a href="%s">module kích hoạt</a> được hiển thị. -ModulesDesc=Các mô-đun / ứng dụng xác định các tính năng có sẵn trong phần mềm. Một số mô-đun yêu cầu quyền được cấp cho người dùng sau khi kích hoạt mô-đun. Nhấp vào nút bật / tắt (ở cuối dòng mô-đun) để bật / tắt mô-đun / ứng dụng. +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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=Bạn có thể tìm thấy nhiều mô-đun để tải về ở các websites trên Internet ... ModulesDeployDesc=Nếu quyền trên hệ thống tệp của bạn cho phép, bạn có thể sử dụng công cụ này để triển khai mô-đun bên ngoài. Mô-đun sau đó sẽ hiển thị trên tab <strong>%s</strong> . ModulesMarketPlaces=Tìm ứng dụng bên ngoài/ mô-đun @@ -212,6 +212,7 @@ CompatibleUpTo=Tương thích với phiên bản %s NotCompatible=Mô-đun này dường như không tương thích với Dolibarr %s của bạn (Min %s - Max %s). CompatibleAfterUpdate=Mô-đun này yêu cầu cập nhật lên Dolibarr %s của bạn (Min %s - Max %s). SeeInMarkerPlace=Xem ở chợ +SeeSetupOfModule=Xem thiết lập mô-đun %s Updated=Đã cập nhật Nouveauté=Mới lạ AchatTelechargement=Mua / Tải xuống @@ -221,6 +222,7 @@ DoliPartnersDesc=Danh sách các công ty cung cấp các mô-đun hoặc tính WebSiteDesc=Các trang web bên ngoài để có thêm các mô-đun bổ sung (không lõi) ... DevelopYourModuleDesc=Một số giải pháp để phát triển mô-đun của riêng bạn ... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets có sẵn BoxesActivated=Widgets được kích hoạt ActivateOn=Kích hoạt trên @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=Giữ trống để sử dụng giá trị mặc định DefaultLink=Liên kết mặc định SetAsDefault=Đặt làm mặc định ValueOverwrittenByUserSetup=Cảnh báo, giá trị này có thể được ghi đè bởi các thiết lập cụ thể người sử dụng (mỗi người dùng có thể thiết lập url clicktodial riêng của mình) -ExternalModule=Module bên ngoài được cài đặt vào thư mục %s +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Khởi tạo mã vạch hàng loạt cho bên thứ ba BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Hiện tại, bạn có <strong>%s</strong> bản ghi <strong>%s</strong> %s không xác định được mã vạch @@ -947,7 +950,7 @@ DictionaryCanton=Bang / Tỉnh DictionaryRegion=Vùng DictionaryCountry=Quốc gia DictionaryCurrency=Tiền tệ -DictionaryCivility=Chức vụ +DictionaryCivility=Honorific titles DictionaryActions=Các loại sự kiện chương trình nghị sự DictionarySocialContributions=Các loại thuế xã hội hoặc tài chính DictionaryVAT=Tỉ suất VAT hoặc Tỉ xuất thuế bán hàng @@ -988,6 +991,7 @@ VATIsNotUsedDesc=Theo mặc định, thuế Bán hàng được đề xuất là VATIsUsedExampleFR=Ở Pháp, nó có nghĩa là các công ty hoặc tổ chức có một hệ thống tài chính thực sự (Đơn giản hóa thực tế hoặc thực tế bình thường). Một hệ thống trong đó VAT được khai báo. VATIsNotUsedExampleFR=Ở Pháp, điều đó có nghĩa là các hiệp hội không khai thuế bán hàng hoặc các công ty, tổ chức hoặc ngành nghề tự do đã chọn hệ thống tài chính doanh nghiệp siêu nhỏ (Thuế bán hàng trong nhượng quyền thương mại) và nộp thuế nhượng quyền Thuế bán hàng mà không cần khai báo thuế Bán hàng. Lựa chọn này sẽ hiển thị tham chiếu "Thuế bán hàng không áp dụng - art-293B của CGI" trên hóa đơn. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=Tỷ suất LocalTax1IsNotUsed=Do not use second tax LocalTax1IsUsedDesc=Sử dụng loại thuế thứ hai (không phải loại thứ nhất) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=Tỷ lệ IRPF theo mặc định khi tạo khách hàng t LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=Ở Tây Ban Nha, họ là các doanh nghiệp không phải chịu hệ thống thuế của các mô-đun. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Báo cáo thuế địa phương CalcLocaltax1=Bán - Mua CalcLocaltax1Desc=Báo cáo Thuế địa phương được tính toán với sự khác biệt giữa localtaxes bán hàng và mua hàng localtaxes @@ -1018,6 +1025,7 @@ CalcLocaltax2=Mua CalcLocaltax2Desc=Báo cáo Thuế địa phương là tổng của localtaxes mua CalcLocaltax3=Bán CalcLocaltax3Desc=Báo cáo Thuế địa phương là tổng của localtaxes bán hàng +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=Nhãn được sử dụng bởi mặc định nếu không có bản dịch có thể được tìm thấy với code đó LabelOnDocuments=Nhãn trên các tài liệu LabelOrTranslationKey=Nhãn hoặc từ khóa dịch @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Báo cáo chi phí để phê duyệt Delays_MAIN_DELAY_HOLIDAYS=Yêu cầu nghỉ phép để phê duyệt SetupDescription1=Trước khi bắt đầu sử dụng Dolibarr, một số tham số ban đầu phải được xác định và các mô-đun được kích hoạt/ định cấu hình. SetupDescription2=Hai phần sau đây là bắt buộc (hai mục đầu tiên trong menu Cài đặt): -SetupDescription3=<a href="%s">%s -> %s</a> <br> Các tham số cơ bản được sử dụng để tùy chỉnh hành vi mặc định của ứng dụng của bạn (ví dụ: đối với các tính năng liên quan đến quốc gia). -SetupDescription4=<a href="%s">%s -> %s</a> <br> Phần mềm này là một bộ gồm nhiều mô-đun/ứng dụng, tất cả đều ít nhiều độc lập nhau. Các mô-đun liên quan đến nhu cầu của bạn phải được kích hoạt và cấu hình. Các mục/tùy chọn sẽ được thêm vào menu với sự kích hoạt của một mô-đun. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Các menu thiết lập khác quản lý các tham số tùy chọn. LogEvents=Sự kiện kiểm toán bảo mật Audit=Kiểm toán @@ -1128,7 +1136,7 @@ LogEventDesc=Cho phép đăng nhập cho các sự kiện bảo mật cụ thể AreaForAdminOnly=Thông số cài đặt chỉ có thể được đặt bởi <b>người dùng quản trị viên</b> . SystemInfoDesc=Hệ thống thông tin là thông tin kỹ thuật linh tinh bạn nhận được trong chế độ chỉ đọc và có thể nhìn thấy chỉ cho quản trị viên. SystemAreaForAdminOnly=Khu vực này chỉ dành cho người dùng quản trị viên. Quyền người dùng Dolibarr không thể thay đổi hạn chế này. -CompanyFundationDesc=Chỉnh sửa thông tin của công ty/tổ chức. Nhấp vào nút "%s" ở cuối trang. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=Nếu bạn có một kế toán viên/ kế toán bên ngoài, bạn có thể chỉnh sửa thông tin ở đây. AccountantFileNumber=Mã kế toán DisplayDesc=Các thông số ảnh hưởng đến giao diện và hành vi của Dolibarr có thể được sửa đổi tại đây. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Quy tắc tạo và xác thực mật khẩu DisableForgetPasswordLinkOnLogonPage=Không hiển thị liên kết "Quên mật khẩu" trên trang Đăng nhập UsersSetup=Thiết lập module người dùng UserMailRequired=Yêu cầu email để tạo người dùng mới +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=Thiết lập mô-đun Nhân sự ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=Mô hình chứng từ hóa đơn BillsPDFModulesAccordindToInvoiceType=Mẫu chứng từ hóa đơn theo loại hóa đơn PaymentsPDFModules=Mẫu chứng từ thanh toán ForceInvoiceDate=Buộc ngày hóa đơn là ngày xác nhận -SuggestedPaymentModesIfNotDefinedInInvoice=Đề nghị chế độ thanh toán trên hoá đơn theo mặc định nếu không được xác định cho hóa đơn +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Đề nghị thanh toán bằng cách rút tiền trên tài khoản SuggestPaymentByChequeToAddress=Đề nghị thanh toán bằng séc FreeLegalTextOnInvoices=Free text on invoices @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Thiết lập thanh toán của nhà cung cấp PropalSetup=Cài đặt module đơn hàng đề xuất ProposalsNumberingModules=Mô hình đánh số đơn hàng đề xuất ProposalsPDFModules=Mô hình chứng từ đơn hàng đề xuất -SuggestedPaymentModesIfNotDefinedInProposal=Chế độ thanh toán được gợi ý theo đề xuất theo mặc định nếu không có định nghĩa cho đề xuất +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Yêu cầu tài khoản ngân hàng của đơn hàng đề xuất @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Hỏi nguồn kho để đặt hàng ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Hỏi tài khoản ngân hàng đích của đơn đặt hàng mua ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Thiết lập quản lý đơn đặt hàng OrdersNumberingModules=Mô hình đánh số đơn hàng OrdersModelModule=Mô hình chứng từ đơn hàng @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Cảnh báo, giá trị cao hơn làm c ModuleActivated=Mô-đun %s được kích hoạt và làm chậm giao diện EXPORTS_SHARE_MODELS=Mô hình xuất dữ liệu được chia sẻ với mọi người ExportSetup=Thiết lập mô-đun Xuất dữ liệu +ImportSetup=Setup of module Import InstanceUniqueID=ID duy nhất của đối tượng SmallerThan=Nhỏ hơn LargerThan=Lớn hơn @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Tạo một Ping ẩn danh '+1' cho máy chủ nền tảng Do FeatureNotAvailableWithReceptionModule=Tính năng không khả dụng khi mô-đun Tiếp nhận được bật EmailTemplate=Mẫu cho email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/vi_VN/bills.lang b/htdocs/langs/vi_VN/bills.lang index 1d1d40bd268..d57824e370e 100644 --- a/htdocs/langs/vi_VN/bills.lang +++ b/htdocs/langs/vi_VN/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Hóa đơn nhà cung cấp SupplierBill=Hóa đơn nhà cung cấp SupplierBills=Hóa đơn nhà cung cấp Payment=Thanh toán -PaymentBack=Thanh toán lại -CustomerInvoicePaymentBack=Thanh toán lại +PaymentBack=Hoàn thuế +CustomerInvoicePaymentBack=Hoàn thuế Payments=Thanh toán PaymentsBack=Refunds paymentInInvoiceCurrency=tiền tệ trên hóa đơn PaidBack=Đã trả lại DeletePayment=Xóa thanh toán ConfirmDeletePayment=Bạn có chắc chắn muốn xóa khoản thanh toán này? -ConfirmConvertToReduc=Bạn có muốn chuyển đổi %s này thành giảm giá tuyệt đối không? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=Số tiền sẽ được lưu trong số tất cả các khoản giảm giá và có thể được sử dụng làm khoản giảm giá cho hóa đơn hiện tại hoặc tương lai cho khách hàng này. -ConfirmConvertToReducSupplier=Bạn có muốn chuyển đổi %s này thành giảm giá tuyệt đối không? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=Số tiền sẽ được lưu trong số tất cả các khoản giảm giá và có thể được sử dụng làm khoản giảm giá cho hóa đơn hiện tại hoặc tương lai cho nhà cung cấp này. SupplierPayments=Thanh toán của nhà cung cấp ReceivedPayments=Đã nhận thanh toán @@ -219,7 +219,10 @@ ShowInvoiceSituation=Xem hóa đơn tình huống UseSituationInvoices=Cho phép hóa đơn tình huống UseSituationInvoicesCreditNote=Cho phép ghi chú tín dụng hóa đơn tình huống Retainedwarranty=Giữ lại bảo hành +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Giữ lại phần trăm mặc định bảo hành +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=Thanh toán trên %s toPayOn=thanh toán trên %s RetainedWarranty=Giữ lại bảo hành @@ -509,11 +512,11 @@ ToMakePayment=Trả ToMakePaymentBack=Trả lại ListOfYourUnpaidInvoices=Danh sách các hoá đơn chưa trả NoteListOfYourUnpaidInvoices=Ghi chú: Danh sách này chỉ chứa các hoá đơn cho bên thứ ba mà bạn liên quan như là một đại diện bán hàng. -RevenueStamp=Doanh thu đóng dấu +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=Tùy chọn này chỉ khả dụng khi tạo hóa đơn từ tab "Khách hàng" của bên thứ ba YouMustCreateInvoiceFromSupplierThird=Tùy chọn này chỉ khả dụng khi tạo hóa đơn từ tab "Nhà cung cấp" của bên thứ ba YouMustCreateStandardInvoiceFirstDesc=Trước tiên, bạn phải tạo hóa đơn chuẩn và chuyển đổi thành "mẫu" để tạo hóa đơn mẫu mới -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Hóa đơn PDF mẫu Sponge. Một mẫu hóa đơn hoàn chỉnh PDFCrevetteDescription=Hóa đơn PDF mẫu Crevette. Mẫu hóa đơn hoàn chỉnh cho hóa đơn tình huống TerreNumRefModelDesc1=Quay về số với định dạng %ssyymm-nnnn cho hóa đơn chuẩn và %syymm-nnnn cho các giấy báo có nơi mà yy là năm, mm là tháng và nnnn là một chuỗi ngắt và không trở về 0 @@ -575,3 +578,4 @@ AutoFillDateTo=Đặt ngày kết thúc cho dòng dịch vụ với ngày hóa AutoFillDateToShort=Đặt ngày kết thúc MaxNumberOfGenerationReached=Số lượng tạo ra đạt tối đa BILL_DELETEInDolibarr=Hóa đơn đã bị xóa +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/vi_VN/blockedlog.lang b/htdocs/langs/vi_VN/blockedlog.lang index 96ec346012a..d0ed0570da4 100644 --- a/htdocs/langs/vi_VN/blockedlog.lang +++ b/htdocs/langs/vi_VN/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Nhật ký không thể thay đổi ShowAllFingerPrintsMightBeTooLong=Hiển thị tất cả các nhật ký lưu trữ (có thể dài) ShowAllFingerPrintsErrorsMightBeTooLong=Hiển thị tất cả các nhật ký lưu trữ không hợp lệ (có thể dài) DownloadBlockChain=Tải dấu vân tay -KoCheckFingerprintValidity=Lưu trữ nhật ký không hợp lệ. Nó có nghĩa là ai đó (một hacker?) Đã sửa đổi một số dữ liệu của lần này sau khi nó được ghi lại hoặc đã xóa bản ghi lưu trữ trước đó (kiểm tra dòng đó với # tồn tại trước đó). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Bản ghi nhật ký lưu trữ là hợp lệ. Dữ liệu trên dòng này không được sửa đổi và mục nhập theo sau. OkCheckFingerprintValidityButChainIsKo=Nhật ký lưu trữ có vẻ hợp lệ so với trước đó nhưng chuỗi đã bị hỏng trước đó. AddedByAuthority=Lưu trữ vào ủy quyền từ xa diff --git a/htdocs/langs/vi_VN/cashdesk.lang b/htdocs/langs/vi_VN/cashdesk.lang index 3e7a9e7d3bd..ccfe1669ae1 100644 --- a/htdocs/langs/vi_VN/cashdesk.lang +++ b/htdocs/langs/vi_VN/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=Thêm bài viết này RestartSelling=Quay trở lại trên bán SellFinished=Hoàn thành bán hàng PrintTicket=In vé +SendTicket=Send ticket NoProductFound=Không có bài viết được tìm thấy ProductFound=sản phẩm tìm thấy NoArticle=Không có bài viết @@ -48,6 +49,7 @@ Footer=Chân trang AmountAtEndOfPeriod=Số tiền cuối kỳ (ngày, tháng hoặc năm) TheoricalAmount=Số lượng lý thuyết RealAmount=Số tiền thực tế +CashFence=Cash fence CashFenceDone=Rào cản tiền mặt được thực hiện trong kỳ NbOfInvoices=Nb của hoá đơn Paymentnumpad=Loại Bảng để nhập thanh toán @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS cần các danh mục sản phẩm để hoạt OrderNotes=Ghi chú đơn hàng CashDeskBankAccountFor=Tài khoản mặc định được sử dụng để thanh toán trong NoPaimementModesDefined=Không có chế độ thanh toán được xác định trong cấu hình TakePOS -TicketVatGrouped=Nhóm VAT theo tỷ lệ trong vé -AutoPrintTickets=Tự động in vé +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Cho phép tính năng cho Bar hoặc Restaurant ConfirmDeletionOfThisPOSSale=Bạn có xác nhận việc xóa bán hàng hiện tại này không? ConfirmDiscardOfThisPOSSale=Bạn có muốn loại bỏ bán hàng hiện tại này? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=Trình duyệt BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/vi_VN/companies.lang b/htdocs/langs/vi_VN/companies.lang index 63225bdbd93..f5be2da418e 100644 --- a/htdocs/langs/vi_VN/companies.lang +++ b/htdocs/langs/vi_VN/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=Công ty "%s" đã xóa khỏi cơ sở dữ liệu. ListOfContacts=Danh sách liên lạc/địa chỉ ListOfContactsAddresses=Danh sách liên lạc/địa chỉ ListOfThirdParties=Danh sách các bên thứ ba -ShowCompany=Hiển thị bên thứ ba ShowContact=Hiện liên lạc ContactsAllShort=Tất cả (không lọc) ContactType=Loại liên lạc @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=Tên đại diện bán hàng SaleRepresentativeLastname=Họ của đại diện bán hàng ErrorThirdpartiesMerge=Có lỗi khi xóa các bên thứ ba. Vui lòng kiểm tra nhật ký. Những thay đổi đã được hoàn nguyên. NewCustomerSupplierCodeProposed=Mã khách hàng hoặc nhà cung cấp đã được sử dụng, một mã mới được đề xuất +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Loại thanh toán - Khách hàng PaymentTermsCustomer=Điều khoản thanh toán - Khách hàng diff --git a/htdocs/langs/vi_VN/compta.lang b/htdocs/langs/vi_VN/compta.lang index c6b810a1adb..7ac83c9969b 100644 --- a/htdocs/langs/vi_VN/compta.lang +++ b/htdocs/langs/vi_VN/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=Xem %s Phân tích thanh toán %s để biết tính SeeReportInDueDebtMode=Xem %s phân tích hóa đơn%s để biết cách tính toán dựa trên hóa đơn đã ghi ngay cả khi chúng chưa được hạch toán vào Sổ cái. SeeReportInBookkeepingMode=Xem <b>%s Sổ sách báo cáo %s</b> để biết tính toán trên <b>bảng Sổ sách kế toán</b> RulesAmountWithTaxIncluded=- Các khoản hiển thị là với tất cả các loại thuế bao gồm -RulesResultDue=- Nó bao gồm hóa đơn chưa thanh toán, chi phí, VAT, đóng góp cho dù chúng có được thanh toán hay không. Nó cũng bao gồm tiền lương được trả. <br> - Nó được dựa trên ngày xác nhận của hóa đơn và VAT và vào ngày đáo hạn cho các chi phí. Đối với mức lương được xác định với mô-đun Lương, giá trị ngày thanh toán được sử dụng. +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- Nó bao gồm các khoản thanh toán thực tế được thực hiện trên hóa đơn, chi phí, VAT và tiền lương. <br> - Nó dựa trên ngày thanh toán của hóa đơn, chi phí, VAT và tiền lương. Ngày quyên góp. -RulesCADue=- Nó bao gồm hóa đơn đáo hạn của khách hàng cho dù họ có được thanh toán hay không. <br> - Nó được dựa trên ngày xác nhận của các hóa đơn này. <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- Nó bao gồm tất cả các khoản thanh toán hiệu quả của hóa đơn nhận được từ khách hàng. <br> - Nó được dựa trên ngày thanh toán của các hóa đơn này <br> RulesCATotalSaleJournal=Nó bao gồm tất cả các hạn mức tín dụng từ nhật ký Bán hàng. RulesAmountOnInOutBookkeepingRecord=Nó bao gồm bản ghi trong Sổ cái của bạn với các tài khoản kế toán có nhóm "CHI PHÍ" hoặc "THU NHẬP" @@ -255,3 +255,10 @@ TurnoverbyVatrate=Doanh thu được lập hóa đơn theo thuế suất bán h TurnoverCollectedbyVatrate=Doanh thu được thu thập theo thuế suất bán hàng PurchasebyVatrate=Mua theo thuế suất bán hàng LabelToShow=Nhãn ngắn +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/vi_VN/errors.lang b/htdocs/langs/vi_VN/errors.lang index 58d85ee7758..fb14daeeb4d 100644 --- a/htdocs/langs/vi_VN/errors.lang +++ b/htdocs/langs/vi_VN/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=File không nhận được hoàn toàn bởi máy chủ. ErrorNoTmpDir=Directy tạm thời% s không tồn tại. ErrorUploadBlockedByAddon=Tải bị chặn bởi một plugin PHP / Apache. ErrorFileSizeTooLarge=Kích thước quá lớn. +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Kích thước quá dài cho kiểu int (tối đa số% s) ErrorSizeTooLongForVarcharType=Kích thước quá dài cho kiểu chuỗi (ký tự tối đa% s) ErrorNoValueForSelectType=Xin vui lòng điền giá trị so với danh sách lựa chọn @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Tham số PHP của bạn upload_max_filesize (%s) cao hơn tham số PHP post_max_size (%s). Đây không phải là một thiết lập phù hợp. WarningPasswordSetWithNoAccount=Một mật khẩu đã được đặt cho thành viên này. Tuy nhiên, không có tài khoản người dùng nào được tạo. Vì vậy, mật khẩu này được lưu trữ nhưng không thể được sử dụng để đăng nhập vào Dolibarr. Nó có thể được sử dụng bởi một mô-đun / giao diện bên ngoài nhưng nếu bạn không cần xác định bất kỳ thông tin đăng nhập hay mật khẩu nào cho thành viên, bạn có thể tắt tùy chọn "Quản lý đăng nhập cho từng thành viên" từ thiết lập mô-đun Thành viên. Nếu bạn cần quản lý thông tin đăng nhập nhưng không cần bất kỳ mật khẩu nào, bạn có thể để trống trường này để tránh cảnh báo này. Lưu ý: Email cũng có thể được sử dụng làm thông tin đăng nhập nếu thành viên được liên kết với người dùng. diff --git a/htdocs/langs/vi_VN/install.lang b/htdocs/langs/vi_VN/install.lang index 2a187d73221..2653ffb9df1 100644 --- a/htdocs/langs/vi_VN/install.lang +++ b/htdocs/langs/vi_VN/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=PHP này hỗ trợ Curl. PHPSupportCalendar=PHP này hỗ trợ các lịch phần mở rộng. PHPSupportUTF8=PHP này hỗ trợ các chức năng UTF8. PHPSupportIntl=PHP này hỗ trợ các chức năng Intl. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=PHP bộ nhớ phiên tối đa của bạn được thiết lập <b>%s</b>. Điều này là đủ. PHPMemoryTooLow=Bộ nhớ phiên tối đa PHP của bạn được đặt thành <b>%s</b> byte. Điều này là quá thấp. Thay đổi <b>php.ini</b> của bạn để đặt tham số <b>memory_limit</b> thành ít nhất <b>%s</b> byte. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=Cài đặt PHP của bạn không hỗ trợ Curl. ErrorPHPDoesNotSupportCalendar=Cài đặt PHP của bạn không hỗ trợ các phần mở rộng lịch php. ErrorPHPDoesNotSupportUTF8=Cài đặt PHP của bạn không hỗ trợ các chức năng UTF8. Dolibarr không thể hoạt động chính xác. Giải quyết điều này trước khi cài đặt Dolibarr. ErrorPHPDoesNotSupportIntl=Cài đặt PHP của bạn không hỗ trợ các chức năng Intl. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Thư mục %s không tồn tại. ErrorGoBackAndCorrectParameters=Quay lại và kiểm tra / sửa các tham số. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=Ứng dụng đã cố gắng tự nâng cấp, n YouTryInstallDisabledByFileLock=Ứng dụng đã cố gắng tự nâng cấp, nhưng các trang cài đặt / nâng cấp đã bị vô hiệu hóa để bảo mật (bởi sự tồn tại của tệp khóa <strong>install.lock</strong> trong thư mục tài liệu dolibarr). <br> ClickHereToGoToApp=Nhấn vào đây để đi đến ứng dụng của bạn ClickOnLinkOrRemoveManualy=Nhấp vào liên kết sau. Nếu bạn luôn thấy cùng trang này, bạn phải xóa / đổi tên tệp install.lock trong thư mục tài liệu. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/vi_VN/link.lang b/htdocs/langs/vi_VN/link.lang index d47c82a361d..bacbeaf98e2 100644 --- a/htdocs/langs/vi_VN/link.lang +++ b/htdocs/langs/vi_VN/link.lang @@ -8,3 +8,4 @@ LinkRemoved=Liên kết %s đã bị xóa ErrorFailedToDeleteLink= Không thể xóa liên kết ' <b>%s</b> ' ErrorFailedToUpdateLink= Không thể cập nhật liên kết ' <b>%s</b> ' URLToLink=URL để liên kết +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/vi_VN/mails.lang b/htdocs/langs/vi_VN/mails.lang index 7a8f92ec982..2ebdc7e1185 100644 --- a/htdocs/langs/vi_VN/mails.lang +++ b/htdocs/langs/vi_VN/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=Không có liên lạc/địa chỉ với một danh NoContactLinkedToThirdpartieWithCategoryFound=Không có liên lạc/địa chỉ với một danh mục được tìm thấy OutGoingEmailSetup=Thiết lập email đi InGoingEmailSetup=Thiết lập email đến -OutGoingEmailSetupForEmailing=Thiết lập email gửi đi (để gửi email hàng loạt) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Thiết lập email gửi đi mặc định Information=Thông tin ContactsWithThirdpartyFilter=Danh bạ với bộ lọc của bên thứ ba diff --git a/htdocs/langs/vi_VN/main.lang b/htdocs/langs/vi_VN/main.lang index b8c2d319e12..ab5388d128d 100644 --- a/htdocs/langs/vi_VN/main.lang +++ b/htdocs/langs/vi_VN/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Lưu và ở lại SaveAndNew=Lưu và tạo mới TestConnection=Kiểm tra kết nối ToClone=Nhân bản +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Chọn dữ liệu bạn muốn sao chép: NoCloneOptionsSpecified=Không có dữ liệu nhân bản được xác định. Of=của @@ -829,6 +830,8 @@ Gender=Giới tính Genderman=Nam Genderwoman=Nữ ViewList=Danh sách xem +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Bắt buộc Hello=Xin chào GoodBye=Tạm biệt @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/vi_VN/other.lang b/htdocs/langs/vi_VN/other.lang index b353e8230d4..bb29fddc9fe 100644 --- a/htdocs/langs/vi_VN/other.lang +++ b/htdocs/langs/vi_VN/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Đơn đặt hàng bán đã được xác nhận Notify_ORDER_SENTBYMAIL=Đơn đặt hàng bán được gửi email Notify_ORDER_SUPPLIER_SENTBYMAIL=Đơn đặt hàng mua được gửi qua email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=URL của trang WEBSITE_TITLE=Tiêu đề WEBSITE_DESCRIPTION=Mô tả WEBSITE_IMAGE=Hình ảnh -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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=Từ khóa LinesToImport=Dòng để nhập diff --git a/htdocs/langs/vi_VN/products.lang b/htdocs/langs/vi_VN/products.lang index 5759b620e26..1e367dc6db9 100644 --- a/htdocs/langs/vi_VN/products.lang +++ b/htdocs/langs/vi_VN/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=Công cụ này cập nhật thuế suất VAT được MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=Trang này có thể được sử dụng để khởi tạo một mã vạch trên các đối tượng mà không có mã vạch xác định. Kiểm tra xem trước đó thiết lập các mô-đun mã vạch hoàn tất chưa. ProductAccountancyBuyCode=Mã tài khoản kế toán (thu mua) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=Mã tài khoản kế toán (bán) ProductAccountancySellIntraCode=Mã tài khoản kế toán (bán nội bộ) ProductAccountancySellExportCode=Mã tài khoản kế toán (xuất khẩu) @@ -165,7 +167,7 @@ SuppliersPrices=Giá nhà cung cấp SuppliersPricesOfProductsOrServices=Giá nhà cung cấp (của sản phẩm hoặc dịch vụ) CustomCode=Hải quan / Hàng hóa / HS code CountryOrigin=Nước xuất xứ -Nature=Bản chất của sản phẩm (nguyên liệu/ thành phẩm) +Nature=Nature of product (material/finished) ShortLabel=Nhãn ngắn Unit=Đơn vị p=u. diff --git a/htdocs/langs/vi_VN/projects.lang b/htdocs/langs/vi_VN/projects.lang index de89d17291b..81bec314452 100644 --- a/htdocs/langs/vi_VN/projects.lang +++ b/htdocs/langs/vi_VN/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=cái mà tôi liên kết với dự án Time=Thời gian ListOfTasks=Danh sách nhiệm vụ GoToListOfTimeConsumed=Tới danh sách thời gian tiêu thụ -GoToListOfTasks=Hiển thị dưới dạng danh sách -GoToGanttView=hiển thị dưới dạng Gantt GanttView=Chế độ xem Gantt ListProposalsAssociatedProject=Danh sách các đề xuất thương mại liên quan đến dự án ListOrdersAssociatedProject=Danh sách các đơn đặt hàng bán liên quan đến dự án @@ -188,7 +186,7 @@ PlannedWorkload=Khối lượng công việc dự tính PlannedWorkloadShort=Khối lượng công việc ProjectReferers=Những thứ có liên quan ProjectMustBeValidatedFirst=Dự án phải được xác nhận trước -FirstAddRessourceToAllocateTime=Chỉ định tài nguyên người dùng cho nhiệm vụ để phân bổ thời gian +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=Đầu vào mỗi ngày InputPerWeek=Đầu vào mỗi tuần InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=Dự án sửa đổi %s mới nhất OtherFilteredTasks=Các nhiệm vụ được lọc khác NoAssignedTasks=Không tìm thấy nhiệm vụ được giao (chỉ định dự án / nhiệm vụ cho người dùng hiện tại từ hộp chọn trên cùng để nhập thời gian vào nó) ThirdPartyRequiredToGenerateInvoice=Một bên thứ ba phải được xác định trong dự án để có thể lập hóa đơn. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=Cho phép người dùng nhận xét về các nhiệm vụ AllowCommentOnProject=Cho phép người dùng nhận xét về các dự án @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=Hóa đơn mới OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/vi_VN/receiptprinter.lang b/htdocs/langs/vi_VN/receiptprinter.lang index a7bf9271929..1e516ff0f89 100644 --- a/htdocs/langs/vi_VN/receiptprinter.lang +++ b/htdocs/langs/vi_VN/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=Máy in giả CONNECTOR_NETWORK_PRINT=Máy in mạng CONNECTOR_FILE_PRINT=Máy in cục bộ CONNECTOR_WINDOWS_PRINT=Máy in Windows cục bộ +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=Máy in giả để kiểm tra, không làm gì cả CONNECTOR_NETWORK_PRINT_HELP=10.xxx:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=Hồ sơ mặc định PROFILE_SIMPLE=Hồ sơ đơn giản PROFILE_EPOSTEP=Hồ sơ Epose Tep @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=Hóa đơn tham chiếu +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=ID VAT Nội bộ Cộng đồng +DOL_VALUE_MYSOC_CAPITAL=Vốn +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/vi_VN/stripe.lang b/htdocs/langs/vi_VN/stripe.lang index 0e1d2c75412..5d18304fdef 100644 --- a/htdocs/langs/vi_VN/stripe.lang +++ b/htdocs/langs/vi_VN/stripe.lang @@ -32,6 +32,7 @@ VendorName=Tên nhà cung cấp CSSUrlForPaymentForm=CSS style sheet Url cho hình thức thanh toán NewStripePaymentReceived=Đã nhận thanh toán Stripe mới NewStripePaymentFailed=Thanh toán Stripe mới đã thử nhưng không thành công +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=Khóa kiểm tra bí mật STRIPE_TEST_PUBLISHABLE_KEY=Khóa kiểm tra có thể xuất bản STRIPE_TEST_WEBHOOK_KEY=Khóa kiểm tra webhook @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Liên kết để thiết lập Stripe WebHook để ToOfferALinkForLiveWebhook=Liên kết để thiết lập Stripe WebHook để gọi IPN (chế độ trực tiếp) PaymentWillBeRecordedForNextPeriod=Thanh toán sẽ được ghi lại cho giai đoạn tiếp theo. ClickHereToTryAgain=<a href="%s">Bấm vào đây để thử lại...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/vi_VN/users.lang b/htdocs/langs/vi_VN/users.lang index 33e533443af..97c911d59d0 100644 --- a/htdocs/langs/vi_VN/users.lang +++ b/htdocs/langs/vi_VN/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Người dùng và các tính chất của họ DomainUser=Domain người dùng %s Reactivate=Kích hoạt lại CreateInternalUserDesc=Biểu mẫu này cho phép bạn tạo một người dùng nội bộ trong công ty/ tổ chức của bạn. Để tạo người dùng bên ngoài (khách hàng, nhà cung cấp, v.v.), hãy sử dụng nút 'Tạo Người dùng Dolibarr' từ thẻ liên lạc của bên thứ ba đó. -InternalExternalDesc=Người dùng <b>nội bộ</b> là người dùng là một phần của công ty/ tổ chức của bạn. <br> Một người dùng <b>bên ngoài</b> là một khách hàng, nhà cung cấp hoặc người khác. <br><br> Trong cả hai trường hợp, quyền để phân quyền trên Dolibarr, người dùng bên ngoài cũng có thể có trình quản lý menu khác với người dùng nội bộ (Xem Trang chủ - Cài đặt - Hiển thị) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Quyền được cấp bởi vì được thừa hưởng từ một trong những nhóm của người dùng. Inherited=Được thừa kế UserWillBeInternalUser=Người dùng tạo ra sẽ là một người dùng nội bộ (vì không liên kết với một bên thứ ba cụ thể) @@ -113,3 +113,5 @@ CantDisableYourself=Bạn không thể vô hiệu hóa hồ sơ người dùng c ForceUserExpenseValidator=Thúc phê duyệt báo cáo chi phí ForceUserHolidayValidator=Thúc phê duyệt báo cáo chi phí ValidatorIsSupervisorByDefault=Theo mặc định, việc xác nhận là người giám sát của người dùng. Giữ trống để giữ hành vi này. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/vi_VN/website.lang b/htdocs/langs/vi_VN/website.lang index 68db7fce100..6c3e12df2e3 100644 --- a/htdocs/langs/vi_VN/website.lang +++ b/htdocs/langs/vi_VN/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=Xem trang trong tab mới SetAsHomePage=Đặt làm trang chủ RealURL=URL thật ViewWebsiteInProduction=Xem trang web bằng URL nhà -SetHereVirtualHost=<u>Sử dụng với Apache / NGinx / ...</u> <br> Nếu bạn có thể tạo, trên máy chủ web của bạn (Apache, Nginx, ...), Máy chủ ảo chuyên dụng có bật PHP và thư mục Root trên <br> <strong>%s</strong> <br> sau đó đặt tên của máy chủ ảo mà bạn đã tạo trong các thuộc tính của trang web, do đó, việc xem trước cũng có thể được thực hiện bằng cách sử dụng quyền truy cập máy chủ web chuyên dụng này thay vì máy chủ Dolibarr nội bộ. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Sử dụng với máy chủ nhúng PHP</u> <br> Trên môi trường phát triển, bạn có thể muốn kiểm tra trang web với máy chủ web nhúng PHP (yêu cầu PHP 5.5) bằng cách chạy <br> <strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Chạy trang web của bạn với một nhà cung cấp Dolibarr Hosting khác</u> <br> Nếu bạn không có máy chủ web như Apache hoặc NGinx có sẵn trên internet, bạn có thể xuất và nhập trang web của mình vào một phiên bản Dolibarr khác được cung cấp bởi một nhà cung cấp dịch vụ lưu trữ Dolibarr khác cung cấp tích hợp đầy đủ với mô-đun Trang web. Bạn có thể tìm thấy danh sách một số nhà cung cấp dịch vụ lưu trữ Dolibarr trên <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=Kiểm tra xem máy chủ ảo có quyền <strong>%s</strong> trên các tệp vào <br> <strong>%s</strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Xin lỗi, trang web này hiện đang tắt. Vui WEBSITE_USE_WEBSITE_ACCOUNTS=Kích hoạt bảng tài khoản trang web WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Cho phép bảng để lưu trữ tài khoản trang web (đăng nhập / mật khẩu) cho mỗi trang web / bên thứ ba YouMustDefineTheHomePage=Trước tiên bạn phải xác định Trang chủ mặc định -OnlyEditionOfSourceForGrabbedContentFuture=Cảnh báo: Tạo trang web bằng cách nhập trang web bên ngoài được dành riêng cho người dùng có kinh nghiệm. Tùy thuộc vào độ phức tạp của trang nguồn, kết quả nhập có thể khác với trang gốc. Ngoài ra, nếu trang nguồn sử dụng các kiểu CSS phổ biến hoặc javascript xung đột, nó có thể phá vỡ giao diện hoặc tính năng của trình chỉnh sửa Trang web khi làm việc trên trang này. Phương pháp này là một cách nhanh hơn để tạo một trang nhưng bạn nên tạo trang mới của mình từ đầu hoặc từ một mẫu trang được đề xuất. <br> Cũng lưu ý rằng có thể chỉnh sửa nguồn HTML khi nội dung trang đã được khởi tạo bằng cách lấy nó từ một trang bên ngoài (trình chỉnh sửa "Trực tuyến" sẽ KHÔNG khả dụng) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=Chỉ có phiên bản nguồn HTML khi nội dung được lấy từ một trang bên ngoài GrabImagesInto=Lấy hình ảnh cũng được tìm thấy trong css và trang. ImagesShouldBeSavedInto=Hình ảnh nên được lưu vào thư mục @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=Để thực hành SEO tốt, hãy sử dụng văn b MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/zh_CN/admin.lang b/htdocs/langs/zh_CN/admin.lang index 5afa44d00c2..1c4c03260c0 100644 --- a/htdocs/langs/zh_CN/admin.lang +++ b/htdocs/langs/zh_CN/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the NoMaxSizeByPHPLimit=注:您的 PHP 配置参数中没有设置限制 MaxSizeForUploadedFiles=上传文件的最大尺寸(0表示不允许上传) UseCaptchaCode=登陆页面启用图形验证码 -AntiVirusCommand= 防毒命令的完整路径 -AntiVirusCommandExample= ClamWin 示例:c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>ClamAv 实例:/usr/bin/clamscan +AntiVirusCommand=防毒命令的完整路径 +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan<br>Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= 更多命令行参数 -AntiVirusParamExample= ClamWin的示例: - database =“C:\\ Program Files(x86)\\ ClamWin \\ lib” +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass<br>Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=会计模块设置 UserSetup=用户管理设置 MultiCurrencySetup=多币种设置 @@ -199,7 +199,7 @@ FeatureDisabledInDemo=功能在演示版中已禁用 FeatureAvailableOnlyOnStable=功能仅适用于官方稳定版本 BoxesDesc=资讯框是一些页面中显示信息的屏幕区域。你可以选择目标页面并点击“启用”或垃圾桶按钮来显示或禁用这些信息域。 OnlyActiveElementsAreShown=仅显示 <a href="%s">已启用模块</a> 的元素。 -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=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 <span class="small valignmiddle">%s</span> of each module to enable or disable a module/application. ModulesMarketPlaceDesc=你能在外部互联网查找到并下载更多的功能模块... 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 <strong>%s</strong>. ModulesMarketPlaces=更多模块... @@ -212,6 +212,7 @@ CompatibleUpTo=与版本%s兼容 NotCompatible=此模块似乎与您的Dolibarr %s(Min %s - Max %s)不兼容。 CompatibleAfterUpdate=此模块需要更新Dolibarr %s(Min %s - Max %s)。 SeeInMarkerPlace=在市场上看到 +SeeSetupOfModule=参见模块设置 %s Updated=已更新 Nouveauté=新颖 AchatTelechargement=购买/下载 @@ -221,6 +222,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=参考网址查找更多模块... DevelopYourModuleDesc=一些开发自己模块的解决方案...... URL=网址 +RelativeURL=Relative URL BoxesAvailable=插件可用 BoxesActivated=插件已启用 ActivateOn=启用 @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=不填表示使用默认值 DefaultLink=默认链接 SetAsDefault=设为默认 ValueOverwrittenByUserSetup=警告,此设置可能被用户设置所覆盖(用户可以设置各自的网络电话链接) -ExternalModule=附加模块 - 安装于 %s 目录下 +ExternalModule=External module +InstalledInto=Installed into directory %s BarcodeInitForthird-parties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=产品或服务条码批量初始化或重置 CurrentlyNWithoutBarCode=目前,您在<strong> %s </ strong> %s上没有定义条形码时有<strong> %s </ strong>记录。 @@ -947,7 +950,7 @@ DictionaryCanton=States/Provinces DictionaryRegion=地区 DictionaryCountry=国家 DictionaryCurrency=货币 -DictionaryCivility=Title of civility +DictionaryCivility=Honorific titles DictionaryActions=活动议程类型 DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=增值税率和消费税率 @@ -988,6 +991,7 @@ VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for ca VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax LTRate=税率 LocalTax1IsNotUsed=不使用第二税率 LocalTax1IsUsedDesc=Use a second type of tax (other than first one) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=默认情况下,建议IRPF为0。规则结束。 LocalTax2IsUsedExampleES=在西班牙,提供服务的自由职业者和独立专业人士以及选择模块税制的公司。 LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=地税报表 CalcLocaltax1=销售 - 采购 CalcLocaltax1Desc=地税报表已经分别计算了在销售和采购时所产生的不同税。 @@ -1018,6 +1025,7 @@ CalcLocaltax2=采购 CalcLocaltax2Desc=地税报表是采购总计 CalcLocaltax3=销售 CalcLocaltax3Desc=地税报表是销售总计 +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax LabelUsedByDefault=如果代码没有翻译则默认使用以下标签 LabelOnDocuments=文档中的标签 LabelOrTranslationKey=Label or translation key @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): -SetupDescription3=<a href="%s">%s -> %s</a><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4=<a href="%s">%s -> %s</a><br>This software is a suite 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. +SetupDescription3=<a href="%s">%s -> %s</a><br><br>Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=<a href="%s">%s -> %s</a><br><br>This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=安全稽核事件 Audit=安全稽核 @@ -1128,7 +1136,7 @@ LogEventDesc=Enable logging for specific security events. Administrators the log AreaForAdminOnly=此功能仅供<b>管理员用户</b> 使用。 SystemInfoDesc=系统信息指以只读方式显示的其它技术信息,只对系统管理员可见。 SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" button at the bottom of the page. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here. @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=用户模块设置 UserMailRequired=Email required to create a new user +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### HRMSetup=人力资源管理模块设置 ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=发票文档模板 BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type PaymentsPDFModules=付款文件模型 ForceInvoiceDate=强制发票中的日期为确认日期 -SuggestedPaymentModesIfNotDefinedInInvoice=如果发票中未设置付款方式,设置一个默认值付款方式。 +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=发票中的额外说明文本 @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=Vendor payments setup PropalSetup=报价单模块设置 ProposalsNumberingModules=报价单编号模块 ProposalsPDFModules=报价单文档模板 -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined for proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal FreeLegalTextOnProposal=报价单中的额外说明文本 WatermarkOnDraftProposal=为商业计划书草案添加水印(无则留空) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=询问银行账户 @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=要求仓库来源订购 ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=询问采购订单的银行帐户目的地 ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order OrdersSetup=Sales Orders management setup OrdersNumberingModules=订单编号模块 OrdersModelModule=订单文档模板 @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatical ModuleActivated=Module %s is activated and slows the interface EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export +ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than LargerThan=Larger than @@ -1979,5 +1991,7 @@ MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some text title in your PDF duplicated in 2 different languages in the same generate PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets diff --git a/htdocs/langs/zh_CN/bills.lang b/htdocs/langs/zh_CN/bills.lang index 866a4c523d0..36bcc71b879 100644 --- a/htdocs/langs/zh_CN/bills.lang +++ b/htdocs/langs/zh_CN/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=Vendors invoices SupplierBill=Vendor invoice SupplierBills=供应商发票 Payment=付款 -PaymentBack=付款 -CustomerInvoicePaymentBack=付款 +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund Payments=付款 PaymentsBack=Refunds paymentInInvoiceCurrency=在发票货币 PaidBack=已退款 DeletePayment=删除付款 ConfirmDeletePayment=您确定要删除此付款吗? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=收到的付款 @@ -219,7 +219,10 @@ ShowInvoiceSituation=显示情况发票 UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=To pay on %s toPayOn=to pay on %s RetainedWarranty=Retained Warranty @@ -509,11 +512,11 @@ ToMakePayment=支付 ToMakePaymentBack=支付 ListOfYourUnpaidInvoices=未付发票清单 NoteListOfYourUnpaidInvoices=注:此清单只包含链接到指派给您作为销售代表的合作方发票。 -RevenueStamp=印花税票 +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=您必须先创建标准发票并将其转换为“模板”以创建新模板发票 -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=发票PDF模板Crevette。情况发票的完整发票模板 TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 @@ -575,3 +578,4 @@ AutoFillDateTo=使用下一个发票日期设置服务项目的结束日期 AutoFillDateToShort=设置结束日期 MaxNumberOfGenerationReached=最大数量。到达 BILL_DELETEInDolibarr=发票已删除 +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted diff --git a/htdocs/langs/zh_CN/blockedlog.lang b/htdocs/langs/zh_CN/blockedlog.lang index 7b122b28452..ce7718f76c4 100644 --- a/htdocs/langs/zh_CN/blockedlog.lang +++ b/htdocs/langs/zh_CN/blockedlog.lang @@ -8,7 +8,7 @@ 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 entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority diff --git a/htdocs/langs/zh_CN/cashdesk.lang b/htdocs/langs/zh_CN/cashdesk.lang index c2fd056546a..92be0b9ad8a 100644 --- a/htdocs/langs/zh_CN/cashdesk.lang +++ b/htdocs/langs/zh_CN/cashdesk.lang @@ -16,6 +16,7 @@ AddThisArticle=添加项目 RestartSelling=回去就卖 SellFinished=销售完成 PrintTicket=打印零售记录 +SendTicket=Send ticket NoProductFound=空空如也——没有找到项目 ProductFound=找到产品 NoArticle=没有项目 @@ -48,6 +49,7 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount +CashFence=Cash fence CashFenceDone=Cash fence done for the period NbOfInvoices=发票数 Paymentnumpad=Type of Pad to enter payment @@ -58,8 +60,9 @@ TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets -AutoPrintTickets=Automatically print tickets +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? @@ -87,7 +90,19 @@ HeadBar=Head Bar SortProductField=Field for sorting products Browser=浏览器 BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use payment icon on numpad +CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/zh_CN/companies.lang b/htdocs/langs/zh_CN/companies.lang index 8f920f891d1..3491674f194 100644 --- a/htdocs/langs/zh_CN/companies.lang +++ b/htdocs/langs/zh_CN/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=公司“%的”从数据库中删除。 ListOfContacts=联系人列表 ListOfContactsAddresses=联系人列表 ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party ShowContact=显示联系人 ContactsAllShort=全部 (不筛选) ContactType=联系人类型 @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=销售代表的名字 SaleRepresentativeLastname=销售代表的姓氏 ErrorThirdpartiesMerge=删除第三方时出错。请检查日志。变更已被恢复。 NewCustomerSupplierCodeProposed=Customer or Vendor code already used, a new code is suggested +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=Payment Type - Customer PaymentTermsCustomer=Payment Terms - Customer diff --git a/htdocs/langs/zh_CN/compta.lang b/htdocs/langs/zh_CN/compta.lang index af8ca4a19e6..a861221bd87 100644 --- a/htdocs/langs/zh_CN/compta.lang +++ b/htdocs/langs/zh_CN/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=有关实际付款的计算,请参阅%s of payments SeeReportInDueDebtMode=请参阅%s对invoices%s的分析,以便根据已知的记录发票进行计算,即使它们尚未计入分类帐。 SeeReportInBookkeepingMode=有关<b>簿记分类帐表</b>的计算,请参阅<b> %sBookeeping report%s </b> RulesAmountWithTaxIncluded=- 所示金额均含税 -RulesResultDue=- 它包括未付的发票,费用,增值税和捐款。还包括带薪工资。<br> - 它基于发票和增值税的确认日期以及费用到期日。对于使用Salary模块定义的工资,使用付款的起息日期。 +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- 它包括发票,费用,增值税和工资的实际付款。 <br> - 它基于发票,费用,增值税和工资的付款日期。捐赠的捐赠日期。 -RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=- It includes all the effective payments of invoices received from customers.<br>- It is based on the payment date of these invoices<br> RulesCATotalSaleJournal=它包括Sale日常报表中的所有信用额度。 RulesAmountOnInOutBookkeepingRecord=它包括在您的账目中记录具有“EXPENSE”或“INCOME”组的会计科目 @@ -255,3 +255,10 @@ TurnoverbyVatrate=营业税按销售税率开具 TurnoverCollectedbyVatrate=按销售税率收取的营业额 PurchasebyVatrate=按销售税率购买 LabelToShow=标签别名 +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/zh_CN/errors.lang b/htdocs/langs/zh_CN/errors.lang index 2205f13963c..ba3f2328466 100644 --- a/htdocs/langs/zh_CN/errors.lang +++ b/htdocs/langs/zh_CN/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=文件未收到了完全由服务器。 ErrorNoTmpDir=临时的说明书%s不存在。 ErrorUploadBlockedByAddon=上传封锁一个PHP / Apache的插件。 ErrorFileSizeTooLarge=文件大小是太大。 +ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=尺寸int类型的长(%s最大位数) ErrorSizeTooLongForVarcharType=尺寸长字符串类型(%s字符最大) ErrorNoValueForSelectType=请填写选取列表值 @@ -234,7 +235,8 @@ ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated pa ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=为此成员设置了密码。但是,未创建任何用户帐户。因此,此密码已存储,但无法用于登录Dolibarr。它可以由外部模块/接口使用,但如果您不需要为成员定义任何登录名或密码,则可以从成员模块设置中禁用“管理每个成员的登录名”选项。如果您需要管理登录但不需要任何密码,则可以将此字段保留为空以避免此警告。注意:如果成员链接到用户,则电子邮件也可用作登录。 diff --git a/htdocs/langs/zh_CN/install.lang b/htdocs/langs/zh_CN/install.lang index a45a7907320..49e1a98b5d8 100644 --- a/htdocs/langs/zh_CN/install.lang +++ b/htdocs/langs/zh_CN/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=This PHP supports Curl. PHPSupportCalendar=This PHP supports calendars extensions. PHPSupportUTF8=This PHP supports UTF8 functions. PHPSupportIntl=This PHP supports Intl functions. +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=This PHP supports %s functions. PHPMemoryOK=您的PHP最大session会话内存设置为<b>%s</b>。这应该够了的。 PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This is too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=你的PHP服务器不支持Curl。 ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=目录 %s 不存在。 ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the in YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br> ClickHereToGoToApp=点击此处转到您的申请 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. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/zh_CN/link.lang b/htdocs/langs/zh_CN/link.lang index 390f4fcaf81..3c715594202 100644 --- a/htdocs/langs/zh_CN/link.lang +++ b/htdocs/langs/zh_CN/link.lang @@ -8,3 +8,4 @@ LinkRemoved=链接 %s 已移除 ErrorFailedToDeleteLink= 移除链接失败 '<b>%s</b>' ErrorFailedToUpdateLink= 更新链接失败 '<b>%s</b>' URLToLink=URL网址超链接 +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/zh_CN/mails.lang b/htdocs/langs/zh_CN/mails.lang index bada6e2d7be..127a61c350d 100644 --- a/htdocs/langs/zh_CN/mails.lang +++ b/htdocs/langs/zh_CN/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=分类没有联系人/地址 NoContactLinkedToThirdpartieWithCategoryFound=分类没有联系人/地址 OutGoingEmailSetup=发件服务器设置 InGoingEmailSetup=传入电子邮件设置 -OutGoingEmailSetupForEmailing=外发电子邮件设置(用于群发电子邮件) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=默认外发电子邮件设置 Information=信息 ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/zh_CN/main.lang b/htdocs/langs/zh_CN/main.lang index 63080052051..7fd64d81418 100644 --- a/htdocs/langs/zh_CN/main.lang +++ b/htdocs/langs/zh_CN/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=测试连接 ToClone=复制 +ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=未定义可复制数据 Of=的 @@ -829,6 +830,8 @@ Gender=性别 Genderman=男人 Genderwoman=女人 ViewList=列表视图 +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=强制性 Hello=你好 GoodBye=再见 @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=Select your graph options to build a graph Measures=Measures XAxis=X-Axis YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/zh_CN/other.lang b/htdocs/langs/zh_CN/other.lang index 1d4465eb6fd..c966cf74cde 100644 --- a/htdocs/langs/zh_CN/other.lang +++ b/htdocs/langs/zh_CN/other.lang @@ -34,7 +34,7 @@ GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mo OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. AtLeastOneMeasureIsRequired=At least 1 field for measure is required AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=页面URL地址 WEBSITE_TITLE=标题 WEBSITE_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 thumbnail in a list of blog posts). Use __WEBSITEKEY__ in the path if path depends on website name. +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 thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). WEBSITE_KEYWORDS=关键字 LinesToImport=要导入的行 diff --git a/htdocs/langs/zh_CN/products.lang b/htdocs/langs/zh_CN/products.lang index 1726d77971c..54bafe71412 100644 --- a/htdocs/langs/zh_CN/products.lang +++ b/htdocs/langs/zh_CN/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=This tool updates the VAT rate defined on <b><u>ALL</u> MassBarcodeInit=批量条码初始化 MassBarcodeInitDesc=此页面可用于初始化未定义条形码的对象上的条形码。在模块条形码设置完成之前检查。 ProductAccountancyBuyCode=科目代码(采购) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=科目代码(销售) ProductAccountancySellIntraCode=Accounting code (sale intra-Community) ProductAccountancySellExportCode=科目代码(销售导出) @@ -165,7 +167,7 @@ SuppliersPrices=供应商价格 SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=海关/商品/ HS编码 CountryOrigin=产地国 -Nature=Nature of produt (material/finished) +Nature=Nature of product (material/finished) ShortLabel=标签别名 Unit=单位 p=u. diff --git a/htdocs/langs/zh_CN/projects.lang b/htdocs/langs/zh_CN/projects.lang index 477b06658ca..e797f15a346 100644 --- a/htdocs/langs/zh_CN/projects.lang +++ b/htdocs/langs/zh_CN/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=时间 ListOfTasks=任务列表 GoToListOfTimeConsumed=转到消耗的时间列表 -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=甘特视图 ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project @@ -188,7 +186,7 @@ PlannedWorkload=计划的工作量 PlannedWorkloadShort=工作量 ProjectReferers=关联物料 ProjectMustBeValidatedFirst=项目首先必须认证 -FirstAddRessourceToAllocateTime=将用户资源分配给任务以分配时间 +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=输入天数 InputPerWeek=输入周数 InputPerMonth=Input per month @@ -240,6 +238,7 @@ LatestModifiedProjects=最新的%s编辑过的项目 OtherFilteredTasks=其他过滤任务 NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you # Comments trans AllowCommentOnTask=允许用户对任务发表评论 AllowCommentOnProject=允许用户对项目发表评论 @@ -265,3 +264,4 @@ InvoiceToUse=Draft invoice to use NewInvoice=新建发票 OneLinePerTask=One line per task OneLinePerPeriod=One line per period +RefTaskParent=Ref. Parent Task diff --git a/htdocs/langs/zh_CN/receiptprinter.lang b/htdocs/langs/zh_CN/receiptprinter.lang index d475890c290..f52af233aac 100644 --- a/htdocs/langs/zh_CN/receiptprinter.lang +++ b/htdocs/langs/zh_CN/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=虚拟打印机 CONNECTOR_NETWORK_PRINT=网络打印机 CONNECTOR_FILE_PRINT=本地打印机 CONNECTOR_WINDOWS_PRINT=本地Windows打印机 +CONNECTOR_CUPS_PRINT=Cups Printer CONNECTOR_DUMMY_HELP=伪造测试打印,啥也不做的 CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L PROFILE_DEFAULT=默认配置 PROFILE_SIMPLE=简单配置 PROFILE_EPOSTEP=Epos Tep配置 @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=Invoice month in letters DOL_VALUE_MONTH=Invoice month DOL_VALUE_DAY=Invoice day DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=发票号 +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID +DOL_VALUE_MYSOC_CAPITAL=注册资金 +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/zh_CN/stripe.lang b/htdocs/langs/zh_CN/stripe.lang index 3ed146a77a1..31131a72634 100644 --- a/htdocs/langs/zh_CN/stripe.lang +++ b/htdocs/langs/zh_CN/stripe.lang @@ -32,6 +32,7 @@ VendorName=供应商名称 CSSUrlForPaymentForm=付款方式的CSS样式表的URL NewStripePaymentReceived=收到新Stripe付款 NewStripePaymentFailed=新Stripe付款尝试但失败了 +FailedToChargeCard=Failed to charge card STRIPE_TEST_SECRET_KEY=秘密测试密钥 STRIPE_TEST_PUBLISHABLE_KEY=可发布的测试密钥 STRIPE_TEST_WEBHOOK_KEY=Webhook测试密钥 @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=<a href="%s">Click here to try again...</a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authenticatin rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/zh_CN/users.lang b/htdocs/langs/zh_CN/users.lang index 366bb926d9e..d84917431eb 100644 --- a/htdocs/langs/zh_CN/users.lang +++ b/htdocs/langs/zh_CN/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=用户及属性 DomainUser=域用户%s Reactivate=重新激活 CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other.<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An <b>internal</b> user is a user that is part of your company/organization.<br>An <b>external</b> user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).<br><br>In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=因为从权限授予一个用户的一组继承。 Inherited=遗传 UserWillBeInternalUser=创建的用户将是一个内部用户(因为没有联系到一个特定的合伙人) @@ -110,3 +110,8 @@ UserLogged=用户登录 DateEmployment=Employment Start Date DateEmploymentEnd=Employment End Date CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/zh_CN/website.lang b/htdocs/langs/zh_CN/website.lang index 3ec26dc1c61..bf972ed8656 100644 --- a/htdocs/langs/zh_CN/website.lang +++ b/htdocs/langs/zh_CN/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=在新标签页查看页面 SetAsHomePage=设为首页 RealURL=真实URL地址 ViewWebsiteInProduction=使用主页URL网址查看网页 -SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then set the name of the virtual host you have created in the properties of web site, so the preview can be done also using this dedicated web server access instead of the internal Dolibarr server. +SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong> YouCanAlsoDeployToAnotherWHP=<u>Run your web site with another Dolibarr Hosting provider</u><br>If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on <a href="https://saas.dolibarr.org" target="_blank">https://saas.dolibarr.org</a> CheckVirtualHostPerms=还要检查虚拟主机是否有权限<strong> %s </strong>将文件转换为<br> <strong> %s </strong> @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please WEBSITE_USE_WEBSITE_ACCOUNTS=启用网站帐户表 WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party YouMustDefineTheHomePage=您必须先定义默认主页 -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that edits of HTML source will be possible when page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.<br>Note also that the inline editor may not works correclty when used on a grabbed external page. OnlyEditionOfSourceForGrabbedContent=当从外部站点获取内容时,只能使用HTML源代码 GrabImagesInto=抓住发现到css和页面的图像。 ImagesShouldBeSavedInto=图像应保存到目录中 @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers diff --git a/htdocs/langs/zh_TW/admin.lang b/htdocs/langs/zh_TW/admin.lang index bfb5d3c2862..d91885d1812 100644 --- a/htdocs/langs/zh_TW/admin.lang +++ b/htdocs/langs/zh_TW/admin.lang @@ -54,8 +54,8 @@ SetupArea=設定 UploadNewTemplate=上傳新的範本 FormToTestFileUploadForm=用於測試檔案上傳的表格(根據設定) IfModuleEnabled=註:若模組<b>%s</b>啓用時,「是的」有效。 -RemoveLock=如果存在<b>%s</b>,刪除/重命名文件,以允許使用更新/安裝工具。 -RestoreLock=以唯讀權限還原檔案<b>%s</b> ,以禁止進一步使用更新/安裝工具。 +RemoveLock=如果存在<b>%s</b>檔案,刪除/重新命名文件以允許使用更新/安裝工具。 +RestoreLock=還原檔案唯讀權限檔案<b>%s</b> ,以禁止使用更新/安裝工具。 SecuritySetup=安全設定 SecurityFilesDesc=在此定義上傳檔案相關的安全設定。 ErrorModuleRequirePHPVersion=錯誤,這個模組需要的PHP版本是 %s 或更高版本 @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=注意: <b>您的</b> PHP設定目前限制了上傳 NoMaxSizeByPHPLimit=註:你的 PHP 偏好設定為無限制 MaxSizeForUploadedFiles=上傳檔案最大值(0 為禁止上傳) UseCaptchaCode=在登入頁中的使用圖形碼 (CAPTCHA) -AntiVirusCommand= 防毒命令的完整路徑 -AntiVirusCommandExample= 例如 ClamWin 為 c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>例如 ClamAv 為 /usr/bin/clamscan +AntiVirusCommand=防毒命令的完整路徑 +AntiVirusCommandExample=ClamAv Daemon 的範例(需要 clamav-daemon): / usr / bin / clamdscan <br> ClamWin的範例(非常慢): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= 在命令列中更多的參數 -AntiVirusParamExample= 例如 ClamWin 為 --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=ClamAv Daemon 範例: --fdpass <br> ClamWin的範例: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=會計模組設定 UserSetup=用戶管理設定 MultiCurrencySetup=多國幣別設定 @@ -199,7 +199,7 @@ FeatureDisabledInDemo=DEMO模式下已禁用功能 FeatureAvailableOnlyOnStable=在官方穩定版本中可用的功能 BoxesDesc=小工具是顯示一些訊息的元件,您可以增加這些訊息來個性化某些頁面。通過選擇目標頁面並點擊“啟用”,或點擊垃圾桶將其禁用,可以選擇顯示小工具或是不顯示小工具。 OnlyActiveElementsAreShown=僅顯示<a href="%s">已啟用模組</a>中的元件。 -ModulesDesc=模組/應用程式確定軟體中可用的功能。某些模組需要在啟用模組後授予用戶權限。點擊開啟/關閉按鈕(在模組行的末尾)以啟用/禁用模組/應用程式。 +ModulesDesc=模組/應用程式决定軟體中可用的功能。某些模組需要在啟用模組後授予用戶權限。點擊開啟/關閉按鈕<span class="small valignmiddle">%s</span>以啟用/禁用模組/應用程式。 ModulesMarketPlaceDesc=您可在外部網站中找到更多可下載的模組... ModulesDeployDesc=如果檔案系統權限允許,則可以使用此工具部署外部模組。然後,該模組將在分頁<strong>%s</strong>上顯示。 ModulesMarketPlaces=找外部 app / 模組 @@ -212,6 +212,7 @@ CompatibleUpTo=與版本%s相容 NotCompatible=此模組似乎不相容您 Dolibarr %s (適用最低版本 %s - 最高版本 %s)。 CompatibleAfterUpdate=此模組需要升級您的 Dolibarr %s (最低版本%s -最高版本 %s)。 SeeInMarkerPlace=在市場可以看到 +SeeSetupOfModule=請參閱模組%s的設定 Updated=升級 Nouveauté=新奇 AchatTelechargement=購買 / 下載 @@ -221,6 +222,7 @@ DoliPartnersDesc=提供訂製開發的模組或功能的公司清單。 <br>注 WebSiteDesc=外部網站以獲取更多附加(非核心)模組... DevelopYourModuleDesc=一些開發自己模組的解決方案... URL=網址 +RelativeURL=關聯網址 BoxesAvailable=可用小工具 BoxesActivated=小工具已啟用 ActivateOn=啟用 @@ -330,7 +332,7 @@ InfDirAlt=從第3版起,可定義替代根資料夾。此允許您儲存到指 InfDirExample=<br>在 <strong>conf.php</strong> 檔案宣告 <br>$dolibarr_main_url_root_alt='/custom'<br>$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'<br>若這幾行已用"#"方式註解了,啟用他,也就是移除 "#"。 YouCanSubmitFile=您可以從此處上傳模組的.zip檔案: CurrentVersion=Dolibarr 目前版本 -CallUpdatePage=瀏覽更新資料庫結構和資料的頁面:%s。 +CallUpdatePage=瀏覽升級資料庫結構和資料的頁面:%s。 LastStableVersion=最新穩定版本 LastActivationDate=最新啟動日期 LastActivationAuthor=最新啟動的作者 @@ -446,7 +448,8 @@ KeepEmptyToUseDefault=保留為空白以使用預設值 DefaultLink=預設連結 SetAsDefault=設為預設值 ValueOverwrittenByUserSetup=警告,此值可能會被用戶特定的設定覆蓋(每個用戶都可以設定自己的clicktodial網址) -ExternalModule=外部模組 - 已安裝到資料夾 %s +ExternalModule=外部模組 +InstalledInto=已安裝到 %s 資料夾 BarcodeInitForthird-parties=合作方的批次條碼初始化 BarcodeInitForProductsOrServices=批次條碼初始化或產品或服務重置 CurrentlyNWithoutBarCode=目前您在沒有條碼<strong>%s</strong>%s中有<strong>%s</strong>的記錄。 @@ -947,7 +950,7 @@ DictionaryCanton=州/省 DictionaryRegion=地區 DictionaryCountry=國家 DictionaryCurrency=幣別 -DictionaryCivility=文明頭銜 +DictionaryCivility=榮譽稱號 DictionaryActions=行程事件類型 DictionarySocialContributions=社會稅或財政稅類型 DictionaryVAT=營業稅率或銷售稅率 @@ -988,6 +991,7 @@ VATIsNotUsedDesc=預設情況下,建議的營業稅為0,可用於諸如協 VATIsUsedExampleFR=在法國,這表示擁有真實財務系統(簡化的真實貨幣或正常真實貨幣)的公司或組織。申報營業稅的系統。 VATIsNotUsedExampleFR=在法國,它表示非宣告營業稅的協會,或者選擇微型企業財務系統(特許經營營業稅)並繳納特許經營營業稅的公司,組織或自由職業者,而無需任何營業稅申報。此選擇將在發票上顯示參考“不適用的營業稅-CGI的art-293B”。 ##### Local Taxes ##### +TypeOfSaleTaxes=銷售稅類型 LTRate=稅率 LocalTax1IsNotUsed=不使用第二種稅率 LocalTax1IsUsedDesc=使用第二種稅種(第一類除外) @@ -1011,6 +1015,9 @@ LocalTax2IsUsedDescES=建立潛在客戶,發票,訂單等時,預設情況 LocalTax2IsNotUsedDescES=預設情況下,建議的IRPF為0。規則結束。 LocalTax2IsUsedExampleES=在西班牙,自由職業者及提供服務的專業人士及選擇稅務系統模組的公司。 LocalTax2IsNotUsedExampleES=在西班牙,它們是不受模組稅制約束的企業。 +RevenueStampDesc=“稅票”或“收入票”是每張發票的固定稅額(與發票金額無關)。稅額也可以是百分比稅,但是使用第二種或第三種類型的稅對百分比稅更好,因為稅票不提供任何報告。只有極少數國家/地區使用此類稅種。 +UseRevenueStamp=使用印花稅 +UseRevenueStampExample=稅票的預設值在字典設置中定義(%s-%s-%s) CalcLocaltax=地方稅收報告 CalcLocaltax1=銷售 - 採購 CalcLocaltax1Desc=地方稅收報告是根據地方稅銷售與地方稅採購之間的差額計算得出的 @@ -1018,6 +1025,7 @@ CalcLocaltax2=採購 CalcLocaltax2Desc=地方稅收報告是地方稅採購的總額 CalcLocaltax3=銷售 CalcLocaltax3Desc=地方稅收報告是地方稅銷售總額 +NoLocalTaxXForThisCountry=根據稅收設置(請參閱%s-%s-%s),您所在的國家不需要使用此類稅種 LabelUsedByDefault=若代號沒有找翻譯字句,則使用預設標籤 LabelOnDocuments=文件標籤 LabelOrTranslationKey=標籤或翻譯秘鑰 @@ -1108,8 +1116,8 @@ Delays_MAIN_DELAY_EXPENSEREPORTS=費用報表批准 Delays_MAIN_DELAY_HOLIDAYS=休假申請批准 SetupDescription1=在開始使用Dolibarr之前,必須定義一些初始參數並啟用/設定模組。 SetupDescription2=以下兩個部分是必需的(“設定”選單中的前兩個項目): -SetupDescription3=<a href="%s">%s -> %s</a><br>應用軟體中預設行為,其基本參數是可以客製化的(例如:與國家相關的功能)。 -SetupDescription4=<a href="%s">%s-> %s</a> <br>此軟體是許多模組/應用程式的套件,或多或少是獨立的。必須啟用和設定與您需求相關的模組。隨著模組的啟動,新項目/選項會增加到選單中。 +SetupDescription3= <a href="%s"> %s-> %s </a> <br> <br>用於自訂您應用程式默認行為的基本參數(例如 跟國家相關的功能)。 +SetupDescription4= <a href="%s"> %s-> %s </a> <br> <br>此軟件是許多模塊/應用程序的套件。必須啟用和配置與您的需求相關的模塊。這些模塊的激活將顯示菜單條目。 SetupDescription5=其他設定選單項目管理可選參數。 LogEvents=安全稽核事件 Audit=稽核 @@ -1128,7 +1136,7 @@ LogEventDesc=啟用特定安全事件的日誌記錄。通過選單<b>%s-%s來</ AreaForAdminOnly=設定參數僅可由<b>管理員</b>進行設定。 SystemInfoDesc=僅供系統管理員以唯讀及可見模式取得系統資訊。 SystemAreaForAdminOnly=此區域僅管理員可用。 Dolibarr用戶權限無法更改此限制。 -CompanyFundationDesc=編輯公司/項目的資訊。點擊頁面底部的“ %s”按鈕。 +CompanyFundationDesc=編輯您的 公司/組織 資訊。完成後,點擊頁面底部的“ %s”按鈕。 AccountantDesc=如果您有外部會計師/簿記員,則可以在此處編輯其資訊。 AccountantFileNumber=會計代碼 DisplayDesc=可以在此處修改影響Dolibarr外觀和行為的參數。 @@ -1264,6 +1272,8 @@ RuleForGeneratedPasswords=產生和驗證密碼的規則 DisableForgetPasswordLinkOnLogonPage=不要在登入頁面顯示“忘記密碼”連結 UsersSetup=用戶模組設定 UserMailRequired=建立新用戶需要電子郵件 +UsersDocModules=文件模板給從使用者紀錄生成的文件 +GroupsDocModules=文件模板給從群組紀錄生成的文件 ##### HRM setup ##### HRMSetup=人資模組設定 ##### Company setup ##### @@ -1295,7 +1305,7 @@ BillsPDFModules=發票文件模型 BillsPDFModulesAccordindToInvoiceType=根據發票類型的發票文件模型 PaymentsPDFModules=付款文件模型 ForceInvoiceDate=強制使用驗證日期為發票日期 -SuggestedPaymentModesIfNotDefinedInInvoice=未定義付款方式發票的預設建議付款方式 +SuggestedPaymentModesIfNotDefinedInInvoice=未定義付款方式發票的預設付款方式 SuggestPaymentByRIBOnAccount=建議以帳戶匯款付款 SuggestPaymentByChequeToAddress=建議以支票付款給 FreeLegalTextOnInvoices=在發票中加註文字 @@ -1307,7 +1317,7 @@ SupplierPaymentSetup=供應商付款設定 PropalSetup=商業提案/建議書模組設定 ProposalsNumberingModules=商業提案/建議書編號模型 ProposalsPDFModules=商業提案/建議書文件模型 -SuggestedPaymentModesIfNotDefinedInProposal=未定義付款方式商業提案/建議書的預設建議付款方式 +SuggestedPaymentModesIfNotDefinedInProposal=預設提案付款方式 FreeLegalTextOnProposal=在商業提案/建議書中加註文字 WatermarkOnDraftProposal=商業提案/建議書草稿上的浮水印(若空白則無) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=詢問提案/建議書的目地的銀行帳戶 @@ -1322,6 +1332,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=詢問訂單的倉庫來源 ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=詢問供應商訂單中目的地銀行帳戶 ##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=未定義付款方式發票的預設付款方式 OrdersSetup=銷售訂單管理設定 OrdersNumberingModules=訂單編號模組 OrdersModelModule=訂單文件模型 @@ -1959,6 +1970,7 @@ WarningValueHigherSlowsDramaticalyOutput=警告,較高的值會嚴重降低輸 ModuleActivated=模組%s已啟動並顯示於界面上 EXPORTS_SHARE_MODELS=匯出模組功能可分享此模組給所有人 ExportSetup=模組匯出設定 +ImportSetup=模組匯入設定 InstanceUniqueID=實例的唯一ID SmallerThan=小於 LargerThan=大於 @@ -1979,5 +1991,7 @@ MakeAnonymousPing=對Dolibarr基金會服務器進行匿名Ping'+1'(僅在安 FeatureNotAvailableWithReceptionModule=啟用接收模組後,此功能不可用 EmailTemplate=電子郵件模板 EMailsWillHaveMessageID=電子郵件將具有與此語法匹配的標籤“參考” -PDF_USE_ALSO_LANGUAGE_CODE=如果要在同一個產生的PDF中以兩種不同的語言複製PDF中的某些文字標題,則必須在此處設置第二種語言,這樣產生的PDF將在同一頁面中包含兩種不同的語言,一種是在產生PDF時選擇的語言,另一種是此種語言(只有少數PDF模板支持此功能)。每個PDF一種語言則保留為空。 +PDF_USE_ALSO_LANGUAGE_CODE=如果您要在生成同一的PDF中以兩種不同的語言複製一些文字,則必須在此處設置第二種語言讓生成的PDF在同一頁中包含兩種不同的語言,選擇的可以用來生成PDF跟另一種語言(只有少數PDF模板支援此功能)。PDF只有一種語言則留空。 FafaIconSocialNetworksDesc=在此處輸入FontAwesome圖示的代碼。如果您不知道什麼是FontAwesome,則可以使用通用值fa-address-book。 +RssNote=注意:每個RSS feed定義都提供一個小部件,您必須啟用該小部件才能使其在儀表板中看到 +JumpToBoxes=跳至設定 -> 小部件 diff --git a/htdocs/langs/zh_TW/bills.lang b/htdocs/langs/zh_TW/bills.lang index 35563bc4664..08639a1d3d1 100644 --- a/htdocs/langs/zh_TW/bills.lang +++ b/htdocs/langs/zh_TW/bills.lang @@ -58,17 +58,17 @@ SuppliersInvoices=供應商發票 SupplierBill=供應商發票 SupplierBills=供應商發票 Payment=付款 -PaymentBack=還款 -CustomerInvoicePaymentBack=還款 +PaymentBack=退款 +CustomerInvoicePaymentBack=退款 Payments=付款 PaymentsBack=退回付款 paymentInInvoiceCurrency=發票幣別 PaidBack=退款 DeletePayment=刪除付款 ConfirmDeletePayment=您確定要刪除此付款? -ConfirmConvertToReduc=您是否要將%s轉換為絕對折扣? +ConfirmConvertToReduc=您是否要將%s轉換為可用信用? ConfirmConvertToReduc2=此金額將保存在所有折扣中,並可用作此客戶目前或未來發票的折扣。 -ConfirmConvertToReducSupplier=您是否要將%s轉換為絕對折扣? +ConfirmConvertToReducSupplier=您是否要將%s轉換為可用信用? ConfirmConvertToReducSupplier2=此金額將保存在所有折扣中,並可用作此供應商目前或未來發票的折扣。 SupplierPayments=供應商付款 ReceivedPayments=收到付款 @@ -219,7 +219,10 @@ ShowInvoiceSituation=顯示發票狀況 UseSituationInvoices=允許發票狀況 UseSituationInvoicesCreditNote=允許發票狀況信用票據(折讓單-credit notes) Retainedwarranty=有保修 +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices RetainedwarrantyDefaultPercent=有保修預設百分比 +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation ToPayOn=支付%s toPayOn=支付%s RetainedWarranty=保修 @@ -509,7 +512,7 @@ ToMakePayment=付款 ToMakePaymentBack=退還款項 ListOfYourUnpaidInvoices=未付款發票清單 NoteListOfYourUnpaidInvoices=注意:此列表僅包含被您連接的銷售代表合作方發票。 -RevenueStamp=印花稅 +RevenueStamp=Tax stamp YouMustCreateInvoiceFromThird=僅當從合作方的“客戶”標籤建立發票時,此選項才可使用 YouMustCreateInvoiceFromSupplierThird=僅當從合作方的“供應商”標籤建立發票時,此選項才可用 YouMustCreateStandardInvoiceFirstDesc=您必須先建立標準發票,然後將其轉換為“範本”才能建立新的發票範本 @@ -575,3 +578,4 @@ AutoFillDateTo=設定服務行的結束日期為下一個發票日期 AutoFillDateToShort=設定結束日期 MaxNumberOfGenerationReached=已達到最大產生數目 BILL_DELETEInDolibarr=發票已刪除 +BILL_SUPPLIER_DELETEInDolibarr=供應商發票已刪除 diff --git a/htdocs/langs/zh_TW/blockedlog.lang b/htdocs/langs/zh_TW/blockedlog.lang index 73993af78d0..98a1bcf5d5c 100644 --- a/htdocs/langs/zh_TW/blockedlog.lang +++ b/htdocs/langs/zh_TW/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=不可更改的日誌 ShowAllFingerPrintsMightBeTooLong=顯示所有存檔的日誌(可能很長) ShowAllFingerPrintsErrorsMightBeTooLong=顯示所有無效的歸檔日誌(可能很長) DownloadBlockChain=下載指紋 -KoCheckFingerprintValidity=歸檔的日誌條目無效。這意味著某人(黑客?)在記錄此記錄後已修改了該記錄的某些數據,或者已刪除了先前的存檔記錄(檢查是否存在具有先前#號的行)。 +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). OkCheckFingerprintValidity=歸檔日誌記錄有效。此行上的數據未修改,並且該條目位於上一個條目之後。 OkCheckFingerprintValidityButChainIsKo=與以前的日誌相比,已歸檔的日誌似乎有效,但是先前的鏈已損壞。 AddedByAuthority=已儲存到遠端授權中 diff --git a/htdocs/langs/zh_TW/cashdesk.lang b/htdocs/langs/zh_TW/cashdesk.lang index 3c7f249c9d2..b91ab4d9243 100644 --- a/htdocs/langs/zh_TW/cashdesk.lang +++ b/htdocs/langs/zh_TW/cashdesk.lang @@ -15,23 +15,24 @@ NewSell=新銷售 AddThisArticle=加入此文章 RestartSelling=回到銷售 SellFinished=銷售完成 -PrintTicket=列印服務單 -NoProductFound=沒有找到文章 +PrintTicket=列印銷售單 +SendTicket=送出銷售單 +NoProductFound=未找到文章 ProductFound=找到產品 -NoArticle=沒有文章 +NoArticle=無文章 Identification=證明 Article=文章 Difference=差異 -TotalTicket=全部服務單 +TotalTicket=全部銷售單 NoVAT=此銷售沒有營業稅 -Change=收到過多 +Change=超額已收到 BankToPay=付款帳戶 ShowCompany=顯示公司 ShowStock=顯示倉庫 DeleteArticle=點擊刪除此文章 FilterRefOrLabelOrBC=搜索(參考/標籤) -UserNeedPermissionToEditStockToUsePos=您要求減少發票建立中的庫存,因此使用POS的用戶需要具有編輯庫存的權限。 -DolibarrReceiptPrinter=Dolibarr收據印表機 +UserNeedPermissionToEditStockToUsePos=您要求減少由發票建立的庫存,所以使用POS的使用者需要具有編輯庫存的權限。 +DolibarrReceiptPrinter=Dolibarr 收據印表機 PointOfSale=銷售點 PointOfSaleShort=POS CloseBill=結帳 @@ -45,21 +46,23 @@ SearchProduct=搜尋商品 Receipt=收據 Header=頁首 Footer=頁尾 -AmountAtEndOfPeriod=期末金額(天,月或年) +AmountAtEndOfPeriod=結束的金額(天,月或年) TheoricalAmount=理論金額 RealAmount=實際金額 +CashFence=Cash fence CashFenceDone=本期現金圍欄完成 NbOfInvoices=發票數 Paymentnumpad=輸入付款的便籤類型 Numberspad=號碼便籤 BillsCoinsPad=硬幣和紙幣便籤 DolistorePosCategory=用於Dolibarr的TakePOS模組與其他POS解決方案 -TakeposNeedsCategories=TakePOS需要產品類別才能使用 +TakeposNeedsCategories=TakePOS 需要產品類別才能使用 OrderNotes=訂購須知 CashDeskBankAccountFor=用於付款的預設帳戶 -NoPaimementModesDefined=在TakePOS設定中未定義付款方式 -TicketVatGrouped=在服務單中依營業稅率分組 -AutoPrintTickets=自動列印服務單 +NoPaimementModesDefined=在 TakePOS 設定中未定義付款方式 +TicketVatGrouped=按銷售單中的費率合計營業稅 +AutoPrintTickets=自動列印銷售單|收據 +PrintCustomerOnReceipts=列印客戶在銷售單收據上 EnableBarOrRestaurantFeatures=啟用酒吧或餐廳的功能 ConfirmDeletionOfThisPOSSale=您確認刪除目前銷售嗎? ConfirmDiscardOfThisPOSSale=您是否要放棄目前銷售? @@ -67,27 +70,39 @@ History=歷史紀錄 ValidateAndClose=驗證並關閉 Terminal=終端機 NumberOfTerminals=終端機數 -TerminalSelect=選擇您要使用的站台: -POSTicket=POS服務單 -POSTerminal=POS終端機 -POSModule=POS模組 +TerminalSelect=選擇您要使用的終端機: +POSTicket=POS 銷售單 +POSTerminal=POS 終端機 +POSModule=POS 模組 BasicPhoneLayout=在手機上使用基本佈局 -SetupOfTerminalNotComplete=站台%s的設定未完成 +SetupOfTerminalNotComplete=終端機%s的設定尚未完成 DirectPayment=直接付款 DirectPaymentButton=直接現金付款按鈕 InvoiceIsAlreadyValidated=發票已通過驗證 NoLinesToBill=無計費項目 -CustomReceipt=自定義收據 +CustomReceipt=自訂收據 ReceiptName=收據名稱 ProductSupplements=產品補充 SupplementCategory=補充品類別 ColorTheme=顏色主題 Colorful=彩色 HeadBar=標題欄 -SortProductField=Field for sorting products +SortProductField=產品分類欄位 Browser=瀏覽器 -BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from de cloud. -PrintMethod=Print method -ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. -ByTerminal=By terminal +BrowserMethodDescription=簡易列印收據。僅需幾個參數即可設定收據。通過瀏覽器打印。 +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. +PrintMethod=列印方式 +ReceiptPrinterMethodDescription=具有很多參數的強大方法。完全可定制的模板。無法從雲端列印。 +ByTerminal=依照站台 +TakeposNumpadUsePaymentIcon=在數字鍵上使用付款圖示 +CashDeskRefNumberingModules=收銀台編號模組 +CashDeskGenericMaskCodes6 = <br> <b> {TN} </b>標籤用於增加站台 +TakeposGroupSameProduct=群組相同產品線 +StartAParallelSale=開啟新的平行銷售 +ControlCashOpening=打開銷售點時控制收銀機 +CloseCashFence=關閉現金圍籬 +CashReport=現金報告 +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use diff --git a/htdocs/langs/zh_TW/companies.lang b/htdocs/langs/zh_TW/companies.lang index 7920527ed13..6cfc559ea43 100644 --- a/htdocs/langs/zh_TW/companies.lang +++ b/htdocs/langs/zh_TW/companies.lang @@ -325,7 +325,6 @@ CompanyDeleted=已從資料庫中刪除“%s”公司。 ListOfContacts=通訊錄/地址清單 ListOfContactsAddresses=通訊錄/地址清單 ListOfThirdParties=合作方清單 -ShowCompany=顯示合作方 ShowContact=顯示連絡人 ContactsAllShort=全部(不過濾) ContactType=連絡型式 @@ -447,6 +446,7 @@ SaleRepresentativeFirstname=業務代表的名字 SaleRepresentativeLastname=業務代表的姓氏 ErrorThirdpartiesMerge=刪除合作方時發生錯誤。請檢查日誌。原變更已被回復。 NewCustomerSupplierCodeProposed=客戶或供應商代碼已使用,已建議新代碼 +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address #Imports PaymentTypeCustomer=付款方式-客戶 PaymentTermsCustomer=付款條件-客戶 diff --git a/htdocs/langs/zh_TW/compta.lang b/htdocs/langs/zh_TW/compta.lang index cfe4c56d496..a60f23bb772 100644 --- a/htdocs/langs/zh_TW/compta.lang +++ b/htdocs/langs/zh_TW/compta.lang @@ -157,9 +157,9 @@ SeeReportInInputOutputMode=有關實際付款(即使尚未在分類帳中實際 SeeReportInDueDebtMode=有關基於已記錄發票(即使尚未在分類帳中進行核算)的計算,請參閱%s發票分析%s。 SeeReportInBookkeepingMode=請參閱<b>%s簿記報告%s</b>了解關於<b>簿記分類帳表</b>的計算 RulesAmountWithTaxIncluded=-顯示的金額包括所有稅費 -RulesResultDue=-包括未結發票,費用,營業稅,捐贈(無論是否付款)。還包括帶薪工資。 <br> -它基於發票和營業稅的確認日期以及費用的到期日。對於使用“工資”模組定義的工資,將使用付款的起算日。 +RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=-它包括發票,費用,營業稅和薪水的實際付款。 <br> -它基於發票,費用,營業稅和薪水的付款日期。捐贈的捐贈日期。 -RulesCADue=-它包括客戶無論是否已付款的到期發票。 <br> -它基於這些發票的生效日期。 <br> +RulesCADue=- It includes the customer's due invoices whether they are paid or not. <br>- It is based on the billing date of these invoices.<br> RulesCAIn=-包括從客戶收到的所有有效發票付款。 <br> -此基於這些發票的付款日期<br> RulesCATotalSaleJournal=它包括“銷售”日記帳中的所有信用額度。 RulesAmountOnInOutBookkeepingRecord=它包括分類帳中具有“ 費用”或“ 收入”組的會計帳戶中的記錄 @@ -255,3 +255,10 @@ TurnoverbyVatrate=依營業稅率開票的營業額 TurnoverCollectedbyVatrate=依營業稅率收取的營業額 PurchasebyVatrate=依銷售購買稅率 LabelToShow=短標籤 +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not. <br>- It is based on the invoice date of these invoices.<br> +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.<br>- It is based on the payment date of these invoices<br> +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected diff --git a/htdocs/langs/zh_TW/errors.lang b/htdocs/langs/zh_TW/errors.lang index 1a413cdd581..5f3c373da1c 100644 --- a/htdocs/langs/zh_TW/errors.lang +++ b/htdocs/langs/zh_TW/errors.lang @@ -59,6 +59,7 @@ ErrorPartialFile=伺服器未完整的收到檔案。 ErrorNoTmpDir=臨時指示%s不存在。 ErrorUploadBlockedByAddon=PHP / Apache的插件已阻擋上傳。 ErrorFileSizeTooLarge=檔案太大。 +ErrorFieldTooLong=欄位%s太長。 ErrorSizeTooLongForIntType=位數超過int類型(最大位數%s) ErrorSizeTooLongForVarcharType=位數超過字串類型(最大位數%s) ErrorNoValueForSelectType=請填寫所選清單的值 @@ -96,7 +97,7 @@ ErrorBadMaskFailedToLocatePosOfSequence=錯誤,遮罩沒有序列號 ErrorBadMaskBadRazMonth=錯誤,不好的重置值 ErrorMaxNumberReachForThisMask=已達到此遮罩的最大數量 ErrorCounterMustHaveMoreThan3Digits=計數器必須超過3位數字 -ErrorSelectAtLeastOne=Error, select at least one entry. +ErrorSelectAtLeastOne=錯誤,請至少選擇一項。 ErrorDeleteNotPossibleLineIsConsolidated=無法刪除,因為記錄連結到已調解的銀行交易 ErrorProdIdAlreadyExist=%s已被分配到另一個合作方 ErrorFailedToSendPassword=無法傳送密碼 @@ -117,8 +118,8 @@ ErrorLoginDoesNotExists=找不到登入名稱<b>%s</b>的用戶。 ErrorLoginHasNoEmail=這位用戶沒有電子郵件地址。程序中止。 ErrorBadValueForCode=安全代碼有錯誤的值。請嘗試新的值... ErrorBothFieldCantBeNegative=欄位%s和%s不能都為負值 -ErrorFieldCantBeNegativeOnInvoice=Field <strong>%s</strong> cannot be negative on this type of invoice. If you need to add a discount line, just create the discount first (from field '%s' in thirdparty card) and apply it to the invoice. -ErrorLinesCantBeNegativeForOneVATRate=Total of lines can't be negative for a given VAT rate. +ErrorFieldCantBeNegativeOnInvoice=此類型的發票欄位<strong> %s </strong>不能為負。如果您需要增加折扣行,只需先建立折扣(從合作方卡中的欄位“ %s”開始)並將其使用於發票。 +ErrorLinesCantBeNegativeForOneVATRate=對於給定的營業稅率,行總數不能為負。 ErrorLinesCantBeNegativeOnDeposits=存款中的行數不能為負。如果您需要在最終發票中消耗定金,會遇到問題。 ErrorQtyForCustomerInvoiceCantBeNegative=客戶發票行的數量不能為負值 ErrorWebServerUserHasNotPermission=用戶帳戶<b>%s</b>沒有權限用來執行網頁伺服器 @@ -229,12 +230,13 @@ ErrorFieldRequiredForProduct=產品%s必須有欄位'%s' ProblemIsInSetupOfTerminal=問題在於站台%s的設定。 ErrorAddAtLeastOneLineFirst=請先至少增加一行 ErrorRecordAlreadyInAccountingDeletionNotPossible=錯誤,記錄已在會計中轉移,無法刪除。 -ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=Error, language is mandatory if you set the page as a translation of another one. -ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated page is same than this one. -ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". -ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". -ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't user it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=錯誤,如果將頁面設定為另一頁面的翻譯,則語言為必填項目。 +ErrorLanguageOfTranslatedPageIsSameThanThisPage=錯誤,翻譯頁面的語言與此相同。 +ErrorBatchNoFoundForProductInWarehouse=在倉庫“ %s”中找不到產品“ %s”的批次/序列。 +ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=倉庫“ %s”中產品“ %s”的此批次/序列沒有足夠的數量。 +ErrorOnlyOneFieldForGroupByIsPossible=“群組依據”只能使用1個欄位(其他欄位則被丟棄) +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than <b>%s</b>) for the field '<b>%s</b>', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=您的PHP參數upload_max_filesize(%s)高於PHP參數post_max_size(%s)。這不是相同的設定。 WarningPasswordSetWithNoAccount=為此會員設定了密碼。但是,沒有建立用戶帳戶。因此,雖然密碼已儲存,但不能用於登入Dolibarr。外部模組/界面可以使用它,但是如果您不需要為會員定義任何登入名稱或密碼,則可以從會員模組設定中禁用選項“管理每個會員的登入名稱”。如果您需要管理登入名稱但不需要任何密碼,則可以將此欄位保留為空白以避免此警告。注意:如果會員連結到用戶,電子郵件也可以用作登入名稱。 diff --git a/htdocs/langs/zh_TW/install.lang b/htdocs/langs/zh_TW/install.lang index 12a86f20e15..2c284ef7fd7 100644 --- a/htdocs/langs/zh_TW/install.lang +++ b/htdocs/langs/zh_TW/install.lang @@ -16,6 +16,7 @@ PHPSupportCurl=此PHP支援Curl。 PHPSupportCalendar=此PHP支援日曆外掛。 PHPSupportUTF8=此PHP支援UTF8函數。 PHPSupportIntl=此PHP支援Intl函數。 +PHPSupportxDebug=This PHP supports extended debug functions. PHPSupport=此PHP支援%s函數。 PHPMemoryOK=您的PHP最大session記憶體設定為<b>%s</b> 。這應該足夠了。 PHPMemoryTooLow=您的PHP最大session記憶體為<b>%s</b>bytes。這太低了。更改您的<b>php.ini,</b>以將<b>記憶體限制/b>參數設定為至少<b>%s</b>bytes。 @@ -26,6 +27,7 @@ ErrorPHPDoesNotSupportCurl=您的PHP安裝不支援Curl。 ErrorPHPDoesNotSupportCalendar=您的PHP安裝不支援php日曆外掛。 ErrorPHPDoesNotSupportUTF8=您的PHP安裝不支援UTF8函數。 Dolibarr無法正常工作。必須在安裝Dolibarr之前修復此問題。 ErrorPHPDoesNotSupportIntl=您的PHP安裝不支援Intl函數。 +ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=您的PHP安裝不支援%s函數。 ErrorDirDoesNotExists=資料夾%s不存在。 ErrorGoBackAndCorrectParameters=返回並檢查/更正參數。 @@ -217,3 +219,5 @@ YouTryInstallDisabledByDirLock=該應用程式嘗試進行自我升級,但是 YouTryInstallDisabledByFileLock=此應用程式嘗試進行自我升級,但是出於安全性考慮,已禁用了安裝/升級頁面(由於dolibarr檔案資料夾中存在鎖定文件<strong>install.lock</strong> )。 <br> ClickHereToGoToApp=點擊此處前往您的應用程式 ClickOnLinkOrRemoveManualy=點擊以下連結。如果始終看到同一頁面,則必須在檔案資料夾中刪除/重命名檔案install.lock。 +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/zh_TW/link.lang b/htdocs/langs/zh_TW/link.lang index eaf82ee5cf6..23949b86a29 100644 --- a/htdocs/langs/zh_TW/link.lang +++ b/htdocs/langs/zh_TW/link.lang @@ -8,3 +8,4 @@ LinkRemoved=此連線%s已被刪除 ErrorFailedToDeleteLink= 無法刪除連線“ <b>%s</b> ” ErrorFailedToUpdateLink= 無法更新連線' <b>%s</b>' URLToLink=連線網址 +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/zh_TW/mails.lang b/htdocs/langs/zh_TW/mails.lang index fc28e885056..dbcd1715b72 100644 --- a/htdocs/langs/zh_TW/mails.lang +++ b/htdocs/langs/zh_TW/mails.lang @@ -1,170 +1,170 @@ # Dolibarr language file - Source file is en_US - mails Mailing=發送電子郵件 -EMailing=發送電子郵件 -EMailings=EMailings -AllEMailings=所有eMailings -MailCard=通過電子郵件發送卡 +EMailing=電子郵件 +EMailings=電子郵件 +AllEMailings=所有電子郵件 +MailCard=電子郵件卡片 MailRecipients=收件人 MailRecipient=收件人 MailTitle=描述 MailFrom=寄件人 -MailErrorsTo=誤差的 -MailReply=回復 +MailErrorsTo=錯誤收件箱 +MailReply=回覆 MailTo=收件人 -MailToUsers=給用戶 +MailToUsers=發送給用戶 MailCC=副本 -MailToCCUsers=複製到用戶 -MailCCC=緩存副本 +MailToCCUsers=CC +MailCCC=CCC MailTopic=電子郵件主題 MailText=郵件內容 MailFile=附加檔案 -MailMessage=電子郵件正文 +MailMessage=電子郵件內容 SubjectNotIn=不在主題中 -BodyNotIn=Not in Body +BodyNotIn=不在內容中 ShowEMailing=顯示電子郵件 -ListOfEMailings=名單emailings +ListOfEMailings=電子郵件清單 NewMailing=新電子郵件 EditMailing=編輯電子郵件 ResetMailing=重新發送電子郵件 DeleteMailing=刪除電子郵件 DeleteAMailing=刪除一個電子郵件 PreviewMailing=預覽電子郵件 -CreateMailing=創建電子郵件 -TestMailing=測試的電子郵件 +CreateMailing=建立電子郵件 +TestMailing=測試電子郵件 ValidMailing=有效的電子郵件 MailingStatusDraft=草案 -MailingStatusValidated=驗證 +MailingStatusValidated=已驗證 MailingStatusSent=發送 -MailingStatusSentPartialy=發送部分 -MailingStatusSentCompletely=發送完全 +MailingStatusSentPartialy=部分發送 +MailingStatusSentCompletely=完全發送 MailingStatusError=錯誤 MailingStatusNotSent=不發送 -MailSuccessfulySent=Email (from %s to %s) successfully accepted for delivery -MailingSuccessfullyValidated=EMailing successfully validated +MailSuccessfulySent=已成功接收電子郵件(從%s到%s) +MailingSuccessfullyValidated=電子郵件成功驗證 MailUnsubcribe=退訂 MailingStatusNotContact=不要再聯繫 MailingStatusReadAndUnsubscribe=讀取和退訂 ErrorMailRecipientIsEmpty=電子郵件收件人是空的 -WarningNoEMailsAdded=沒有新的電子郵件添加到收件人的名單。 +WarningNoEMailsAdded=沒有新的電子郵件可增加到收件人清單。 ConfirmValidMailing=您確定要驗證此電子郵件嗎? -ConfirmResetMailing=Warning, by re-initializing emailing <b>%s</b>, you will allow the re-sending this email in a bulk mailing. Are you sure you want to do this? +ConfirmResetMailing=警告,通過重新初始化電子郵件<b>%s</b> ,您可以批次發送此電子郵件。你確定要這麼做嗎? ConfirmDeleteMailing=您確定要刪除此電子郵件嗎? -NbOfUniqueEMails=不重複的電子郵件數 +NbOfUniqueEMails=獨特電子郵件的數量 NbOfEMails=電子郵件數量 -TotalNbOfDistinctRecipients=受助人數目明顯 -NoTargetYet=受助人還沒有確定(走吧標簽'收件人') -NoRecipientEmail=沒有有關%s收件人的電子郵件 +TotalNbOfDistinctRecipients=不重複收件人數量 +NoTargetYet=尚未定義收件人(在“收件人”分頁上) +NoRecipientEmail=沒有有關收件人%s的電子郵件 RemoveRecipient=刪除收件人 -YouCanAddYourOwnPredefindedListHere=要創建您的電子郵件選擇模塊,見htdocs中/包括/模塊/郵寄/自述文件。 -EMailTestSubstitutionReplacedByGenericValues=當使用測試模式,替換變量的值取代通用 +YouCanAddYourOwnPredefindedListHere=要建立您的電子郵件選擇器模組,請參閱htdocs/core/modules/mailings/README。 +EMailTestSubstitutionReplacedByGenericValues=使用測試模式時,替換變數將替換為通用值 MailingAddFile=附加這個文件 NoAttachedFiles=沒有附加檔案 -BadEMail=Bad value for Email +BadEMail=電子郵件地址不正確 ConfirmCloneEMailing=您確定要複製此電子郵件嗎? -CloneContent=克隆消息 -CloneReceivers=克隆者 +CloneContent=複製訊息 +CloneReceivers=複製收件人 DateLastSend=最新發送的日期 DateSending=發送日期 SentTo=發送到<b>%s</b> -MailingStatusRead=閱讀 -YourMailUnsubcribeOK=The email <b>%s</b> 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=Email sent for %s elements. -XTargetsAdded=<b>%s</b> recipients added into target list -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=Group emails -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=Result of mass Email sending -NbSelected=Number selected -NbIgnored=Number ignored -NbSent=Number sent -SentXXXmessages=%s message(s) sent. -ConfirmUnvalidateEmailing=Are you sure you want to change email <b>%s</b> to draft status? -MailingModuleDescContactsWithThirdpartyFilter=Contact with customer filters -MailingModuleDescContactsByCompanyCategory=Contacts by third-party category -MailingModuleDescContactsByCategory=Contacts by categories -MailingModuleDescContactsByFunction=Contacts by position -MailingModuleDescEmailsFromFile=Emails from file -MailingModuleDescEmailsFromUser=Emails input by user -MailingModuleDescDolibarrUsers=Users with Emails -MailingModuleDescThirdPartiesByCategories=Third parties (by categories) -SendingFromWebInterfaceIsNotAllowed=Sending from web interface is not allowed. +MailingStatusRead=讀取 +YourMailUnsubcribeOK=電子郵件<b>%s</b>已正確從郵件清單中退訂 +ActivateCheckReadKey=用於“讀取回條”和“取消訂閱”功能的加密網址密鑰 +EMailSentToNRecipients=電子郵件已發送給%s收件人。 +EMailSentForNElements=已發送有關%s元件的電子郵件。 +XTargetsAdded=<b>%s</b>收件人已增加到目標清單 +OnlyPDFattachmentSupported=如果已經為要發送的項目產生了PDF文件,它們將被附加到電子郵件中。否則,將不會發送電子郵件(也請注意,在此版本的批次發送中,僅支援pdf文件作為附件)。 +AllRecipientSelected=已選擇%s記錄的收件人(如果知道他們的電子郵件)。 +GroupEmails=群組電子郵件 +OneEmailPerRecipient=每位收件人一封電子郵件(預設情況下,每條記錄選擇一封電子郵件) +WarningIfYouCheckOneRecipientPerEmail=警告,如果選中此框,則意味著將為選定的多個不同記錄發送一封電子郵件,因此,如果您的訊息包含引用記錄資料的替換變數,則無法替換它們。 +ResultOfMailSending=批次電子郵件發送的結果 +NbSelected=已選擇數量 +NbIgnored=已忽略數量 +NbSent=已發送數量 +SentXXXmessages=已發送%s訊息 +ConfirmUnvalidateEmailing=您確定要將電子郵件<b>%s</b>更改為草稿狀態嗎? +MailingModuleDescContactsWithThirdpartyFilter=有客戶過濾器的聯絡人 +MailingModuleDescContactsByCompanyCategory=合作方類別的聯絡人 +MailingModuleDescContactsByCategory=依類別聯絡 +MailingModuleDescContactsByFunction=依職位聯絡 +MailingModuleDescEmailsFromFile=來自檔案的電子郵件 +MailingModuleDescEmailsFromUser=用戶輸入的電子郵件 +MailingModuleDescDolibarrUsers=擁有電子郵件的用戶 +MailingModuleDescThirdPartiesByCategories=合作方(依類別) +SendingFromWebInterfaceIsNotAllowed=不允許從Web界面發送。 # Libelle des modules de liste de destinataires mailing -LineInFile=在文件%s的線 -RecipientSelectionModules=為收件人的選擇定義的要求 -MailSelectedRecipients=選擇收件人 -MailingArea=EMailings區 -LastMailings=Latest %s emailings -TargetsStatistics=統計指標 -NbOfCompaniesContacts=公司獨特的接觸 -MailNoChangePossible=為驗證電子郵件收件人無法改變 +LineInFile=在檔案%s的行 +RecipientSelectionModules=已定義收件人的選擇要求 +MailSelectedRecipients=已選擇收件人 +MailingArea=電子郵件區域 +LastMailings=最新%s的電子郵件 +TargetsStatistics=目標統計 +NbOfCompaniesContacts=獨特的聯絡人/地址 +MailNoChangePossible=已驗證電子郵件的收件人無法更改 SearchAMailing=搜尋郵件 -SendMailing=發送電子郵件 -SentBy=發送 -MailingNeedCommand=Sending an emailing can be performed from command line. Ask your server administrator to launch the following command to send the emailing to all recipients: -MailingNeedCommand2=但是您可以發送到網上,加入與最大的電子郵件數量值參數MAILING_LIMIT_SENDBYWEB你要發送的會議。 -ConfirmSendingEmailing=If you want to send emailing directly from this screen, please confirm you are sure you want to send emailing now from your browser ? -LimitSendingEmailing=Note: Sending of emailings from web interface is done in several times for security and timeout reasons, <b>%s</b> recipients at a time for each sending session. -TargetsReset=清除名單 -ToClearAllRecipientsClickHere=點擊這裏以清除此電子郵件的收件人列表 -ToAddRecipientsChooseHere=添加從名單中選擇收件人 -NbOfEMailingsReceived=收到群眾emailings -NbOfEMailingsSend=Mass emailings sent -IdRecord=編號記錄 -DeliveryReceipt=Delivery Ack. +SendMailing=發送郵件 +SentBy=寄件人 +MailingNeedCommand=可以從命令行發送電子郵件。請您的伺服器管理員啟動以下命令,以將電子郵件發送給所有收件人: +MailingNeedCommand2=您可以透過增加MAILING_LIMIT_SENDBYWEB參數並設定每次程序中可發送最大電子郵件數量以在線發送。啟動此功能,請前往首頁-設定-其他。 +ConfirmSendingEmailing=如果要直接從此畫面發送電子郵件,請確認您確定要立即從瀏覽器發送電子郵件嗎? +LimitSendingEmailing=注意:出於安全性和超時的原因,從Web界面多次進行發送電子郵件已完成,每次發送程序皆一個收件人<b>%s</b> 。 +TargetsReset=清除清單 +ToClearAllRecipientsClickHere=點擊這裏以清除此電子郵件的收件人清單 +ToAddRecipientsChooseHere=從清單中增加收件人 +NbOfEMailingsReceived=收到大量電子郵件 +NbOfEMailingsSend=已發送批次電子郵件 +IdRecord=ID記錄 +DeliveryReceipt=已讀取回條。 YouCanUseCommaSeparatorForSeveralRecipients=您可以使用<b>逗號</b>來指定多個收件人。 -TagCheckMail=Track mail opening -TagUnsubscribe=Unsubscribe link -TagSignature=Signature of sending user -EMailRecipient=Recipient Email -TagMailtoEmail=Recipient Email (including html "mailto:" link) -NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile. +TagCheckMail=追蹤郵件讀取 +TagUnsubscribe=取消訂閱連結 +TagSignature=發送用戶的簽名 +EMailRecipient=收件人電子郵件 +TagMailtoEmail=收件人電子郵件(包括html“ mailto:”連結) +NoEmailSentBadSenderOrRecipientEmail=沒有發送電子郵件。寄件人或收件人的電子郵件不正確。驗證用戶資料。 # Module Notifications Notifications=通知 -NoNotificationsWillBeSent=沒有電子郵件通知此事件的計劃和公司 -ANotificationsWillBeSent=1通知將通過電子郵件發送 +NoNotificationsWillBeSent=沒有為此事件和公司計畫的電子郵件通知 +ANotificationsWillBeSent=1個通知將通過電子郵件發送 SomeNotificationsWillBeSent=%s的通知將通過電子郵件發送 -AddNewNotification=Activate a new email notification target/event -ListOfActiveNotifications=List all active targets/events for email notification +AddNewNotification=啟動新的電子郵件通知目標/事件 +ListOfActiveNotifications=列出所有活動目標/事件以進行電子郵件通知 ListOfNotificationsDone=列出所有發送電子郵件通知 -MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing. -MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter <strong>'%s'</strong> to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature. -MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s. -YouCanAlsoUseSupervisorKeyword=You can also add the keyword <strong>__SUPERVISOREMAIL__</strong> to have email being sent to the supervisor of user (works only if an email is defined for this supervisor) -NbOfTargetedContacts=Current number of targeted contact emails -UseFormatFileEmailToTarget=Imported file must have format <strong>email;name;firstname;other</strong> -UseFormatInputEmailToTarget=Enter a string with format <strong>email;name;firstname;other</strong> -MailAdvTargetRecipients=Recipients (advanced selection) -AdvTgtTitle=Fill input fields to preselect the third parties or contacts/addresses to target -AdvTgtSearchTextHelp=Use %% as wildcards. For example to find all item like <b>jean, joe, jim</b>, you can input <b>j%%</b>, you can also use ; as separator for value, and use ! for except this value. For example <b>jean;joe;jim%%;!jimo;!jima%</b> will target all jean, joe, start with jim but not jimo and not everything that starts with jima -AdvTgtSearchIntHelp=Use interval to select int or float value -AdvTgtMinVal=Minimum value -AdvTgtMaxVal=Maximum value -AdvTgtSearchDtHelp=Use interval to select date value -AdvTgtStartDt=Start dt. -AdvTgtEndDt=End dt. -AdvTgtTypeOfIncudeHelp=Target Email of third party and email of contact of the third party, or just third-party email or just contact email -AdvTgtTypeOfIncude=Type of targeted email -AdvTgtContactHelp=Use only if you target contact into "Type of targeted email" -AddAll=Add all -RemoveAll=Remove all -ItemsCount=Item(s) -AdvTgtNameTemplate=Filter name -AdvTgtAddContact=Add emails according to criteria -AdvTgtLoadFilter=Load filter -AdvTgtDeleteFilter=Delete filter -AdvTgtSaveFilter=Save filter -AdvTgtCreateFilter=Create filter -AdvTgtOrCreateNewFilter=Name of new filter -NoContactWithCategoryFound=No contact/address with a category found -NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found -OutGoingEmailSetup=Outgoing email setup -InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) -DefaultOutgoingEmailSetup=Default outgoing email setup +MailSendSetupIs=電子郵件發送的設定已設定為“ %s”。此模式不能用於發送批次電子郵件。 +MailSendSetupIs2=您必須先使用管理員帳戶進入選單%s首頁-設定-EMails%s以將參數<strong>'%s'</strong>更改為使用模式 '%s'。使用此模式 ,您可以輸入Internet服務供應商提供的SMTP伺服器的設定,並使用批次電子郵件功能。 +MailSendSetupIs3=如果對如何設定SMTP伺服器有任何疑問,可以詢問%s。 +YouCanAlsoUseSupervisorKeyword=您還可以增加關鍵字<strong>__SUPERVISOREMAIL__</strong>以將電子郵件發送給用戶的主管(僅在為此主管定義了電子郵件的情況下有效) +NbOfTargetedContacts=目前目標聯絡人電子郵件的數量 +UseFormatFileEmailToTarget=匯入檔案的格式必須為<strong>電子郵件; 姓;名;其他</strong> +UseFormatInputEmailToTarget=輸入字串格式為<strong>電子郵件; 姓;名;其他</strong> +MailAdvTargetRecipients=收件人(進階選項) +AdvTgtTitle=填寫輸入欄位以預先選擇合作方或聯絡人/地址 +AdvTgtSearchTextHelp=使用%%作為通用字元。例如,要尋找像是<b>jean,joe,jim</b>的所有項目,可以輸入 <b>j%%</b> ,也可以使用;作為數值的分隔字元,並使用!排除此值。例如 <b>jean;joe;jim%%;!jimo;!jima%</b> 將會指向所有沒有jimo與所有以jima開始的jean,joe +AdvTgtSearchIntHelp=使用空格選擇整數或浮點值 +AdvTgtMinVal=最小值 +AdvTgtMaxVal=最大值 +AdvTgtSearchDtHelp=使用空白選擇日期值 +AdvTgtStartDt=開始目標。 +AdvTgtEndDt=結束目標。 +AdvTgtTypeOfIncudeHelp=合作方的目標電子郵件與合作方的聯絡人電子郵件,或僅合作方電子郵件或僅聯絡人電子郵件 +AdvTgtTypeOfIncude=目標電子郵件類型 +AdvTgtContactHelp=僅用於您將聯絡人定位為“目標電子郵件類型”時使用 +AddAll=全部加入 +RemoveAll=移除全部 +ItemsCount=項目 +AdvTgtNameTemplate=過濾器名稱 +AdvTgtAddContact=根據條件加入電子郵件 +AdvTgtLoadFilter=載入過濾器 +AdvTgtDeleteFilter=刪除過濾器 +AdvTgtSaveFilter=儲存過濾器 +AdvTgtCreateFilter=建立過濾器 +AdvTgtOrCreateNewFilter=新過濾器名稱 +NoContactWithCategoryFound=找不到具有類別的聯絡人/地址 +NoContactLinkedToThirdpartieWithCategoryFound=找不到具有類別的聯絡人/地址 +OutGoingEmailSetup=發送電子郵件設定 +InGoingEmailSetup=接收電子郵件設定 +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) +DefaultOutgoingEmailSetup=預設發送電子郵件設定 Information=資訊 -ContactsWithThirdpartyFilter=Contacts with third-party filter +ContactsWithThirdpartyFilter=帶有合作方過濾器的聯絡人 diff --git a/htdocs/langs/zh_TW/main.lang b/htdocs/langs/zh_TW/main.lang index b7bf557b6a8..bf598fad411 100644 --- a/htdocs/langs/zh_TW/main.lang +++ b/htdocs/langs/zh_TW/main.lang @@ -174,6 +174,7 @@ SaveAndStay=儲存並留下 SaveAndNew=儲存並新增 TestConnection=測試連線 ToClone=複製 +ConfirmCloneAsk=您確定要複製物件 <b>%s</b>? ConfirmClone=選擇您要複製的數據: NoCloneOptionsSpecified=沒有已定義要複製的資料。 Of=的 @@ -829,6 +830,8 @@ Gender=性別 Genderman=男 Genderwoman=女 ViewList=檢視清單 +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=必要 Hello=哈囉 GoodBye=再見 @@ -1022,3 +1025,6 @@ SelectYourGraphOptionsFirst=選擇您的圖形選項以建立圖形 Measures=措施 XAxis=X軸 YAxis=Y軸 +StatusOfRefMustBe= %s 的狀態必須是 %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? diff --git a/htdocs/langs/zh_TW/other.lang b/htdocs/langs/zh_TW/other.lang index 23bb161f5bd..316388ffb1b 100644 --- a/htdocs/langs/zh_TW/other.lang +++ b/htdocs/langs/zh_TW/other.lang @@ -30,11 +30,11 @@ PreviousYearOfInvoice=發票日期的上一年 NextYearOfInvoice=發票日期的下一年 DateNextInvoiceBeforeGen=下一張發票的日期(產生前) DateNextInvoiceAfterGen=下一張發票的日期(產生後) -GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mode. The mode 'Lines' was automatically selected instead. +GraphInBarsAreLimitedToNMeasures=於“ Bars”模式下,圖形被限制於%s小段。自動選擇了“行”模式。 OnlyOneFieldForXAxisIsPossible=目前只能將1個欄位用作X軸。僅選擇了第一個選定欄位。 AtLeastOneMeasureIsRequired=至少需要1個測量欄位 AtLeastOneXAxisIsRequired=X軸至少需要1個欄位 - +LatestBlogPosts=Latest Blog Posts Notify_ORDER_VALIDATE=銷售訂單已驗證 Notify_ORDER_SENTBYMAIL=使用郵件寄送的銷售訂單 Notify_ORDER_SUPPLIER_SENTBYMAIL=使用電子郵件寄送的採購訂單 @@ -274,7 +274,7 @@ WEBSITE_PAGEURL=頁面網址 WEBSITE_TITLE=標題 WEBSITE_DESCRIPTION=描述 WEBSITE_IMAGE=圖片 -WEBSITE_IMAGEDesc=影像媒體的相對路徑。您可以將其保留為空,因為它很少使用(動態內容可以使用它在部落格文章清單中顯示縮圖)。如果路徑取決於網站名稱,請在路徑中使用__WEBSITEKEY__。 +WEBSITE_IMAGEDesc=影像媒體的相對路徑。您可以將其保留為空,因為它很少使用(動態內容可以使用它在部落格文章清單中顯示縮圖)。如果路徑取決於網站名稱,請在路徑中使用__WEBSITE_KEY __(例如:image / __ WEBSITE_KEY __ / stories / myimage.png)。 WEBSITE_KEYWORDS=關鍵字 LinesToImport=要匯入的行 diff --git a/htdocs/langs/zh_TW/products.lang b/htdocs/langs/zh_TW/products.lang index 883d3b2869d..72233c0d88a 100644 --- a/htdocs/langs/zh_TW/products.lang +++ b/htdocs/langs/zh_TW/products.lang @@ -22,6 +22,8 @@ ProductVatMassChangeDesc=此工具將更新<b><u>所有</u></b>產品和服務 MassBarcodeInit=批次條碼初始化 MassBarcodeInitDesc=此頁面可用將未定義條碼的項目初始化條碼。在完成模組條碼的設定之前進行檢查。 ProductAccountancyBuyCode=會計代碼(購買) +ProductAccountancyBuyIntraCode=會計代碼(在歐盟內採購) +ProductAccountancyBuyExportCode=Accounting code (purchase import) ProductAccountancySellCode=會計代碼(銷售) ProductAccountancySellIntraCode=會計代碼(內部銷售) ProductAccountancySellExportCode=會計代碼(出口銷售) @@ -165,7 +167,7 @@ SuppliersPrices=供應商價格 SuppliersPricesOfProductsOrServices=供應商價格(產品或服務) CustomCode=海關/商品/ HS編碼 CountryOrigin=原產地 -Nature=產品的性質(材料/成品) +Nature=Nature of product (material/finished) ShortLabel=短標籤 Unit=單位 p=u. diff --git a/htdocs/langs/zh_TW/projects.lang b/htdocs/langs/zh_TW/projects.lang index 14475c2442b..dd85077e28a 100644 --- a/htdocs/langs/zh_TW/projects.lang +++ b/htdocs/langs/zh_TW/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=此我已連結到專案 Time=時間 ListOfTasks=任務清單 GoToListOfTimeConsumed=前往工作時間清單 -GoToListOfTasks=顯示清單 -GoToGanttView=顯示甘特圖 GanttView=甘特圖 ListProposalsAssociatedProject=與專案有關的商業建議書清單 ListOrdersAssociatedProject=與專案相關的銷售訂單清單 @@ -188,7 +186,7 @@ PlannedWorkload=計劃的工作量 PlannedWorkloadShort=工作量 ProjectReferers=相關項目 ProjectMustBeValidatedFirst=必須先驗證專案 -FirstAddRessourceToAllocateTime=為任務分配用戶資源以分配時間 +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time InputPerDay=每天輸入 InputPerWeek=每週輸入 InputPerMonth=每月輸入 @@ -240,6 +238,7 @@ LatestModifiedProjects=最新%s件修改專案 OtherFilteredTasks=其他過濾任務 NoAssignedTasks=找不到分配的任務(從頂部選擇框向目前用戶分配專案/任務以輸入時間) ThirdPartyRequiredToGenerateInvoice=必須在專案上定義合作方才能開立發票。 +ChooseANotYetAssignedTask=選擇一個尚未分配給您的任務 # Comments trans AllowCommentOnTask=允許用戶對任務發表評論 AllowCommentOnProject=允許用戶對專案發表評論 @@ -257,7 +256,7 @@ InvoiceGeneratedFromTimeSpent=根據專案花費的時間產生了發票%s ProjectBillTimeDescription=請勾選如果您輸入了有關專案任務的時間表,並計劃從此時間表中產生發票以向此專案的客戶開立帳單(不要勾選如果您打算建立不基於輸入時間表的發票)。注意:要產生發票,請前往專案的“花費時間”分頁上,並選擇要包括的行。 ProjectFollowOpportunity=追蹤機會 ProjectFollowTasks=追蹤任務 -Usage=Usage +Usage=使用率 UsageOpportunity=用法:機會 UsageTasks=用法:任務 UsageBillTimeShort=用法:帳單時間 @@ -265,3 +264,4 @@ InvoiceToUse=發票草稿 NewInvoice=新發票 OneLinePerTask=每個任務一行 OneLinePerPeriod=每個週期一行 +RefTaskParent=參考上層任務 diff --git a/htdocs/langs/zh_TW/receiptprinter.lang b/htdocs/langs/zh_TW/receiptprinter.lang index 45a8847db4a..0732468cc3a 100644 --- a/htdocs/langs/zh_TW/receiptprinter.lang +++ b/htdocs/langs/zh_TW/receiptprinter.lang @@ -15,10 +15,12 @@ CONNECTOR_DUMMY=虛擬印表機 CONNECTOR_NETWORK_PRINT=網路印表機 CONNECTOR_FILE_PRINT=本地印表機 CONNECTOR_WINDOWS_PRINT=本地Windows印表機 +CONNECTOR_CUPS_PRINT=Cups 印表機 CONNECTOR_DUMMY_HELP=測試用假印表機,什麼都不做 CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS 印表機名稱,如:HPRT_TP805L PROFILE_DEFAULT=預設設定文件 PROFILE_SIMPLE=簡易設定文件 PROFILE_EPOSTEP=Epos Tep設定文件 @@ -61,3 +63,33 @@ DOL_VALUE_MONTH_LETTERS=發票月份(以字母為單位) DOL_VALUE_MONTH=發票月份 DOL_VALUE_DAY=發票日 DOL_VALUE_DAY_LETTERS=發票日(以字母為單位) +DOL_LINE_FEED_REVERSE=Line feed reverse +DOL_VALUE_OBJECT_ID=Invoice ID +DOL_VALUE_OBJECT_REF=發票參考 +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +DOL_VALUE_MYSOC_ADDRESS=Your company address +DOL_VALUE_MYSOC_ZIP=Your zip code +DOL_VALUE_MYSOC_TOWN=Your town +DOL_VALUE_MYSOC_COUNTRY=Your country +DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1 +DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2 +DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3 +DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4 +DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5 +DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6 +DOL_VALUE_MYSOC_TVA_INTRA=歐盟營業稅ID +DOL_VALUE_MYSOC_CAPITAL=資本 +DOL_VALUE_VENDOR_LASTNAME=Vendor last name +DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name +DOL_VALUE_VENDOR_MAIL=Vendor mail +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/zh_TW/stripe.lang b/htdocs/langs/zh_TW/stripe.lang index 8341304831b..d5ca122f272 100644 --- a/htdocs/langs/zh_TW/stripe.lang +++ b/htdocs/langs/zh_TW/stripe.lang @@ -32,6 +32,7 @@ VendorName=供應商名稱 CSSUrlForPaymentForm=CSS樣式付款表單網址 NewStripePaymentReceived=收到新的Stripe付款 NewStripePaymentFailed=已嘗試新的Stripe付款但失敗 +FailedToChargeCard=儲值失敗 STRIPE_TEST_SECRET_KEY=秘密測試金鑰 STRIPE_TEST_PUBLISHABLE_KEY=可發布的測試金鑰 STRIPE_TEST_WEBHOOK_KEY=Webhook測試金鑰 @@ -68,4 +69,4 @@ ToOfferALinkForTestWebhook=連結到Stripe WebHook設定以呼叫IPN(測試模 ToOfferALinkForLiveWebhook=連結到Stripe WebHook設定以呼叫IPN(live模式) PaymentWillBeRecordedForNextPeriod=付款將記錄在下一個期間。 ClickHereToTryAgain=<a href="%s">點擊此處重試... </a> -CreationOfPaymentModeMustBeDoneFromStripeInterface=根據嚴格的客戶身份驗證規則,必須在Stripe後台建立卡。您可以點擊此處打開Stripe客戶記錄:%s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/zh_TW/users.lang b/htdocs/langs/zh_TW/users.lang index 485e7e9db7f..4afcba3ee3f 100644 --- a/htdocs/langs/zh_TW/users.lang +++ b/htdocs/langs/zh_TW/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=用戶及其屬性 DomainUser=網域用戶%s Reactivate=重新啟用 CreateInternalUserDesc=此表單使您可以在公司/組織中建立內部用戶。要建立外部用戶(客戶,供應商等),請使用該第三方聯絡卡中的“建立Dolibarr用戶”按鈕。 -InternalExternalDesc=<b>內部</b>用戶是您公司/組織的一部分的用戶。 <br> <b>外部</b>用戶是客戶,供應商或其他。 <br><br>在這兩種情況下,Dolibarr中都已定義了權限,外部用戶也可以具有與內部用戶不同的菜單管理器(請參閱首頁-設定-顯示) +InternalExternalDesc=一位 <b>內部</b> 使用者是您 公司/組織 的一部分。<br>一位 <b>外部</b> 使用者是顧客,供應商或是其他 (可從第三方的聯絡人紀錄為第三方建立一位外部使用者)。<br><br>以上兩種情形,在 Dolibarr 權限定義權利,外部使用者可以使用一個跟內部使用者不同的選單管理器 (見 首頁 - 設定 - 顯示) PermissionInheritedFromAGroup=因為從權限授予一個用戶的一組繼承。 Inherited=繼承 UserWillBeInternalUser=建立的用戶將是一個內部用戶(因為沒有連結到一個特定的第三方) @@ -113,3 +113,5 @@ CantDisableYourself=您不能禁用自己的用戶記錄 ForceUserExpenseValidator=強制使用費用報告表驗證 ForceUserHolidayValidator=強制使用休假請求驗證 ValidatorIsSupervisorByDefault=預設情況下,驗證者是用戶的主管。保持空白狀態以保持這種行為。 +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone diff --git a/htdocs/langs/zh_TW/website.lang b/htdocs/langs/zh_TW/website.lang index 5ed3c336d17..6cf4b0381d9 100644 --- a/htdocs/langs/zh_TW/website.lang +++ b/htdocs/langs/zh_TW/website.lang @@ -42,7 +42,8 @@ ViewPageInNewTab=在新分頁中檢視頁面 SetAsHomePage=設為首頁 RealURL=真實網址 ViewWebsiteInProduction=使用家庭網址檢視網站 -SetHereVirtualHost=如果您會建立請<u>使用Apache/NGinx/...</u><br>, 在您的網站伺服器上 (Apache, Nginx, ...), 已啟用PHP的專用虛擬主機並且根資料夾位於<br><strong>%s</strong><br>然後在網站的屬性中設定您建立的虛擬主機名稱, 因此也可以預覽此網站伺服器而不是內部Dolibarr伺服器. +SetHereVirtualHost=<u>使用Apache/NGinx/...</u><br>建立您的網頁伺服器 (Apache, Nginx, ...) 啟用了含有PHP的專用虛擬主機並且根目錄資料夾位於<br><strong>%s</strong> +ExampleToUseInApacheVirtualHostConfig=在Apache虛擬主機設定中使用的範例: YouCanAlsoTestWithPHPS=在開發環境中<u>使用嵌入式PHP伺服器</u><br>, 您也許想要使用<br><strong>php -S 0.0.0.0:8080 -t %s</strong> 來測試此嵌入式PHP伺服器 (需要PHP 5.5) 的網站 YouCanAlsoDeployToAnotherWHP=<u>在其他Dolibarr網站託管供應商執行您的網站</u> <br>如果您在網路上沒有Apache或NGinx之類的Web伺服器,則可以將網站匯出並匯入到另一個由Dolibarr網站託管供應商提供且有完整整合網站模組。您可以在<a href="https://saas.dolibarr.org" target="_blank"> https://saas.dolibarr.org </a>上找到一些Dolibarr網站託管服務供應商的清單。 CheckVirtualHostPerms=還要檢查虛擬主機是否具有將<strong> %s </strong>上的許可權轉換為<br> <strong> %s </strong>的權限 @@ -84,7 +85,7 @@ SorryWebsiteIsCurrentlyOffLine=抱歉,此網站目前離線。請稍後再來 WEBSITE_USE_WEBSITE_ACCOUNTS=啟用網站帳戶列表 WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=啟用表格以存儲每個網站/合作方的網站帳戶(登入/通過) YouMustDefineTheHomePage=您必須先定義預設首頁 -OnlyEditionOfSourceForGrabbedContentFuture=警告:通過匯入外部網頁來建立網頁僅供有經驗的用戶使用。根據來源頁面的複雜程度,匯入結果可能與原始結果不同。同樣,如果來源頁面使用常見的CSS樣式或衝突的javascript,則在處理此頁面時,它可能會破壞網站編輯器的外觀或功能。此方法是建立頁面的較快方法,但建議從頭開始或從建議的頁面模板建立新頁面。 <br>另請注意,通過從外部頁面抓取頁面內容來初始化頁面內容後,將可以對HTML來源代碼進行編輯(“線上”編輯器將不可用) +OnlyEditionOfSourceForGrabbedContentFuture=警告:通過匯入外部網頁來建立網頁僅供有經驗的用戶使用。根據來源頁面的複雜程度,匯入結果可能與原始結果不同。同樣,如果來源頁面使用常見的CSS樣式或衝突的javascript,則在處理此頁面時,它可能會破壞網站編輯器的外觀或功能。此方法是建立頁面的較快方法,但建議從頭開始或從建議的頁面模板建立新頁面。<br>另請注意,在抓取的外部頁面上使用時,內聯編輯器可能無法正確工作。 OnlyEditionOfSourceForGrabbedContent=從外部網站獲取內容時,只能使用HTML源代碼版本 GrabImagesInto=抓取圖像到css和頁面。 ImagesShouldBeSavedInto=圖片應儲存到目錄中 @@ -124,3 +125,6 @@ UseTextBetween5And70Chars=為了獲得良好的SEO實踐,請使用5到70個字 MainLanguage=主要語言 OtherLanguages=其他語言 UseManifest=提供manifest.json檔案 +PublicAuthorAlias=公共作者別名 +AvailableLanguagesAreDefinedIntoWebsiteProperties=可用語言已定義到網站屬性中 +ReplacementDoneInXPages=Replacement done in %s pages or containers From 97b0cabb142c7b4cb5da6aa8e98496607ac5a6cf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 21 Apr 2020 18:47:31 +0200 Subject: [PATCH 065/780] Trans --- htdocs/langs/fr_FR/cashdesk.lang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang index fa3f3098389..f07b314db1b 100644 --- a/htdocs/langs/fr_FR/cashdesk.lang +++ b/htdocs/langs/fr_FR/cashdesk.lang @@ -103,6 +103,6 @@ ControlCashOpening=Popup d'ouverture de caisse à l'ouverture CloseCashFence=Clôturer la caisse CashReport=Rapport de caisse MainPrinterToUse=Main printer to use -OrderPrinterToUse=Order printer to use +OrderPrinterToUse=Printer to use MainTemplateToUse=Main template to use -OrderTemplateToUse=Order template to use +OrderTemplateToUse=Template to use for order From 770fca0b335dd6a0b135a7a45026be8ac2f305f9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 21 Apr 2020 20:16:36 +0200 Subject: [PATCH 066/780] Debug the double language feature in pdf --- .../core/class/commondocgenerator.class.php | 6 ++-- .../facture/doc/pdf_sponge.modules.php | 32 ++++++++++++------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index e868934e55a..a5cb9bf7d35 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -1466,6 +1466,7 @@ abstract class CommonDocGenerator // save curent cell padding $curentCellPaddinds = $pdf->getCellPaddings(); + // Add space for lines (more if we need to show a second alternative language) global $outputlangsbis; if (is_object($outputlangsbis)) { // set cell padding with column title definition @@ -1480,8 +1481,8 @@ abstract class CommonDocGenerator $textWidth = $colDef['width']; $pdf->MultiCell($textWidth, 2, $colDef['title']['label'], '', $colDef['title']['align']); - - if (is_object($outputlangsbis)) { + // Add variant of translation if $outputlangsbis is an object + if (is_object($outputlangsbis) && trim($colDef['title']['label'])) { $pdf->setCellPaddings($colDef['title']['padding'][3], 0, $colDef['title']['padding'][1], $colDef['title']['padding'][2]); $pdf->SetXY($colDef['xStartPos'], $pdf->GetY()); $textbis = $outputlangsbis->transnoentities($colDef['title']['textkey']); @@ -1495,6 +1496,7 @@ abstract class CommonDocGenerator } } } + return $this->tabTitleHeight; } diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index 6fad6fc4665..8f48f31fddb 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -1272,7 +1272,15 @@ class pdf_sponge extends ModelePDFFactures $default_font_size = pdf_getPDFFontSize($outputlangs); - $tab2_top = $posy; + $outputlangsbis = null; + if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && $outputlangs->defaultlang != $conf->global->PDF_USE_ALSO_LANGUAGE_CODE) { + $outputlangsbis = new Translate('', $conf); + $outputlangsbis->setDefaultLang($conf->global->PDF_USE_ALSO_LANGUAGE_CODE); + $outputlangsbis->loadLangs(array("main", "dict", "companies", "bills", "products", "propal")); + $default_font_size--; + } + + $tab2_top = $posy; $tab2_hl = 4; $pdf->SetFont('', '', $default_font_size - 1); @@ -1287,13 +1295,6 @@ class pdf_sponge extends ModelePDFFactures $useborder = 0; $index = 0; - $outputlangsbis = null; - if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && $outputlangs->defaultlang != $conf->global->PDF_USE_ALSO_LANGUAGE_CODE) { - $outputlangsbis = new Translate('', $conf); - $outputlangsbis->setDefaultLang($conf->global->PDF_USE_ALSO_LANGUAGE_CODE); - $outputlangsbis->loadLangs(array("main", "dict", "companies", "bills", "products", "propal")); - } - // Add trigger to allow to edit $object $parameters = array( 'object' => &$object, @@ -1708,7 +1709,7 @@ class pdf_sponge extends ModelePDFFactures $index++; $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); - $retainedWarrantyToPayOn = $outputlangs->transnoentities("RetainedWarranty").' ('.$object->retained_warranty.'%)'; + $retainedWarrantyToPayOn = $outputlangs->transnoentities("RetainedWarranty").(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transnoentities("RetainedWarranty") : '').' ('.$object->retained_warranty.'%)'; $retainedWarrantyToPayOn .= !empty($object->retained_warranty_date_limit) ? ' '.$outputlangs->transnoentities("toPayOn", dol_print_date($object->retained_warranty_date_limit, 'day')) : ''; $pdf->MultiCell($col2x - $col1x, $tab2_hl, $retainedWarrantyToPayOn, $useborder, 'L', 1); @@ -2028,7 +2029,12 @@ class pdf_sponge extends ModelePDFFactures $posy += 4; $pdf->SetXY($posx, $posy); $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell($w, 3, $outputlangs->transnoentities("DateInvoice")." : ".dol_print_date($object->date, "day", false, $outputlangs), '', 'R'); + + $title = $outputlangs->transnoentities("DateInvoice"); + if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && is_object($outputlangsbis)) { + $title .= ' - '.$outputlangsbis->transnoentities("DateInvoice"); + } + $pdf->MultiCell($w, 3, $title." : ".dol_print_date($object->date, "day", false, $outputlangs), '', 'R'); if (!empty($conf->global->INVOICE_POINTOFTAX_DATE)) { @@ -2043,7 +2049,11 @@ class pdf_sponge extends ModelePDFFactures $posy += 3; $pdf->SetXY($posx, $posy); $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell($w, 3, $outputlangs->transnoentities("DateDue")." : ".dol_print_date($object->date_lim_reglement, "day", false, $outputlangs, true), '', 'R'); + $title = $outputlangs->transnoentities("DateDue"); + if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && is_object($outputlangsbis)) { + $title .= ' - '.$outputlangsbis->transnoentities("DateDue"); + } + $pdf->MultiCell($w, 3, $title." : ".dol_print_date($object->date_lim_reglement, "day", false, $outputlangs, true), '', 'R'); } if ($object->thirdparty->code_client) From 758246c2a9618f4334a7f6bd49222d932697742c Mon Sep 17 00:00:00 2001 From: UT from dolibit <45215329+dolibit-ut@users.noreply.github.com> Date: Tue, 21 Apr 2020 20:33:41 +0200 Subject: [PATCH 067/780] Update MyGerman.isl --- build/exe/doliwamp/Languages/MyGerman.isl | 53 +++++++++++++++++++---- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/build/exe/doliwamp/Languages/MyGerman.isl b/build/exe/doliwamp/Languages/MyGerman.isl index 9c3a1d38bfc..134d50c2c0a 100644 --- a/build/exe/doliwamp/Languages/MyGerman.isl +++ b/build/exe/doliwamp/Languages/MyGerman.isl @@ -1,12 +1,47 @@ [CustomMessages] -NameAndVersion=%1 Version %2 -AdditionalIcons=Zustzliche Symbole: -CreateDesktopIcon=&Desktop-Symbol erstellen -CreateQuickLaunchIcon=Symbol in der Schnellstartleiste erstellen -ProgramOnTheWeb=%1 im Internet -UninstallProgram=%1 entfernen -LaunchProgram=%1 starten -AssocFileExtension=&Registriere %1 mit der %2-Dateierweiterung -AssocingFileExtension=%1 wird mit der %2-Dateierweiterung registriert... +NameAndVersion = %1 Version %2 +AdditionalIcons = Zusätzliche Symbole: +CreateDesktopIcon = &Desktop-Symbol erstellen +CreateQuickLaunchIcon = Symbol in der Schnellstartleiste erstellen +ProgramOnTheWeb = %1 im Internet +UninstallProgram = %1 entfernen +LaunchProgram = %1 starten +AssocFileExtension = &Registriere %1 mit der %2-Dateierweiterung +AssocingFileExtension = %1 wird mit der %2-Dateierweiterung registriert... + + +YouWillInstallDoliWamp = Sie installieren DoliWamp (also Dolibarr + alle erforderliche Software von Drittanbietern wie Apache, MySQL und PHP) auf Ihrem Computer. +ThisAssistantInstallOrUpgrade = WARNUNG: Die Verwendung eines auf einem lokalen Computer installierten ERP-CRM kann gefährlich sein: Wenn Ihr Computer ausfällt, können Sie alle Ihre Daten verlieren. Tun Sie dies, wenn Sie bereit sind, das Backup selbst ernsthaft zu verwalten. Wenn nicht, verwenden Sie stattdessen eine Installation in Saas (siehe https://saas.dolibarr.org). +IfYouHaveTechnicalKnowledge = Wenn Sie über technische Kenntnisse verfügen und Apache, MySQL und PHP selbst verwalten möchten, sollten Sie diesen Assistenten nicht verwenden und eine manuelle Installation von Dolibarr auf Ihrem vorhandenen Server mit Apache, MySQL und PHP durchführen. +ButIfYouLook = Aber wenn Sie auf Ihrem lokalen Computer nach einer automatischen Einrichtung suchen, sind Sie auf dem besten Weg ... +DoYouWantToStart = Möchten Sie den Installationsprozess starten? + +TechnicalParameters = technische Parameter +IfFirstInstall = Geben Sie bei der Erstinstallation einige technische Parameter an. Wenn Sie nicht verstehen, sich nicht sicher sind oder ein Upgrade durchführen, belassen Sie einfach die Standardwerte. + +; WARNING !!! STRINGS HERE MUST BE LOWER THAN 60 CHARACTERS +SMTPServer=SMTP Server (your own or ISP SMTP server, first install only) : +ApachePort=Apache Port (first install only, Standard ist 80) : +MySqlPort=MySQL Port (first install only, Standard ist 3306) : +MySqlPassword=MySQL Server und Datenbank Passwort für root (first install only): + +FailedToDeleteLock = Fehler beim Löschen der Datei %1/www/dolibarr/install.lock. Sie können die Warnung ignorieren, müssen sie jedoch möglicherweise später manuell entfernen, wenn Sie dazu aufgefordert werden. Klicken Sie auf OK, um fortzufahren ... + +PortAlreadyInUse = Port %1 scheint bereits verwendet zu werden. Sie sollten zurückgehen und einen anderen Wert für %2 Port wählen. Auswahl abbrechen und einen anderen Wert wählen ? + +FirefoxDetected = Firefox wurde auf Ihrem Computer erkannt. Möchten Sie ihn als Standardbrowser für Dolibarr verwenden? +ChromeDetected = Chrome wurde auf Ihrem Computer erkannt. Möchten Sie ihn als Standardbrowser für Dolibarr verwenden? +ChooseDefaultBrowser = Bitte wählen Sie Ihren Standardbrowser (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...). Wenn Sie sich nicht sicher sind, klicken Sie einfach auf Öffnen: + +LaunchNow = Starten Sie jetzt Dolibarr + +ProgramHasBeenRemoved = Die Dolibarr-Programmdateien wurden entfernt. Alle Ihre Daten befinden sich jedoch noch im Verzeichnis %1. Für eine vollständige Deinstallation, müssen Sie dieses Verzeichnis manuell entfernen. +DoliWampWillStartApacheMysql = Die DoliWamp-Installation wird nun starten oder Apache und MySQL neu starten. Dies kann nach dieser Bestätigung einige Sekunden bis eine Minute dauern. Wollen Sie mit der Installation oder Aktualisierung des von Dolibarr benötigten Web- und Datenbankservers starten ? + +OldVersionFoundAndMoveInNew = Eine alte Datenbankversion wurde gefunden und verschoben, um von der neuen Dolibarr-Version verwendet zu werden. +OldVersionFoundButFailedToMoveInNew = Eine alte Datenbankversion wurde gefunden, konnte jedoch nicht verschoben werden, um mit der neuen Dolibarr-Version verwendet zu werden. + +DLLMissing = Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2012" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after. +ContinueAnyway = Fahren Sie trotzdem fort (der Installationsvorgang kann ohne diese Voraussetzung fehlschlagen). From 50ea0ee92a498452d4b08d7e9e65a63832151eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Tue, 21 Apr 2020 22:40:24 +0200 Subject: [PATCH 068/780] Update modMyModule.class.php --- .../template/core/modules/modMyModule.class.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php index e51eeb51921..ba956e46af9 100644 --- a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php +++ b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php @@ -1,7 +1,7 @@ <?php /* Copyright (C) 2004-2018 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2018-2019 Nicolas ZABOURI <info@inovea-conseil.com> - * Copyright (C) 2019 Frédéric France <frederic.france@netlogic.fr> + * Copyright (C) 2019-2020 Frédéric France <frederic.france@netlogic.fr> * Copyright (C) ---Put here your own copyright and developer email--- * * This program is free software; you can redistribute it and/or modify @@ -396,11 +396,11 @@ class modMyModule extends DolibarrModules // Create extrafields during init //include_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; //$extrafields = new ExtraFields($this->db); - //$result1=$extrafields->addExtraField('myattr1', "New Attr 1 label", 'boolean', 1, 3, 'thirdparty', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result2=$extrafields->addExtraField('myattr2', "New Attr 2 label", 'varchar', 1, 10, 'project', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result3=$extrafields->addExtraField('myattr3', "New Attr 3 label", 'varchar', 1, 10, 'bank_account', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result4=$extrafields->addExtraField('myattr4', "New Attr 4 label", 'select', 1, 3, 'thirdparty', 0, 1, '', array('options'=>array('code1'=>'Val1','code2'=>'Val2','code3'=>'Val3')), 1,'', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result5=$extrafields->addExtraField('myattr5', "New Attr 5 label", 'text', 1, 10, 'user', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); + //$result1=$extrafields->addExtraField('mymodule_myattr1', "New Attr 1 label", 'boolean', 1, 3, 'thirdparty', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); + //$result2=$extrafields->addExtraField('mymodule_myattr2', "New Attr 2 label", 'varchar', 1, 10, 'project', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); + //$result3=$extrafields->addExtraField('mymodule_myattr3', "New Attr 3 label", 'varchar', 1, 10, 'bank_account', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); + //$result4=$extrafields->addExtraField('mymodule_myattr4', "New Attr 4 label", 'select', 1, 3, 'thirdparty', 0, 1, '', array('options'=>array('code1'=>'Val1','code2'=>'Val2','code3'=>'Val3')), 1,'', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); + //$result5=$extrafields->addExtraField('mymodule_myattr5', "New Attr 5 label", 'text', 1, 10, 'user', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); // Permissions $this->remove($options); From 14cdf19bf5a68f449b65711af890e23694daaf02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Tue, 21 Apr 2020 22:57:48 +0200 Subject: [PATCH 069/780] Update modulebuilder.lang --- htdocs/langs/en_US/modulebuilder.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/modulebuilder.lang b/htdocs/langs/en_US/modulebuilder.lang index 9dd6e9c9b30..b815cf997cc 100644 --- a/htdocs/langs/en_US/modulebuilder.lang +++ b/htdocs/langs/en_US/modulebuilder.lang @@ -84,7 +84,7 @@ ListOfPermissionsDefined=List of defined permissions SeeExamples=See examples here 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 (not list), 4=Visible on list and update/view form only (not create), 5=Visible on list end view form only (not create, not update). Using a negative value means field is not shown by default on list but can be selected for viewing). It can be an expression, for example:<br>preg_match('/public/', $_SERVER['PHP_SELF'])?0:1<br>($user->rights->holiday->define_holiday ? 1 : 0) -DisplayOnPdfDesc=Display this field on compatible PDF documents, you can manage position with "Position" field.<br/>Currently, known compatibles PDF models are : eratostene (order), espadon (ship), sponge (invoices), cyan (propal/quotation), cornas (supplier order)<br/><br/><strong>For document :</strong><br/>0 = not displayed <br/>1 = display<br/>2 = display only if not empty<br/><br/><strong>For document lines :</strong><br/>0 = not displayed <br/>1 = displayed in a column<br/>3 = display in line description column after the description<br/>4 = display in description column after the description only if not empty +DisplayOnPdfDesc=Display this field on compatible PDF documents, you can manage position with "Position" field.<br/>Currently, known compatibles PDF models are : eratosthene (order), espadon (ship), sponge (invoices), cyan (propal/quotation), cornas (supplier order)<br/><br/><strong>For document :</strong><br/>0 = not displayed <br/>1 = display<br/>2 = display only if not empty<br/><br/><strong>For document lines :</strong><br/>0 = not displayed <br/>1 = displayed in a column<br/>3 = display in line description column after the description<br/>4 = display in description column after the description only if not empty DisplayOnPdf=Display on PDF 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) From cf05796f31112737fca5f2e77250121a1976635d Mon Sep 17 00:00:00 2001 From: Laurent Paumier <laurent@home.lan> Date: Tue, 21 Apr 2020 23:01:21 +0200 Subject: [PATCH 070/780] FIX #13027 expensereport status in generated pdf --- htdocs/expensereport/class/expensereport.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index db46d591816..dfa9a7c5b95 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -704,8 +704,8 @@ class ExpenseReport extends CommonObject // phpcs:enable global $langs; - $labelStatus = $langs->trans($this->statuts[$status]); - $labelStatusShort = $langs->trans($this->statuts_short[$status]); + $labelStatus = $langs->transnoentities($this->statuts[$status]); + $labelStatusShort = $langs->transnoentities($this->statuts_short[$status]); $statusType = $this->statuts_logo[$status]; From 2fde77703d8cb3cae1249f1fa33fac13b8949939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Tue, 21 Apr 2020 23:06:41 +0200 Subject: [PATCH 071/780] add extrafields in note for enstein --- htdocs/core/modules/commande/doc/pdf_einstein.modules.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index b8740fa60de..3838b9146e6 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -7,7 +7,7 @@ * Copyright (C) 2012 Cedric Salvador <csalvador@gpcsolutions.fr> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2017-2018 Ferran Marcet <fmarcet@2byte.es> - * Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr> + * Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr> * * 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 @@ -372,6 +372,12 @@ class pdf_einstein extends ModelePDFCommandes if (!empty($salerepobj->signature)) $notetoshow = dol_concatdesc($notetoshow, $salerepobj->signature); } } + // Extrafields in note + $extranote = $this->getExtrafieldsInHtml($object, $outputlangs); + if (!empty($extranote)) { + $notetoshow = dol_concatdesc($notetoshow, $extranote); + } + if ($notetoshow) { $tab_top -= 2; From 7972a35e369a886003fc16748ac74b7900a08e01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Tue, 21 Apr 2020 23:12:12 +0200 Subject: [PATCH 072/780] Update pdf_azur.modules.php --- htdocs/core/modules/propale/doc/pdf_azur.modules.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 07074888409..c285f560678 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -7,7 +7,7 @@ * Copyright (C) 2012 Cedric Salvador <csalvador@gpcsolutions.fr> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2017-2018 Ferran Marcet <fmarcet@2byte.es> - * Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr> + * Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr> * Copyright (C) 2019 Pierre Ardoin <mapiolca@me.com> * * This program is free software; you can redistribute it and/or modify @@ -439,6 +439,11 @@ class pdf_azur extends ModelePDFPropales if (!empty($salerepobj->signature)) $notetoshow = dol_concatdesc($notetoshow, $salerepobj->signature); } } + // Extrafields in note + $extranote = $this->getExtrafieldsInHtml($object, $outputlangs); + if (!empty($extranote)) { + $notetoshow = dol_concatdesc($notetoshow, $extranote); + } if (!empty($conf->global->MAIN_ADD_CREATOR_IN_NOTE) && $object->user_author_id > 0) { $tmpuser = new User($this->db); From 8f4270722009cbacd54d0ae3af71e8dbbe67c003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Tue, 21 Apr 2020 23:20:11 +0200 Subject: [PATCH 073/780] Update pdf_crabe.modules.php --- htdocs/core/modules/facture/doc/pdf_crabe.modules.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 4d9df1c662a..dcb6cc33a96 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -8,7 +8,7 @@ * Copyright (C) 2012-2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2017-2018 Ferran Marcet <fmarcet@2byte.es> - * Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr> + * Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr> * * 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 @@ -456,6 +456,11 @@ class pdf_crabe extends ModelePDFFactures if (!empty($salerepobj->signature)) $notetoshow = dol_concatdesc($notetoshow, $salerepobj->signature); } } + // Extrafields in note + $extranote = $this->getExtrafieldsInHtml($object, $outputlangs); + if (!empty($extranote)) { + $notetoshow = dol_concatdesc($notetoshow, $extranote); + } if ($notetoshow) { $tab_top -= 2; From e8ead1d9245c55b41a5ee1fd46b1659eab457959 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 00:36:46 +0200 Subject: [PATCH 074/780] Update expensereport.class.php --- htdocs/expensereport/class/expensereport.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index dfa9a7c5b95..ab54a4f3915 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -704,8 +704,8 @@ class ExpenseReport extends CommonObject // phpcs:enable global $langs; - $labelStatus = $langs->transnoentities($this->statuts[$status]); - $labelStatusShort = $langs->transnoentities($this->statuts_short[$status]); + $labelStatus = $langs->transnoentitiesnoconv($this->statuts[$status]); + $labelStatusShort = $langs->transnoentitiesnoconv($this->statuts_short[$status]); $statusType = $this->statuts_logo[$status]; From 5c573e197b6d0a488c41cbe1cc4d0a953e602792 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 00:50:04 +0200 Subject: [PATCH 075/780] Look and feel v12 --- htdocs/categories/index.php | 2 +- htdocs/core/lib/functions.lib.php | 2 +- htdocs/theme/eldy/global.inc.php | 2 +- htdocs/user/hierarchy.php | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/categories/index.php b/htdocs/categories/index.php index d3b8f81c94d..2103a4081d3 100644 --- a/htdocs/categories/index.php +++ b/htdocs/categories/index.php @@ -197,7 +197,7 @@ print '<table class="liste nohover" width="100%">'; print '<tr class="liste_titre"><td>'.$langs->trans("Categories").'</td><td></td><td class="right">'; if (!empty($conf->use_javascript_ajax)) { - print '<div id="iddivjstreecontrol"><a class="notasortlink" href="#">'.img_picto('', 'folder').' '.$langs->trans("UndoExpandAll").'</a> | <a class="notasortlink" href="#">'.img_picto('', 'folder-open').' '.$langs->trans("ExpandAll").'</a></div>'; + print '<div id="iddivjstreecontrol"><a class="notasortlink" href="#">'.img_picto('', 'folder', 'class="paddingright"').$langs->trans("UndoExpandAll").'</a> | <a class="notasortlink" href="#">'.img_picto('', 'folder-open', 'class="paddingright"').$langs->trans("ExpandAll").'</a></div>'; } print '</td></tr>'; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index da1b7ac632e..16ecae4298b 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3249,7 +3249,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ // Add CSS $arrayconvpictotomorcess = array( 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', 'cash-register'=>'bg-infobox-bank_account', - 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'dollyrevert'=>'flip', 'folder'=>'bg-infobox-action', + 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'dollyrevert'=>'flip', 'ecm'=>'bg-infobox-action', 'hrm'=>'bg-infobox-adherent', 'group'=>'bg-infobox-adherent', 'intervention'=>'bg-infobox-contrat', 'multicurrency'=>'bg-infobox-bank_account', 'members'=>'bg-infobox-adherent', 'member'=>'bg-infobox-adherent', 'money-bill-alt'=>'bg-infobox-bank_account', diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index e56cd8ee36a..b3327bbf84e 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3769,7 +3769,7 @@ div.info { padding-bottom: 8px; margin: 1em 0em 1em 0em; background: #eff8fc; - color: #666; + color: #558; } /* Warning message */ diff --git a/htdocs/user/hierarchy.php b/htdocs/user/hierarchy.php index cd93d6106e7..3a05bb3d640 100644 --- a/htdocs/user/hierarchy.php +++ b/htdocs/user/hierarchy.php @@ -153,7 +153,7 @@ else $morehtmlright .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-list paddingleft', DOL_URL_ROOT.'/user/list.php'.(($search_statut != '' && $search_statut >= 0) ? '?search_statut='.$search_statut : '')); - print load_fiche_titre($title, $morehtmlright.' '.$newcardbutton); + print load_fiche_titre($title, $morehtmlright.' '.$newcardbutton, 'user'); print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">'."\n"; if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; @@ -181,7 +181,7 @@ else print '<tr class="liste_titre">'; print_liste_field_titre("HierarchicView"); - print_liste_field_titre('<div id="iddivjstreecontrol"><a href="#">'.img_picto('', 'object_category').' '.$langs->trans("UndoExpandAll").'</a> | <a href="#">'.img_picto('', 'object_category-expanded').' '.$langs->trans("ExpandAll").'</a></div>', $_SERVER['PHP_SELF'], "", '', "", 'align="center"'); + print_liste_field_titre('<div id="iddivjstreecontrol"><a href="#">'.img_picto('', 'folder', 'class="paddingright"').$langs->trans("UndoExpandAll").'</a> | <a href="#">'.img_picto('', 'folder-open', 'class="paddingright"').$langs->trans("ExpandAll").'</a></div>', $_SERVER['PHP_SELF'], "", '', "", 'align="center"'); print_liste_field_titre("Status", $_SERVER['PHP_SELF'], "", '', "", 'align="right"'); print_liste_field_titre('', $_SERVER["PHP_SELF"], "", '', '', '', '', '', 'maxwidthsearch '); print '</tr>'; From f52408cec1e114b5d254cbbcc8aa8b801832d860 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 00:55:38 +0200 Subject: [PATCH 076/780] Look and feel v12 --- htdocs/categories/viewcat.php | 4 ++-- htdocs/core/lib/usergroups.lib.php | 2 +- htdocs/theme/eldy/global.inc.php | 2 +- htdocs/user/param_ihm.php | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index d259c8ca5a5..c4366ebf19c 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -317,9 +317,9 @@ print '<td class="right">'; if (!empty($conf->use_javascript_ajax)) { print '<div id="iddivjstreecontrol">'; - print '<a class="notasortlink" href="#">'.img_picto('', 'object_category').' '.$langs->trans("UndoExpandAll").'</a>'; + print '<a class="notasortlink" href="#">'.img_picto('', 'folder').' '.$langs->trans("UndoExpandAll").'</a>'; print " | "; - print '<a class="notasortlink" href="#">'.img_picto('', 'object_category-expanded').' '.$langs->trans("ExpandAll").'</a>'; + print '<a class="notasortlink" href="#">'.img_picto('', 'folder-open').' '.$langs->trans("ExpandAll").'</a>'; print '</div>'; } diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index f3e7cee141d..5b7c923001b 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -331,7 +331,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($foruserprofile) $colspan = 4; $thumbsbyrow = 6; - print '<table class="noborder centpercent'.($edit ? ' editmode' : '').'">'; + print '<table class="noborder centpercent'.($edit ? ' editmode' : '').' tableforfield">'; // Title if ($foruserprofile) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index b3327bbf84e..89d803781ba 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3769,7 +3769,7 @@ div.info { padding-bottom: 8px; margin: 1em 0em 1em 0em; background: #eff8fc; - color: #558; + color: #668; } /* Warning message */ diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index 23ac2d421d0..f9ebd310cfa 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -261,8 +261,8 @@ if ($action == 'edit') clearstatcache(); - print '<table class="noborder centpercent">'; - print '<tr class="liste_titre"><td width="25%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td> </td><td>'.$langs->trans("PersonalValue").'</td></tr>'; + print '<table class="noborder centpercent tableforfield">'; + print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td>'.$langs->trans("DefaultValue").'</td><td> </td><td>'.$langs->trans("PersonalValue").'</td></tr>'; // Landing page print '<tr class="oddeven"><td>'.$langs->trans("LandingPage").'</td>'; @@ -333,8 +333,8 @@ else dol_banner_tab($object, 'id', $linkback, $user->rights->user->user->lire || $user->admin); - print '<table class="noborder centpercent">'; - print '<tr class="liste_titre"><td width="25%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td> </td><td>'.$langs->trans("PersonalValue").'</td></tr>'; + print '<table class="noborder centpercent tableforfield">'; + print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td>'.$langs->trans("DefaultValue").'</td><td> </td><td>'.$langs->trans("PersonalValue").'</td></tr>'; // Landing page print '<tr class="oddeven"><td>'.$langs->trans("LandingPage").'</td>'; From d54c093ae2e7283675c9c087e2083c32c3faa182 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 00:57:28 +0200 Subject: [PATCH 077/780] Fix file --- build/exe/doliwamp/Languages/MyGerman.isl | 56 +++++++++++------------ 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/build/exe/doliwamp/Languages/MyGerman.isl b/build/exe/doliwamp/Languages/MyGerman.isl index 134d50c2c0a..8bfd78dbea2 100644 --- a/build/exe/doliwamp/Languages/MyGerman.isl +++ b/build/exe/doliwamp/Languages/MyGerman.isl @@ -1,25 +1,25 @@ [CustomMessages] -NameAndVersion = %1 Version %2 -AdditionalIcons = Zusätzliche Symbole: -CreateDesktopIcon = &Desktop-Symbol erstellen -CreateQuickLaunchIcon = Symbol in der Schnellstartleiste erstellen -ProgramOnTheWeb = %1 im Internet -UninstallProgram = %1 entfernen -LaunchProgram = %1 starten -AssocFileExtension = &Registriere %1 mit der %2-Dateierweiterung -AssocingFileExtension = %1 wird mit der %2-Dateierweiterung registriert... +NameAndVersion=%1 Version %2 +AdditionalIcons=Zusätzliche Symbole: +CreateDesktopIcon=&Desktop-Symbol erstellen +CreateQuickLaunchIcon=Symbol in der Schnellstartleiste erstellen +ProgramOnTheWeb=%1 im Internet +UninstallProgram=%1 entfernen +LaunchProgram=%1 starten +AssocFileExtension=&Registriere %1 mit der %2-Dateierweiterung +AssocingFileExtension=%1 wird mit der %2-Dateierweiterung registriert... -YouWillInstallDoliWamp = Sie installieren DoliWamp (also Dolibarr + alle erforderliche Software von Drittanbietern wie Apache, MySQL und PHP) auf Ihrem Computer. -ThisAssistantInstallOrUpgrade = WARNUNG: Die Verwendung eines auf einem lokalen Computer installierten ERP-CRM kann gefährlich sein: Wenn Ihr Computer ausfällt, können Sie alle Ihre Daten verlieren. Tun Sie dies, wenn Sie bereit sind, das Backup selbst ernsthaft zu verwalten. Wenn nicht, verwenden Sie stattdessen eine Installation in Saas (siehe https://saas.dolibarr.org). -IfYouHaveTechnicalKnowledge = Wenn Sie über technische Kenntnisse verfügen und Apache, MySQL und PHP selbst verwalten möchten, sollten Sie diesen Assistenten nicht verwenden und eine manuelle Installation von Dolibarr auf Ihrem vorhandenen Server mit Apache, MySQL und PHP durchführen. -ButIfYouLook = Aber wenn Sie auf Ihrem lokalen Computer nach einer automatischen Einrichtung suchen, sind Sie auf dem besten Weg ... -DoYouWantToStart = Möchten Sie den Installationsprozess starten? +YouWillInstallDoliWamp=Sie installieren DoliWamp (also Dolibarr + alle erforderliche Software von Drittanbietern wie Apache, MySQL und PHP) auf Ihrem Computer. +ThisAssistantInstallOrUpgrade=WARNUNG: Die Verwendung eines auf einem lokalen Computer installierten ERP-CRM kann gefährlich sein: Wenn Ihr Computer ausfällt, können Sie alle Ihre Daten verlieren. Tun Sie dies, wenn Sie bereit sind, das Backup selbst ernsthaft zu verwalten. Wenn nicht, verwenden Sie stattdessen eine Installation in Saas (siehe https://saas.dolibarr.org). +IfYouHaveTechnicalKnowledge=Wenn Sie über technische Kenntnisse verfügen und Apache, MySQL und PHP selbst verwalten möchten, sollten Sie diesen Assistenten nicht verwenden und eine manuelle Installation von Dolibarr auf Ihrem vorhandenen Server mit Apache, MySQL und PHP durchführen. +ButIfYouLook=Aber wenn Sie auf Ihrem lokalen Computer nach einer automatischen Einrichtung suchen, sind Sie auf dem besten Weg ... +DoYouWantToStart=Möchten Sie den Installationsprozess starten? -TechnicalParameters = technische Parameter -IfFirstInstall = Geben Sie bei der Erstinstallation einige technische Parameter an. Wenn Sie nicht verstehen, sich nicht sicher sind oder ein Upgrade durchführen, belassen Sie einfach die Standardwerte. +TechnicalParameters=technische Parameter +IfFirstInstall=Geben Sie bei der Erstinstallation einige technische Parameter an. Wenn Sie nicht verstehen, sich nicht sicher sind oder ein Upgrade durchführen, belassen Sie einfach die Standardwerte. ; WARNING !!! STRINGS HERE MUST BE LOWER THAN 60 CHARACTERS SMTPServer=SMTP Server (your own or ISP SMTP server, first install only) : @@ -27,21 +27,21 @@ ApachePort=Apache Port (first install only, Standard ist 80) : MySqlPort=MySQL Port (first install only, Standard ist 3306) : MySqlPassword=MySQL Server und Datenbank Passwort für root (first install only): -FailedToDeleteLock = Fehler beim Löschen der Datei %1/www/dolibarr/install.lock. Sie können die Warnung ignorieren, müssen sie jedoch möglicherweise später manuell entfernen, wenn Sie dazu aufgefordert werden. Klicken Sie auf OK, um fortzufahren ... +FailedToDeleteLock=Fehler beim Löschen der Datei %1/www/dolibarr/install.lock. Sie können die Warnung ignorieren, müssen sie jedoch möglicherweise später manuell entfernen, wenn Sie dazu aufgefordert werden. Klicken Sie auf OK, um fortzufahren ... -PortAlreadyInUse = Port %1 scheint bereits verwendet zu werden. Sie sollten zurückgehen und einen anderen Wert für %2 Port wählen. Auswahl abbrechen und einen anderen Wert wählen ? +PortAlreadyInUse=Port %1 scheint bereits verwendet zu werden. Sie sollten zurückgehen und einen anderen Wert für %2 Port wählen. Auswahl abbrechen und einen anderen Wert wählen ? -FirefoxDetected = Firefox wurde auf Ihrem Computer erkannt. Möchten Sie ihn als Standardbrowser für Dolibarr verwenden? -ChromeDetected = Chrome wurde auf Ihrem Computer erkannt. Möchten Sie ihn als Standardbrowser für Dolibarr verwenden? -ChooseDefaultBrowser = Bitte wählen Sie Ihren Standardbrowser (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...). Wenn Sie sich nicht sicher sind, klicken Sie einfach auf Öffnen: +FirefoxDetected=Firefox wurde auf Ihrem Computer erkannt. Möchten Sie ihn als Standardbrowser für Dolibarr verwenden? +ChromeDetected=Chrome wurde auf Ihrem Computer erkannt. Möchten Sie ihn als Standardbrowser für Dolibarr verwenden? +ChooseDefaultBrowser=Bitte wählen Sie Ihren Standardbrowser (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...). Wenn Sie sich nicht sicher sind, klicken Sie einfach auf Öffnen: -LaunchNow = Starten Sie jetzt Dolibarr +LaunchNow=Starten Sie jetzt Dolibarr -ProgramHasBeenRemoved = Die Dolibarr-Programmdateien wurden entfernt. Alle Ihre Daten befinden sich jedoch noch im Verzeichnis %1. Für eine vollständige Deinstallation, müssen Sie dieses Verzeichnis manuell entfernen. -DoliWampWillStartApacheMysql = Die DoliWamp-Installation wird nun starten oder Apache und MySQL neu starten. Dies kann nach dieser Bestätigung einige Sekunden bis eine Minute dauern. Wollen Sie mit der Installation oder Aktualisierung des von Dolibarr benötigten Web- und Datenbankservers starten ? +ProgramHasBeenRemoved=Die Dolibarr-Programmdateien wurden entfernt. Alle Ihre Daten befinden sich jedoch noch im Verzeichnis %1. Für eine vollständige Deinstallation, müssen Sie dieses Verzeichnis manuell entfernen. +DoliWampWillStartApacheMysql=Die DoliWamp-Installation wird nun starten oder Apache und MySQL neu starten. Dies kann nach dieser Bestätigung einige Sekunden bis eine Minute dauern. Wollen Sie mit der Installation oder Aktualisierung des von Dolibarr benötigten Web- und Datenbankservers starten ? -OldVersionFoundAndMoveInNew = Eine alte Datenbankversion wurde gefunden und verschoben, um von der neuen Dolibarr-Version verwendet zu werden. -OldVersionFoundButFailedToMoveInNew = Eine alte Datenbankversion wurde gefunden, konnte jedoch nicht verschoben werden, um mit der neuen Dolibarr-Version verwendet zu werden. +OldVersionFoundAndMoveInNew=Eine alte Datenbankversion wurde gefunden und verschoben, um von der neuen Dolibarr-Version verwendet zu werden. +OldVersionFoundButFailedToMoveInNew=Eine alte Datenbankversion wurde gefunden, konnte jedoch nicht verschoben werden, um mit der neuen Dolibarr-Version verwendet zu werden. -DLLMissing = Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2012" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after. -ContinueAnyway = Fahren Sie trotzdem fort (der Installationsvorgang kann ohne diese Voraussetzung fehlschlagen). +DLLMissing=Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2012" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after. +ContinueAnyway=Fahren Sie trotzdem fort (der Installationsvorgang kann ohne diese Voraussetzung fehlschlagen). From ae519a1009c2a5c598f79486d82493a797091c24 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 00:59:22 +0200 Subject: [PATCH 078/780] Update fournisseur.facture.class.php --- .../fourn/class/fournisseur.facture.class.php | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index c886588ee9b..bc353e7ef0d 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -3128,7 +3128,7 @@ class SupplierInvoiceLine extends CommonObjectLine */ public function delete($notrigger = 0) { - global $user; + global $user, $conf; dol_syslog(get_class($this)."::deleteline rowid=".$this->id, LOG_DEBUG); @@ -3144,6 +3144,17 @@ class SupplierInvoiceLine extends CommonObjectLine $this->deleteObjectLinked(); + // Remove extrafields + if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + { + $result=$this->deleteExtraFields(); + if ($result < 0) + { + $error++; + dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); + } + } + if (!$error) { // Supprime ligne $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det '; @@ -3156,17 +3167,6 @@ class SupplierInvoiceLine extends CommonObjectLine } } - // Remove extrafields - if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used - { - $result=$this->deleteExtraFields(); - if ($result < 0) - { - $error++; - dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); - } - } - if (!$error) { $this->db->commit(); From 8ed9c30a892144493276c7503cc60158fa5c2ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Wed, 22 Apr 2020 09:02:02 +0200 Subject: [PATCH 079/780] clean tab/whitespace --- 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 bc353e7ef0d..f2f1bac9257 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -12,7 +12,7 @@ * Copyright (C) 2015-2019 Ferran Marcet <fmarcet@2byte.es> * Copyright (C) 2016 Alexandre Spangaro <aspangaro@open-dsi.fr> * Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com> - * Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr> + * Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr> * * 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 @@ -3154,7 +3154,7 @@ class SupplierInvoiceLine extends CommonObjectLine dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); } } - + if (!$error) { // Supprime ligne $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det '; From cce3085a79ceda311df5eb3a5b169f791687383f Mon Sep 17 00:00:00 2001 From: VESSILLER <lvessiller@open-dsi.fr> Date: Wed, 22 Apr 2020 10:44:23 +0200 Subject: [PATCH 080/780] NEW can update contact in import model --- htdocs/core/modules/modSociete.class.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index 0d74fea9b24..7d64a1a7499 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -579,6 +579,7 @@ class modSociete extends DolibarrModules 'extra' => MAIN_DB_PREFIX.'socpeople_extrafields' ); // List of tables to insert into (insert done in same order) $this->import_fields_array[$r] = array(//field order as per structure of table llx_socpeople + 's.rowid' => 'Id', 's.datec' => "DateCreation", 's.fk_soc' => 'ThirdPartyName', 's.civility' => 'UserTitle', @@ -645,6 +646,7 @@ class modSociete extends DolibarrModules 's.datec' => '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?$' ); $this->import_examplevalues_array[$r] = array(//field order as per structure of table llx_socpeople + 's.rowid' => '1', 's.datec' => 'formatted as '.dol_print_date(dol_now(), '%Y-%m-%d'), 's.fk_soc' => 'Third Party name eg. TPBigCompany', 's.civility' => 'Title of civility eg: MR...matches field "code" in table "'.MAIN_DB_PREFIX.'c_civility"', @@ -666,6 +668,9 @@ class modSociete extends DolibarrModules 's.note_private' => "My private note", 's.note_public' => "My public note" ); + $this->import_updatekeys_array[$r] = array( + 's.rowid' => 'Id' + ); // Import Bank Accounts $r++; From 8be14060d64f635d6142c0db1f6c36728440f4ac Mon Sep 17 00:00:00 2001 From: florian HENRY <florian.henry@atm-consuliting.fr> Date: Wed, 22 Apr 2020 12:08:05 +0200 Subject: [PATCH 081/780] fix: avoid php notice --- htdocs/core/modules/modService.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/modService.class.php b/htdocs/core/modules/modService.class.php index 4fb5cb175b0..1b8c2d7f7e5 100644 --- a/htdocs/core/modules/modService.class.php +++ b/htdocs/core/modules/modService.class.php @@ -579,7 +579,7 @@ class modService extends DolibarrModules 'sp.remise_percent'=>'DiscountQtyMin' )); - if ($conf->multicurrency->enabled) + if (!empty($conf->multicurrency->enabled)) { $this->import_fields_array[$r] = array_merge($this->import_fields_array[$r], array( 'sp.fk_multicurrency'=>'CurrencyCodeId', //ideally this should be automatically obtained from the CurrencyCode on the next line @@ -616,7 +616,7 @@ class modService extends DolibarrModules // TODO Make this field not required and calculate it from price and qty 'sp.remise_percent' => '20' )); - if ($conf->multicurrency->enabled) + if (!empty($conf->multicurrency->enabled)) { $this->import_examplevalues_array[$r] = array_merge($this->import_examplevalues_array[$r], array( 'sp.fk_multicurrency'=>'eg: 2, rowid for code of multicurrency currency', From f6f9ca48dd9b6d76aadeca33021c8ab30a7cd020 Mon Sep 17 00:00:00 2001 From: Regis Houssin <regis.houssin@inodbox.com> Date: Wed, 22 Apr 2020 12:23:26 +0200 Subject: [PATCH 082/780] FIX missing fk_bank during export of suppliers invoices --- htdocs/core/modules/modFournisseur.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php index e5ce01e3c72..4b7c8ff3ed2 100644 --- a/htdocs/core/modules/modFournisseur.class.php +++ b/htdocs/core/modules/modFournisseur.class.php @@ -418,7 +418,7 @@ class modFournisseur extends DolibarrModules 's.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.ref'=>"InvoiceRef",'f.ref_supplier'=>"RefSupplier",'f.datec'=>"InvoiceDateCreation", 'f.datef'=>"DateInvoice",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.total_tva'=>"TotalVAT",'f.paye'=>"InvoicePaid", 'f.fk_statut'=>'InvoiceStatus','f.note_public'=>"InvoiceNote",'p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment', - 'p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','project.rowid'=>'ProjectId','project.ref'=>'ProjectRef','project.title'=>'ProjectLabel' + 'p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','p.fk_bank'=>'IdTransaction','project.rowid'=>'ProjectId','project.ref'=>'ProjectRef','project.title'=>'ProjectLabel' ); //$this->export_TypeFields_array[$r]=array( // 's.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text', @@ -430,14 +430,14 @@ class modFournisseur extends DolibarrModules 's.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text', 's.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Numeric", 'f.total_ttc'=>"Numeric",'f.total_tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'pf.amount'=>'Numeric', - 'p.datep'=>'Date','p.num_paiement'=>'Numeric','project.ref'=>'Text','project.title'=>'Text' + 'p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric','project.ref'=>'Text','project.title'=>'Text' ); $this->export_entities_array[$r]=array( 's.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company', 's.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company', 'f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice", 'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment', - 'p.datep'=>'payment','p.num_paiement'=>'payment','project.rowid'=>'project','project.ref'=>'project','project.title'=>'project'); + 'p.datep'=>'payment','p.num_paiement'=>'payment','p.fk_bank'=>'account','project.rowid'=>'project','project.ref'=>'project','project.title'=>'project'); $this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them // Add extra fields object $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture_fourn' AND entity IN (0, ".$conf->entity.")"; From 1788b1b252d5da23fe062bbf93ac65c4f362f597 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 12:32:20 +0200 Subject: [PATCH 083/780] Update mo.class.php Use the accuracy of stock for rounding --- htdocs/mrp/class/mo.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 570281ac294..5f753f24443 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -649,7 +649,7 @@ class Mo extends CommonObject if ($line->qty_frozen) { $moline->qty = $line->qty; // Qty to consume does not depends on quantity to produce } else { - $moline->qty = round($line->qty * ($this->qty / $bom->qty) / $line->efficiency, 8); // Calculate with Qty to produce and more presition + $moline->qty = price2num(($line->qty / $bom->qty) * $this->qty / $line->efficiency, 'MS'); // Calculate with Qty to produce and more presition } if ($moline->qty <= 0) { $error++; From 169378f2764ce9b84d09fcc28de73e303b59e458 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 12:34:02 +0200 Subject: [PATCH 084/780] Update mo.class.php --- htdocs/mrp/class/mo.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 5f753f24443..fdfe43f4069 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -591,7 +591,7 @@ class Mo extends CommonObject } /** - * Erase and update the line to produce. + * Erase and update the line to consume and to produce. * * @param User $user User that modifies * @param bool $notrigger false=launch triggers after, true=disable triggers From 9a5986e190ccf2aff13f18564196d4f053c6ea86 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 12:40:11 +0200 Subject: [PATCH 085/780] css --- htdocs/bom/tpl/objectline_edit.tpl.php | 8 ++++++-- htdocs/core/lib/functions.lib.php | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/htdocs/bom/tpl/objectline_edit.tpl.php b/htdocs/bom/tpl/objectline_edit.tpl.php index 36862e48708..3840f495dea 100644 --- a/htdocs/bom/tpl/objectline_edit.tpl.php +++ b/htdocs/bom/tpl/objectline_edit.tpl.php @@ -128,12 +128,16 @@ $coldisplay++; print '<td class="nobottom nowrap linecollost right">'; print '<input type="text" size="1" name="efficiency" id="efficiency" class="flat right" value="'.$line->efficiency.'"></td>'; +$coldisplay++; +print '<td class="nobottom nowrap linecolcostprice right">'; +print '</td>'; + $coldisplay += $colspan; print '<td class="nobottom linecoledit center valignmiddle" colspan="'.$colspan.'">'; $coldisplay += $colspan; -print '<input type="submit" class="button" id="savelinebutton marginbottomonly" name="save" value="'.$langs->trans("Save").'">'; +print '<input type="submit" class="button buttongen marginbottomonly" id="savelinebutton marginbottomonly" name="save" value="'.$langs->trans("Save").'">'; print '<br>'; -print '<input type="submit" class="button" id="cancellinebutton" name="cancel" value="'.$langs->trans("Cancel").'">'; +print '<input type="submit" class="button buttongen marginbottomonly" id="cancellinebutton" name="cancel" value="'.$langs->trans("Cancel").'">'; print '</td>'; print '</tr>'; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 16ecae4298b..9e5584bf7ae 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4663,9 +4663,9 @@ function price($amount, $form = 0, $outlangs = '', $trunc = 1, $rounding = -1, $ /** * Function that return a number with universal decimal format (decimal separator is '.') from an amount typed by a user. * Function to use on each input amount before any numeric test or database insert. A better name for this function - * should be text2num(). + * should be roundtext2num(). * - * @param float $amount Amount to convert/clean + * @param float $amount Amount to convert/clean or round * @param string $rounding ''=No rounding * 'MU'=Round to Max unit price (MAIN_MAX_DECIMALS_UNIT) * 'MT'=Round to Max for totals with Tax (MAIN_MAX_DECIMALS_TOT) From a5def19cff1021a046eeb84ae8171af5e4a75aeb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 12:56:52 +0200 Subject: [PATCH 086/780] Fix calculation from a BOM > 1 --- htdocs/langs/en_US/mrp.lang | 2 +- htdocs/mrp/class/mo.class.php | 7 ++++++- htdocs/mrp/mo_card.php | 1 + htdocs/mrp/mo_production.php | 2 +- htdocs/mrp/tpl/originproductline.tpl.php | 9 ++++++++- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/htdocs/langs/en_US/mrp.lang b/htdocs/langs/en_US/mrp.lang index 4e653e04409..d3591be3f1d 100644 --- a/htdocs/langs/en_US/mrp.lang +++ b/htdocs/langs/en_US/mrp.lang @@ -60,7 +60,7 @@ ConsumeOrProduce=Consume or Produce ConsumeAndProduceAll=Consume and Produce All Manufactured=Manufactured TheProductXIsAlreadyTheProductToProduce=The product to add is already the product to produce. -ForAQuantityOf1=For a quantity to produce of 1 +ForAQuantityOf=For a quantity to produce of %s ConfirmValidateMo=Are you sure you want to validate this Manufacturing Order? ConfirmProductionDesc=By clicking on '%s', you will validate the consumption and/or production for the quantities set. This will also update the stock and record stock movements. ProductionForRef=Production of %s diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 84bf44c84fe..1fd60907763 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -1268,7 +1268,7 @@ class Mo extends CommonObject print '<tr class="liste_titre">'; print '<td>'.$langs->trans('Ref').'</td>'; - print '<td class="right">'.$langs->trans('Qty').' <span class="opacitymedium">('.$langs->trans("ForAQuantityOf1").')</span></td>'; + print '<td class="right">'.$langs->trans('Qty').' <span class="opacitymedium">('.$langs->trans("ForAQuantityOf", $this->bom->qty).')</span></td>'; print '<td class="center">'.$langs->trans('QtyFrozen').'</td>'; print '<td class="center">'.$langs->trans('DisableStockChange').'</td>'; //print '<td class="right">'.$langs->trans('Efficiency').'</td>'; @@ -1334,6 +1334,11 @@ class Mo extends CommonObject // TODO } + $this->tpl['qty_bom'] = 1; + if (is_object($this->bom) && $this->bom->qty > 1) { + $this->tpl['qty_bom'] = $this->bom->qty; + } + $this->tpl['qty'] = $line->qty; $this->tpl['qty_frozen'] = $line->qty_frozen; $this->tpl['disable_stock_change'] = $line->disable_stock_change; diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php index 91f6f75b332..59dd5ed7a7c 100644 --- a/htdocs/mrp/mo_card.php +++ b/htdocs/mrp/mo_card.php @@ -293,6 +293,7 @@ if ($action == 'create') print '<table class="noborder centpercent">'; $object->lines = $objectbom->lines; + $object->bom = $objectbom; $object->printOriginLinesList('', array()); diff --git a/htdocs/mrp/mo_production.php b/htdocs/mrp/mo_production.php index 70e248eaf3a..f1e847a6213 100644 --- a/htdocs/mrp/mo_production.php +++ b/htdocs/mrp/mo_production.php @@ -691,7 +691,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print '<td class="right"><input type="text" name="qtytoadd" value="1" class="width50 right"></td>'; print '<td class="right"></td>'; print '<td>'; - print '<input type="submit" class="button" name="addconsumelinebutton" value="'.$langs->trans("Add").'">'; + print '<input type="submit" class="button buttongen" name="addconsumelinebutton" value="'.$langs->trans("Add").'">'; print '</td>'; if ($conf->productbatch->enabled) { print '<td></td>'; diff --git a/htdocs/mrp/tpl/originproductline.tpl.php b/htdocs/mrp/tpl/originproductline.tpl.php index abe5dfdb427..6f3b63f6d4e 100644 --- a/htdocs/mrp/tpl/originproductline.tpl.php +++ b/htdocs/mrp/tpl/originproductline.tpl.php @@ -24,13 +24,20 @@ if (empty($conf) || !is_object($conf)) } if (!is_object($form)) $form = new Form($db); + +$qtytoconsumeforline = $this->tpl['qty'] / $this->tpl['efficiency']; +/*if ((empty($this->tpl['qty_frozen']) && $this->tpl['qty_bom'] > 1)) { + $qtytoconsumeforline = $qtytoconsumeforline / $this->tpl['qty_bom']; +}*/ +$qtytoconsumeforline = price2num($qtytoconsumeforline, 'MS'); + ?> <!-- BEGIN PHP TEMPLATE originproductline.tpl.php --> <?php print '<tr class="oddeven'.(empty($this->tpl['strike']) ? '' : ' strikefordisabled').'">'; print '<td>'.$this->tpl['label'].'</td>'; -print '<td class="right">'.$this->tpl['qty'].(($this->tpl['efficiency'] > 0 && $this->tpl['efficiency'] < 1) ? ' / '.$form->textwithpicto($this->tpl['efficiency'], $langs->trans("ValueOfMeansLoss")).' = '.round($this->tpl['qty'] / $this->tpl['efficiency'], 2) : '').'</td>'; +print '<td class="right">'.$this->tpl['qty'].(($this->tpl['efficiency'] > 0 && $this->tpl['efficiency'] < 1) ? ' / '.$form->textwithpicto($this->tpl['efficiency'], $langs->trans("ValueOfMeansLoss")).' = '.$qtytoconsumeforline : '').'</td>'; print '<td class="center">'.($this->tpl['qty_frozen'] ? yn($this->tpl['qty_frozen']) : '').'</td>'; print '<td class="center">'.($this->tpl['disable_stock_change'] ? yn($this->tpl['disable_stock_change']) : '').'</td>'; //print '<td class="right">'.$this->tpl['efficiency'].'</td>'; From 22162ac57e8aab005305bde181c84d373790ad1e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 13:14:50 +0200 Subject: [PATCH 087/780] Fix rounding of quantities --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 0e7433677ed..d42beadf791 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -229,6 +229,7 @@ ALTER TABLE llx_product_batch MODIFY COLUMN batch varchar(128); ALTER TABLE llx_commande_fournisseur_dispatch MODIFY COLUMN batch varchar(128); ALTER TABLE llx_stock_mouvement MODIFY COLUMN batch varchar(128); ALTER TABLE llx_mrp_production MODIFY COLUMN batch varchar(128); +ALTER TABLE llx_mrp_production MODIFY qty real NOT NULL DEFAULT 1; create table llx_categorie_website_page ( From 3588ae8792e6c937039320667f71f3d03ae67f1d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 13:47:33 +0200 Subject: [PATCH 088/780] Complete rules for PR --- .github/CONTRIBUTING.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 5e56ac2a1fc..eb50ed3a3eb 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -104,27 +104,28 @@ Long description (Can span accross multiple lines). Pull Request (PR) process is the process to submit a change (enhancement, bug fix, ...) into the code of the project. There is some rules to know and a process to follow to optimize the chance to have PRs merged efficiently... -When submitting a pull request, use same rule as [Commits](#commits) for the message. -If your pull request only contains 1 commit, GitHub will be smart enough to fill it for you. -Otherwise, please be a bit verbose about what you're providing. +* A PR must be atomic. It means it must contains the lower possible changes for 1 need (1 bug fix or 1 new feature) without breaking usability of code. If a PR can be split into several PRs, it means your PR is not atomic. + +* Your Pull Request (PR) must pass the Continuous Integration checks and code quality checks. + +* When submitting a pull request, use same rule as [Commits](#commits) for the message. If your pull request only contains 1 commit, GitHub will be smart enough to fill it for you. Otherwise, please be a bit verbose about what you're providing. -Your Pull Request (PR) must pass the Continuous Integration checks and code quality checks. Also, some code changes need a prior approbation: -* if you want to include a new external library (into htdocs/includes directory), please ask before to the project manager (@eldy) to see if such a library can be accepted. +* if you want to include a new external library (into htdocs/includes directory), please ask before to the core project manager (mention @dolibarr-jedi in your issue) to see if such a library can be accepted. -* if you add a new table, you must first create a page on https://wiki.dolibarr.org/index.php/Category:Table_SQL (copy an existing page changing its name to see it into this index page). Then ask the project manager (@eldy) if the new data model you plan to add is compatible with curent and future works in progress and can be accepted as you suggest. +* if you add a new table, you must first create a page on https://wiki.dolibarr.org/index.php/Category:Table_SQL (copy an existing page changing its name to see it into this index page). Then ask the project manager (@dolibarr-jedi) if the new data model you plan to add is compatible with curent and future works in progress and can be accepted as you suggest. Once a PR has been submitted, you may need to wait for its integration. It is common that the project leader let the PR open for a long delay to allow every developer discuss about the PR (A label is added in such a case). -If the label of PR start with "WIP" (Work In Progress), it will not be analyzed (until you change the label of PR). +If the label of PR start with "Draft" or "WIP" (Work In Progress), it will not be analyzed for merging until you change the label of PR (but it can be analyzed for discussion). If your PR has errors reported by the Continuous Integration Platform, it means your PR is not valid and nothing will be done with it. It will be kept open to allow developers to fix this, or it may be closed several month later. Don't expect anything on your PR if you have such errors, you MUST first fix the Continuous Integration error to have it taken into consideration. If the PR is valid, and is kept open for a long time, a tag will also be added on the PR to describe the status of your PR and why the PR is kept open. By putting your mouse on the tag, you will get a full explanation of the tag/status that explain why your PR has not been integrated yet. In most cases, it gives you information of things you have to do to have the PR taken into consideration (for example a change is requested, a conflict is expected to be solved, some questions were asked). If you have a yellow, red flag of purple flag, don't expect to have your PR validated. You must first provide the answer the tag ask you. The majority of open PR are waiting an action of the author of the PR. -Statistics on Dolibarr project shows that around 95% of submitted PR are reviewed and tagged. Average answer delay is also one of the best among Open source project (just few days before having the Answer Tag set). This is one of the most important ratio of answered PR in Open Source world for a major project. Don't expect the core team to reach the 100%. A so high ratio is very rare on a so popular project and with the increasing popularity of Dolibarr, this ratio will probably decrease in future to a more common level. +Statistics on Dolibarr project shows that 95% of submitted PR are reviewed and tagged. Average answer delay is also one of the best among Open source projects (just few days before having the Answer Tag set). This is one of the most important ratio of answered PR in Open Source world for a major project. Don't expect the core team to reach the 100%. A so high ratio is very rare on a so popular project and with the increasing popularity of Dolibarr, this ratio will probably decrease in future to a more common level. ### Resources From 0b6d1a29c5c5048678ce2b1b28cfc02eb0af13fb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 13:48:47 +0200 Subject: [PATCH 089/780] Fix links --- .github/CONTRIBUTING.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index eb50ed3a3eb..e8e2d222c0e 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -4,7 +4,7 @@ How to contribute to Dolibarr Bug reports and feature requests -------------------------------- -<a name="not-a-support-forum"></a>*Note*: Issues are not a support forum. If you need help using the software, please use [the forums](http://www.dolibarr.org/forum). +<a name="not-a-support-forum"></a>*Note*: Issues are not a support forum. If you need help using the software, please use [the forums](https://www.dolibarr.org/forum). Issues are managed on [GitHub](https://github.com/Dolibarr/dolibarr/issues). @@ -129,7 +129,7 @@ Statistics on Dolibarr project shows that 95% of submitted PR are reviewed and t ### Resources -[Developer documentation](http://wiki.dolibarr.org/index.php/Developer_documentation) +[Developer documentation](https://wiki.dolibarr.org/index.php/Developer_documentation) Translations ------------ @@ -145,11 +145,11 @@ to retreive all old translation of a source text, and restore the translation in ### Resources -[Translator documentation](http://wiki.dolibarr.org/index.php/Translator_documentation) +[Translator documentation](https://wiki.dolibarr.org/index.php/Translator_documentation) Documentation ------------- -The project's documentation is maintained on the [Wiki](http://wiki.dolibarr.org/index.php). +The project's documentation is maintained on the [Wiki](https://wiki.dolibarr.org/index.php). *Note*: to help prevent spam, you need to create an account before being able to edit. Everybody is welcome to contribute to its content. From 1ed66bfe8909a6ca60f52984dddfd595881d871d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 13:51:23 +0200 Subject: [PATCH 090/780] Fix bad tag --- .github/CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index e8e2d222c0e..39234ebb181 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -112,9 +112,9 @@ a process to follow to optimize the chance to have PRs merged efficiently... Also, some code changes need a prior approbation: -* if you want to include a new external library (into htdocs/includes directory), please ask before to the core project manager (mention @dolibarr-jedi in your issue) to see if such a library can be accepted. +* if you want to include a new external library (into htdocs/includes directory), please ask before to the core project manager (mention @dolibarr-yoda in your issue) to see if such a library can be accepted. -* if you add a new table, you must first create a page on https://wiki.dolibarr.org/index.php/Category:Table_SQL (copy an existing page changing its name to see it into this index page). Then ask the project manager (@dolibarr-jedi) if the new data model you plan to add is compatible with curent and future works in progress and can be accepted as you suggest. +* if you add a new table, you must first create a page on https://wiki.dolibarr.org/index.php/Category:Table_SQL (copy an existing page changing its name to see it into this index page). Then ask the project manager (@dolibarr-yoda) if the new data model you plan to add is compatible with curent and future works in progress and can be accepted as you suggest. Once a PR has been submitted, you may need to wait for its integration. It is common that the project leader let the PR open for a long delay to allow every developer discuss about the PR (A label is added in such a case). From e5d3250e47c1fa51e0edc05ba20a2e28ed4f8b1c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 14:09:52 +0200 Subject: [PATCH 091/780] Doc --- .github/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 39234ebb181..fed73d7b002 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -104,7 +104,7 @@ Long description (Can span accross multiple lines). Pull Request (PR) process is the process to submit a change (enhancement, bug fix, ...) into the code of the project. There is some rules to know and a process to follow to optimize the chance to have PRs merged efficiently... -* A PR must be atomic. It means it must contains the lower possible changes for 1 need (1 bug fix or 1 new feature) without breaking usability of code. If a PR can be split into several PRs, it means your PR is not atomic. +* A PR must be atomic. It means it must contains the lower possible changes for 1 need (1 bug fix or 1 new feature) without breaking usability of code. If a PR can be split into several PRs, it often means your PR is not atomic. * Your Pull Request (PR) must pass the Continuous Integration checks and code quality checks. From 4777c74366321f56bffaa7bdad18891fc2755bb1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 14:11:03 +0200 Subject: [PATCH 092/780] Update main.inc.php --- 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 73c21459b5c..481fffbfef6 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -2367,7 +2367,7 @@ function main_area($title = '') if (!empty($conf->global->MAIN_ONLY_LOGIN_ALLOWED)) print info_admin($langs->trans("WarningYouAreInMaintenanceMode", $conf->global->MAIN_ONLY_LOGIN_ALLOWED)); // Permit to add user company information on each printed document by set SHOW_SOCINFO_ON_PRINT - if ($conf->global->SHOW_SOCINFO_ON_PRINT && GETPOST('optioncss', 'aZ09') == 'print' && empty(GETPOST('disable_show_socinfo_on_print', 'az09'))) + if (! empty($conf->global->SHOW_SOCINFO_ON_PRINT) && GETPOST('optioncss', 'aZ09') == 'print' && empty(GETPOST('disable_show_socinfo_on_print', 'az09'))) { global $hookmanager; $hookmanager->initHooks(array('showsocinfoonprint')); From 63186a60ae84f394854c638033d5bf1a14d5f082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Wed, 22 Apr 2020 14:23:38 +0200 Subject: [PATCH 093/780] Update 11.0.0-12.0.0.sql --- .../install/mysql/migration/11.0.0-12.0.0.sql | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index d42beadf791..9c09b8b9247 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -42,6 +42,15 @@ ALTER TABLE llx_commande_fournisseur_dispatch_extrafields ADD INDEX idx_commande UPDATE llx_accounting_system SET fk_country = NULL, active = 0 WHERE pcg_version = 'SYSCOHADA'; +create table if not exists llx_c_shipment_package_type +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + label varchar(50) NOT NULL, -- Short name + description varchar(255), -- Description + active integer DEFAULT 1 NOT NULL, -- Active or not + entity integer DEFAULT 1 NOT NULL -- Multi company id +)ENGINE=innodb; + -- For v12 @@ -253,11 +262,3 @@ ALTER TABLE llx_categorie ADD COLUMN fk_user_modif integer; ALTER TABLE llx_commandedet ADD CONSTRAINT fk_commandedet_fk_commandefourndet FOREIGN KEY (fk_commandefourndet) REFERENCES llx_commande_fournisseurdet (rowid); --Dictionary of package type because filename in V11 was incomplete -create table llx_c_shipment_package_type -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - label varchar(50) NOT NULL, -- Short name - description varchar(255), -- Description - active integer DEFAULT 1 NOT NULL, -- Active or not - entity integer DEFAULT 1 NOT NULL -- Multi company id -)ENGINE=innodb; From 43f4c5ac962d3a99b33f9cab2410c6d323a8a411 Mon Sep 17 00:00:00 2001 From: gauthier <gauthier.verdol@atm-consulting.fr> Date: Wed, 22 Apr 2020 15:29:54 +0200 Subject: [PATCH 094/780] FIX : model export list must be sorted by label --- htdocs/core/class/html.formother.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index 9556fd6c423..cf3cd58355c 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -75,7 +75,7 @@ class FormOther $sql.= " FROM ".MAIN_DB_PREFIX."export_model"; $sql.= " WHERE type = '".$type."'"; if (!empty($fk_user)) $sql.=" AND fk_user IN (0, ".$fk_user.")"; // An export model - $sql.= " ORDER BY rowid"; + $sql.= " ORDER BY label"; $result = $this->db->query($sql); if ($result) { From f2356aa15836b8464d663dd326d84b18abf8f68c Mon Sep 17 00:00:00 2001 From: UT from dolibit <45215329+dolibit-ut@users.noreply.github.com> Date: Wed, 22 Apr 2020 15:37:01 +0200 Subject: [PATCH 095/780] Update README.md --- README.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index fbf59a27a74..3f329c678a7 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Dolibarr ERP & CRM is a modern software package to manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda…). -It's an Open Source Software (written in PHP language) designed for small, medium or large companies, foundations and freelances. +It's an Open Source Software (written in PHP language) designed for small, medium or large companies, foundations and freelancers. You can freely use, study, modify or distribute it according to its Free Software licence. @@ -27,7 +27,7 @@ Other licenses apply for some included dependencies. See [COPYRIGHT](https://git If you have low technical skills and you're looking to install Dolibarr ERP/CRM in just a few clicks, you can use one of the packaged versions: -- DoliWamp for Windows +- [DoliWamp for Windows](https://wiki.dolibarr.org/index.php/Dolibarr_for_Windows_(DoliWamp) - DoliDeb for Debian or Ubuntu - DoliRpm for Redhat, Fedora, OpenSuse, Mandriva or Mageia @@ -67,6 +67,7 @@ You can use a Web server and a supported database (MariaDB, MySQL or PostgreSQL) If you don't have time to install it yourself, you can try some commercial 'ready to use' Cloud offers (See https://saas.dolibarr.org). However, this third solution is not free. + ## UPGRADING - At first make a backup of your Dolibarr files & than see https://wiki.dolibarr.org/index.php/Installation_-_Upgrade#Upgrade_Dolibarr @@ -85,28 +86,27 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog) ### Main application/modules (all optional) -- Customers, Prospects (Leads) and/or Suppliers directory +- Customers, Prospects (Leads) and/or Suppliers directory + Contacts +- Members management - Products and/or Services catalog - Commercial proposals management -- Customer and Supplier Orders management +- Customer & Supplier Orders management +- Shipping management +- Warehouse/Stock management - Invoices and payment management - Standing orders management (European SEPA) - Bank accounts management - Accounting management - Shared calendar/agenda (with ical and vcal export for third party tools integration) - Opportunities and/or project management -- Projects management +- Projects & Tasks management - Contracts management -- Warehouse/Stock management -- Shipping management - Interventions management - Employee's leave requests management - Expense reports - Timesheets - Electronic Document Management (EDM) - Foundations members management -- Mass emailing -- Surveys - Point of Sale (POS) - … @@ -115,11 +115,13 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog) - Bookmarks management - Donations management - Reporting +- Surveys - Data export/import - Barcodes support - Margin calculations - LDAP connectivity - ClickToDial integration +- Mass emailing - RSS integration - Skype integration - Payment platforms integration (PayPal, Stripe, Paybox...) From eee9e79436d0cee7328b889e59906d06b80c247a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 16:35:25 +0200 Subject: [PATCH 096/780] Tooltip --- htdocs/bom/tpl/objectline_title.tpl.php | 2 +- htdocs/langs/en_US/mrp.lang | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/bom/tpl/objectline_title.tpl.php b/htdocs/bom/tpl/objectline_title.tpl.php index b6197342136..ab0184189a8 100644 --- a/htdocs/bom/tpl/objectline_title.tpl.php +++ b/htdocs/bom/tpl/objectline_title.tpl.php @@ -52,7 +52,7 @@ if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) print '<td class="linecolnum c print '<td class="linecoldescription">'.$langs->trans('Description').'</td>'; // Qty -print '<td class="linecolqty right">'.$langs->trans('Qty').'</td>'; +print '<td class="linecolqty right">'.$form->textwithpicto($langs->trans('Qty'), $langs->trans("QtyRequiredIfNoLoss")).'</td>'; if ($conf->global->PRODUCT_USE_UNITS) { diff --git a/htdocs/langs/en_US/mrp.lang b/htdocs/langs/en_US/mrp.lang index d3591be3f1d..d3c4d3253c6 100644 --- a/htdocs/langs/en_US/mrp.lang +++ b/htdocs/langs/en_US/mrp.lang @@ -56,6 +56,7 @@ ToConsume=To consume ToProduce=To produce QtyAlreadyConsumed=Qty already consumed QtyAlreadyProduced=Qty already produced +QtyRequiredIfNoLoss=Qty required if there is no loss (Manufacturing efficiency is 100%%) ConsumeOrProduce=Consume or Produce ConsumeAndProduceAll=Consume and Produce All Manufactured=Manufactured From 8207d27d00237335430421ff265c9eb6edac2a0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josep=20Llu=C3=ADs?= <joseplluis@lliuretic.cat> Date: Wed, 22 Apr 2020 17:36:10 +0200 Subject: [PATCH 097/780] Update MyCatalan.isl --- build/exe/doliwamp/Languages/MyCatalan.isl | 54 +++++++++++----------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/build/exe/doliwamp/Languages/MyCatalan.isl b/build/exe/doliwamp/Languages/MyCatalan.isl index d8b86eae5ba..b157d1cea27 100644 --- a/build/exe/doliwamp/Languages/MyCatalan.isl +++ b/build/exe/doliwamp/Languages/MyCatalan.isl @@ -1,45 +1,47 @@ [CustomMessages] -NameAndVersion=%1 versi %2 +NameAndVersion=%1 versió %2 AdditionalIcons=Icones addicionals: CreateDesktopIcon=Crea una icona a l'&Escriptori CreateQuickLaunchIcon=Crea una icona a la &Barra de tasques ProgramOnTheWeb=%1 a Internet -UninstallProgram=Desinstalla %1 +UninstallProgram=Desinstal·la %1 LaunchProgram=Obre %1 -AssocFileExtension=&Associa %1 amb l'extensi de fitxer %2 -AssocingFileExtension=Associant %1 amb l'extensi de fitxer %2... +AssocFileExtension=&Associa %1 amb l'extensió de fitxer %2 +AssocingFileExtension=Associant %1 amb l'extensió de fitxer %2... -YouWillInstallDoliWamp=Va a installar o actualitzar (Apache + Mysql + PHP + Dolibarr) al seu ordinador. -ThisAssistantInstallOrUpgrade=Aquest assistent installa o actualitza Dolibarr ERP-CRM i tots els seus requisits (Apache, Mysql i PHP) optimitzats per a l's de Dolibarr. -IfYouHaveTechnicalKnowledge=Si teniu coneixements tcnics i necessita usar la seva Apache, Mysql i PHP amb altres aplicacions a part de Dolibarr, no utilitzeu aquest assistent, hauria laci manual d'Dolibarr sobre un Apache, Mysql i PHP existent. -ButIfYouLook=Per si busca una installaci automtica, es troba en el bon cam... -DoYouWantToStart=Vol iniciar el procs d'installaci/actualitzaci? +YouWillInstallDoliWamp=Instal·laràs DoliWamp (Dolibarr i altres programaris com Apache, Mysql i PHP) al teu ordinador. +ThisAssistantInstallOrUpgrade=ALERTA: Utilitzar un ERP CRM instal·lat en un ordinador en local pot ser perillós: si l'ordinador s'espatlla, pots perdre totes les teves dades. Fes-ho si estàs preparat per autogestionar-te còpies de seguretat. Si no, pots utilitzar una instal·lació Saas (pots veure https://saas.dolibarr.org). +IfYouHaveTechnicalKnowledge=Si tens coneixements tècnics i vols autogestionar el teu Apache, Mysql i PHP, no utilitzis aquest assistent i fes una instal·lació manual de Dolibarr sobre un servidor existent d'Apache, Mysql i PHP. +ButIfYouLook=Però si busques una instal·lació automàtica en el teu propi ordinador, et trobes en el bon camí... +DoYouWantToStart=Vols iniciar el procés d'instal·lació? -TechnicalParameters=Parmetres tcnics -IfFirstInstall=Si es tracta de la primera instal laci, haur d'especificar alguns parmetres tcnics. Si no els entn, no sabeu o va a procedir a una actualitzaci, deixi els camps amb els valors proposats per defecte. +TechnicalParameters=Paràmetres tècnics +IfFirstInstall=Si es tracta de la primera instal·lació, hauràs d'especificar alguns paràmetres tècnics. Si no els entens, no n'estàs segur, o estàs fent una actualització, pots deixar els valors per defecte. -; WARNING !!! STRINGS HERE MUST BE LOWER THAN 70 CHARACTERS -SMTPServer=Servidor SMTP (El seu o el del seu ISP, nicament primera instal.laci) : -ApachePort=Puerto Apache (nicament primera instal.laci, normalment s el 80) : -MySqlPort=Puerto Mysql (nicament primera instal.laci, normalment s el 3306) : -MySqlPassword=Contrasenya del servidor i la base de dades MySQL de root (nicament primera instal.laci): +; WARNING !!! STRINGS HERE MUST BE LOWER THAN 60 CHARACTERS +SMTPServer=Servidor SMTP (propi o ISP, només primera instal·lació) : +ApachePort=Port Apache (només primera instal·lació, normalment el 80) : +MySqlPort=Port MySql (només primera instal·lació, normalment el 3306) : +MySqlPassword=Contrasenya del servidor i base de dades MySql de root (només primera instal·lació): -FailedToDeleteLock=FailedToDeleteLock=Error en l'eliminaci del fitxer %1/www/dolibarr/install.lock. Pot ignorar l'avs per s possible que hagi de eliminar-lo manualment ms tard. En aquest cas, ser informat. Feu clic a OK per continuar... +FailedToDeleteLock=FailedToDeleteLock=Error en l'eliminació del fitxer %1/www/dolibarr/install.lock. Pots ignorar l'avís però és possible que hagis d'eliminar-lo manualment més tard. En aquest cas, serà informat. Fes clic a OK per continuar... -PortAlreadyInUse=Sembla que el port %1 ja est sent utilitzat. Es recomana cancellar, tornar enrere i especificar un altre valor per al port% 2. Cancellar i escollir un altre valor? +PortAlreadyInUse=Sembla que el port %1 ja està sent utilitzat. Es recomana cancel·lar, tornar enrere i especificar un altre valor per al port% 2. Vols cancel·lar i escollir un altre valor? -FirefoxDetected=S'ha detectat Firefox al seu ordinador. Voleu activar per defecte com a navegador per Dolibarr? -ChromeDetected=S'ha detectat Chrome al seu ordinador. Voleu activar per defecte com a navegador per Dolibarr? -ChooseDefaultBrowser=Esculli el seu navegador per defecte. Si no est segur, simplement feu clic a Obrir: +FirefoxDetected=S'ha detectat Firefox al teu ordinador. El vols utilitzar com a navegador per defecte per Dolibarr? +ChromeDetected=S'ha detectat Chrome al teu ordinador. El vols utilitzar com a navegador per defecte per Dolibarr? +ChooseDefaultBrowser=Escull el teu navegador per defecte (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...).. Si no estàs segur, simplement fes clic a Obre: -LaunchNow=Llanar ara Dolibarr +LaunchNow=Obre ara el Dolibarr -ProgramHasBeenRemoved=Els arxius del programa Dolibarr han estat eliminats. No obstant aix tots els seus arxius de dades es troben encara al directori %1. Haur eliminar aquest directori manualment per a una desinstal completa. +ProgramHasBeenRemoved=Els arxius del programa Dolibarr han estat eliminats. No obstant això tots els seus arxius de dades es troben encara al directori %1. Hauràs d'eliminar aquest directori manualment per a una desinstal·lació completa. -DoliWampWillStartApacheMysql=L'installador DoliWamp intentar iniciar o reiniciar Apache i MySQL, aix pot durar des de diversos segons a un minut desprs de la confirmaci. Iniciar la installaci o actualitzaci dels servidors web i bases de dades requerides per Dolibarr? +DoliWampWillStartApacheMysql=L'instal·lador DoliWamp intentarà iniciar o reiniciar Apache i MySQL, això pot durar des de diversos segons a un minut després de la confirmació. Vols iniciar la instal·lació o actualització dels servidors web i de base de dades requerides per Dolibarr? -OldVersionFoundAndMoveInNew=S'ha trobat una versi antiga de base de dades i ha estat moguda per a ser utilitzada per la nova versi de Dolibarr -OldVersionFoundButFailedToMoveInNew=S'ha trobat una versi antiga de base de dades, per no es pot moure per a ser utilitzada per la nova versi de Dolibarr +OldVersionFoundAndMoveInNew=S'ha trobat una versió antiga de base de dades i ha estat moguda per a ser utilitzada per la nova versió de Dolibarr +OldVersionFoundButFailedToMoveInNew=S'ha trobat una versió antiga de base de dades, però no es pot moure per a ser utilitzada per la nova versió de Dolibarr +DLLMissing=La teva instal·lació windows no té el component "Microsoft Visual C++ Redistributable for Visual Studio 2012". Instal·la primer la versió de 32-bit (vcredist_x86.exe) (pots trobar-la a https://www.microsoft.com/en-us/download/) i reiniciar després la instal·lació/actualització de DoliWamp. +ContinueAnyway=Continua igualment (el procés d'instal·lació podria fallar sense aquest prerequisit) From 3f071462ab7c81a4cb19e0d6eb9803fbc1d972ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josep=20Llu=C3=ADs?= <joseplluis@lliuretic.cat> Date: Wed, 22 Apr 2020 17:50:15 +0200 Subject: [PATCH 098/780] Update MySpanish.isl --- build/exe/doliwamp/Languages/MySpanish.isl | 50 +++++++++++----------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/build/exe/doliwamp/Languages/MySpanish.isl b/build/exe/doliwamp/Languages/MySpanish.isl index 63c0136f351..c31aedf895f 100644 --- a/build/exe/doliwamp/Languages/MySpanish.isl +++ b/build/exe/doliwamp/Languages/MySpanish.isl @@ -1,45 +1,47 @@ [CustomMessages] -NameAndVersion=%1 versin %2 +NameAndVersion=%1 versión %2 AdditionalIcons=Iconos adicionales: CreateDesktopIcon=Crear un icono en el &escritorio -CreateQuickLaunchIcon=Crear un icono de Inicio Rpido +CreateQuickLaunchIcon=Crear un icono de Inicio Rápido ProgramOnTheWeb=%1 en la Web UninstallProgram=Desinstalar %1 LaunchProgram=Ejecutar %1 -AssocFileExtension=&Asociar %1 con la extensin de archivo %2 -AssocingFileExtension=Asociando %1 con la extensin de archivo %2... +AssocFileExtension=&Asociar %1 con la extensión de archivo %2 +AssocingFileExtension=Asociando %1 con la extensión de archivo %2... -YouWillInstallDoliWamp=Va a instalar o actualizar (Apache+Mysql+PHP+Dolibarr) en su ordenador. -ThisAssistantInstallOrUpgrade=Este asistente instala o actualiza Dolibarr ERP-CRM y todos sus requisitos (Apache, Mysql y PHP) optimizados para el uso de Dolibarr. -IfYouHaveTechnicalKnowledge=Si tiene conocimientos tcnicos y necesita usar su Apache, Mysql y PHP con otras aplicaciones aparte de Dolibarr, no debera usar este asistente, debera realizar una instalacin manual de Dolibarr sobre un Apache, Mysql y PHP existente. -ButIfYouLook=Pero si busca una instalacin automtica, se encuentra en el buen camino... -DoYouWantToStart=Quiere iniciar el proceso de instalacin/actualizacin? +YouWillInstallDoliWamp=Va a instalar DoliWamp (Dolibarr y otro software como Apache, Mysql y PHP) en su ordenador. +ThisAssistantInstallOrUpgrade=ALERTA: Utilizar un ERP CRM instalado en un ordenador en local puede ser peligroso: si el ordenador se estropea, puede perder todos sus datos. Hágalo si está preparado para autogestionar sus copias de seguridad. Si no, puede utilizar una instalacion Saas (puede ver https://saas.dolibarr.org). +IfYouHaveTechnicalKnowledge=Si tiene conocimientos técnicos y necesita usar su Apache, Mysql y PHP con otras aplicaciones aparte de Dolibarr, no debería usar este asistente, debería realizar una instalación manual de Dolibarr sobre un Apache, Mysql y PHP existente. +ButIfYouLook=Pero si busca una instalación automática en tu propio ordenador, se encuentra en el buen camino... +DoYouWantToStart=¿Quiere iniciar el proceso de instalación? -TechnicalParameters=Parmetros tcnicos -IfFirstInstall=Si se trata de la primera instalacin, deber especificar algunos parmetros tcnicos. Si no los entiende, no est seguro o va a proceder a una actualizacin, deje los campos con los valores propuestos por defecto. +TechnicalParameters=Parámetros técnicos +IfFirstInstall=Si se trata de la primera instalación, deberá especificar algunos parámetros técnicos. Si no los entiende, no está seguro o va a proceder a una actualización, deje los campos con los valores propuestos por defecto. -; WARNING !!! STRINGS HERE MUST BE LOWER THAN 70 CHARACTERS -SMTPServer=Servidor SMTP (El suyo o el de su ISP, nicamente primera instalacin) : -ApachePort=Puerto Apache (nicamente primera instalacin, normalmente es el 80) : -MySqlPort=Puerto Mysql (nicamente primera instalacin, normalmente es el 3306) : -MySqlPassword=Contrasea del servidor y la base de datos MySQL de root (nicamente primera instalacin): +; WARNING !!! STRINGS HERE MUST BE LOWER THAN 60 CHARACTERS +SMTPServer=Servidor SMTP (propio o su ISP, sólo primera instalación) : +ApachePort=Puerto Apache (sólo primera instalación, normalmente el 80) : +MySqlPort=Puerto Mysql (sólo primera instalación, normalmente el 3306) : +MySqlPassword=Contraseña del servidor y la base de datos MySQL de root (sólo primera instalación): -FailedToDeleteLock=Error en la eliminacin del archivo %1/www/dolibarr/install.lock. Puede ignorar el aviso pero es posible que deba eliminarlo manualmente ms tarde. En este caso, ser informado. Haga clic en OK para continuar... +FailedToDeleteLock=Error en la eliminación del archivo %1/www/dolibarr/install.lock. Puede ignorar el aviso pero es posible que deba eliminarlo manualmente más tarde. En este caso, será informado. Haga clic en OK para continuar... -PortAlreadyInUse=Parece que el puerto %1 ya esta siendo usado. Se recomienda cancelar, volver atras y especificar otro valor para el puerto %2. Cancelar y escojer otro valor? +PortAlreadyInUse=Parece que el puerto %1 ya esta siendo usado. Se recomienda cancelar, volver atras y especificar otro valor para el puerto %2. ¿Cancelar y escojer otro valor? FirefoxDetected=Se ha detectado Firefox en su ordenador. Desea activarlo por defecto como navegador para Dolibarr ? ChromeDetected=Se ha detectado Chrome en su ordenador. Desea activarlo por defecto como navegador para Dolibarr ? -ChooseDefaultBrowser=Escoja su navegador por defecto. Si no est seguro, simplementa haga clic en Abrir : +ChooseDefaultBrowser=Escoja su navegador por defecto (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...). Si no está seguro, simplementa haga clic en Abrir : LaunchNow=Lanzar ahora Dolibarr -ProgramHasBeenRemoved=Los archivos del programa Dolibarr han sido eliminados. Sin embargo todos sus archivos de datos se encuentran todava en el directorio %1. Deber eliminar este directorio manualmente para una desinstalacin completa. +ProgramHasBeenRemoved=Los archivos del programa Dolibarr han sido eliminados. Sin embargo todos sus archivos de datos se encuentran todavía en el directorio %1. Deberá eliminar este directorio manualmente para una desinstalación completa. -DoliWampWillStartApacheMysql=El instalador DoliWamp intentar iniciar o reiniciar Apache y MySQL, esto puede durar desde varios segundos a un minuto despus de la confirmacin. Iniciar la instalacin o actualizacin de los servidores Web y bases de datos requeridas por Dolibarr? +DoliWampWillStartApacheMysql=El instalador DoliWamp intentará iniciar o reiniciar Apache y MySQL, esto puede durar desde varios segundos a un minuto después de la confirmación. ¿Iniciar la instalación o actualización de los servidores Web y bases de datos requeridas por Dolibarr? -OldVersionFoundAndMoveInNew=Se ha encontrado una versin antigua de base de datos y ha sido movida para ser utilizada por la nueva versin de Dolibarr -OldVersionFoundButFailedToMoveInNew=Se ha encontrado una versin antigua de base de datos, pero no se pudo mover para ser utilizada por la nueva versin de Dolibarr - \ No newline at end of file +OldVersionFoundAndMoveInNew=Se ha encontrado una versión antigua de base de datos y ha sido movida para ser utilizada por la nueva versión de Dolibarr +OldVersionFoundButFailedToMoveInNew=Se ha encontrado una versión antigua de base de datos, pero no se pudo mover para ser utilizada por la nueva versión de Dolibarr + +DLLMissing=Su instalación Windows no tiene el componente "Microsoft Visual C++ Redistributable for Visual Studio 2012". Instale primero la versión de 32-bit (vcredist_x86.exe) (puedes encontrarlo en https://www.microsoft.com/en-us/download/) y reiniciar después la instalación/actualización de DoliWamp. +ContinueAnyway=Continua igualmente (el proceso de instalación podría fallar sin este prerequisito) From 496d8f354f83d7c03d22b6cf8bfda2a27acfaed2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 17:59:54 +0200 Subject: [PATCH 099/780] Look and feel v12 --- htdocs/admin/accountant.php | 2 +- htdocs/admin/company.php | 2 +- htdocs/contact/card.php | 78 +++++++++++++------- htdocs/core/class/commonobject.class.php | 2 +- htdocs/core/lib/functions.lib.php | 15 ++-- htdocs/core/tpl/objectline_view.tpl.php | 14 +++- htdocs/langs/en_US/main.lang | 1 + htdocs/product/stock/card.php | 23 ++++-- htdocs/product/stock/movement_list.php | 4 +- htdocs/societe/card.php | 2 + htdocs/theme/eldy/global.inc.php | 4 +- htdocs/theme/eldy/main_menu_fa_icons.inc.php | 2 +- 12 files changed, 98 insertions(+), 51 deletions(-) diff --git a/htdocs/admin/accountant.php b/htdocs/admin/accountant.php index 7a436c5a363..c8c082db6ae 100644 --- a/htdocs/admin/accountant.php +++ b/htdocs/admin/accountant.php @@ -128,7 +128,7 @@ print '<input name="town" class="minwidth100" id="town" value="'.($conf->global- // Country print '<tr class="oddeven"><td><label for="selectcountry_id">'.$langs->trans("Country").'</label></td><td class="maxwidthonsmartphone">'; -//if (empty($country_selected)) $country_selected=substr($langs->defaultlang,-2); // By default, country of localization +print img_picto('', 'globe-americas', 'class="paddingrightonly"'); print $form->select_country($conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY, 'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td></tr>'."\n"; diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index 3229eda7365..d4664a13de1 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -429,7 +429,7 @@ print '<input name="MAIN_INFO_SOCIETE_TOWN" class="minwidth100" id="MAIN_INFO_SO // Country print '<tr class="oddeven"><td class="fieldrequired"><label for="selectcountry_id">'.$langs->trans("Country").'</label></td><td class="maxwidthonsmartphone">'; -//if (empty($country_selected)) $country_selected=substr($langs->defaultlang,-2); // By default, country of localization +print img_picto('', 'globe-americas', 'class="paddingrightonly"'); print $form->select_country($mysoc->country_id, 'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td></tr>'."\n"; diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index cecc7867b0f..ce948211c46 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -691,6 +691,7 @@ else // Country print '<tr><td><label for="selectcountry_id">'.$langs->trans("Country").'</label></td><td colspan="'.$colspan.'" class="maxwidthonsmartphone">'; + print img_picto('', 'globe-americas', 'class="paddingrightonly"'); print $form->select_country((GETPOST("country_id", 'alpha') ? GETPOST("country_id", 'alpha') : $object->country_id), 'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td></tr>'; @@ -722,24 +723,34 @@ else if (($objsoc->typent_code == 'TE_PRIVATE' || !empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->fax)) == 0) $object->fax = $objsoc->fax; // Predefined with third party // Phone / Fax - print '<tr><td>'.img_picto('', 'object_phoning').' '.$form->editfieldkey('PhonePro', 'phone_pro', '', $object, 0).'</td>'; - print '<td><input type="text" name="phone_pro" id="phone_pro" class="maxwidth200" value="'.(GETPOSTISSET('phone_pro') ? GETPOST('phone_pro', 'alpha') : $object->phone_pro).'"></td>'; + print '<tr><td>'.$form->editfieldkey('PhonePro', 'phone_pro', '', $object, 0).'</td>'; + print '<td>'; + print img_picto('', 'object_phoning'); + print '<input type="text" name="phone_pro" id="phone_pro" class="maxwidth200" value="'.(GETPOSTISSET('phone_pro') ? GETPOST('phone_pro', 'alpha') : $object->phone_pro).'"></td>'; if ($conf->browser->layout == 'phone') print '</tr><tr>'; - print '<td>'.img_picto('', 'object_phoning').' '.$form->editfieldkey('PhonePerso', 'phone_perso', '', $object, 0).'</td>'; - print '<td><input type="text" name="phone_perso" id="phone_perso" class="maxwidth200" value="'.(GETPOSTISSET('phone_perso') ? GETPOST('phone_perso', 'alpha') : $object->phone_perso).'"></td></tr>'; + print '<td>'.$form->editfieldkey('PhonePerso', 'phone_perso', '', $object, 0).'</td>'; + print '<td>'; + print img_picto('', 'object_phoning'); + print '<input type="text" name="phone_perso" id="phone_perso" class="maxwidth200" value="'.(GETPOSTISSET('phone_perso') ? GETPOST('phone_perso', 'alpha') : $object->phone_perso).'"></td></tr>'; - print '<tr><td>'.img_picto('', 'object_phoning_mobile').' '.$form->editfieldkey('PhoneMobile', 'phone_mobile', '', $object, 0).'</td>'; - print '<td><input type="text" name="phone_mobile" id="phone_mobile" class="maxwidth200" value="'.(GETPOSTISSET('phone_mobile') ? GETPOST('phone_mobile', 'alpha') : $object->phone_mobile).'"></td>'; + print '<tr><td>'.$form->editfieldkey('PhoneMobile', 'phone_mobile', '', $object, 0).'</td>'; + print '<td>'; + print img_picto('', 'object_phoning_mobile'); + print '<input type="text" name="phone_mobile" id="phone_mobile" class="maxwidth200" value="'.(GETPOSTISSET('phone_mobile') ? GETPOST('phone_mobile', 'alpha') : $object->phone_mobile).'"></td>'; if ($conf->browser->layout == 'phone') print '</tr><tr>'; - print '<td>'.img_picto('', 'object_phoning_fax').' '.$form->editfieldkey('Fax', 'fax', '', $object, 0).'</td>'; - print '<td><input type="text" name="fax" id="fax" class="maxwidth200" value="'.(GETPOSTISSET('fax') ? GETPOST('fax', 'alpha') : $object->fax).'"></td>'; + print '<td>'.$form->editfieldkey('Fax', 'fax', '', $object, 0).'</td>'; + print '<td>'; + print img_picto('', 'object_phoning_fax'); + print '<input type="text" name="fax" id="fax" class="maxwidth200" value="'.(GETPOSTISSET('fax') ? GETPOST('fax', 'alpha') : $object->fax).'"></td>'; print '</tr>'; if (($objsoc->typent_code == 'TE_PRIVATE' || !empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->email)) == 0) $object->email = $objsoc->email; // Predefined with third party // Email - print '<tr><td>'.img_picto('', 'object_email').' '.$form->editfieldkey('EMail', 'email', '', $object, 0, 'string', '').'</td>'; - print '<td><input type="text" name="email" id="email" value="'.(GETPOSTISSET('email') ? GETPOST('email', 'alpha') : $object->email).'"></td>'; + print '<tr><td>'.$form->editfieldkey('EMail', 'email', '', $object, 0, 'string', '').'</td>'; + print '<td>'; + print img_picto('', 'object_email'); + print '<input type="text" name="email" id="email" value="'.(GETPOSTISSET('email') ? GETPOST('email', 'alpha') : $object->email).'"></td>'; print '</tr>'; if (!empty($conf->mailing->enabled)) @@ -964,12 +975,12 @@ else // Lastname print '<tr><td class="titlefieldcreate fieldrequired"><label for="lastname">'.$langs->trans("Lastname").' / '.$langs->trans("Label").'</label></td>'; - print '<td colspan="3"><input name="lastname" id="lastname" type="text" class="minwidth200" maxlength="80" value="'.(isset($_POST["lastname"]) ?GETPOST("lastname") : $object->lastname).'" autofocus="autofocus"></td>'; + print '<td colspan="3"><input name="lastname" id="lastname" type="text" class="minwidth200" maxlength="80" value="'.(GETPOSTISSET("lastname") ? GETPOST("lastname") : $object->lastname).'" autofocus="autofocus"></td>'; print '</tr>'; print '<tr>'; // Firstname print '<td><label for="firstname">'.$langs->trans("Firstname").'</label></td>'; - print '<td colspan="3"><input name="firstname" id="firstname" type="text" class="minwidth200" maxlength="80" value="'.(isset($_POST["firstname"]) ?GETPOST("firstname") : $object->firstname).'"></td>'; + print '<td colspan="3"><input name="firstname" id="firstname" type="text" class="minwidth200" maxlength="80" value="'.(GETPOSTISSET("firstname") ? GETPOST("firstname") : $object->firstname).'"></td>'; print '</tr>'; // Company @@ -988,13 +999,13 @@ else print '</td></tr>'; print '<tr><td><label for="title">'.$langs->trans("PostOrFunction").'</label></td>'; - print '<td colspan="3"><input name="poste" id="title" type="text" class="minwidth100" maxlength="80" value="'.(isset($_POST["poste"]) ?GETPOST("poste") : $object->poste).'"></td></tr>'; + print '<td colspan="3"><input name="poste" id="title" type="text" class="minwidth100" maxlength="80" value="'.(GETPOSTISSET("poste") ? GETPOST("poste") : $object->poste).'"></td></tr>'; // Address print '<tr><td><label for="address">'.$langs->trans("Address").'</label></td>'; print '<td colspan="3">'; - print '<div class="paddingrightonly valignmiddle inline-block">'; - print '<textarea class="flat minwidth200" name="address" id="address">'.(isset($_POST["address"]) ?GETPOST("address") : $object->address).'</textarea>'; + print '<div class="paddingrightonly valignmiddle inline-block quatrevingtpercent">'; + print '<textarea class="flat minwidth200 centpercent" name="address" id="address">'.(GETPOSTISSET("address") ? GETPOST("address", 'nohtml') : $object->address).'</textarea>'; print '</div><div class="paddingrightonly valignmiddle inline-block">'; if ($conf->use_javascript_ajax) print '<a href="#" id="copyaddressfromsoc">'.$langs->trans('CopyAddressFromSoc').'</a><br>'; print '</div>'; @@ -1002,13 +1013,14 @@ else // Zip / Town print '<tr><td><label for="zipcode">'.$langs->trans("Zip").'</label> / <label for="town">'.$langs->trans("Town").'</label></td><td colspan="3" class="maxwidthonsmartphone">'; - print $formcompany->select_ziptown((isset($_POST["zipcode"]) ?GETPOST("zipcode") : $object->zip), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6).' '; - print $formcompany->select_ziptown((isset($_POST["town"]) ?GETPOST("town") : $object->town), 'town', array('zipcode', 'selectcountry_id', 'state_id')); + print $formcompany->select_ziptown((GETPOSTISSET("zipcode") ? GETPOST("zipcode") : $object->zip), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6).' '; + print $formcompany->select_ziptown((GETPOSTISSET("town") ? GETPOST("town") : $object->town), 'town', array('zipcode', 'selectcountry_id', 'state_id')); print '</td></tr>'; // Country print '<tr><td><label for="selectcountry_id">'.$langs->trans("Country").'</label></td><td colspan="3" class="maxwidthonsmartphone">'; - print $form->select_country(isset($_POST["country_id"]) ?GETPOST("country_id") : $object->country_id, 'country_id'); + print img_picto('', 'globe-americas', 'class="paddingrightonly"'); + print $form->select_country(GETPOSTISSET("country_id") ? GETPOST("country_id") : $object->country_id, 'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td></tr>'; @@ -1029,19 +1041,29 @@ else } // Phone - print '<tr><td>'.img_picto('', 'object_phoning').' '.$form->editfieldkey('PhonePro', 'phone_pro', GETPOST('phone_pro', 'alpha'), $object, 0).'</td>'; - print '<td><input type="text" name="phone_pro" id="phone_pro" class="maxwidth200" maxlength="80" value="'.(GETPOSTISSET('phone_pro') ?GETPOST('phone_pro', 'alpha') : $object->phone_pro).'"></td>'; - print '<td>'.img_picto('', 'object_phoning').' '.$form->editfieldkey('PhonePerso', 'fax', GETPOST('phone_perso', 'alpha'), $object, 0).'</td>'; - print '<td><input type="text" name="phone_perso" id="phone_perso" class="maxwidth200" maxlength="80" value="'.(GETPOSTISSET('phone_perso') ?GETPOST('phone_perso', 'alpha') : $object->phone_perso).'"></td></tr>'; + print '<tr><td>'.$form->editfieldkey('PhonePro', 'phone_pro', GETPOST('phone_pro', 'alpha'), $object, 0).'</td>'; + print '<td>'; + print img_picto('', 'object_phoning'); + print '<input type="text" name="phone_pro" id="phone_pro" class="maxwidth200" maxlength="80" value="'.(GETPOSTISSET('phone_pro') ?GETPOST('phone_pro', 'alpha') : $object->phone_pro).'"></td>'; + print '<td>'.$form->editfieldkey('PhonePerso', 'fax', GETPOST('phone_perso', 'alpha'), $object, 0).'</td>'; + print '<td>'; + print img_picto('', 'object_phoning'); + print '<input type="text" name="phone_perso" id="phone_perso" class="maxwidth200" maxlength="80" value="'.(GETPOSTISSET('phone_perso') ?GETPOST('phone_perso', 'alpha') : $object->phone_perso).'"></td></tr>'; - print '<tr><td>'.img_picto('', 'object_phoning_mobile').' '.$form->editfieldkey('PhoneMobile', 'phone_mobile', GETPOST('phone_mobile', 'alpha'), $object, 0, 'string', '').'</td>'; - print '<td><input type="text" name="phone_mobile" id="phone_mobile" class="maxwidth200" maxlength="80" value="'.(GETPOSTISSET('phone_mobile') ?GETPOST('phone_mobile', 'alpha') : $object->phone_mobile).'"></td>'; - print '<td>'.img_picto('', 'object_phoning_fax').' '.$form->editfieldkey('Fax', 'fax', GETPOST('fax', 'alpha'), $object, 0).'</td>'; - print '<td><input type="text" name="fax" id="fax" class="maxwidth200" maxlength="80" value="'.(GETPOSTISSET('phone_fax') ?GETPOST('phone_fax', 'alpha') : $object->fax).'"></td></tr>'; + print '<tr><td>'.$form->editfieldkey('PhoneMobile', 'phone_mobile', GETPOST('phone_mobile', 'alpha'), $object, 0, 'string', '').'</td>'; + print '<td>'; + print img_picto('', 'object_phoning_mobile'); + print '<input type="text" name="phone_mobile" id="phone_mobile" class="maxwidth200" maxlength="80" value="'.(GETPOSTISSET('phone_mobile') ?GETPOST('phone_mobile', 'alpha') : $object->phone_mobile).'"></td>'; + print '<td>'.$form->editfieldkey('Fax', 'fax', GETPOST('fax', 'alpha'), $object, 0).'</td>'; + print '<td>'; + print img_picto('', 'object_phoning_fax'); + print '<input type="text" name="fax" id="fax" class="maxwidth200" maxlength="80" value="'.(GETPOSTISSET('phone_fax') ?GETPOST('phone_fax', 'alpha') : $object->fax).'"></td></tr>'; // EMail - print '<tr><td>'.img_picto('', 'object_email').' '.$form->editfieldkey('EMail', 'email', GETPOST('email', 'alpha'), $object, 0, 'string', '', (!empty($conf->global->SOCIETE_EMAIL_MANDATORY))).'</td>'; - print '<td><input type="text" name="email" id="email" class="maxwidth100onsmartphone quatrevingtpercent" value="'.(GETPOSTISSET('email') ?GETPOST('email', 'alpha') : $object->email).'"></td>'; + print '<tr><td>'.$form->editfieldkey('EMail', 'email', GETPOST('email', 'alpha'), $object, 0, 'string', '', (!empty($conf->global->SOCIETE_EMAIL_MANDATORY))).'</td>'; + print '<td>'; + print img_picto('', 'object_email'); + print '<input type="text" name="email" id="email" class="maxwidth100onsmartphone quatrevingtpercent" value="'.(GETPOSTISSET('email') ?GETPOST('email', 'alpha') : $object->email).'"></td>'; if (!empty($conf->mailing->enabled)) { $langs->load("mails"); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 7bbf7b6475c..20dbdf18fd3 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -667,7 +667,7 @@ abstract class CommonObject $namecoords .= $this->getFullName($langs, 1).'<br>'.$coords; // hideonsmatphone because copyToClipboard call jquery dialog that does not work with jmobile $out .= '<a href="#" class="hideonsmartphone" onclick="return copyToClipboard(\''.dol_escape_js($namecoords).'\',\''.dol_escape_js($langs->trans("HelpCopyToClipboard")).'\');">'; - $out .= img_picto($langs->trans("Address"), 'object_address.png'); + $out .= img_picto($langs->trans("Address"), 'map-marker-alt'); $out .= '</a> '; } $out .= dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); $outdone++; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 9e5584bf7ae..94e9af511ea 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3143,8 +3143,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ '1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected', 'address', 'bank_account', 'barcode', 'bank', 'bookmark', 'bom', 'building', 'cash-register', 'check', 'close_title', 'company', 'contact', 'cubes', 'delete', 'dolly', 'dollyrevert', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', - 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'grip', 'grip_title', 'help', 'language', 'list', 'listlight', 'lot', - 'money-bill-alt', 'mrp', 'note', 'stock', + 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'globe', 'globe-americas', 'grip', 'grip_title', 'help', 'language', 'list', 'listlight', 'lot', + 'map-marker-alt', 'money-bill-alt', 'mrp', 'note', 'stock', 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bom', 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', @@ -3153,10 +3153,10 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'object_lot', 'object_mrp', 'object_payment', 'object_product', 'object_propal', 'object_supplier_proposal', 'object_service', 'object_stock', 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', 'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member', 'object_other', - 'object_phoning', 'object_phoning_fax', 'object_email', + 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', 'off', 'on', 'paiment', 'play', 'playdisabled', 'poll', 'printer', 'product', 'propal', 'resize', 'service', 'stats', 'trip', - 'note', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', 'globe', + 'note', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', 'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', 'home', 'companies', 'products', 'commercial', 'invoicing', 'accountancy', 'preview', 'project', 'projectpub', 'hrm', 'members', 'ticket', 'generic', @@ -3194,7 +3194,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'other'=>'square', 'playdisabled'=>'play', 'poll'=>'check-double', 'preview'=>'binoculars', 'project'=>'sitemap', 'projectpub'=>'sitemap', 'projecttask'=>'tasks', 'propal'=>'file-signature', 'resize'=>'crop', 'supplier_proposal'=>'file-signature', - 'payment'=>'money-check-alt', 'phoning'=>'phone', 'phoning_fax'=>'fax', 'printer'=>'print', 'product'=>'cube', 'service'=>'concierge-bell', + 'payment'=>'money-check-alt', 'phoning'=>'phone', 'phoning_mobile'=>'mobile-alt', 'phoning_fax'=>'fax', 'printer'=>'print', 'product'=>'cube', 'service'=>'concierge-bell', 'resource'=>'laptop-house', 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'technic'=>'cogs', 'ticket'=>'ticket-alt', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach', @@ -3271,10 +3271,11 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'address'=>'#37a', 'building'=>'#37a', 'bom'=>'#a69944', 'companies'=>'#37a', 'company'=>'#37a', 'contact'=>'#37a', 'dynamicprice'=>'#a69944', 'edit'=>'#444', 'note'=>'#999', 'error'=>'', 'listlight'=>'#999', - 'dolly'=>'#a69944', 'dollyrevert'=>'#a69944', 'lot'=>'#a69944', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944', + 'dolly'=>'#a69944', 'dollyrevert'=>'#a69944', 'lot'=>'#a69944', + 'map-marker-alt'=>'#aaa', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944', 'other'=>'#ddd', 'playdisabled'=>'#ccc', 'printer'=>'#444', 'projectpub'=>'#986c6a', 'resize'=>'#444', 'rss'=>'#cba', - 'stats'=>'#444', 'switch_off'=>'#999', 'uparrow'=>'#555', 'warning'=>'' + 'stats'=>'#444', 'switch_off'=>'#999', 'uparrow'=>'#555', 'globe-americas'=>'#aaa' ); if (isset($arrayconvpictotocolor[$pictowithouttext])) { $facolor = $arrayconvpictotocolor[$pictowithouttext]; diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index 57e4c14e5d5..28b6c6f0dbd 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -284,11 +284,19 @@ if ($line->special_code == 3) { ?> { $tooltiponprice = $langs->transcountry("TotalHT", $mysoc->country_code).'='.price($line->total_ht); $tooltiponprice .= '<br>'.$langs->transcountry("TotalVAT", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_tva); - if (price2num($line->total_localtax1)) $tooltiponprice .= '<br>'.$langs->transcountry("TotalLT1", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_localtax1); - if (price2num($line->total_localtax2)) $tooltiponprice .= '<br>'.$langs->transcountry("TotalLT2", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_localtax2); + if (! $senderissupplier && is_object($object->thirdparty)) { + if ($object->thirdparty->useLocalTax(1)) { + if (price2num($line->total_localtax1)) $tooltiponprice .= '<br>'.$langs->transcountry("TotalLT1", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_localtax1); + else $tooltiponprice .= '<br>'.$langs->transcountry("TotalLT1", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'=<span class="opacitymedium">'.$langs->trans("NotUsedForThisCustomer").'</span>'; + } + if ($object->thirdparty->useLocalTax(1)) { + if (price2num($line->total_localtax2)) $tooltiponprice .= '<br>'.$langs->transcountry("TotalLT2", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_localtax2); + else $tooltiponprice .= '<br>'.$langs->transcountry("TotalLT2", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'=<span class="opacitymedium">'.$langs->trans("NotUsedForThisCustomer").'</span>'; + } + } $tooltiponprice .= '<br>'.$langs->transcountry("TotalTTC", $mysoc->country_code).'='.price($line->total_ttc); - print '<span class="classfortooltip" title="'.$tooltiponprice.'">'; + print '<span class="classfortooltip" title="'.dol_escape_htmltag($tooltiponprice).'">'; } print price($line->total_ht); if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index c34ea6a9e96..7cb9b21791a 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -1030,3 +1030,4 @@ DeleteFileHeader=Confirm file delete DeleteFileText=Do you really want delete this file? ShowOtherLanguages=Show other languages SwitchInEditModeToAddTranslation=Switch in edit mode to add translations for this language +NotUsedForThisCustomer=Not used for this customer \ No newline at end of file diff --git a/htdocs/product/stock/card.php b/htdocs/product/stock/card.php index 11b901a9c66..0665cc48e06 100644 --- a/htdocs/product/stock/card.php +++ b/htdocs/product/stock/card.php @@ -293,13 +293,19 @@ if ($action == 'create') // Country print '<tr><td>'.$langs->trans('Country').'</td><td>'; + print img_picto('', 'globe-americas', 'class="paddingright"'); print $form->select_country((!empty($object->country_id) ? $object->country_id : $mysoc->country_code), 'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td></tr>'; // Phone / Fax - print '<tr><td class="titlefieldcreate fieldrequired">'.img_picto('', 'object_phoning').' '.$form->editfieldkey('Phone', 'phone', '', $object, 0).'</td><td><input name="phone" size="20" value="'.$object->phone.'"></td></tr>'; - print '<tr><td class="titlefieldcreate fieldrequired">'.img_picto('', 'object_phoning_fax').' '.$form->editfieldkey('Fax', 'fax', '', $object, 0).'</td><td><input name="fax" size="20" value="'.$object->fax.'"></td></tr>'; + print '<tr><td class="titlefieldcreate fieldrequired">'.$form->editfieldkey('Phone', 'phone', '', $object, 0).'</td><td>'; + print img_picto('', 'object_phoning', 'class="paddingright"'); + print '<input name="phone" size="20" value="'.$object->phone.'"></td></tr>'; + print '<tr><td class="titlefieldcreate fieldrequired">'.$form->editfieldkey('Fax', 'fax', '', $object, 0).'</td>'; + print '<td>'; + print img_picto('', 'object_phoning_fax', 'class="paddingright"'); + print '<input name="fax" size="20" value="'.$object->fax.'"></td></tr>'; // Status print '<tr><td>'.$langs->trans("Status").'</td><td>'; @@ -395,7 +401,7 @@ else print '<div class="fichehalfleft">'; print '<div class="underbanner clearboth"></div>'; - print '<table class="border centpercent">'; + print '<table class="border centpercent tableforfield">'; // Parent entrepot $parentwarehouse = new Entrepot($db); @@ -429,7 +435,7 @@ else print '<div class="ficheaddleft">'; print '<div class="underbanner clearboth"></div>'; - print '<table class="border centpercent">'; + print '<table class="border centpercent tableforfield">'; // Value print '<tr><td class="titlefield">'.$langs->trans("EstimatedStockValueShort").'</td><td>'; @@ -723,13 +729,18 @@ else // Country print '<tr><td>'.$langs->trans('Country').'</td><td>'; + print img_picto('', 'globe-americas', 'class="paddingright"'); print $form->select_country($object->country_id ? $object->country_id : $mysoc->country_code, 'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td></tr>'; // Phone / Fax - print '<tr><td class="titlefieldcreate fieldrequired">'.img_picto('', 'object_phoning').' '.$form->editfieldkey('Phone', 'phone', '', $object, 0).'</td><td><input name="phone" size="20" value="'.$object->phone.'"></td></tr>'; - print '<tr><td class="titlefieldcreate fieldrequired">'.img_picto('', 'object_phoning_fax').' '.$form->editfieldkey('Fax', 'fax', '', $object, 0).'</td><td><input name="fax" size="20" value="'.$object->fax.'"></td></tr>'; + print '<tr><td class="titlefieldcreate fieldrequired">'.$form->editfieldkey('Phone', 'phone', '', $object, 0).'</td><td>'; + print img_picto('', 'object_phoning', 'class="paddingright"'); + print '<input name="phone" size="20" value="'.$object->phone.'"></td></tr>'; + print '<tr><td class="titlefieldcreate fieldrequired">'.$form->editfieldkey('Fax', 'fax', '', $object, 0).'</td><td>'; + print img_picto('', 'object_phoning_fax', 'class="paddingright"'); + print '<input name="fax" size="20" value="'.$object->fax.'"></td></tr>'; // Status print '<tr><td>'.$langs->trans("Status").'</td><td>'; diff --git a/htdocs/product/stock/movement_list.php b/htdocs/product/stock/movement_list.php index e2cd50fd2e2..944462ccdfc 100644 --- a/htdocs/product/stock/movement_list.php +++ b/htdocs/product/stock/movement_list.php @@ -574,7 +574,7 @@ if ($resql) print '<div class="fichehalfleft">'; print '<div class="underbanner clearboth"></div>'; - print '<table class="border centpercent">'; + print '<table class="border centpercent tableforfield">'; print '<tr>'; @@ -602,7 +602,7 @@ if ($resql) print '<div class="ficheaddleft">'; print '<div class="underbanner clearboth"></div>'; - print '<table class="border centpercent">'; + print '<table class="border centpercent tableforfield">'; // Value print '<tr><td class="titlefield">'.$langs->trans("EstimatedStockValueShort").'</td><td>'; diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 20ada9bfbaf..8800bd887a1 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1330,6 +1330,7 @@ else // Country print '<tr><td>'.$form->editfieldkey('Country', 'selectcountry_id', '', $object, 0).'</td><td colspan="3" class="maxwidthonsmartphone">'; + print img_picto('', 'globe-americas', 'class="paddingrightonly"'); print $form->select_country((GETPOST('country_id') != '' ?GETPOST('country_id') : $object->country_id)); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td></tr>'; @@ -1977,6 +1978,7 @@ else // Country print '<tr><td>'.$form->editfieldkey('Country', 'selectcounty_id', '', $object, 0).'</td><td colspan="3">'; + print img_picto('', 'globe-americas', 'class="paddingrightonly"'); print $form->select_country((GETPOSTISSET('country_id') ? GETPOST('country_id') : $object->country_id), 'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td></tr>'; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 89d803781ba..e495a3bb4bc 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -210,7 +210,9 @@ textarea.cke_source:focus { box-shadow: none; } - +div#cke_dp_desc { + margin-top: 5px; +} textarea { border-radius: 0; border-top:solid 1px rgba(0,0,0,.2); diff --git a/htdocs/theme/eldy/main_menu_fa_icons.inc.php b/htdocs/theme/eldy/main_menu_fa_icons.inc.php index e2cd9d339c5..5b9395fbc04 100644 --- a/htdocs/theme/eldy/main_menu_fa_icons.inc.php +++ b/htdocs/theme/eldy/main_menu_fa_icons.inc.php @@ -145,7 +145,7 @@ div.mainmenu.generic4::before { /* Define color of some picto */ -.fa-phone, .fa-fax { +.fa-phone, .fa-mobile-alt, .fa-fax { opacity: 0.5; color: #440; } From 8598fd99c2973b491ea25ef620e5644f40627d6a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 18:08:02 +0200 Subject: [PATCH 100/780] if not exists not required --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 9c09b8b9247..4b87b4b9ce3 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -42,7 +42,7 @@ ALTER TABLE llx_commande_fournisseur_dispatch_extrafields ADD INDEX idx_commande UPDATE llx_accounting_system SET fk_country = NULL, active = 0 WHERE pcg_version = 'SYSCOHADA'; -create table if not exists llx_c_shipment_package_type +create table llx_c_shipment_package_type ( rowid integer AUTO_INCREMENT PRIMARY KEY, label varchar(50) NOT NULL, -- Short name From 7bc8a70b0a593a39d0acb72e29b445e39ccd3812 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 18:23:48 +0200 Subject: [PATCH 101/780] FIX #13670 --- 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 6e71125cbd5..37dbcbf5ded 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4548,7 +4548,7 @@ function price($amount, $form = 0, $outlangs = '', $trunc = 1, $rounding = -1, $ { if ($currency_code == 'auto') $currency_code = $conf->currency; - $listofcurrenciesbefore = array('USD', 'GBP', 'AUD', 'HKD', 'MXN', 'PEN', 'CNY', 'CAD'); + $listofcurrenciesbefore = array('AUD', 'CAD', 'CNY', 'COP', 'CLP', 'GBP', 'HKD', 'MXN', 'PEN', 'USD'); $listoflanguagesbefore = array('nl_NL'); if (in_array($currency_code, $listofcurrenciesbefore) || in_array($outlangs->defaultlang, $listoflanguagesbefore)) { From 52c8e3aff10b2bd3afbb08dbde918e109942ab22 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 18:30:25 +0200 Subject: [PATCH 102/780] Look and feel v12 --- htdocs/admin/multicurrency.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/multicurrency.php b/htdocs/admin/multicurrency.php index a2db56549e3..4ba581398ee 100644 --- a/htdocs/admin/multicurrency.php +++ b/htdocs/admin/multicurrency.php @@ -281,8 +281,8 @@ if (!empty($conf->global->MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION)) print '<td>'.$form->textwithpicto($langs->trans("CurrencyLayerAccount"), $langs->trans("CurrencyLayerAccount_help_to_synchronize", $urlforapilayer)).'</td>'."\n"; print '<td class="right">'; print '<textarea id="response" class="hideobject" name="response"></textarea>'; - print '<input type="submit" name="modify_apilayer" class="button" value="'.$langs->trans("Modify").'">'; - print '<input type="submit" id="bt_sync" name="bt_sync_apilayer" class="button" value="'.$langs->trans('Synchronize').'" />'; + print '<input type="submit" name="modify_apilayer" class="button buttongen" value="'.$langs->trans("Modify").'">'; + print '<input type="submit" id="bt_sync" name="bt_sync_apilayer" class="button buttongen" value="'.$langs->trans('Synchronize').'" />'; print '</td></tr>'; print '<tr class="oddeven">'; From 3170060c650acee32e8852d1861c552274c8072b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 18:34:52 +0200 Subject: [PATCH 103/780] Help show format of price --- htdocs/admin/limits.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/admin/limits.php b/htdocs/admin/limits.php index d828873be36..0646c7f6d46 100644 --- a/htdocs/admin/limits.php +++ b/htdocs/admin/limits.php @@ -209,6 +209,8 @@ else // Show examples print load_fiche_titre($langs->trans("ExamplesWithCurrentSetup"), '', ''); + print '<span class="opacitymedium">'.$langs->trans("Format").':</span> '.price(price2num(1234.56789, 'MT'), 0, $langs, 1, -1, -1, $currencycode)."<br>\n"; + // Always show vat rates with vat 0 $s = 2 / 7; $qty = 1; $vat = 0; $tmparray = calcul_price_total(1, $qty * price2num($s, 'MU'), 0, $vat, 0, 0, 0, 'HT', 0, 0, $mysoc); From 4605b9ec61350024fc197ae4f5c45c4f2765f971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Wed, 22 Apr 2020 19:16:58 +0200 Subject: [PATCH 104/780] Update api_bankaccounts.class.php --- htdocs/compta/bank/class/api_bankaccounts.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/bank/class/api_bankaccounts.class.php b/htdocs/compta/bank/class/api_bankaccounts.class.php index d947d169695..ad75559b362 100644 --- a/htdocs/compta/bank/class/api_bankaccounts.class.php +++ b/htdocs/compta/bank/class/api_bankaccounts.class.php @@ -78,7 +78,7 @@ class BankAccounts extends DolibarrApi $sql .= ' WHERE t.entity IN ('.getEntity('bank_account').')'; // Select accounts of given category if ($category > 0) { - $sql .= " AND c.fk_categorie = ".$db->escape($category)." AND c.fk_account = t.rowid "; + $sql .= " AND c.fk_categorie = ".$this->db->escape($category)." AND c.fk_account = t.rowid "; } // Add sql filters if ($sqlfilters) From 245f89ceaaac7844ecac8ce3ca880bd195433a37 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 21:28:23 +0200 Subject: [PATCH 105/780] Look and feel v12 --- htdocs/product/stock/class/entrepot.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index 40b7c4916de..aa922c4ab0c 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -715,7 +715,7 @@ class Entrepot extends CommonObject $result = ''; - $label = '<u>'.$langs->trans("ShowWarehouse").'</u>'; + $label = '<u>'.$langs->trans("Warehouse").'</u>'; $label .= '<br><b>'.$langs->trans('Ref').':</b> '.(empty($this->ref) ? (empty($this->label) ? $this->libelle : $this->label) : $this->ref); if (!empty($this->lieu)) { $label .= '<br><b>'.$langs->trans('LocationSummary').':</b> '.$this->lieu; @@ -731,7 +731,7 @@ class Entrepot extends CommonObject { if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label = $langs->trans("ShowWarehouse"); + $label = $langs->trans("Warehouse"); $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; From de90f24bd47ef33892f21a0c6fb86185f8bd7c0c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 21:29:15 +0200 Subject: [PATCH 106/780] Fix phpcs --- htdocs/core/class/html.formother.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index 3a709e295f7..daf8b3db617 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -262,7 +262,7 @@ class FormOther { // phpcs:enable global $langs; - + $out = ''; $sql = "SELECT r.taux, r.revenuestamp_type"; From 9bda294edcac49f34ba3ca216649f6d9ac6ce247 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 21:41:56 +0200 Subject: [PATCH 107/780] Fix set default warehouse of product in MO consumption --- htdocs/mrp/mo_production.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/mrp/mo_production.php b/htdocs/mrp/mo_production.php index f1e847a6213..301cf4a76ae 100644 --- a/htdocs/mrp/mo_production.php +++ b/htdocs/mrp/mo_production.php @@ -684,6 +684,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print '</tr>'; if ($action == 'addconsumeline') { + print '<!-- Add line to consume -->'."\n"; print '<tr class="liste_titre">'; print '<td>'; print $form->select_produits('', 'productidtoadd', '', 0, 0, -1, 2, '', 0, array(), 0, '1', 0, 'maxwidth300'); @@ -791,6 +792,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if (in_array($action, array('consumeorproduce', 'consumeandproduceall'))) { $i = 1; + print '<!-- Enter line to consume -->'."\n"; print '<tr>'; print '<td>'.$langs->trans("ToConsume").'</td>'; $preselected = (GETPOSTISSET('qty-'.$line->id.'-'.$i) ? GETPOST('qty-'.$line->id.'-'.$i) : max(0, $line->qty - $alreadyconsumed)); @@ -800,8 +802,8 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print '<td>'; if ($tmpproduct->type == Product::TYPE_PRODUCT || !empty($conf->global->STOCK_SUPPORTS_SERVICES)) { if (empty($line->disable_stock_change)) { - $preselected = (GETPOSTISSET('idwarehouse-'.$line->id.'-'.$i) ? GETPOST('idwarehouse-'.$line->id.'-'.$i) : 'ifone'); - print $formproduct->selectWarehouses($preselected, 'idwarehouse-'.$line->id.'-'.$i, '', 1, 0, $line->fk_product, '', 1); + $preselected = (GETPOSTISSET('idwarehouse-'.$line->id.'-'.$i) ? GETPOST('idwarehouse-'.$line->id.'-'.$i) : ($tmpproduct->fk_default_warehouse > 0 ? $tmpproduct->fk_default_warehouse : 'ifone')); + print $formproduct->selectWarehouses($preselected, 'idwarehouse-'.$line->id.'-'.$i, '', 1, 0, $line->fk_product, '', 1, 0, null, 'maxwidth300'); } else { print '<span class="opacitymedium">'.$langs->trans("DisableStockChange").'</span>'; } @@ -949,7 +951,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print '<td>'; if ($tmpproduct->type == Product::TYPE_PRODUCT || !empty($conf->global->STOCK_SUPPORTS_SERVICES)) { $preselected = (GETPOSTISSET('idwarehousetoproduce-'.$line->id.'-'.$i) ? GETPOST('idwarehousetoproduce-'.$line->id.'-'.$i) : ($object->fk_warehouse > 0 ? $object->fk_warehouse : 'ifone')); - print $formproduct->selectWarehouses($preselected, 'idwarehousetoproduce-'.$line->id.'-'.$i, '', 1, 0, $line->fk_product, '', 1, 0, null, 'csswarehouse_'.$line->id.'_'.$i); + print $formproduct->selectWarehouses($preselected, 'idwarehousetoproduce-'.$line->id.'-'.$i, '', 1, 0, $line->fk_product, '', 1, 0, null, 'maxwidth300 csswarehouse_'.$line->id.'_'.$i); } else { print '<span class="opacitymedium">'.$langs->trans("NoStockChangeOnServices").'</span>'; } From a7641cdb9028c5b41aae62a2315d2e15b6cae078 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 22:02:25 +0200 Subject: [PATCH 108/780] CSS --- htdocs/product/stock/class/entrepot.class.php | 2 +- htdocs/user/home.php | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index aa922c4ab0c..3dd22c9e5c3 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -765,7 +765,7 @@ class Entrepot extends CommonObject // Initialize parameters $this->id = 0; - $this->libelle = 'WAREHOUSE SPECIMEN'; + $this->label = 'WAREHOUSE SPECIMEN'; $this->description = 'WAREHOUSE SPECIMEN '.dol_print_date($now, 'dayhourlog'); $this->statut = 1; $this->specimen = 1; diff --git a/htdocs/user/home.php b/htdocs/user/home.php index da037243ed8..4bb99e4c261 100644 --- a/htdocs/user/home.php +++ b/htdocs/user/home.php @@ -92,7 +92,7 @@ print '</div><div class="fichetwothirdright"><div class="ficheaddleft">'; /* - * Last created users + * Latest created users */ $max = 10; @@ -128,8 +128,7 @@ if ($resql) print '<div class="div-table-responsive-no-min">'; print '<table class="noborder centpercent">'; print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("LastUsersCreated", min($num, $max)).'</td>'; - print '<td class="right"><a class="commonlink" href="'.DOL_URL_ROOT.'/user/list.php?sortfield=u.datec&sortorder=DESC">'.$langs->trans("FullList").'</td>'; - print '<td></td>'; + print '<td class="right" colspan="2"><a class="commonlink" href="'.DOL_URL_ROOT.'/user/list.php?sortfield=u.datec&sortorder=DESC">'.$langs->trans("FullList").'</td>'; print '</tr>'; $i = 0; @@ -165,7 +164,7 @@ if ($resql) print img_picto($langs->trans("Administrator"), 'star'); } print "</td>"; - print '<td class="left">'.$obj->login.'</td>'; + print '<td>'.$obj->login.'</td>'; print "<td>"; if ($obj->fk_soc) { From b6786c515a68bc6a1ede800633b2810fee61b97e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 22 Apr 2020 22:12:53 +0200 Subject: [PATCH 109/780] picto --- htdocs/user/home.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/home.php b/htdocs/user/home.php index 4bb99e4c261..4c46c502acc 100644 --- a/htdocs/user/home.php +++ b/htdocs/user/home.php @@ -61,7 +61,7 @@ $hookmanager->initHooks(array('userhome')); llxHeader(); -print load_fiche_titre($langs->trans("MenuUsersAndGroups")); +print load_fiche_titre($langs->trans("MenuUsersAndGroups"), '', 'user'); print '<div class="fichecenter"><div class="fichethirdleft">'; From 3f5270cf3906cc13156addc507fe688dc5451007 Mon Sep 17 00:00:00 2001 From: ATM john <john.botella@atm-consulting.fr> Date: Wed, 22 Apr 2020 23:12:15 +0200 Subject: [PATCH 110/780] Remove getValue Method : usage of fetch_row is deprecated --- htdocs/core/db/DoliDB.class.php | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index 3bb5e025c34..2818eff65e2 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -298,30 +298,6 @@ abstract class DoliDB implements Database return $this->lastqueryerror; } - - /** - * Return first result value from query - * Note : This method executes a given SQL query and retrieves the first value of the first row of results. It should only be used with SELECT queries. - * Dont add LIMIT to your query, it will be added by this method - * @param string $sql the sql query string - * @return bool| var - */ - public function getValue($sql) - { - $sql .= ' LIMIT 1;'; - - $res = $this->query($sql); - if ($res) - { - if($this->num_rows($res) > 0) { - $Tresult = $this->fetch_row($res); - return reset($Tresult); - } - } - - return false; - } - /** * Return first result from query as object * Note : This method executes a given SQL query and retrieves the first row of results as an object. It should only be used with SELECT queries From 061f4623b3cc8ce593c97a8ae6c4fe2333514e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Wed, 22 Apr 2020 23:53:00 +0200 Subject: [PATCH 111/780] remove deprecated libelle --- htdocs/product/stock/class/entrepot.class.php | 21 +++++++++++-------- htdocs/product/stock/movement_card.php | 1 - htdocs/product/stock/movement_list.php | 1 - htdocs/product/stock/product.php | 1 - 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index 3dd22c9e5c3..c09c8932401 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -4,7 +4,7 @@ * Copyright (C) 2005-2008 Regis Houssin <regis.houssin@inodbox.com> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2016 Francis Appels <francis.appels@yahoo.com> - * Copyright (C) 2019 Frédéric France <frederic.france@netlogic.fr> + * Copyright (C) 2019-2020 Frédéric France <frederic.france@netlogic.fr> * * 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 @@ -48,7 +48,11 @@ class Entrepot extends CommonObject * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png */ public $picto = 'stock'; - public $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe + + /** + * @var int 0=No test on entity, 1=Test with field entity, 2=Test with link by societe + */ + public $ismultientitymanaged = 1; /** * @var string Label @@ -184,11 +188,10 @@ class Entrepot extends CommonObject $error = 0; - $this->libelle = trim($this->libelle); + $this->label = !empty($this->label) ? trim($this->label) : trim($this->libelle); - // Si libelle non defini, erreur - if ($this->libelle == '') - { + // Error if label not defined + if ($this->label == '') { $this->error = "ErrorFieldRequired"; return 0; } @@ -198,7 +201,7 @@ class Entrepot extends CommonObject $this->db->begin(); $sql = "INSERT INTO ".MAIN_DB_PREFIX."entrepot (ref, entity, datec, fk_user_author, fk_parent)"; - $sql .= " VALUES ('".$this->db->escape($this->libelle)."', ".$conf->entity.", '".$this->db->idate($now)."', ".$user->id.", ".($this->fk_parent > 0 ? $this->fk_parent : "NULL").")"; + $sql .= " VALUES ('".$this->db->escape($this->label)."', ".$conf->entity.", '".$this->db->idate($now)."', ".$user->id.", ".($this->fk_parent > 0 ? $this->fk_parent : "NULL").")"; dol_syslog(get_class($this)."::create", LOG_DEBUG); $result = $this->db->query($sql); @@ -285,7 +288,7 @@ class Entrepot extends CommonObject } } - $this->libelle = trim($this->libelle); + $this->label = !empty($this->label) ? trim($this->label) : trim($this->libelle); $this->description = trim($this->description); $this->lieu = trim($this->lieu); @@ -296,7 +299,7 @@ class Entrepot extends CommonObject $this->country_id = ($this->country_id > 0 ? $this->country_id : 0); $sql = "UPDATE ".MAIN_DB_PREFIX."entrepot "; - $sql .= " SET ref = '".$this->db->escape($this->libelle)."'"; + $sql .= " SET ref = '".$this->db->escape($this->label)."'"; $sql .= ", fk_parent = ".(($this->fk_parent > 0) ? $this->fk_parent : "NULL"); $sql .= ", description = '".$this->db->escape($this->description)."'"; $sql .= ", statut = ".$this->statut; diff --git a/htdocs/product/stock/movement_card.php b/htdocs/product/stock/movement_card.php index 2714740eb45..7e7aa53cd08 100644 --- a/htdocs/product/stock/movement_card.php +++ b/htdocs/product/stock/movement_card.php @@ -975,7 +975,6 @@ if ($resql) $productlot->sellby = $objp->sellby; $warehousestatic->id = $objp->entrepot_id; - $warehousestatic->libelle = $objp->warehouse_ref; // deprecated $warehousestatic->label = $objp->warehouse_ref; $warehousestatic->lieu = $objp->lieu; diff --git a/htdocs/product/stock/movement_list.php b/htdocs/product/stock/movement_list.php index 944462ccdfc..de12c018f20 100644 --- a/htdocs/product/stock/movement_list.php +++ b/htdocs/product/stock/movement_list.php @@ -1012,7 +1012,6 @@ if ($resql) $warehousestatic->id = $objp->entrepot_id; $warehousestatic->ref = $objp->warehouse_ref; - $warehousestatic->libelle = $objp->warehouse_ref; // deprecated $warehousestatic->label = $objp->warehouse_ref; $warehousestatic->lieu = $objp->lieu; $warehousestatic->fk_parent = $objp->fk_parent; diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 0164f6338e6..e188ab368f7 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -866,7 +866,6 @@ if (!$variants) { $entrepotstatic->id = $obj->rowid; $entrepotstatic->ref = $obj->ref; - $entrepotstatic->libelle = $obj->ref; $entrepotstatic->label = $obj->ref; $entrepotstatic->lieu = $obj->lieu; $entrepotstatic->fk_parent = $obj->fk_parent; From 2349c2be2247188bd37fa260e1ff813b304919f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Wed, 22 Apr 2020 23:55:50 +0200 Subject: [PATCH 112/780] remove deprecated libelle --- htdocs/product/stock/card.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/htdocs/product/stock/card.php b/htdocs/product/stock/card.php index 0665cc48e06..d0e9228fbf5 100644 --- a/htdocs/product/stock/card.php +++ b/htdocs/product/stock/card.php @@ -97,7 +97,7 @@ if (empty($reshook)) { $object->ref = GETPOST("ref"); $object->fk_parent = GETPOST("fk_parent"); - $object->libelle = GETPOST("libelle"); + $object->label = GETPOST("libelle"); $object->description = GETPOST("desc"); $object->statut = GETPOST("statut"); $object->lieu = GETPOST("lieu"); @@ -108,8 +108,7 @@ if (empty($reshook)) $object->phone = GETPOST("phone"); $object->fax = GETPOST("fax"); - if (!empty($object->libelle)) - { + if (!empty($object->label)) { // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost(null, $object); if ($ret < 0) { @@ -167,7 +166,7 @@ if (empty($reshook)) { if ($object->fetch($id)) { - $object->libelle = GETPOST("libelle"); + $object->label = GETPOST("libelle"); $object->fk_parent = GETPOST("fk_parent"); $object->description = GETPOST("desc"); $object->statut = GETPOST("statut"); From bc4726c7c347e406b0bed30ddb0f437c3209bb8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 23 Apr 2020 00:06:57 +0200 Subject: [PATCH 113/780] remove deprecated libelle --- test/phpunit/MouvementStockTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/phpunit/MouvementStockTest.php b/test/phpunit/MouvementStockTest.php index d095736042b..85137234a3b 100644 --- a/test/phpunit/MouvementStockTest.php +++ b/test/phpunit/MouvementStockTest.php @@ -148,13 +148,13 @@ class MouvementStockTest extends PHPUnit\Framework\TestCase // We create a product for tests $warehouse1=new Entrepot($db); $warehouse1->initAsSpecimen(); - $warehouse1->libelle.=' 1'; + $warehouse1->label.=' 1'; $warehouse1->description.=' 1'; $warehouse1id=$warehouse1->create($user); $warehouse2=new Entrepot($db); $warehouse2->initAsSpecimen(); - $warehouse2->libelle.=' 2'; + $warehouse2->label.=' 2'; $warehouse2->description.=' 2'; $warehouse2id=$warehouse2->create($user); From 35410209124f135e12781f757012b1c932f7d335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 23 Apr 2020 00:13:51 +0200 Subject: [PATCH 114/780] remove deprecated libelle --- htdocs/product/stock/class/mouvementstock.class.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index 5bbc3f9d92c..d6ca1f3655e 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -41,7 +41,14 @@ class MouvementStock extends CommonObject public $table_element = 'stock_mouvement'; + /** + * @var int ID product + */ public $product_id; + + /** + * @var int ID warehouse + */ public $warehouse_id; public $qty; @@ -58,7 +65,7 @@ class MouvementStock extends CommonObject public $price; /** - * @var int ID + * @var int ID user author */ public $fk_user_author; @@ -894,13 +901,13 @@ class MouvementStock extends CommonObject } else { - dol_syslog(get_class($this)."::createBatch array param dluo must contain at least key fk_product_stock".$error, LOG_ERR); + dol_syslog(get_class($this)."::createBatch array param dluo must contain at least key fk_product_stock", LOG_ERR); $result = -1; } } else { - dol_syslog(get_class($this)."::createBatch error invalid param dluo".$error, LOG_ERR); + dol_syslog(get_class($this)."::createBatch error invalid param dluo", LOG_ERR); $result = -1; } From 4220d6b253d1626d73920072de291ef30c97aeba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 23 Apr 2020 00:38:42 +0200 Subject: [PATCH 115/780] actioncomm note deprecated --- htdocs/comm/action/class/actioncomm.class.php | 15 +++++++-------- test/phpunit/ActionCommTest.php | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 8c1e2051a81..09c114375b1 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -380,7 +380,7 @@ class ActionComm extends CommonObject // Clean parameters $this->label = dol_trunc(trim($this->label), 128); $this->location = dol_trunc(trim($this->location), 128); - $this->note = dol_htmlcleanlastbr(trim($this->note)); + $this->note_private = dol_htmlcleanlastbr(trim(empty($this->note_private) ? $this->note : $this->note_private)); if (empty($this->percentage)) $this->percentage = 0; if (empty($this->priority) || !is_numeric($this->priority)) $this->priority = 0; if (empty($this->fulldayevent)) $this->fulldayevent = 0; @@ -488,7 +488,7 @@ class ActionComm extends CommonObject $sql .= ($this->ref_ext ? ("'".$this->db->idate($this->ref_ext)."'") : "null").", "; $sql .= ((isset($this->socid) && $this->socid > 0) ? $this->socid : "null").", "; $sql .= ((isset($this->fk_project) && $this->fk_project > 0) ? $this->fk_project : "null").", "; - $sql .= " '".$this->db->escape($this->note_private ? $this->note_private : $this->note)."', "; + $sql .= " '".$this->db->escape($this->note_private)."', "; $sql .= ((isset($this->contactid) && $this->contactid > 0) ? $this->contactid : "null").", "; $sql .= (isset($user->id) && $user->id > 0 ? $user->id : "null").", "; $sql .= ($userownerid > 0 ? $userownerid : "null").", "; @@ -993,7 +993,7 @@ class ActionComm extends CommonObject // Clean parameters $this->label = trim($this->label); - $this->note = trim($this->note); + $this->note_private = dol_htmlcleanlastbr(trim(empty($this->note_private) ? $this->note : $this->note_private)); if (empty($this->percentage)) $this->percentage = 0; if (empty($this->priority) || !is_numeric($this->priority)) $this->priority = 0; if (empty($this->transparency)) $this->transparency = 0; @@ -1027,7 +1027,7 @@ class ActionComm extends CommonObject $sql .= ", datep = ".(strval($this->datep) != '' ? "'".$this->db->idate($this->datep)."'" : 'null'); $sql .= ", datep2 = ".(strval($this->datef) != '' ? "'".$this->db->idate($this->datef)."'" : 'null'); $sql .= ", durationp = ".(isset($this->durationp) && $this->durationp >= 0 && $this->durationp != '' ? "'".$this->db->escape($this->durationp)."'" : "null"); // deprecated - $sql .= ", note = '".$this->db->escape($this->note_private ? $this->note_private : $this->note)."'"; + $sql .= ", note = '".$this->db->escape($this->note_private)."'"; $sql .= ", fk_project =".($this->fk_project > 0 ? $this->fk_project : "null"); $sql .= ", fk_soc =".($socid > 0 ? $socid : "null"); $sql .= ", fk_contact =".($contactid > 0 ? $contactid : "null"); @@ -1406,8 +1406,8 @@ class ActionComm extends CommonObject $tooltip .= '<br><b>'.$langs->trans('Type').':</b> '.$labeltype; if (!empty($this->location)) $tooltip .= '<br><b>'.$langs->trans('Location').':</b> '.$this->location; - if (!empty($this->note)) - $tooltip .= '<br><b>'.$langs->trans('Note').':</b> '.(dol_textishtml($this->note) ? str_replace(array("\r", "\n"), "", $this->note) : str_replace(array("\r", "\n"), '<br>', $this->note)); + if (!empty($this->note_private)) + $tooltip .= '<br><b>'.$langs->trans('Note').':</b> '.(dol_textishtml($this->note_private) ? str_replace(array("\r", "\n"), "", $this->note_private) : str_replace(array("\r", "\n"), '<br>', $this->note_private)); $linkclose = ''; if (!empty($conf->global->AGENDA_USE_EVENT_TYPE) && $this->type_color) $linkclose = ' style="background-color:#'.$this->type_color.'"'; @@ -1940,8 +1940,7 @@ class ActionComm extends CommonObject $this->location = 'Location'; $this->transparency = 1; // 1 means opaque $this->priority = 1; - $this->note = "This is a 'public' note"; - $this->note_public = "This is a 'public' note."; + //$this->note_public = "This is a 'public' note."; $this->note_private = "This is a 'private' note."; $this->userownerid = $user->id; diff --git a/test/phpunit/ActionCommTest.php b/test/phpunit/ActionCommTest.php index 6bb7f12250d..34d67341afb 100644 --- a/test/phpunit/ActionCommTest.php +++ b/test/phpunit/ActionCommTest.php @@ -140,7 +140,7 @@ class ActionCommTest extends PHPUnit\Framework\TestCase $localobject->type_code = 'AC_OTH_AUTO'; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...) $localobject->code = 'AC_PHPUNITTEST'; $localobject->label = 'This is a description'; - $localobject->note = 'This is note'; + $localobject->note_private = 'This is note'; $localobject->fk_project = 0; $localobject->datep = $now; $localobject->datef = $now; From 177008ab65a06221663e496809e904ec2363ae8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 23 Apr 2020 00:45:33 +0200 Subject: [PATCH 116/780] actioncomm note deprecated --- htdocs/comm/action/card.php | 9 ++++----- htdocs/comm/action/class/actioncomm.class.php | 12 ++++++------ htdocs/comm/action/list.php | 7 +++---- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index fb07acbd337..716e02ae678 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -317,7 +317,7 @@ if (empty($reshook) && $action == 'add') if (GETPOST("doneby") > 0) $object->userdoneid = GETPOST("doneby", "int"); } - $object->note = trim(GETPOST("note")); + $object->note_private = trim(GETPOST("note")); if (isset($_POST["contactid"])) $object->contact = $contact; @@ -465,7 +465,6 @@ if (empty($reshook) && $action == 'update') $object->contactid = key($object->socpeopleassigned); } $object->fk_project = GETPOST("projectid", 'int'); - $object->note = GETPOST("note", "none"); // deprecated $object->note_private = GETPOST("note", "none"); $object->fk_element = GETPOST("fk_element", "int"); $object->elementtype = GETPOST("elementtype", "alphanohtml"); @@ -1122,7 +1121,7 @@ if ($action == 'create') // Description print '<tr><td class="tdtop">'.$langs->trans("Description").'</td><td>'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor = new DolEditor('note', (GETPOST('note', 'none') ?GETPOST('note', 'none') : $object->note), '', 180, 'dolibarr_notes', 'In', true, true, $conf->fckeditor->enabled, ROWS_4, '90%'); + $doleditor = new DolEditor('note', (GETPOST('note', 'none') ?GETPOST('note', 'none') : $object->note_private), '', 180, 'dolibarr_notes', 'In', true, true, $conf->fckeditor->enabled, ROWS_4, '90%'); $doleditor->Create(); print '</td></tr>'; @@ -1188,7 +1187,7 @@ if ($id > 0) $object->contactid = GETPOST("contactid", 'int'); $object->fk_project = GETPOST("projectid", 'int'); - $object->note = GETPOST("note", 'none'); + $object_private = GETPOST("note", 'none'); } if ($result2 < 0 || $result3 < 0 || $result4 < 0 || $result5 < 0) @@ -1540,7 +1539,7 @@ if ($id > 0) print '<tr><td class="tdtop">'.$langs->trans("Description").'</td><td>'; // Editeur wysiwyg require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor = new DolEditor('note', $object->note, '', 200, 'dolibarr_notes', 'In', true, true, $conf->fckeditor->enabled, ROWS_5, '90%'); + $doleditor = new DolEditor('note', $object->note_private, '', 200, 'dolibarr_notes', 'In', true, true, $conf->fckeditor->enabled, ROWS_5, '90%'); $doleditor->Create(); print '</td></tr>'; diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 09c114375b1..d5b2d542b05 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -733,14 +733,14 @@ class ActionComm extends CommonObject $this->type_short = (($transcode != "Action".$obj->type_code.'Short') ? $transcode : ''); $this->code = $obj->code; - $this->label = $obj->label; - $this->datep = $this->db->jdate($obj->datep); - $this->datef = $this->db->jdate($obj->datep2); + $this->label = $obj->label; + $this->datep = $this->db->jdate($obj->datep); + $this->datef = $this->db->jdate($obj->datep2); - $this->datec = $this->db->jdate($obj->datec); - $this->datem = $this->db->jdate($obj->datem); + $this->datec = $this->db->jdate($obj->datec); + $this->datem = $this->db->jdate($obj->datem); - $this->note = $obj->note; + $this->note = $obj->note; // deprecated $this->note_private = $obj->note; $this->percentage = $obj->percentage; diff --git a/htdocs/comm/action/list.php b/htdocs/comm/action/list.php index 9f28d278ed1..a4b1a9618fb 100644 --- a/htdocs/comm/action/list.php +++ b/htdocs/comm/action/list.php @@ -553,8 +553,7 @@ if ($resql) $actionstatic->type_picto = $obj->type_picto; $actionstatic->label = $obj->label; $actionstatic->location = $obj->location; - $actionstatic->note = dol_htmlentitiesbr($obj->note); // deprecated - $actionstatic->note_public = dol_htmlentitiesbr($obj->note); + $actionstatic->note_private = dol_htmlentitiesbr($obj->note); $actionstatic->fetchResources(); @@ -613,8 +612,8 @@ if ($resql) // Description if (!empty($arrayfields['a.note']['checked'])) { print '<td class="tdoverflowonsmartphone">'; - $text = dolGetFirstLineOfText(dol_string_nohtmltag($actionstatic->note, 0)); - print $form->textwithtooltip(dol_trunc($text, 40), $actionstatic->note); + $text = dolGetFirstLineOfText(dol_string_nohtmltag($actionstatic->note_private, 0)); + print $form->textwithtooltip(dol_trunc($text, 40), $actionstatic->note_private); print '</td>'; } From e15256712278343032c08734e60d597847b2c62f Mon Sep 17 00:00:00 2001 From: Lenin Rivas <53640168+leninrivas@users.noreply.github.com> Date: Thu, 23 Apr 2020 00:38:08 -0500 Subject: [PATCH 117/780] Add Button Cancel And cancel confirmation --- htdocs/expedition/card.php | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 655ba8f060f..cb3c908138b 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -12,6 +12,7 @@ * Copyright (C) 2016-2018 Ferran Marcet <fmarcet@2byte.es> * Copyright (C) 2016 Yasser Carreón <yacasia@gmail.com> * Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr> + * Copyright (C) 2020 Lenin Rivas <lenin@leninrivas.com> * * 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 @@ -460,7 +461,23 @@ if (empty($reshook)) } } } + + elseif ($action == 'confirm_cancel' && $confirm == 'yes' && $user->rights->expedition->supprimer) + { + + $also_update_stock = (GETPOST('alsoUpdateStock', 'alpha') ? 1 : 0); + $result = $object->cancel(0, $also_update_stock); + if ($result > 0) + { + $result = $object->setStatut(-1); + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); + } + } + elseif ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->expedition->supprimer) { $also_update_stock = (GETPOST('alsoUpdateStock', 'alpha') ? 1 : 0); @@ -1689,7 +1706,7 @@ elseif ($id || $ref) $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('ValidateSending'), $text, 'confirm_valid', '', 0, 1); } // Confirm cancelation - if ($action == 'annuler') + if ($action == 'cancel') { $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('CancelSending'), $langs->trans("ConfirmCancelSending", $object->ref), 'confirm_cancel', '', 0, 1); } @@ -2575,6 +2592,16 @@ elseif ($id || $ref) } } + // Cancel + if ($object->statut == Expedition::STATUS_VALIDATED) + { + if ($user->rights->expedition->supprimer) + { + print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=cancel">'.$langs->trans("Cancel").'</a>'; + } + } + + // Delete if ($user->rights->expedition->supprimer) { print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete">'.$langs->trans("Delete").'</a>'; From 47654fd6290138c503d315d487f947314ed79cfc Mon Sep 17 00:00:00 2001 From: Lenin Rivas <53640168+leninrivas@users.noreply.github.com> Date: Thu, 23 Apr 2020 00:49:31 -0500 Subject: [PATCH 118/780] Shipment Canceled Shipment canceled, not delete ref and recovery stock. --- htdocs/expedition/class/expedition.class.php | 228 ++++++++++++++++++- 1 file changed, 227 insertions(+), 1 deletion(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 624add5c075..92d2d146d58 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -12,6 +12,7 @@ * Copyright (C) 2016 Ferran Marcet <fmarcet@2byte.es> * Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com> * Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr> + * Copyright (C) 2020 Lenin Rivas <lenin@leninrivas.com> * * 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 @@ -175,7 +176,11 @@ class Expedition extends CommonObject */ const STATUS_CLOSED = 2; - + /** + * Canceled status + */ + const STATUS_CANCELED = -1; + /** * Constructor @@ -1165,6 +1170,227 @@ class Expedition extends CommonObject } } + + /** + * Cancel shipment. + * + * @param int $notrigger Disable triggers + * @param bool $also_update_stock true if the stock should be increased back (false by default) + * @return int >0 if OK, 0 if deletion done but failed to delete files, <0 if KO + */ + public function cancel($notrigger = 0, $also_update_stock = false) + { + global $conf, $langs, $user; + + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + require_once DOL_DOCUMENT_ROOT.'/expedition/class/expeditionbatch.class.php'; + + $error=0; + $this->error=''; + + $this->db->begin(); + + // Add a protection to refuse deleting if shipment has at least one delivery + $this->fetchObjectLinked($this->id, 'shipping', 0, 'delivery'); // Get deliveries linked to this shipment + if (count($this->linkedObjectsIds) > 0) + { + $this->error='ErrorThereIsSomeDeliveries'; + $error++; + } + + if (! $error) + { + if (! $notrigger) + { + // Call trigger + $result=$this->call_trigger('SHIPPING_CANCEL', $user); + if ($result < 0) { $error++; } + // End call triggers + } + } + + // Stock control + if (! $error && $conf->stock->enabled && + (($conf->global->STOCK_CALCULATE_ON_SHIPMENT && $this->statut > self::STATUS_DRAFT) || + ($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE && $this->statut == self::STATUS_CLOSED && $also_update_stock))) + { + require_once DOL_DOCUMENT_ROOT."/product/stock/class/mouvementstock.class.php"; + + $langs->load("agenda"); + + // Loop on each product line to add a stock movement and delete features + $sql = "SELECT cd.fk_product, cd.subprice, ed.qty, ed.fk_entrepot, ed.rowid as expeditiondet_id"; + $sql .= " FROM ".MAIN_DB_PREFIX."commandedet as cd,"; + $sql .= " ".MAIN_DB_PREFIX."expeditiondet as ed"; + $sql .= " WHERE ed.fk_expedition = ".$this->id; + $sql .= " AND cd.rowid = ed.fk_origin_line"; + + dol_syslog(get_class($this)."::delete select details", LOG_DEBUG); + $resql = $this->db->query($sql); + if ($resql) + { + $cpt = $this->db->num_rows($resql); + for ($i = 0; $i < $cpt; $i++) + { + dol_syslog(get_class($this)."::delete movement index ".$i); + $obj = $this->db->fetch_object($resql); + + $mouvS = new MouvementStock($this->db); + // we do not log origin because it will be deleted + $mouvS->origin = null; + // get lot/serial + $lotArray = null; + if ($conf->productbatch->enabled) + { + $lotArray = ExpeditionLineBatch::fetchAll($this->db, $obj->expeditiondet_id); + if (!is_array($lotArray)) + { + $error++; $this->errors[] = "Error ".$this->db->lasterror(); + } + } + if (empty($lotArray)) { + // no lot/serial + // We increment stock of product (and sub-products) + // We use warehouse selected for each line + $result = $mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $obj->qty, 0, $langs->trans("ShipmentCanceledInDolibarr", $this->ref)); // Price is set to 0, because we don't want to see WAP changed + if ($result < 0) + { + $error++; $this->errors = $this->errors + $mouvS->errors; + break; + } + } + else + { + // We increment stock of batches + // We use warehouse selected for each line + foreach ($lotArray as $lot) + { + $result = $mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $lot->qty, 0, $langs->trans("ShipmentCanceledInDolibarr", $this->ref), $lot->eatby, $lot->sellby, $lot->batch); // Price is set to 0, because we don't want to see WAP changed + if ($result < 0) + { + $error++; $this->errors = $this->errors + $mouvS->errors; + break; + } + } + if ($error) break; // break for loop incase of error + } + } + } + else + { + $error++; $this->errors[] = "Error ".$this->db->lasterror(); + } + } + + // delete batch expedition line + if (!$error && $conf->productbatch->enabled) + { + if (ExpeditionLineBatch::deletefromexp($this->db, $this->id) < 0) + { + $error++; $this->errors[] = "Error ".$this->db->lasterror(); + } + } + + + if (!$error) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet"; + $sql .= " WHERE fk_expedition = ".$this->id; + + if ($this->db->query($sql)) + { + // Delete linked object + $res = $this->deleteObjectLinked(); + if ($res < 0) $error++; + + // No delete expedition + if (!$error) + { + $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."expedition"; + $sql .= " WHERE rowid = ".$this->id; + + if ($this->db->query($sql)) + { + if (!empty($this->origin) && $this->origin_id > 0) + { + $this->fetch_origin(); + $origin = $this->origin; + if ($this->$origin->statut == Commande::STATUS_SHIPMENTONPROCESS) // If order source of shipment is "shipment in progress" + { + // Check if there is no more shipment. If not, we can move back status of order to "validated" instead of "shipment in progress" + $this->$origin->loadExpeditions(); + //var_dump($this->$origin->expeditions);exit; + if (count($this->$origin->expeditions) <= 0) + { + $this->$origin->setStatut(Commande::STATUS_VALIDATED); + } + } + } + + if (!$error) + { + $this->db->commit(); + + // We delete PDFs + $ref = dol_sanitizeFileName($this->ref); + if (!empty($conf->expedition->dir_output)) + { + $dir = $conf->expedition->dir_output.'/sending/'.$ref; + $file = $dir.'/'.$ref.'.pdf'; + if (file_exists($file)) + { + if (!dol_delete_file($file)) + { + return 0; + } + } + if (file_exists($dir)) + { + if (!dol_delete_dir_recursive($dir)) + { + $this->error = $langs->trans("ErrorCanNotDeleteDir", $dir); + return 0; + } + } + } + + return 1; + } + else + { + $this->db->rollback(); + return -1; + } + } + else + { + $this->error = $this->db->lasterror()." - sql=$sql"; + $this->db->rollback(); + return -3; + } + } + else + { + $this->error = $this->db->lasterror()." - sql=$sql"; + $this->db->rollback(); + return -2; + }//*/ + } + else + { + $this->error = $this->db->lasterror()." - sql=$sql"; + $this->db->rollback(); + return -1; + } + } + else + { + $this->db->rollback(); + return -1; + } + + } + /** * Delete shipment. * Warning, do not delete a shipment if a delivery is linked to (with table llx_element_element) From ff694c22d1900706d3bebe0a2a69dd29529cc57c Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Thu, 23 Apr 2020 05:54:13 +0000 Subject: [PATCH 119/780] Fixing style errors. --- htdocs/expedition/card.php | 12 +++++------- htdocs/expedition/class/expedition.class.php | 9 ++++----- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index cb3c908138b..b8a17e35c5e 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -461,10 +461,9 @@ if (empty($reshook)) } } } - + elseif ($action == 'confirm_cancel' && $confirm == 'yes' && $user->rights->expedition->supprimer) { - $also_update_stock = (GETPOST('alsoUpdateStock', 'alpha') ? 1 : 0); $result = $object->cancel(0, $also_update_stock); if ($result > 0) @@ -475,9 +474,8 @@ if (empty($reshook)) { setEventMessages($object->error, $object->errors, 'errors'); } - } - + elseif ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->expedition->supprimer) { $also_update_stock = (GETPOST('alsoUpdateStock', 'alpha') ? 1 : 0); @@ -2592,15 +2590,15 @@ elseif ($id || $ref) } } - // Cancel + // Cancel if ($object->statut == Expedition::STATUS_VALIDATED) - { + { if ($user->rights->expedition->supprimer) { print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=cancel">'.$langs->trans("Cancel").'</a>'; } } - + // Delete if ($user->rights->expedition->supprimer) { diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 92d2d146d58..1db01a61820 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -180,7 +180,7 @@ class Expedition extends CommonObject * Canceled status */ const STATUS_CANCELED = -1; - + /** * Constructor @@ -1170,7 +1170,7 @@ class Expedition extends CommonObject } } - + /** * Cancel shipment. * @@ -1291,7 +1291,7 @@ class Expedition extends CommonObject } } - + if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet"; @@ -1388,9 +1388,8 @@ class Expedition extends CommonObject $this->db->rollback(); return -1; } - } - + /** * Delete shipment. * Warning, do not delete a shipment if a delivery is linked to (with table llx_element_element) From f793844862a30715ae7b87c706d03b6730421dd4 Mon Sep 17 00:00:00 2001 From: "Sekan, Tobias" <tobias.sekan@startmail.com> Date: Thu, 23 Apr 2020 11:04:14 +0200 Subject: [PATCH 120/780] Fix missing errror on facture clone --- htdocs/fourn/class/fournisseur.facture.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index bc353e7ef0d..61ac0899bff 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -2674,6 +2674,7 @@ class FactureFournisseur extends CommonInvoice if ($result < 0) { $this->error = $object->error; + $this->errors = $object->errors; $error++; } @@ -3154,7 +3155,7 @@ class SupplierInvoiceLine extends CommonObjectLine dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); } } - + if (!$error) { // Supprime ligne $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det '; From 69f4a3e7b08af95fd1a8960820a87f2505b3c1ca Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 11:41:03 +0200 Subject: [PATCH 121/780] Doc --- htdocs/install/mysql/tables/llx_commande.sql | 2 +- htdocs/install/mysql/tables/llx_facture.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_commande.sql b/htdocs/install/mysql/tables/llx_commande.sql index c6b9049a64f..676e768c73b 100644 --- a/htdocs/install/mysql/tables/llx_commande.sql +++ b/htdocs/install/mysql/tables/llx_commande.sql @@ -58,7 +58,7 @@ create table llx_commande last_main_doc varchar(255), -- relative filepath+filename of last main generated document module_source varchar(32), -- name of module when order generated by a dedicated module (POS, ...) - pos_source varchar(32), -- name of POS station when order is generated by a POS module + pos_source varchar(32), -- numero of POS terminal when order is generated by a POS module, IDsession@IDwebsite when order is generated for a website basket. facture tinyint default 0, fk_account integer, -- bank account fk_currency varchar(3), -- currency code diff --git a/htdocs/install/mysql/tables/llx_facture.sql b/htdocs/install/mysql/tables/llx_facture.sql index 5a2d5464cfc..429095e1111 100644 --- a/htdocs/install/mysql/tables/llx_facture.sql +++ b/htdocs/install/mysql/tables/llx_facture.sql @@ -65,7 +65,7 @@ create table llx_facture fk_user_closing integer, -- user closing module_source varchar(32), -- name of module when invoice generated by a dedicated module (POS, ...) - pos_source varchar(32), -- name of POS station when invoice is generated by a POS module + pos_source varchar(32), -- numero of POS terminal when order is generated by a POS module, IDsession@IDwebsite when order is generated for a website basket. fk_fac_rec_source integer, -- facture rec source fk_facture_source integer, -- facture origin if credit notes or replacement invoice fk_projet integer DEFAULT NULL, -- project invoice is linked to From 0999f5e6f26bc39e67b80b2ac9a0ce0cdcfa8d89 Mon Sep 17 00:00:00 2001 From: Juanjo Menent <jmenent@2byte.es> Date: Thu, 23 Apr 2020 12:12:50 +0200 Subject: [PATCH 122/780] FIX: Error update SQL into stock reception --- htdocs/product/stock/class/mouvementstock.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index e0266172463..2799cbaaf50 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -515,10 +515,11 @@ class MouvementStock extends CommonObject // Update PMP and denormalized value of stock qty at product level if (! $error) { + $newpmp = price2num($newpmp,'MU'); // $sql = "UPDATE ".MAIN_DB_PREFIX."product SET pmp = ".$newpmp.", stock = ".$this->db->ifsql("stock IS NULL", 0, "stock") . " + ".$qty; // $sql.= " WHERE rowid = ".$fk_product; // Update pmp + denormalized fields because we change content of produt_stock. Warning: Do not use "SET p.stock", does not works with pgsql - $sql = "UPDATE ".MAIN_DB_PREFIX."product as p SET pmp = ".$newpmp.", "; + $sql = "UPDATE ".MAIN_DB_PREFIX."product as p SET pmp = '".$newpmp."', "; $sql.= " stock=(SELECT SUM(ps.reel) FROM ".MAIN_DB_PREFIX."product_stock as ps WHERE ps.fk_product = p.rowid)"; $sql.= " WHERE rowid = ".$fk_product; From da02863242eddf76fda5cdddc17dd916663a40b3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 12:19:51 +0200 Subject: [PATCH 123/780] Code comment --- htdocs/install/mysql/tables/llx_societe_account.sql | 4 ++-- htdocs/societe/class/societeaccount.class.php | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_societe_account.sql b/htdocs/install/mysql/tables/llx_societe_account.sql index feffc7c9bd6..6a78a9a7839 100644 --- a/htdocs/install/mysql/tables/llx_societe_account.sql +++ b/htdocs/install/mysql/tables/llx_societe_account.sql @@ -20,15 +20,15 @@ CREATE TABLE llx_societe_account( -- BEGIN MODULEBUILDER FIELDS rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL, entity integer DEFAULT 1, - key_account varchar(128), -- the id of third party in external web site (for site_account if site_account defined) login varchar(128) NOT NULL, pass_encoding varchar(24), pass_crypted varchar(128), pass_temp varchar(128), -- temporary password when asked for forget password fk_soc integer, + fk_website integer, -- id of local web site site varchar(128), -- name of external web site site_account varchar(128), -- a key to identify the account on external web site - fk_website integer, -- id of local web site + key_account varchar(128), -- the id of third party in external web site (for site_account if site_account defined) note_private text, date_last_login datetime, date_previous_login datetime, diff --git a/htdocs/societe/class/societeaccount.class.php b/htdocs/societe/class/societeaccount.class.php index f90cb17c230..4b3fcc15ec1 100644 --- a/htdocs/societe/class/societeaccount.class.php +++ b/htdocs/societe/class/societeaccount.class.php @@ -79,15 +79,15 @@ class SocieteAccount extends CommonObject public $fields = array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'visible'=>-2, 'enabled'=>1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>'Id',), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'visible'=>0, 'enabled'=>1, 'position'=>5, 'default'=>1), - 'key_account' => array('type'=>'varchar(128)', 'label'=>'KeyAccount', 'visible'=>1, 'enabled'=>1, 'position'=>10, 'notnull'=>1, 'index'=>1, 'searchall'=>1, 'comment'=>'Key account',), 'login' => array('type'=>'varchar(64)', 'label'=>'Login', 'visible'=>1, 'enabled'=>1, 'position'=>10), 'pass_encoding' => array('type'=>'varchar(24)', 'label'=>'PassEncoding', 'visible'=>0, 'enabled'=>1, 'position'=>30), 'pass_crypted' => array('type'=>'varchar(128)', 'label'=>'Password', 'visible'=>1, 'enabled'=>1, 'position'=>31, 'notnull'=>1), 'pass_temp' => array('type'=>'varchar(128)', 'label'=>'Temp', 'visible'=>0, 'enabled'=>0, 'position'=>32, 'notnull'=>-1,), 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php', 'label'=>'ThirdParty', 'visible'=>1, 'enabled'=>1, 'position'=>40, 'notnull'=>-1, 'index'=>1), - 'site' => array('type'=>'varchar(128)', 'label'=>'Site', 'visible'=>-1, 'enabled'=>1, 'position'=>41), - 'site_account' => array('type'=>'varchar(128)', 'label'=>'SiteAccount', 'visible'=>-1, 'enabled'=>1, 'position'=>42, 'help'=>'A key to identify the account on external web site'), - 'fk_website' => array('type'=>'integer:Website:website/class/website.class.php', 'label'=>'WebSite', 'visible'=>1, 'enabled'=>1, 'position'=>43, 'notnull'=>-1, 'index'=>1), + 'fk_website' => array('type'=>'integer:Website:website/class/website.class.php', 'label'=>'WebSite', 'visible'=>1, 'enabled'=>1, 'position'=>42, 'notnull'=>-1, 'index'=>1), + 'site' => array('type'=>'varchar(128)', 'label'=>'ExternalSite', 'visible'=>0, 'enabled'=>1, 'position'=>43, 'help'=>'Name of the website or service if this is account on an external website or service'), + 'site_account' => array('type'=>'varchar(128)', 'label'=>'ExternalSiteAccount', 'visible'=>0, 'enabled'=>1, 'position'=>44, 'help'=>'A key to identify the account on external web site if this is an account on an external website'), + 'key_account' => array('type'=>'varchar(128)', 'label'=>'KeyAccount', 'visible'=>0, 'enabled'=>1, 'position'=>48, 'notnull'=>0, 'index'=>1, 'searchall'=>1, 'comment'=>'The id of third party in the external web site (for site_account if site_account defined)',), 'date_last_login' => array('type'=>'datetime', 'label'=>'LastConnexion', 'visible'=>2, 'enabled'=>1, 'position'=>50, 'notnull'=>0,), 'date_previous_login' => array('type'=>'datetime', 'label'=>'PreviousConnexion', 'visible'=>2, 'enabled'=>1, 'position'=>51, 'notnull'=>0,), //'note_public' => array('type'=>'text', 'label'=>'NotePublic', 'visible'=>-1, 'enabled'=>1, 'position'=>45, 'notnull'=>-1,), From 18d3d68caea89d18e4467a50417437b4ce0c23e4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 12:22:24 +0200 Subject: [PATCH 124/780] Fix def --- htdocs/societe/class/societeaccount.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/societe/class/societeaccount.class.php b/htdocs/societe/class/societeaccount.class.php index 4b3fcc15ec1..41fc8633be1 100644 --- a/htdocs/societe/class/societeaccount.class.php +++ b/htdocs/societe/class/societeaccount.class.php @@ -79,7 +79,7 @@ class SocieteAccount extends CommonObject public $fields = array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'visible'=>-2, 'enabled'=>1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>'Id',), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'visible'=>0, 'enabled'=>1, 'position'=>5, 'default'=>1), - 'login' => array('type'=>'varchar(64)', 'label'=>'Login', 'visible'=>1, 'enabled'=>1, 'position'=>10), + 'login' => array('type'=>'varchar(64)', 'label'=>'Login', 'visible'=>1, 'enabled'=>1, 'notnull'=>1, 'position'=>10), 'pass_encoding' => array('type'=>'varchar(24)', 'label'=>'PassEncoding', 'visible'=>0, 'enabled'=>1, 'position'=>30), 'pass_crypted' => array('type'=>'varchar(128)', 'label'=>'Password', 'visible'=>1, 'enabled'=>1, 'position'=>31, 'notnull'=>1), 'pass_temp' => array('type'=>'varchar(128)', 'label'=>'Temp', 'visible'=>0, 'enabled'=>0, 'position'=>32, 'notnull'=>-1,), From d11396be3e5becdb80fe72c54e30a6fa905ff8c9 Mon Sep 17 00:00:00 2001 From: Drosis Nikos <ndrosis@technicks.gr> Date: Thu, 23 Apr 2020 13:22:30 +0300 Subject: [PATCH 125/780] Fix check VAT ID HTTP to HTTPS No response to HTTP --- htdocs/societe/checkvat/checkVatPopup.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/checkvat/checkVatPopup.php b/htdocs/societe/checkvat/checkVatPopup.php index 8d004fa4c79..91f24bbb915 100644 --- a/htdocs/societe/checkvat/checkVatPopup.php +++ b/htdocs/societe/checkvat/checkVatPopup.php @@ -28,9 +28,9 @@ require_once NUSOAP_PATH.'/nusoap.php'; $langs->load("companies"); //http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl -$WS_DOL_URL = 'http://ec.europa.eu/taxation_customs/vies/services/checkVatService'; +$WS_DOL_URL = 'https://ec.europa.eu/taxation_customs/vies/services/checkVatService'; //$WS_DOL_URL_WSDL=$WS_DOL_URL.'?wsdl'; -$WS_DOL_URL_WSDL = 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'; +$WS_DOL_URL_WSDL = 'https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'; $WS_METHOD = 'checkVat'; From 8f8ae5a4dbed13228655c499b1d62b309d00abb8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 12:33:22 +0200 Subject: [PATCH 126/780] Fix typo --- htdocs/langs/en_US/website.lang | 2 +- htdocs/societe/class/societeaccount.class.php | 7 +++---- htdocs/societe/website.php | 2 ++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index c3e9870266f..d9b0454c848 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -77,7 +77,7 @@ BlogPost=Blog post WebsiteAccount=Website account WebsiteAccounts=Website accounts AddWebsiteAccount=Create web site account -BackToListOfThirdParty=Back to list for Third Party +BackToListOfThirdParty=Back to list of third-parties DisableSiteFirst=Disable website first MyContainerTitle=My web site title AnotherContainer=This is how to include content of another page/container (you may have an error here if you enable dynamic code because the embedded subcontainer may not exists) diff --git a/htdocs/societe/class/societeaccount.class.php b/htdocs/societe/class/societeaccount.class.php index 41fc8633be1..98bdeffa637 100644 --- a/htdocs/societe/class/societeaccount.class.php +++ b/htdocs/societe/class/societeaccount.class.php @@ -79,7 +79,7 @@ class SocieteAccount extends CommonObject public $fields = array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'visible'=>-2, 'enabled'=>1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>'Id',), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'visible'=>0, 'enabled'=>1, 'position'=>5, 'default'=>1), - 'login' => array('type'=>'varchar(64)', 'label'=>'Login', 'visible'=>1, 'enabled'=>1, 'notnull'=>1, 'position'=>10), + 'login' => array('type'=>'varchar(64)', 'label'=>'Login', 'visible'=>1, 'enabled'=>1, 'notnull'=>1, 'position'=>10, 'showoncombobox'=>1), 'pass_encoding' => array('type'=>'varchar(24)', 'label'=>'PassEncoding', 'visible'=>0, 'enabled'=>1, 'position'=>30), 'pass_crypted' => array('type'=>'varchar(128)', 'label'=>'Password', 'visible'=>1, 'enabled'=>1, 'position'=>31, 'notnull'=>1), 'pass_temp' => array('type'=>'varchar(128)', 'label'=>'Temp', 'visible'=>0, 'enabled'=>0, 'position'=>32, 'notnull'=>-1,), @@ -405,11 +405,10 @@ class SocieteAccount extends CommonObject if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips $result = ''; - $companylink = ''; $this->ref = $this->login; - $label = '<u>'.$langs->trans("SocieteAccount").'</u>'; + $label = '<u>'.$langs->trans("WebsiteAccount").'</u>'; $label .= '<br>'; $label .= '<b>'.$langs->trans('Login').':</b> '.$this->ref; //$label.= '<b>' . $langs->trans('WebSite') . ':</b> ' . $this->ref; @@ -429,7 +428,7 @@ class SocieteAccount extends CommonObject { if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label = $langs->trans("ShowsocieteAccount"); + $label = $langs->trans("WebsiteAccount"); $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; diff --git a/htdocs/societe/website.php b/htdocs/societe/website.php index 7b3bf774a68..dc53f47ff26 100644 --- a/htdocs/societe/website.php +++ b/htdocs/societe/website.php @@ -449,6 +449,8 @@ while ($i < min($num, $limit)) // Store properties in $object $objectwebsiteaccount->id = $obj->rowid; + $objectwebsiteaccount->login = $obj->login; + $objectwebsiteaccount->ref = $obj->login; foreach ($objectwebsiteaccount->fields as $key => $val) { if (property_exists($obj, $key)) $object->$key = $obj->$key; From 46716f2259ee2a337ef200c26c333dfd8577090a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 12:34:37 +0200 Subject: [PATCH 127/780] Typo --- htdocs/langs/en_US/website.lang | 2 +- htdocs/website/websiteaccount_card.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index d9b0454c848..f4d88b0d606 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -77,7 +77,7 @@ BlogPost=Blog post WebsiteAccount=Website account WebsiteAccounts=Website accounts AddWebsiteAccount=Create web site account -BackToListOfThirdParty=Back to list of third-parties +BackToListForThirdParty=Back to list for the third-party DisableSiteFirst=Disable website first MyContainerTitle=My web site title AnotherContainer=This is how to include content of another page/container (you may have an error here if you enable dynamic code because the embedded subcontainer may not exists) diff --git a/htdocs/website/websiteaccount_card.php b/htdocs/website/websiteaccount_card.php index 046a5005e51..be0c4c3cc41 100644 --- a/htdocs/website/websiteaccount_card.php +++ b/htdocs/website/websiteaccount_card.php @@ -223,7 +223,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // Object card // ------------------------------------------------------------ $linkback = ''; - if ($socid) $linkback = '<a href="'.DOL_URL_ROOT.'/societe/website.php?socid='.$socid.'&restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToListOfThirdParty").'</a>'; + if ($socid) $linkback = '<a href="'.DOL_URL_ROOT.'/societe/website.php?socid='.$socid.'&restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToListForThirdParty").'</a>'; if ($fk_website) $linkback = '<a href="'.DOL_URL_ROOT.'/website/website_card.php?fk_website='.$fk_website.'&restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>'; $morehtmlref = '<div class="refidno">'; From 93278b2dca15a5c3cf299d9648ef7ccbcfb51772 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 12:42:03 +0200 Subject: [PATCH 128/780] FIX #13713 --- htdocs/fourn/commande/info.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/info.php b/htdocs/fourn/commande/info.php index efabf409cdc..6764c00f003 100644 --- a/htdocs/fourn/commande/info.php +++ b/htdocs/fourn/commande/info.php @@ -40,6 +40,17 @@ $id=GETPOST('id', 'int'); $ref=GETPOST('ref', 'alpha'); $action = GETPOST('action', 'alpha'); +$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 = 'a.datep,a.id'; +if (!$sortorder) $sortorder = 'DESC,DESC'; + if (GETPOST('actioncode', 'array')) { $actioncode=GETPOST('actioncode', 'array', 3); @@ -217,7 +228,7 @@ if (!empty($object->id)) // List of all actions $filters = array(); $filters['search_agenda_label'] = $search_agenda_label; - show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters); + show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder); } // End of page From e1129babbcbe1eab280d22d0fc5c5cb0a973e2e6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 12:44:30 +0200 Subject: [PATCH 129/780] Code comment --- htdocs/fourn/commande/info.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/info.php b/htdocs/fourn/commande/info.php index 6764c00f003..3da0211d3f1 100644 --- a/htdocs/fourn/commande/info.php +++ b/htdocs/fourn/commande/info.php @@ -223,7 +223,7 @@ if (!empty($object->id)) //show_actions_todo($conf,$langs,$db,$object,null,0,$actioncode); // List of done actions - //show_actions_done($conf,$langs,$db,$object,null,0,$actioncode); + //show_actions_done($conf,$langs,$db,$object,null,0,$actioncode, '', $filters, $sortfield, $sortorder); // List of all actions $filters = array(); From 4475df14b4efa0c8e500f1629102bd882138088e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 12:54:28 +0200 Subject: [PATCH 130/780] Finish removal of duplicate hook/trigger --- .../fournisseur.commande.dispatch.class.php | 21 ++------ htdocs/reception/card.php | 39 +++++++-------- htdocs/reception/class/reception.class.php | 49 ++++++------------- 3 files changed, 37 insertions(+), 72 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php index 6a7d8a3e8ba..d7b8807bb28 100644 --- a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php +++ b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php @@ -210,22 +210,11 @@ class CommandeFournisseurDispatch extends CommonObject } } - // Actions on extra fields (by external module or standard code) - // TODO le hook fait double emploi avec le trigger !! - $hookmanager->initHooks(array('commandefournisseurdispatchdao')); - $parameters = array('id'=>$this->id); - $reshook = $hookmanager->executeHooks('insertExtraFields', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks - if (empty($reshook)) - { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used - { - $result = $this->insertExtraFields(); - - if ($result < 0) - { - $error++; - } - } + // Create extrafields + if (! $error) + { + $result=$this->insertExtraFields(); + if ($result < 0) $error++; } // Commit or rollback diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index 1269a99d1ea..9c6e8df76f1 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -186,30 +186,25 @@ if (empty($reshook)) if ($action == 'update_extras') { - // Fill array 'array_options' with data from update form - $ret = $extrafields->setOptionalsFromPost(null, $object, GETPOST('attribute')); - if ($ret < 0) $error++; + $object->oldcopy = dol_clone($object); - if (!$error) - { - // Actions on extra fields (by external module or standard code) - // TODO le hook fait double emploi avec le trigger !! - $hookmanager->initHooks(array('receptiondao')); - $parameters = array('id' => $object->id); - $reshook = $hookmanager->executeHooks('insertExtraFields', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks - if (empty($reshook)) { - $result = $object->insertExtraFields(); - if ($result < 0) - { - setEventMessages($object->error, $object->errors, 'errors'); - $error++; - } - } elseif ($reshook < 0) - $error++; - } + // Fill array 'array_options' with data from update form + $ret = $extrafields->setOptionalsFromPost(null, $object, GETPOST('attribute', 'none')); + if ($ret < 0) $error++; - if ($error) - $action = 'edit_extras'; + if (!$error) + { + // Actions on extra fields + $result = $object->insertExtraFields('RECEPTION_MODIFY'); + if ($result < 0) + { + setEventMessages($object->error, $object->errors, 'errors'); + $error++; + } + } + + if ($error) + $action = 'edit_extras'; } // Create reception diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 1679f186a72..b09a5918def 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -305,24 +305,12 @@ class Reception extends CommonObject } } - // Actions on extra fields (by external module or standard code) - // TODO le hook fait double emploi avec le trigger !! - $action = 'add'; - $hookmanager->initHooks(array('receptiondao')); - $parameters = array('socid'=>$this->id); - $reshook = $hookmanager->executeHooks('insertExtraFields', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks - if (empty($reshook)) + // Create extrafields + if (! $error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used - { - $result = $this->insertExtraFields(); - if ($result < 0) - { - $error++; - } - } + $result=$this->insertExtraFields(); + if ($result < 0) $error++; } - elseif ($reshook < 0) $error++; if (!$error && !$notrigger) { @@ -330,29 +318,22 @@ class Reception extends CommonObject $result = $this->call_trigger('RECEPTION_CREATE', $user); if ($result < 0) { $error++; } // End call triggers + } - if (!$error) - { - $this->db->commit(); - return $this->id; - } - else - { - 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; - } + if (!$error) + { + $this->db->commit(); + return $this->id; } else { - $error++; - $this->error = $this->db->lasterror()." - sql=$sql"; + foreach ($this->errors as $errmsg) + { + dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR); + $this->error .= ($this->error ? ', '.$errmsg : $errmsg); + } $this->db->rollback(); - return -3; + return -1 * $error; } } else From 72c6ac1c7263dcc73aed38f8da1a71faf386c5ee Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 13:21:39 +0200 Subject: [PATCH 131/780] Complete #13708, normalization of code --- htdocs/adherents/class/adherent.class.php | 15 ++++----- .../adherents/class/adherent_type.class.php | 2 +- htdocs/asset/class/asset_type.class.php | 2 +- htdocs/categories/class/categorie.class.php | 6 ++-- htdocs/comm/action/class/actioncomm.class.php | 15 ++++----- htdocs/comm/propal/card.php | 2 +- htdocs/comm/propal/class/propal.class.php | 30 +++++++----------- htdocs/commande/card.php | 2 +- htdocs/commande/class/commande.class.php | 19 +++++------- htdocs/commande/orderstoinvoice.php | 2 +- htdocs/compta/bank/class/account.class.php | 11 +++---- htdocs/compta/facture/card.php | 4 +-- .../facture/class/facture-rec.class.php | 6 ++-- htdocs/compta/facture/class/facture.class.php | 6 ++-- htdocs/contact/class/contact.class.php | 4 +-- htdocs/contrat/card.php | 2 +- htdocs/contrat/class/contrat.class.php | 31 +++++++++---------- htdocs/core/actions_massactions.inc.php | 2 +- htdocs/core/class/commonobject.class.php | 21 ++++++++----- htdocs/don/class/don.class.php | 4 +-- htdocs/expedition/class/expedition.class.php | 11 ++++--- htdocs/fichinter/class/fichinter.class.php | 10 +++--- .../class/fournisseur.commande.class.php | 6 ++-- .../fournisseur.commande.dispatch.class.php | 2 +- .../fourn/class/fournisseur.facture.class.php | 12 +++---- htdocs/fourn/commande/card.php | 4 +-- htdocs/fourn/facture/card.php | 4 +-- htdocs/product/class/product.class.php | 4 +-- htdocs/product/stock/class/entrepot.class.php | 6 ++-- .../product/stock/class/productlot.class.php | 4 +-- htdocs/projet/class/project.class.php | 4 +-- htdocs/projet/class/task.class.php | 4 +-- htdocs/reception/class/reception.class.php | 2 +- htdocs/resource/class/dolresource.class.php | 4 +-- htdocs/salaries/class/paymentsalary.class.php | 4 +-- htdocs/societe/class/societe.class.php | 4 +-- htdocs/supplier_proposal/card.php | 2 +- .../class/supplier_proposal.class.php | 25 +++++++-------- htdocs/ticket/class/ticket.class.php | 16 ++++------ htdocs/user/class/user.class.php | 4 +-- 40 files changed, 149 insertions(+), 169 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 4225dad5f31..dd2593329e0 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -657,7 +657,7 @@ class Adherent extends CommonObject $action = 'update'; // Actions on extra fields - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) { @@ -927,14 +927,11 @@ class Adherent extends CommonObject // Removed extrafields if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used - { - $result = $this->deleteExtraFields(); - if ($result < 0) { - $error++; - $errorflag = -4; - dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR); - } + $result = $this->deleteExtraFields(); + if ($result < 0) { + $error++; + $errorflag = -4; + dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR); } } diff --git a/htdocs/adherents/class/adherent_type.class.php b/htdocs/adherents/class/adherent_type.class.php index 442d8cf091f..46733575c36 100644 --- a/htdocs/adherents/class/adherent_type.class.php +++ b/htdocs/adherents/class/adherent_type.class.php @@ -409,7 +409,7 @@ class AdherentType extends CommonObject $action = 'update'; // Actions on extra fields - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/asset/class/asset_type.class.php b/htdocs/asset/class/asset_type.class.php index edb6fdf90c9..56be39a8ad0 100644 --- a/htdocs/asset/class/asset_type.class.php +++ b/htdocs/asset/class/asset_type.class.php @@ -202,7 +202,7 @@ class AssetType extends CommonObject $action = 'update'; // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (! $error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 9c0985078e7..dc451855c0a 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -461,7 +461,7 @@ class Categorie extends CommonObject $action = 'create'; // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -553,7 +553,7 @@ class Categorie extends CommonObject $action = 'update'; // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -646,7 +646,7 @@ class Categorie extends CommonObject } // Removed extrafields - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->deleteExtraFields(); if ($result < 0) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 8c1e2051a81..0cd1eeb5051 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -567,14 +567,11 @@ class ActionComm extends CommonObject if (!$error) { // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used - { - $result = $this->insertExtraFields(); - if ($result < 0) - { - $error++; - } - } + $result = $this->insertExtraFields(); + if ($result < 0) + { + $error++; + } } if (!$error && !$notrigger) @@ -1048,7 +1045,7 @@ class ActionComm extends CommonObject $action = 'update'; // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 92338ebf68e..85927472c56 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -511,7 +511,7 @@ if (empty($reshook)) } // Extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) { + if (method_exists($lines[$i], 'fetch_optionals')) { $lines[$i]->fetch_optionals(); $array_options = $lines[$i]->array_options; } diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 6a2eac53f95..465bb52033c 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1253,13 +1253,10 @@ class Propal extends CommonObject // Actions on extra fields if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + $result = $this->insertExtraFields(); + if ($result < 0) { - $result = $this->insertExtraFields(); - if ($result < 0) - { - $error++; - } + $error++; } } @@ -1683,7 +1680,7 @@ class Propal extends CommonObject $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options) > 0) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -3053,15 +3050,12 @@ class Propal extends CommonObject // Removed extrafields if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + $result = $this->deleteExtraFields(); + if ($result < 0) { - $result = $this->deleteExtraFields(); - if ($result < 0) - { - $error++; - $errorflag = -4; - dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR); - } + $error++; + $errorflag = -4; + dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR); } } @@ -4152,7 +4146,7 @@ class PropaleLigne extends CommonObjectLine { $this->rowid = $this->db->last_insert_id(MAIN_DB_PREFIX.'propaldet'); - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $this->id = $this->rowid; $result = $this->insertExtraFields(); @@ -4204,7 +4198,7 @@ class PropaleLigne extends CommonObjectLine if ($this->db->query($sql)) { // Remove extrafields - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (!$error) { $this->id = $this->rowid; $result = $this->deleteExtraFields(); @@ -4334,7 +4328,7 @@ class PropaleLigne extends CommonObjectLine $resql = $this->db->query($sql); if ($resql) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $this->id = $this->rowid; $result = $this->insertExtraFields(); diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index b43a702c2f2..4aad42ca44f 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -384,7 +384,7 @@ if (empty($reshook)) } // Extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) // For avoid conflicts if trigger used + if (method_exists($lines[$i], 'fetch_optionals')) // For avoid conflicts if trigger used { $lines[$i]->fetch_optionals(); $array_options = $lines[$i]->array_options; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index c39a5a05a13..9a13ae1abdf 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3342,7 +3342,7 @@ class Commande extends CommonOrder $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options) > 0) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -3437,14 +3437,11 @@ class Commande extends CommonOrder if (!$error) { // Remove extrafields - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + $result = $this->deleteExtraFields(); + if ($result < 0) { - $result = $this->deleteExtraFields(); - if ($result < 0) - { - $error++; - dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); - } + $error++; + dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); } } @@ -4255,7 +4252,7 @@ class OrderLine extends CommonOrderLine if ($resql) { // Remove extrafields - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (!$error) { $this->id = $this->rowid; $result = $this->deleteExtraFields(); @@ -4401,7 +4398,7 @@ class OrderLine extends CommonOrderLine $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'commandedet'); $this->rowid = $this->id; - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -4534,7 +4531,7 @@ class OrderLine extends CommonOrderLine $resql = $this->db->query($sql); if ($resql) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $this->id = $this->rowid; $result = $this->insertExtraFields(); diff --git a/htdocs/commande/orderstoinvoice.php b/htdocs/commande/orderstoinvoice.php index bad5034eac5..f230f7935a5 100644 --- a/htdocs/commande/orderstoinvoice.php +++ b/htdocs/commande/orderstoinvoice.php @@ -285,7 +285,7 @@ if (($action == 'create' || $action == 'add') && !$error) } // Extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) { + if (method_exists($lines[$i], 'fetch_optionals')) { $lines[$i]->fetch_optionals(); $array_options = $lines[$i]->array_options; } diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index ab99173b614..58115537b1f 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -823,13 +823,10 @@ class Account extends CommonObject if ($result) { // Actions on extra fields (by external module or standard code) - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { - if (!$error) - { - $result = $this->insertExtraFields(); - if ($result < 0) $error++; - } + $result = $this->insertExtraFields(); + if ($result < 0) $error++; } if (!$error && !$notrigger) @@ -1107,7 +1104,7 @@ class Account extends CommonObject if ($result) { // Remove extrafields - if ((empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (!$error) { $result = $this->deleteExtraFields(); if ($result < 0) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 4f111c26f39..e5cfb1574dc 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -1146,7 +1146,7 @@ if (empty($reshook)) foreach ($facture_source->lines as $line) { // Extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($line, 'fetch_optionals')) { + if (method_exists($line, 'fetch_optionals')) { // load extrafields $line->fetch_optionals(); } @@ -1644,7 +1644,7 @@ if (empty($reshook)) } // Extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) { + if (method_exists($lines[$i], 'fetch_optionals')) { $lines[$i]->fetch_optionals(); $array_options = $lines[$i]->array_options; } diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 205ca88290e..bbb926f7772 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -342,7 +342,7 @@ class FactureRec extends CommonInvoice if ($objectline->fetch($result_insert)) { // Extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($facsrc->lines[$i], 'fetch_optionals')) { + if (method_exists($facsrc->lines[$i], 'fetch_optionals')) { $facsrc->lines[$i]->fetch_optionals($facsrc->lines[$i]->rowid); $objectline->array_options = $facsrc->lines[$i]->array_options; } @@ -438,7 +438,7 @@ class FactureRec extends CommonInvoice $resql = $this->db->query($sql); if ($resql) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -2112,7 +2112,7 @@ class FactureLigneRec extends CommonInvoiceLine $resql = $this->db->query($sql); if ($resql) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index b6f9c4d7969..b6f41149331 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1881,7 +1881,7 @@ class Facture extends CommonInvoice $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options) > 0) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -5237,7 +5237,7 @@ class FactureLigne extends CommonInvoiceLine $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'facturedet'); $this->rowid = $this->id; // For backward compatibility - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -5423,7 +5423,7 @@ class FactureLigne extends CommonInvoiceLine $resql = $this->db->query($sql); if ($resql) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $this->id = $this->rowid; $result = $this->insertExtraFields(); diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 7f52195297b..a3cdb1747a0 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -489,7 +489,7 @@ class Contact extends CommonObject $action = 'update'; // Actions on extra fields - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -1168,7 +1168,7 @@ class Contact extends CommonObject } // Removed extrafields - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) { + if (!$error) { // For avoid conflicts if trigger used $result = $this->deleteExtraFields(); if ($result < 0) $error++; diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 9d240a31a79..322d309b15b 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -316,7 +316,7 @@ if (empty($reshook)) // Extrafields $array_options = array(); // For avoid conflicts if trigger used - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) { + if (method_exists($lines[$i], 'fetch_optionals')) { $lines[$i]->fetch_optionals(); $array_options = $lines[$i]->array_options; } diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 310aed1cd52..5bf9f1f11c1 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -1035,7 +1035,7 @@ class Contrat extends CommonObject } } - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -1383,7 +1383,7 @@ class Contrat extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options) > 0) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -1588,7 +1588,7 @@ class Contrat extends CommonObject { $contractlineid = $this->db->last_insert_id(MAIN_DB_PREFIX."contratdet"); - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_options) && count($array_options) > 0) // For avoid conflicts if trigger used + if (!$error) { $contractline = new ContratLigne($this->db); $contractline->array_options = $array_options; @@ -1777,7 +1777,7 @@ class Contrat extends CommonObject $result = $this->update_statut($user); if ($result >= 0) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_options) && count($array_options) > 0) // For avoid conflicts if trigger used + if (is_array($array_options) && count($array_options) > 0) // For avoid conflicts if trigger used { $contractline = new ContratLigne($this->db); $contractline->fetch($rowid); @@ -1859,18 +1859,15 @@ class Contrat extends CommonObject $error++; } - if (empty($error)) { + if (!$error) { // Remove extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + $contractline = new ContratLigne($this->db); + $contractline->id = $idline; + $result = $contractline->deleteExtraFields(); + if ($result < 0) { - $contractline = new ContratLigne($this->db); - $contractline->id = $idline; - $result = $contractline->deleteExtraFields(); - if ($result < 0) - { - $error++; - $this->error = "Error ".get_class($this)."::deleteline deleteExtraFields error -4 ".$contractline->error; - } + $error++; + $this->error = "Error ".get_class($this)."::deleteline deleteExtraFields error -4 ".$contractline->error; } } @@ -3092,7 +3089,7 @@ class ContratLigne extends CommonObjectLine $error++; } - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options) > 0) // For avoid conflicts if trigger used + if (!$error) // For avoid conflicts if trigger used { $result = $this->insertExtraFields(); if ($result < 0) @@ -3202,6 +3199,8 @@ class ContratLigne extends CommonObjectLine { global $conf, $user; + $error = 0; + // Insertion dans la base $sql = "INSERT INTO ".MAIN_DB_PREFIX."contratdet"; $sql .= " (fk_contrat, label, description, fk_product, qty, vat_src_code, tva_tx,"; @@ -3240,7 +3239,7 @@ class ContratLigne extends CommonObjectLine $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'contratdet'); // Insert of extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options) > 0) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index e8cfa803573..ebae28e9582 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -751,7 +751,7 @@ if ($massaction == 'confirm_createbills') // Create bills from orders } // Extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) { + if (method_exists($lines[$i], 'fetch_optionals')) { $lines[$i]->fetch_optionals(); $array_options = $lines[$i]->array_options; } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 20dbdf18fd3..3d8871dc07a 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5351,9 +5351,14 @@ abstract class CommonObject * Delete all extra fields values for the current object. * * @return int <0 if KO, >0 if OK + * @see deleteExtraLanguages(), insertExtraField(), updateExtraField(), setValueFrom() */ public function deleteExtraFields() { + global $conf; + + if (!empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return 0; + $this->db->begin(); $table_element = $this->table_element; @@ -5383,18 +5388,18 @@ abstract class CommonObject * @param string $trigger If defined, call also the trigger (for example COMPANY_MODIFY) * @param User $userused Object user * @return int -1=error, O=did nothing, 1=OK - * @see insertExtraLanguages(), updateExtraField(), setValueFrom() + * @see insertExtraLanguages(), updateExtraField(), deleteExtraField(), setValueFrom() */ public function insertExtraFields($trigger = '', $userused = null) { global $conf, $langs, $user; + if (!empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return 0; + if (empty($userused)) $userused = $user; $error = 0; - if (!empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return 0; // For avoid conflicts if trigger used - if (!empty($this->array_options)) { // Check parameters @@ -5792,18 +5797,18 @@ abstract class CommonObject * @param string $trigger If defined, call also the trigger (for example COMPANY_MODIFY) * @param User $userused Object user * @return int -1=error, O=did nothing, 1=OK - * @see updateExtraLanguages(), setValueFrom(), insertExtraFields() + * @see updateExtraLanguages(), insertExtraFields(), deleteExtraFields(), setValueFrom() */ public function updateExtraField($key, $trigger = null, $userused = null) { global $conf, $langs, $user; + if (!empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return 0; + if (empty($userused)) $userused = $user; $error = 0; - if (!empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return 0; // For avoid conflicts if trigger used - if (!empty($this->array_options) && isset($this->array_options["options_".$key])) { // Check parameters @@ -8174,7 +8179,7 @@ abstract class CommonObject } // Update extrafield - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options) > 0) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -8335,7 +8340,7 @@ abstract class CommonObject if (empty($error)) { // Remove extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $tmpobjectline = new $tmpforobjectlineclass($this->db); $tmpobjectline->id = $idline; diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index 8260656e4d0..102d7e58685 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -432,7 +432,7 @@ class Don extends CommonObject // Update extrafield if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -519,7 +519,7 @@ class Don extends CommonObject // Update extrafield if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 624add5c075..e1c24106e09 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -380,7 +380,7 @@ class Expedition extends CommonObject } // Actions on extra fields - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -1046,7 +1046,8 @@ class Expedition extends CommonObject } } $line->entrepot_id = $linebatch->entrepot_id; - $line->origin_line_id = $dbatch['ix_l']; + $line->origin_line_id = $dbatch['ix_l']; // deprecated + $line->fk_origin_line = $dbatch['ix_l']; $line->qty = $dbatch['qty']; $line->detail_batch = $tab; @@ -2617,7 +2618,7 @@ class ExpeditionLigne extends CommonObjectLine { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."expeditiondet"); - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -2691,7 +2692,7 @@ class ExpeditionLigne extends CommonObjectLine if (!$error && $this->db->query($sql)) { // Remove extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->deleteExtraFields(); if ($result < 0) @@ -2895,7 +2896,7 @@ class ExpeditionLigne extends CommonObjectLine if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index f8a62da7ba6..502eb5ccb69 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -305,7 +305,7 @@ class Fichinter extends CommonObject if (!$resql) $error++; } - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -385,7 +385,7 @@ class Fichinter extends CommonObject dol_syslog(get_class($this)."::update", LOG_DEBUG); if ($this->db->query($sql)) { - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -1001,7 +1001,7 @@ class Fichinter extends CommonObject if (!$resql) $error++; } - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (!$error) { // Remove extrafields $res = $this->deleteExtraFields(); @@ -1552,7 +1552,7 @@ class FichinterLigne extends CommonObjectLine $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'fichinterdet'); $this->rowid = $this->id; - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -1623,7 +1623,7 @@ class FichinterLigne extends CommonObjectLine $resql = $this->db->query($sql); if ($resql) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index e5505cbaa9f..c95e403a24c 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -2063,7 +2063,7 @@ class CommandeFournisseur extends CommonOrder } // Remove extrafields - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (!$error) { $result = $this->deleteExtraFields(); if ($result < 0) @@ -3626,7 +3626,7 @@ class CommandeFournisseurLigne extends CommonOrderLine $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element); $this->rowid = $this->id; - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -3716,7 +3716,7 @@ class CommandeFournisseurLigne extends CommonOrderLine $result = $this->db->query($sql); if ($result > 0) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php index d7b8807bb28..041958448fa 100644 --- a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php +++ b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php @@ -362,7 +362,7 @@ class CommandeFournisseurDispatch extends CommonObject if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { if (empty($this->id) && !empty($this->rowid))$this->id = $this->rowid; $result = $this->insertExtraFields(); diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index f2f1bac9257..8bbee47a2cd 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -558,7 +558,7 @@ class FactureFournisseur extends CommonInvoice if ($result > 0) { // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); // This also set $this->error or $this->errors if errors are found if ($result < 0) @@ -977,7 +977,7 @@ class FactureFournisseur extends CommonInvoice } } - if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0) + if (! $error) { $result=$this->insertExtraFields(); if ($result < 0) @@ -1243,7 +1243,7 @@ class FactureFournisseur extends CommonInvoice } // Remove extrafields - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (!$error) { $result = $this->deleteExtraFields(); if ($result < 0) @@ -3145,7 +3145,7 @@ class SupplierInvoiceLine extends CommonObjectLine $this->deleteObjectLinked(); // Remove extrafields - if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (! $error) { $result=$this->deleteExtraFields(); if ($result < 0) @@ -3265,7 +3265,7 @@ class SupplierInvoiceLine extends CommonObjectLine $this->rowid = $this->id; $error = 0; - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -3406,7 +3406,7 @@ class SupplierInvoiceLine extends CommonObjectLine $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element); $this->rowid = $this->id; // backward compatibility - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index bc86076644c..f2ab694e352 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1064,7 +1064,7 @@ if (empty($reshook)) if (!$error) { // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $object->insertExtraFields('ORDER_SUPPLIER_MODIFY'); if ($result < 0) @@ -1190,7 +1190,7 @@ if (empty($reshook)) } // Extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) // For avoid conflicts if + if (method_exists($lines[$i], 'fetch_optionals')) // For avoid conflicts if { $lines[$i]->fetch_optionals(); $array_option = $lines[$i]->array_options; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 697c8cb74f0..0b63356480c 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -951,7 +951,7 @@ if (empty($reshook)) $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0); // Extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) { + if (method_exists($lines[$i], 'fetch_optionals')) { $lines[$i]->fetch_optionals(); } @@ -1597,7 +1597,7 @@ if (empty($reshook)) if (!$error) { // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $object->insertExtraFields('BILL_SUPPLIER_MODIFY'); if ($result < 0) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index c37dbaeb3f7..4f4334e4125 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1052,7 +1052,7 @@ class Product extends CommonObject $action = 'update'; // Actions on extra fields - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) { + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) { $error++; @@ -1265,7 +1265,7 @@ class Product extends CommonObject } // Remove extrafields - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (!$error) { $result = $this->deleteExtraFields(); if ($result < 0) { diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index 3dd22c9e5c3..db2f84db15a 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -221,7 +221,7 @@ class Entrepot extends CommonObject // Actions on extra fields if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -319,7 +319,7 @@ class Entrepot extends CommonObject $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options) > 0) { + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) { @@ -383,7 +383,7 @@ class Entrepot extends CommonObject // Removed extrafields if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->deleteExtraFields(); if ($result < 0) diff --git a/htdocs/product/stock/class/productlot.class.php b/htdocs/product/stock/class/productlot.class.php index 6db4e81db79..f0a5c0a48ea 100644 --- a/htdocs/product/stock/class/productlot.class.php +++ b/htdocs/product/stock/class/productlot.class.php @@ -185,7 +185,7 @@ class Productlot extends CommonObject $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element); // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -359,7 +359,7 @@ class Productlot extends CommonObject } // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 0e793361d2b..674db2cc5d6 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -316,7 +316,7 @@ class Project extends CommonObject // Update extrafield if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -405,7 +405,7 @@ class Project extends CommonObject // Update extrafield if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index f3f75b716c1..41f6a76afb2 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -205,7 +205,7 @@ class Task extends CommonObject // Update extrafield if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -384,7 +384,7 @@ class Task extends CommonObject // Update extrafield if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index b09a5918def..2bb34859a6b 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -750,7 +750,7 @@ class Reception extends CommonObject } // extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_options) && count($array_options) > 0) // For avoid conflicts if trigger used + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_options) && count($array_options) > 0) $line->array_options = $array_options; $line->fk_product = $fk_product; diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index 75c6e50dec3..4cda97b39d1 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -136,7 +136,7 @@ class Dolresource extends CommonObject $action = 'create'; // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -309,7 +309,7 @@ class Dolresource extends CommonObject $action = 'update'; // Actions on extra fields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/salaries/class/paymentsalary.class.php b/htdocs/salaries/class/paymentsalary.class.php index 44c25b09a13..82cdf3c80ce 100644 --- a/htdocs/salaries/class/paymentsalary.class.php +++ b/htdocs/salaries/class/paymentsalary.class.php @@ -160,7 +160,7 @@ class PaymentSalary extends CommonObject // Update extrafield if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -449,7 +449,7 @@ class PaymentSalary extends CommonObject // Update extrafield if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index ea175c13c6a..c35b17fe4fa 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1393,7 +1393,7 @@ class Societe extends CommonObject $action = 'update'; // Actions on extra fields - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -1771,7 +1771,7 @@ class Societe extends CommonObject } // Removed extrafields - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (!$error) { $result = $this->deleteExtraFields(); if ($result < 0) diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 5910f77a819..ee9f5a1d072 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -353,7 +353,7 @@ if (empty($reshook)) } // Extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) { + if (method_exists($lines[$i], 'fetch_optionals')) { $lines[$i]->fetch_optionals(); $array_options = $lines[$i]->array_options; } diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 3e69fbc167f..52bb42c4526 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -1063,7 +1063,7 @@ class SupplierProposal extends CommonObject $action = 'update'; // Actions on extra fields - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -2116,16 +2116,13 @@ class SupplierProposal extends CommonObject // Removed extrafields if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used - { - $result = $this->deleteExtraFields(); - if ($result < 0) - { - $error++; - $errorflag = -4; - dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR); - } - } + $result = $this->deleteExtraFields(); + if ($result < 0) + { + $error++; + $errorflag = -4; + dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR); + } } if (!$error) @@ -3106,7 +3103,7 @@ class SupplierProposalLine extends CommonObjectLine { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'supplier_proposaldet'); - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) @@ -3155,7 +3152,7 @@ class SupplierProposalLine extends CommonObjectLine if ($this->db->query($sql)) { // Remove extrafields - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (!$error) { $result = $this->deleteExtraFields(); if ($result < 0) @@ -3277,7 +3274,7 @@ class SupplierProposalLine extends CommonObjectLine $resql = $this->db->query($sql); if ($resql) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 863c0c03072..172309a233e 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -408,11 +408,9 @@ class Ticket extends CommonObject //Update extrafield if (!$error) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) { // For avoid conflicts if trigger used - $result = $this->insertExtraFields(); - if ($result < 0) { - $error++; - } + $result = $this->insertExtraFields(); + if ($result < 0) { + $error++; } } @@ -838,11 +836,9 @@ class Ticket extends CommonObject if (!$error) { // Update extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) { // For avoid conflicts if trigger used - $result = $this->insertExtraFields(); - if ($result < 0) { - $error++; - } + $result = $this->insertExtraFields(); + if ($result < 0) { + $error++; } } diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index f944083f6c5..24bf871af1f 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1094,7 +1094,7 @@ class User extends CommonObject } // Remove extrafields - if ((!$error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + if (!$error) { $result = $this->deleteExtraFields(); if ($result < 0) @@ -1762,7 +1762,7 @@ class User extends CommonObject $action = 'update'; // Actions on extra fields - if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) From 86928efb950e88fc55fd2222435eb5bc7bb68c26 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 13:35:40 +0200 Subject: [PATCH 132/780] Var not defined --- htdocs/core/class/html.formfile.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index d4e6620c0da..075fb95066b 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -971,6 +971,7 @@ class FormFile // Get object entity if (!empty($conf->multicompany->enabled)) { + $regs = array(); preg_match('/\/([0-9]+)\/[^\/]+\/'.preg_quote($modulesubdir, '/').'$/', $filedir, $regs); $entity = ((!empty($regs[1]) && $regs[1] > 1) ? $regs[1] : 1); // If entity id not found in $filedir this is entity 1 by default } From 3a9add0e7078508ffd79369a659449bfa918edb2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 13:37:43 +0200 Subject: [PATCH 133/780] FIX #13663 --- htdocs/compta/facture/class/facture.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index c2c82424b77..f9285eb2d9c 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1434,9 +1434,10 @@ class Facture extends CommonInvoice $txttoshow = ($user->socid > 0 ? $this->note_public : $this->note_private); if ($txttoshow) { - $notetoshow = $langs->trans("ViewPrivateNote").':<br>'.dol_string_nohtmltag($txttoshow, 1); + //$notetoshow = $langs->trans("ViewPrivateNote").':<br>'.dol_string_nohtmltag($txttoshow, 1); + $notetoshow = $langs->trans("ViewPrivateNote").':<br>'.$txttoshow; $result .= ' <span class="note inline-block">'; - $result .= '<a href="'.DOL_URL_ROOT.'/compta/facture/note.php?id='.$this->id.'" class="classfortooltip" title="'.dol_escape_htmltag($notetoshow).'">'; + $result .= '<a href="'.DOL_URL_ROOT.'/compta/facture/note.php?id='.$this->id.'" class="classfortooltip" title="'.dol_escape_htmltag($notetoshow, 1, 1).'">'; $result .= img_picto('', 'note'); $result .= '</a>'; //$result.=img_picto($langs->trans("ViewNote"),'object_generic'); From 436362502c3be8740d03ffe561e8a2954fdcd818 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 13:41:51 +0200 Subject: [PATCH 134/780] CSS --- htdocs/loan/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 9e7b8f2565a..3e96a33c931 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -475,7 +475,7 @@ if ($id > 0) print '<div class="fichehalfleft">'; print '<div class="underbanner clearboth"></div>'; - print '<table class="border centpercent">'; + print '<table class="border centpercent tableforfield">'; // Capital if ($action == 'edit') From 7972174787ef17a98f86403ce1b517ad4ac638ba Mon Sep 17 00:00:00 2001 From: florian HENRY <florian.henry@atm-consuliting.fr> Date: Thu, 23 Apr 2020 13:44:23 +0200 Subject: [PATCH 135/780] remove debug pring --- .../modules/project/task/doc/doc_generic_task_odt.modules.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php index 386de7bfdd7..cae24a1ce7e 100644 --- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php +++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php @@ -474,7 +474,6 @@ class doc_generic_task_odt extends ModelePDFTask if (!file_exists($dir)) { - print '$dir'.$dir; if (dol_mkdir($dir) < 0) { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); From 6819255b764a2a004ee10770dde354893c9b9f37 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 13:49:18 +0200 Subject: [PATCH 136/780] FIX #13650 --- htdocs/core/modules/modFournisseur.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php index 4b7c8ff3ed2..b8539ad41c1 100644 --- a/htdocs/core/modules/modFournisseur.class.php +++ b/htdocs/core/modules/modFournisseur.class.php @@ -346,7 +346,10 @@ class modFournisseur extends DolibarrModules case 'sellist': $tmp=''; $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options'])); + if ($tmpparam['options'] && is_array($tmpparam['options'])) { + $var=array_keys($tmpparam['options']); + $tmp=array_shift($var); + } if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; break; } From defef24c3c39296e1f99bcece7c2a9fc8c6e0b92 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 13:57:27 +0200 Subject: [PATCH 137/780] Fix regression --- htdocs/product/stock/class/entrepot.class.php | 8 ++++---- test/phpunit/EntrepotTest.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index db2f84db15a..5f98de4993b 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -184,10 +184,10 @@ class Entrepot extends CommonObject $error = 0; - $this->libelle = trim($this->libelle); + if (empty($this->label)) $this->label = $this->libelle; // For backward compatibility - // Si libelle non defini, erreur - if ($this->libelle == '') + $this->label = trim($this->label); + if ($this->label == '') { $this->error = "ErrorFieldRequired"; return 0; @@ -198,7 +198,7 @@ class Entrepot extends CommonObject $this->db->begin(); $sql = "INSERT INTO ".MAIN_DB_PREFIX."entrepot (ref, entity, datec, fk_user_author, fk_parent)"; - $sql .= " VALUES ('".$this->db->escape($this->libelle)."', ".$conf->entity.", '".$this->db->idate($now)."', ".$user->id.", ".($this->fk_parent > 0 ? $this->fk_parent : "NULL").")"; + $sql .= " VALUES ('".$this->db->escape($this->label)."', ".$conf->entity.", '".$this->db->idate($now)."', ".$user->id.", ".($this->fk_parent > 0 ? $this->fk_parent : "NULL").")"; dol_syslog(get_class($this)."::create", LOG_DEBUG); $result = $this->db->query($sql); diff --git a/test/phpunit/EntrepotTest.php b/test/phpunit/EntrepotTest.php index f5468d49c4b..45845cc8033 100644 --- a/test/phpunit/EntrepotTest.php +++ b/test/phpunit/EntrepotTest.php @@ -139,7 +139,7 @@ class EntrepotTest extends PHPUnit\Framework\TestCase $result=$localobject->create($user); print __METHOD__." result=".$result."\n"; - $this->assertLessThanOrEqual($result, 0); + $this->assertGreaterThan(0, $result); return $result; } From 098b7828faa7055a0143163aa808a6fbaf1e5960 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 13:59:40 +0200 Subject: [PATCH 138/780] Removed useless test --- test/phpunit/EntrepotTest.php | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/test/phpunit/EntrepotTest.php b/test/phpunit/EntrepotTest.php index 45845cc8033..2ab2fc2aff3 100644 --- a/test/phpunit/EntrepotTest.php +++ b/test/phpunit/EntrepotTest.php @@ -242,24 +242,4 @@ class EntrepotTest extends PHPUnit\Framework\TestCase return $result; } - - /** - * testEntrepotStatic - * - * @return void - */ - public function testEntrepotStatic() - { - global $conf,$user,$langs,$db; - $conf=$this->savconf; - $user=$this->savuser; - $langs=$this->savlangs; - $db=$this->savdb; - - $localobject=new Entrepot($db); - - //$this->assertLessThan(1, 0); - - return; - } } From 882b39628f81710491c61258b9993bac76adca75 Mon Sep 17 00:00:00 2001 From: florian HENRY <florian.henry@atm-consuliting.fr> Date: Thu, 23 Apr 2020 15:50:42 +0200 Subject: [PATCH 139/780] fix: uniformize extrafeild replacemnt for ODT docs --- .../core/class/commondocgenerator.class.php | 88 +++++++------------ .../task/doc/doc_generic_task_odt.modules.php | 25 ++++-- 2 files changed, 46 insertions(+), 67 deletions(-) diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index a5cb9bf7d35..2317636f42a 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -170,12 +170,13 @@ abstract class CommonDocGenerator * * @param Societe $object Object * @param Translate $outputlangs Language object for output + * @param string $array_key Name of the key for return array * @return array Array of substitution key->code */ - public function get_substitutionarray_thirdparty($object, $outputlangs) + public function get_substitutionarray_thirdparty($object, $outputlangs, $array_key = 'company') { // phpcs:enable - global $conf; + global $conf, $extrafields; if (empty($object->country) && !empty($object->country_code)) { @@ -221,27 +222,14 @@ abstract class CommonDocGenerator 'company_default_bank_bic'=>$object->bank_account->bic ); - // Retrieve extrafields - if (is_array($object->array_options) && count($object->array_options)) - { - require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; - $extrafields = new ExtraFields($this->db); - $extrafields->fetch_name_optionals_label($object->table_element, true); - $object->fetch_optionals(); + // Retrieve extrafields + if (is_array($object->array_options) && count($object->array_options)) + { + $object->fetch_optionals(); - foreach ($extrafields->attributes[$object->table_element]['label'] as $key=>$label) - { - if ($extrafields->attributes[$object->table_element]['type'][$key] == 'price') - { - $object->array_options['options_'.$key] = price($object->array_options['options_'.$key], 0, $outputlangs, 0, 0, -1, $conf->currency); - } - elseif ($extrafields->attributes[$object->table_element]['type'][$key] == 'select' || $extrafields->attributes[$object->table_element]['type'][$key] == 'checkbox') - { - $object->array_options['options_'.$key] = $extrafields->attributes[$object->table_element]['param'][$key]['options'][$object->array_options['options_'.$key]]; - } - $array_thirdparty = array_merge($array_thirdparty, array('company_options_'.$key => $object->array_options ['options_'.$key])); - } - } + $array_thirdparty = $this->fill_substitutionarray_with_extrafields($object, $array_thirdparty, $extrafields, $array_key, $outputlangs); + + } return $array_thirdparty; } @@ -251,13 +239,13 @@ abstract class CommonDocGenerator * * @param Contact $object contact * @param Translate $outputlangs object for output - * @param array $array_key Name of the key for return array + * @param string $array_key Name of the key for return array * @return array Array of substitution key->code */ public function get_substitutionarray_contact($object, $outputlangs, $array_key = 'object') { // phpcs:enable - global $conf; + global $conf, $extrafields; if (empty($object->country) && !empty($object->country_code)) { @@ -298,24 +286,14 @@ abstract class CommonDocGenerator $array_key.'_civility' => $object->civility, ); - // Retrieve extrafields - require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; - $extrafields = new ExtraFields($this->db); - $extrafields->fetch_name_optionals_label($object->table_element, true); - $object->fetch_optionals(); + // Retrieve extrafields + if (is_array($object->array_options) && count($object->array_options)) + { + $object->fetch_optionals(); - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label) - { - if ($extrafields->attributes[$object->table_element]['type'][$key] == 'price') - { - $object->array_options['options_'.$key] = price($object->array_options ['options_'.$key], 0, $outputlangs, 0, 0, - 1, $conf->currency); - } - elseif ($extrafields->attributes[$object->table_element]['type'][$key] == 'select' || $extrafields->attributes[$object->table_element]['type'][$key] == 'checkbox') - { - $object->array_options['options_'.$key] = $extrafields->attributes[$object->table_element]['param'][$key]['options'][$object->array_options['options_'.$key]]; - } - $array_contact = array_merge($array_contact, array($array_key.'_options_'.$key => $object->array_options['options_'.$key])); - } + $array_contact = $this->fill_substitutionarray_with_extrafields($object, $array_contact, $extrafields, $array_key, $outputlangs); + + } return $array_contact; } @@ -370,7 +348,7 @@ abstract class CommonDocGenerator public function get_substitutionarray_object($object, $outputlangs, $array_key = 'object') { // phpcs:enable - global $conf; + global $conf, $extrafields; $sumpayed = $sumdeposit = $sumcreditnote = ''; $already_payed_all = 0; @@ -528,14 +506,10 @@ abstract class CommonDocGenerator // Retrieve extrafields if (is_array($object->array_options) && count($object->array_options)) { - $extrafieldkey = $object->element; - - require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; - $extrafields = new ExtraFields($this->db); - $extrafields->fetch_name_optionals_label($extrafieldkey, true); $object->fetch_optionals(); $resarray = $this->fill_substitutionarray_with_extrafields($object, $resarray, $extrafields, $array_key, $outputlangs); + } return $resarray; @@ -605,7 +579,7 @@ abstract class CommonDocGenerator } // Retrieve extrafields - $extrafieldkey = $line->element; + $extrafieldkey = $line->table_element; $array_key = "line"; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; $extrafields = new ExtraFields($this->db); @@ -672,7 +646,7 @@ abstract class CommonDocGenerator public function get_substitutionarray_shipment($object, $outputlangs, $array_key = 'object') { // phpcs:enable - global $conf; + global $conf, $extrafields; dol_include_once('/core/lib/product.lib.php'); $object->list_delivery_methods($object->shipping_method_id); $calculatedVolume = ($object->trueWidth * $object->trueHeight * $object->trueDepth); @@ -708,16 +682,14 @@ abstract class CommonDocGenerator $array_shipment[$array_key.'_total_vat_'.$line->tva_tx] += $line->total_tva; } - // Retrieve extrafields - if (is_array($object->array_options) && count($object->array_options)) - { - require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; - $extrafields = new ExtraFields($this->db); - $extrafields->fetch_name_optionals_label('expedition', true); - $object->fetch_optionals(); + // Retrieve extrafields + if (is_array($object->array_options) && count($object->array_options)) + { + $object->fetch_optionals(); - $array_shipment = $this->fill_substitutionarray_with_extrafields($object, $array_shipment, $extrafields, $array_key, $outputlangs); - } + $array_shipment = $this->fill_substitutionarray_with_extrafields($object, $array_shipment, $extrafields, $array_key, $outputlangs); + + } return $array_shipment; } diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php index 8a38450697f..1aa8f05d9df 100644 --- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php +++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php @@ -130,7 +130,7 @@ class doc_generic_task_odt extends ModelePDFTask public function get_substitutionarray_object($object, $outputlangs, $array_key = 'object') { // phpcs:enable - global $conf; + global $conf, $extrafields; $resarray = array( $array_key.'_id'=>$object->id, @@ -150,14 +150,10 @@ class doc_generic_task_odt extends ModelePDFTask // Retrieve extrafields if (is_array($object->array_options) && count($object->array_options)) { - $extrafieldkey = $object->element; - - require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; - $extrafields = new ExtraFields($this->db); - $extrafields->fetch_name_optionals_label($extrafieldkey, true); $object->fetch_optionals(); $resarray = $this->fill_substitutionarray_with_extrafields($object, $resarray, $extrafields, $array_key, $outputlangs); + } return $resarray; @@ -169,14 +165,15 @@ class doc_generic_task_odt extends ModelePDFTask * * @param array $task Task Object * @param Translate $outputlangs Lang object to use for output + * @param string $array_key Name of the key for return array * @return array Return a substitution array */ - public function get_substitutionarray_tasks($task, $outputlangs) + public function get_substitutionarray_tasks($task, $outputlangs, $array_key = 'task') { // phpcs:enable - global $conf; + global $conf, $extrafields; - return array( + $resarray = array( 'task_ref'=>$task->ref, 'task_fk_project'=>$task->fk_project, 'task_projectref'=>$task->projectref, @@ -192,6 +189,16 @@ class doc_generic_task_odt extends ModelePDFTask 'task_note_private'=>$task->note_private, 'task_note_public'=>$task->note_public ); + + // Retrieve extrafields + if (is_array($task->array_options) && count($task->array_options)) + { + $task->fetch_optionals(); + + $resarray = $this->fill_substitutionarray_with_extrafields($task, $resarray, $extrafields, $array_key, $outputlangs); + } + + return $resarray; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps From 68e9d8463a101340b707d20f750206a06971a1a3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 15:52:15 +0200 Subject: [PATCH 140/780] Debug MAIN_USE_ALTERNATE_TRANSLATION_FOR variable --- htdocs/core/class/extralanguages.class.php | 26 +++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/extralanguages.class.php b/htdocs/core/class/extralanguages.class.php index 8f61e84839c..8ae1fd0a4c7 100644 --- a/htdocs/core/class/extralanguages.class.php +++ b/htdocs/core/class/extralanguages.class.php @@ -69,7 +69,9 @@ class ExtraLanguages // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** - * Load array this->attributes + * Load array this->attributes with list of fields per object that need an alternate translation. + * You can set variable MAIN_USE_ALTERNATE_TRANSLATION_FOR=elementA:fieldname,fieldname2;elementB:... + * Example: MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname * * @param string $elementtype Type of element ('' = all, 'adherent', 'commande', 'thirdparty', 'facture', 'propal', 'product', ...). * @param boolean $forceload Force load of extra fields whatever is status of cache. @@ -86,11 +88,25 @@ class ExtraLanguages if ($elementtype == 'contact') $elementtype = 'socpeople'; if ($elementtype == 'order_supplier') $elementtype = 'commande_fournisseur'; - $array_name_label = array( - 'societe' => array('name'=>'Name'), - 'contact' => array('firstname' => 'Firstname', 'lastname' => 'Lastname') - ); + $array_name_label = array(); + if (! empty($conf->global->MAIN_USE_ALTERNATE_TRANSLATION_FOR)) { + $tmpelement = explode(';', $conf->global->MAIN_USE_ALTERNATE_TRANSLATION_FOR); + foreach($tmpelement as $elementstring) { + $reg=array(); + preg_match('/^(.*):(.*)$/', $elementstring, $reg); + $element = $reg[1]; + $array_name_label[$element] = array(); + $tmpfields=explode(',', $reg[2]); + foreach($tmpfields as $field) { + //var_dump($fields); + //$tmpkeyvar = explode(':', $fields); + //$array_name_label[$element][$tmpkeyvar[0]] = $tmpkeyvar[1]; + $array_name_label[$element][$field] = $field; + } + } + } + //var_dump($array_name_label); $this->attributes = $array_name_label; return $array_name_label; From 55a9aa5991c3a4468ef8a90452218b6786f7b183 Mon Sep 17 00:00:00 2001 From: florian HENRY <florian.henry@atm-consuliting.fr> Date: Thu, 23 Apr 2020 15:55:37 +0200 Subject: [PATCH 141/780] fix: missing duration odt task substitution --- .../project/task/doc/doc_generic_task_odt.modules.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php index 1aa8f05d9df..033aee6b8fa 100644 --- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php +++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php @@ -163,7 +163,7 @@ class doc_generic_task_odt extends ModelePDFTask /** * Define array with couple substitution key => substitution value * - * @param array $task Task Object + * @param Task $task Task Object * @param Translate $outputlangs Lang object to use for output * @param string $array_key Name of the key for return array * @return array Return a substitution array @@ -181,7 +181,8 @@ class doc_generic_task_odt extends ModelePDFTask 'task_label'=>$task->label, 'task_description'=>$task->description, 'task_fk_parent'=>$task->fk_parent, - 'task_duration'=>$task->duration, + 'task_duration'=>$task->convertSecondToTime(duration_effective,'allhourmin'), + 'task_planned_workload'=>convertSecondToTime($task->planned_workload,'allhourmin'), 'task_progress'=>$task->progress, 'task_public'=>$task->public, 'task_date_start'=>dol_print_date($task->date_start, 'day'), From 6dafb30ee8e57be64f2ca2c5a6f347c94476f80d Mon Sep 17 00:00:00 2001 From: florian HENRY <florian.henry@atm-consuliting.fr> Date: Thu, 23 Apr 2020 15:57:06 +0200 Subject: [PATCH 142/780] fix time duration substitution --- .../modules/project/task/doc/doc_generic_task_odt.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php index 033aee6b8fa..6e96699116e 100644 --- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php +++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php @@ -181,7 +181,7 @@ class doc_generic_task_odt extends ModelePDFTask 'task_label'=>$task->label, 'task_description'=>$task->description, 'task_fk_parent'=>$task->fk_parent, - 'task_duration'=>$task->convertSecondToTime(duration_effective,'allhourmin'), + 'task_duration'=>convertSecondToTime($task->duration_effective,'allhourmin'), 'task_planned_workload'=>convertSecondToTime($task->planned_workload,'allhourmin'), 'task_progress'=>$task->progress, 'task_public'=>$task->public, From 32385b75e18458a95e7c9bfde6c2659ea9ac7c8d Mon Sep 17 00:00:00 2001 From: florian HENRY <florian.henry@atm-consuliting.fr> Date: Thu, 23 Apr 2020 16:18:31 +0200 Subject: [PATCH 143/780] travis --- htdocs/core/class/commondocgenerator.class.php | 4 ---- .../project/task/doc/doc_generic_task_odt.modules.php | 5 ++--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index 2317636f42a..5c43f4f83a1 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -228,7 +228,6 @@ abstract class CommonDocGenerator $object->fetch_optionals(); $array_thirdparty = $this->fill_substitutionarray_with_extrafields($object, $array_thirdparty, $extrafields, $array_key, $outputlangs); - } return $array_thirdparty; } @@ -292,7 +291,6 @@ abstract class CommonDocGenerator $object->fetch_optionals(); $array_contact = $this->fill_substitutionarray_with_extrafields($object, $array_contact, $extrafields, $array_key, $outputlangs); - } return $array_contact; } @@ -509,7 +507,6 @@ abstract class CommonDocGenerator $object->fetch_optionals(); $resarray = $this->fill_substitutionarray_with_extrafields($object, $resarray, $extrafields, $array_key, $outputlangs); - } return $resarray; @@ -688,7 +685,6 @@ abstract class CommonDocGenerator $object->fetch_optionals(); $array_shipment = $this->fill_substitutionarray_with_extrafields($object, $array_shipment, $extrafields, $array_key, $outputlangs); - } return $array_shipment; diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php index 6e96699116e..ceb735dc486 100644 --- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php +++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php @@ -153,7 +153,6 @@ class doc_generic_task_odt extends ModelePDFTask $object->fetch_optionals(); $resarray = $this->fill_substitutionarray_with_extrafields($object, $resarray, $extrafields, $array_key, $outputlangs); - } return $resarray; @@ -181,8 +180,8 @@ class doc_generic_task_odt extends ModelePDFTask 'task_label'=>$task->label, 'task_description'=>$task->description, 'task_fk_parent'=>$task->fk_parent, - 'task_duration'=>convertSecondToTime($task->duration_effective,'allhourmin'), - 'task_planned_workload'=>convertSecondToTime($task->planned_workload,'allhourmin'), + 'task_duration'=>convertSecondToTime($task->duration_effective, 'allhourmin'), + 'task_planned_workload'=>convertSecondToTime($task->planned_workload, 'allhourmin'), 'task_progress'=>$task->progress, 'task_public'=>$task->public, 'task_date_start'=>dol_print_date($task->date_start, 'day'), From b68e85703ff2530021e870675794ed33c11c30c4 Mon Sep 17 00:00:00 2001 From: simicar29 <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 16:29:22 +0200 Subject: [PATCH 144/780] Clean line extrafields when deleting invoice Delete extrafields invoice lines when deleting parent object (sql syntax ok for mariadb & pgsql) Delete extrafields when deleting an invoice line --- htdocs/compta/facture/class/facture.class.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index f9285eb2d9c..66cb1aed37d 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -2166,13 +2166,16 @@ class Facture extends CommonInvoice } } - + // Invoice line extrafileds + $main = MAIN_DB_PREFIX . 'facturedet'; + $ef = $main . "_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_facture = $rowid)"; // Delete invoice line $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facturedet WHERE fk_facture = '.$rowid; dol_syslog(get_class($this)."::delete", LOG_DEBUG); - if ($this->db->query($sql) && $this->delete_linked_contact()) + if ($this->db->query($sqlef) && $this->db->query($sql) && $this->delete_linked_contact()) { $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture WHERE rowid = '.$rowid; @@ -5312,7 +5315,14 @@ class FactureLigne extends CommonInvoiceLine } // End call triggers - + // extrafields + $result = $this->deleteExtraFields(); + if ($result < 0) + { + $this->db->rollback(); + return -1; + } + $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet WHERE rowid = ".$this->rowid; dol_syslog(get_class($this)."::delete", LOG_DEBUG); if ($this->db->query($sql)) From aebc04d30a15eb8e2a46bdd44a1875aacc1db3d7 Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Thu, 23 Apr 2020 14:33:11 +0000 Subject: [PATCH 145/780] Fixing style errors. --- htdocs/compta/facture/class/facture.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 66cb1aed37d..9b327aadb45 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -5322,7 +5322,7 @@ class FactureLigne extends CommonInvoiceLine $this->db->rollback(); return -1; } - + $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet WHERE rowid = ".$this->rowid; dol_syslog(get_class($this)."::delete", LOG_DEBUG); if ($this->db->query($sql)) From ce94788dd906cce4f925fc260180359175c88d5a Mon Sep 17 00:00:00 2001 From: simicar29 <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 17:01:40 +0200 Subject: [PATCH 146/780] Clean line extrafields when deleting recurring invoice Delete extrafields recurring invoice lines when deleting parent object Delete extrafields when deleting a recurring invoice line --- .../compta/facture/class/facture-rec.class.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 110f5a9cbb8..f3437308f39 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -664,9 +664,13 @@ class FactureRec extends CommonInvoice $error = 0; $this->db->begin(); + $main = MAIN_DB_PREFIX . 'facturedet_rec'; + $ef = $main . "_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_facture = $rowid)"; + dol_syslog($sqlef); $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE fk_facture = ".$rowid; dol_syslog($sql); - if ($this->db->query($sql)) + if ($this->db->query($sqlef) && $this->db->query($sql)) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."facture_rec WHERE rowid = ".$rowid; dol_syslog($sql); @@ -675,6 +679,9 @@ class FactureRec extends CommonInvoice // Delete linked object $res = $this->deleteObjectLinked(); if ($res < 0) $error = -3; + // Delete extrafields + $res = $this->deleteExtraFields(); + if ($res < 0) $error = -4; } else { @@ -1881,6 +1888,14 @@ class FactureLigneRec extends CommonInvoiceLine // End call triggers } } + + if (!$error) + { + $result = $this->deleteExtraFields(); + if ($result < 0) { + $error++; + } + } if (!$error) { From 2633e908902d3e20e2cfe35f28447f9842c98582 Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Thu, 23 Apr 2020 15:03:14 +0000 Subject: [PATCH 147/780] Fixing style errors. --- htdocs/compta/facture/class/facture-rec.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index f3437308f39..5b72b6d465d 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -1888,7 +1888,7 @@ class FactureLigneRec extends CommonInvoiceLine // End call triggers } } - + if (!$error) { $result = $this->deleteExtraFields(); From cd1368cb71202231393aeb207ddd9fcd3cdfdf72 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 17:10:40 +0200 Subject: [PATCH 148/780] Fix dispatch in ledger for various payment done in same account when there is 2 different transaction in 2 different account (backport v12) --- htdocs/accountancy/journal/bankjournal.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index e9be75990dc..06f5a56f943 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -666,7 +666,7 @@ if (! $error && $action == 'writebookkeeping') { } elseif ($tabtype[$key] == 'payment_various') { $bookkeeping->subledger_account = $k; $bookkeeping->subledger_label = $tabcompany[$key]['name']; - $bookkeeping->numero_compte = $tabpay[$obj->rowid]["account_various"]; + $bookkeeping->numero_compte = $tabpay[$key]["account_various"]; $accountingaccount->fetch(null, $bookkeeping->numero_compte, true); $bookkeeping->label_compte = $accountingaccount->label; @@ -1174,7 +1174,11 @@ if (empty($action) || $action == 'view') { //print '<span class="error">'.$langs->trans("ThirdpartyAccountNotDefined").'</span>'; if (! empty($tabcompany[$key]['code_compta'])) { - print '<span class="warning">'.$langs->trans("ThirdpartyAccountNotDefinedOrThirdPartyUnknown", $tabcompany[$key]['code_compta']).'</span>'; + if (in_array($tabtype[$key], array('payment_various'))) { + // For such case, if subledger is not defined, we won't use subledger accounts. + print '<span class="warning">'.$langs->trans("ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored").'</span>'; + } else { + print '<span class="warning">'.$langs->trans("ThirdpartyAccountNotDefinedOrThirdPartyUnknown", $tabcompany[$key]['code_compta']).'</span>'; } else { From be46b2062ee29fe57181170b21a5241080f895ab Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 17:51:06 +0200 Subject: [PATCH 149/780] Clean line extrafields when deleting order --- htdocs/commande/class/commande.class.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 52dfde785a4..54506a4a816 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3396,6 +3396,19 @@ class Commande extends CommonOrder $error++; } + if (!$error) + { + // Delete extrafields of order details + $main = MAIN_DB_PREFIX . 'commandedet'; + $ef = $main . "_extrafields"; + $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_commande = " . $this->id . ")"; + if (!$this->db->query($sql)) + { + $error++; + $this->errors[] = $this->db->lasterror(); + } + } + if (!$error) { // Delete order details From f7d4d78008b132574dc81f6e358bd498b4863f7b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 17:55:55 +0200 Subject: [PATCH 150/780] Fix error 500 --- htdocs/accountancy/journal/bankjournal.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 06f5a56f943..d2ad7a0503e 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -1179,6 +1179,7 @@ if (empty($action) || $action == 'view') { print '<span class="warning">'.$langs->trans("ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored").'</span>'; } else { print '<span class="warning">'.$langs->trans("ThirdpartyAccountNotDefinedOrThirdPartyUnknown", $tabcompany[$key]['code_compta']).'</span>'; + } } else { From 1101c4e587232905e2caa9c61545c47a8503e888 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 18:01:04 +0200 Subject: [PATCH 151/780] Fix trans --- htdocs/langs/en_US/accountancy.lang | 1 + htdocs/langs/fr_FR/accountancy.lang | 1 + 2 files changed, 2 insertions(+) diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 4b22f512826..9b80eae930c 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -218,6 +218,7 @@ ListAccounts=List of the accounting accounts UnknownAccountForThirdparty=Unknown third-party account. We will use %s UnknownAccountForThirdpartyBlocking=Unknown third-party account. Blocking error ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Third-party account not defined or third party unknown. We will use %s +ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Third-party unknown and subledger not defined on the payment. We will keep the subledger account value empty. ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Third-party account not defined or third party unknown. Blocking error. UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third-party account and waiting account not defined. Blocking error PaymentsNotLinkedToProduct=Payment not linked to any product / service diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang index 0150ff7d017..7c0602332f3 100644 --- a/htdocs/langs/fr_FR/accountancy.lang +++ b/htdocs/langs/fr_FR/accountancy.lang @@ -218,6 +218,7 @@ ListAccounts=Liste des comptes comptables UnknownAccountForThirdparty=Compte de tiers inconnu. %s sera utilisé UnknownAccountForThirdpartyBlocking=Compte de tiers inconnu. Erreur bloquante. ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Code comptable du tiers non défini ou tiers inconnu. On utilisera %s. +ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Tiers inconnu et code comptable auxiliaire non défini sur le paiement. Nous conserverons la valeur du compte auxiliaire vide. ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Compte tiers non défini ou inconnu. Erreur bloquante. UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Compte tiers inconnu et compte d'attente non défini. Erreur blocante. PaymentsNotLinkedToProduct=Paiement non lié à un produit / service From 94be1870ec2faeffcdf9b9b10cd4ac88e89d916f Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 18:02:53 +0200 Subject: [PATCH 152/780] Clean line extrafields when deleting proposal --- htdocs/comm/propal/class/propal.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 409a1924b70..0962fcd63b6 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -2992,8 +2992,11 @@ class Propal extends CommonObject if (!$error) { + $main = MAIN_DB_PREFIX . 'propaldet'; + $ef = $main . "_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_propal = " . $this->id . ")"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."propaldet WHERE fk_propal = ".$this->id; - if ($this->db->query($sql)) + if ($this->db->query($sqlef) && $this->db->query($sql)) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."propal WHERE rowid = ".$this->id; if ($this->db->query($sql)) From 039fe922090d4f1812159999927c585c5341269d Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 18:14:56 +0200 Subject: [PATCH 153/780] Clean line extrafields when deleting supplier invoice --- htdocs/fourn/class/fournisseur.facture.class.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 48ca9ca81f2..8cec13609a0 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1180,10 +1180,14 @@ class FactureFournisseur extends CommonInvoice if (!$error) { + $main = MAIN_DB_PREFIX . 'facture_fourn_det'; + $ef = $main . "_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_facture_fourn = $rowid)"; + $resqlef = $this->db->query($sqlef); $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det WHERE fk_facture_fourn = '.$rowid.';'; dol_syslog(get_class($this)."::delete", LOG_DEBUG); $resql = $this->db->query($sql); - if ($resql) + if ($resqlef && $resql) { $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn WHERE rowid = '.$rowid; dol_syslog(get_class($this)."::delete", LOG_DEBUG); @@ -3141,6 +3145,11 @@ class SupplierInvoiceLine extends CommonObjectLine $this->deleteObjectLinked(); + $result = $this->deleteExtraFields(); + if ($result < 0) { + $error++; + } + if (!$error) { // Supprime ligne $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det '; From b5f48fb815a80e8343b87bf989b882b412ebe22c Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Thu, 23 Apr 2020 16:17:37 +0000 Subject: [PATCH 154/780] Fixing style errors. --- htdocs/fourn/class/fournisseur.facture.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 8cec13609a0..117a99ee2cc 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -3146,9 +3146,9 @@ class SupplierInvoiceLine extends CommonObjectLine $this->deleteObjectLinked(); $result = $this->deleteExtraFields(); - if ($result < 0) { - $error++; - } + if ($result < 0) { + $error++; + } if (!$error) { // Supprime ligne From 8401f68bde8672b76036192d63f26f8cc9610583 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 18:21:17 +0200 Subject: [PATCH 155/780] Update doc_generic_task_odt.modules.php --- .../project/task/doc/doc_generic_task_odt.modules.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php index ceb735dc486..c56506eb311 100644 --- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php +++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php @@ -180,8 +180,10 @@ class doc_generic_task_odt extends ModelePDFTask 'task_label'=>$task->label, 'task_description'=>$task->description, 'task_fk_parent'=>$task->fk_parent, - 'task_duration'=>convertSecondToTime($task->duration_effective, 'allhourmin'), - 'task_planned_workload'=>convertSecondToTime($task->planned_workload, 'allhourmin'), + 'task_duration'=>$task->duration_effective, + 'task_duration_formated'=>convertSecondToTime($task->duration_effective, 'allhourmin'), + 'task_planned_workload'=>$task->planned_workload, + 'task_planned_workload_formated'=>convertSecondToTime($task->planned_workload, 'allhourmin'), 'task_progress'=>$task->progress, 'task_public'=>$task->public, 'task_date_start'=>dol_print_date($task->date_start, 'day'), From 64d877bc7bc8968d3443bb03dcd3f196650ba6d3 Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 18:27:06 +0200 Subject: [PATCH 156/780] Clean line extrafields when deleting supplier order --- .../class/fournisseur.commande.class.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 0ed924ffb64..76b3cdabc6a 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1994,6 +1994,17 @@ class CommandeFournisseur extends CommonOrder // End call triggers } + $main = MAIN_DB_PREFIX . 'commande_fournisseurdet'; + $ef = $main . "_extrafields"; + $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_commande = " . $this->id . ")"; + dol_syslog(get_class($this)."::delete extrafields lines", LOG_DEBUG); + if (!$this->db->query($sql)) + { + $this->error = $this->db->lasterror(); + $this->errors[] = $this->db->lasterror(); + $error++; + } + $sql = "DELETE FROM ".MAIN_DB_PREFIX."commande_fournisseurdet WHERE fk_commande =".$this->id; dol_syslog(get_class($this)."::delete", LOG_DEBUG); if (!$this->db->query($sql)) @@ -3700,6 +3711,14 @@ class CommandeFournisseurLigne extends CommonOrderLine $this->db->begin(); + // extrafields + $result = $this->deleteExtraFields(); + if ($result < 0) + { + $this->db->rollback(); + return -1; + } + $sql = 'DELETE FROM '.MAIN_DB_PREFIX."commande_fournisseurdet WHERE rowid=".$this->id; dol_syslog(__METHOD__, LOG_DEBUG); From 4b58213e5b9ee14609c63f5c0ea27eccd3134d42 Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Thu, 23 Apr 2020 16:29:36 +0000 Subject: [PATCH 157/780] Fixing style errors. --- htdocs/fourn/class/fournisseur.commande.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 76b3cdabc6a..7de6f6a770e 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -3711,7 +3711,7 @@ class CommandeFournisseurLigne extends CommonOrderLine $this->db->begin(); - // extrafields + // extrafields $result = $this->deleteExtraFields(); if ($result < 0) { From 02c5530e1f94ac7292b763c571e949011d4620f0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 18:31:01 +0200 Subject: [PATCH 158/780] Update mouvementstock.class.php --- htdocs/product/stock/class/mouvementstock.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index 2799cbaaf50..1702c4beecc 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -515,11 +515,12 @@ class MouvementStock extends CommonObject // Update PMP and denormalized value of stock qty at product level if (! $error) { - $newpmp = price2num($newpmp,'MU'); + $newpmp = price2num($newpmp, 'MU'); + // $sql = "UPDATE ".MAIN_DB_PREFIX."product SET pmp = ".$newpmp.", stock = ".$this->db->ifsql("stock IS NULL", 0, "stock") . " + ".$qty; // $sql.= " WHERE rowid = ".$fk_product; // Update pmp + denormalized fields because we change content of produt_stock. Warning: Do not use "SET p.stock", does not works with pgsql - $sql = "UPDATE ".MAIN_DB_PREFIX."product as p SET pmp = '".$newpmp."', "; + $sql = "UPDATE ".MAIN_DB_PREFIX."product as p SET pmp = ".$newpmp.", "; $sql.= " stock=(SELECT SUM(ps.reel) FROM ".MAIN_DB_PREFIX."product_stock as ps WHERE ps.fk_product = p.rowid)"; $sql.= " WHERE rowid = ".$fk_product; From 73ddfb1c81a27ab1e7e69f3d3d597983ecdd9558 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 18:33:25 +0200 Subject: [PATCH 159/780] Use label instead of libelle --- test/phpunit/MouvementStockTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/phpunit/MouvementStockTest.php b/test/phpunit/MouvementStockTest.php index d095736042b..85137234a3b 100644 --- a/test/phpunit/MouvementStockTest.php +++ b/test/phpunit/MouvementStockTest.php @@ -148,13 +148,13 @@ class MouvementStockTest extends PHPUnit\Framework\TestCase // We create a product for tests $warehouse1=new Entrepot($db); $warehouse1->initAsSpecimen(); - $warehouse1->libelle.=' 1'; + $warehouse1->label.=' 1'; $warehouse1->description.=' 1'; $warehouse1id=$warehouse1->create($user); $warehouse2=new Entrepot($db); $warehouse2->initAsSpecimen(); - $warehouse2->libelle.=' 2'; + $warehouse2->label.=' 2'; $warehouse2->description.=' 2'; $warehouse2id=$warehouse2->create($user); From ab5c2b1fd56ba640e0d6ab483f52d2a5b225371c Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 18:33:58 +0200 Subject: [PATCH 160/780] Clean line extrafields when deleting supplier proposal --- htdocs/supplier_proposal/class/supplier_proposal.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 7fdd5466cd5..d292ebe13bf 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -2061,11 +2061,14 @@ class SupplierProposal extends CommonObject if (! $error) { + $main = MAIN_DB_PREFIX . 'supplier_proposaldet'; + $ef = $main . "_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_supplier_proposal = " . $this->id . ")"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."supplier_proposaldet WHERE fk_supplier_proposal = ".$this->id; if ($this->db->query($sql)) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."supplier_proposal WHERE rowid = ".$this->id; - if ($this->db->query($sql)) + if ($this->db->query($sqlef) && $this->db->query($sql)) { // Delete linked object $res = $this->deleteObjectLinked(); From 0aa0d62f43d56987126f240dabd98aeb073a57d9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 18:42:59 +0200 Subject: [PATCH 161/780] Fix constant --- htdocs/api/class/api_setup.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index f4c73c1b8ec..945a0efdf46 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -1415,7 +1415,7 @@ class Setup extends DolibarrApi * @url GET conf/{constantname} * * @throws RestException 403 Forbidden - * @throws RestException 500 Error Bad or unknown value for constname + * @throws RestException 500 Error Bad or unknown value for constantname */ public function getConf($constantname) { @@ -1427,7 +1427,7 @@ class Setup extends DolibarrApi } if (!preg_match('/^[a-zA-Z0-9_]+$/', $constantname) || ! isset($conf->global->$constantname)) { - throw new RestException(500, 'Error Bad or unknown value for constname'); + throw new RestException(500, 'Error Bad or unknown value for constantname'); } if (preg_match('/(_pass|password|secret|_key|key$)/i', $constantname)) { throw new RestException(403, 'Forbidden'); From 4e6017e5bfb2c156bd28fe1cd96ee5978bd8c2a2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 18:50:20 +0200 Subject: [PATCH 162/780] Look and feel v12 --- htdocs/api/admin/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/api/admin/index.php b/htdocs/api/admin/index.php index 73041f6c386..d0a0e79c855 100644 --- a/htdocs/api/admin/index.php +++ b/htdocs/api/admin/index.php @@ -153,7 +153,7 @@ $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domai // Show message $message = ''; $url = $urlwithroot.'/api/index.php/login?login=<strong>auserlogin</strong>&password=<strong>thepassword</strong>[&reset=1]'; -$message .= $langs->trans("UrlToGetKeyToUseAPIs").':<br>'; +$message .= '<span class="opacitymedium">'.$langs->trans("UrlToGetKeyToUseAPIs").':</span><br>'; $message .= img_picto('', 'globe').' '.$url; print $message; print '<br>'; From 285f215acfd51ac595a3c44a38a695729d33e95f Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 18:52:45 +0200 Subject: [PATCH 163/780] Clean line extrafields when deleting fichinter --- htdocs/fichinter/class/fichinter.class.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 9f180fc24b0..1a4a6817892 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -961,6 +961,16 @@ class Fichinter extends CommonObject } } + if (!$error) + { + $main = MAIN_DB_PREFIX . 'fichinterdet'; + $ef = $main . "_extrafields"; + $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_fichinter = " . $this->id . ")"; + + $resql = $this->db->query($sql); + if (!$resql) $error++; + } + if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."fichinterdet"; @@ -1704,6 +1714,13 @@ class FichinterLigne extends CommonObjectLine dol_syslog(get_class($this)."::deleteline lineid=".$this->id); $this->db->begin(); + $result = $this->deleteExtraFields(); + if ($result < 0) { + $error++; + $this->db->rollback(); + return -1; + } + $sql = "DELETE FROM ".MAIN_DB_PREFIX."fichinterdet WHERE rowid = ".$this->id; $resql = $this->db->query($sql); From 548f3007cffcddd67b41391611c5456e61b21977 Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> Date: Thu, 23 Apr 2020 16:55:10 +0000 Subject: [PATCH 164/780] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- htdocs/admin/facture_situation.php | 36 ++++++++--------- htdocs/compta/facture/card.php | 38 +++++++++--------- htdocs/compta/facture/class/facture.class.php | 40 +++++++++---------- .../core/class/commondocgenerator.class.php | 2 +- htdocs/core/lib/website.lib.php | 2 +- htdocs/core/modules/modSociete.class.php | 2 +- htdocs/product/class/product.class.php | 2 +- htdocs/product/composition/card.php | 30 +++++++------- .../societe/class/api_thirdparties.class.php | 2 +- htdocs/user/class/usergroup.class.php | 6 +-- htdocs/user/group/perms.php | 2 +- htdocs/website/index.php | 8 ++-- 12 files changed, 85 insertions(+), 85 deletions(-) diff --git a/htdocs/admin/facture_situation.php b/htdocs/admin/facture_situation.php index ce327cc5187..223045db2e9 100644 --- a/htdocs/admin/facture_situation.php +++ b/htdocs/admin/facture_situation.php @@ -36,13 +36,13 @@ require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; // Load translation files required by the page $langs->loadLangs(array('admin', 'errors', 'other', 'bills')); -if (! $user->admin) accessforbidden(); +if (!$user->admin) accessforbidden(); $action = GETPOST('action', 'alpha'); $value = GETPOST('value', 'alpha'); $label = GETPOST('label', 'alpha'); $scandir = GETPOST('scan_dir', 'alpha'); -$type='invoice'; +$type = 'invoice'; /* @@ -57,17 +57,17 @@ include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php'; * View */ -$dirmodels=array_merge(array('/'), (array) $conf->modules_parts['models']); +$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']); llxHeader( "", $langs->trans("BillsSetup"), 'EN:Invoice_Configuration|FR:Configuration_module_facture|ES:ConfiguracionFactura' ); -$form=new Form($db); +$form = new Form($db); -$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>'; +$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>'; print load_fiche_titre($langs->trans("BillsSetup"), $linkback, 'title_setup'); $head = invoice_admin_prepare_head(); @@ -106,12 +106,12 @@ $arrayAvailableType = array( ); $selected = array(); $implodeglue = '+'; -if(!empty($conf->global->{$confkey}) && !is_array($conf->global->{$confkey})){ +if (!empty($conf->global->{$confkey}) && !is_array($conf->global->{$confkey})) { $selected = explode('+', $conf->global->{$confkey}); } -$curentInput = (empty($inputCount)?1:($inputCount+1)); -$formSelectInvoiceType = $form->selectarray('value'. $curentInput, $arrayAvailableType, $selected, 1); +$curentInput = (empty($inputCount) ? 1 : ($inputCount + 1)); +$formSelectInvoiceType = $form->selectarray('value'.$curentInput, $arrayAvailableType, $selected, 1); _printInputFormPart($confkey, $langs->trans('AllowedInvoiceForRetainedWarranty'), '', array(), $formSelectInvoiceType); //_printOnOff('INVOICE_RETAINED_WARRANTY_LIMITED_TO_SITUATION', $langs->trans('RetainedwarrantyOnlyForSituation')); @@ -126,7 +126,7 @@ $metas = array( _printInputFormPart('INVOICE_SITUATION_DEFAULT_RETAINED_WARRANTY_PERCENT', $langs->trans('RetainedwarrantyDefaultPercent'), '', $metas); // Conditions paiements -$inputCount = empty($inputCount)?1:($inputCount+1); +$inputCount = empty($inputCount) ? 1 : ($inputCount + 1); print '<tr class="oddeven">'; print '<td>'.$langs->trans('PaymentConditionsShortRetainedWarranty').'</td>'; print '<td class="center" width="20"> </td>'; @@ -178,7 +178,7 @@ function _printOnOff($confkey, $title = false, $desc = '') global $langs; print '<tr class="oddeven">'; - print '<td>'.($title?$title:$langs->trans($confkey)); + print '<td>'.($title ? $title : $langs->trans($confkey)); if (!empty($desc)) { print '<br><small>'.$langs->trans($desc).'</small>'; } @@ -206,14 +206,14 @@ function _printInputFormPart($confkey, $title = false, $desc = '', $metas = arra { global $langs, $conf, $db, $inputCount; - $inputCount = empty($inputCount)?1:($inputCount+1); - $form=new Form($db); + $inputCount = empty($inputCount) ? 1 : ($inputCount + 1); + $form = new Form($db); $defaultMetas = array( 'name' => 'value'.$inputCount ); - if ($type!='textarea') { + if ($type != 'textarea') { $defaultMetas['type'] = 'text'; $defaultMetas['value'] = $conf->global->{$confkey}; } @@ -229,9 +229,9 @@ function _printInputFormPart($confkey, $title = false, $desc = '', $metas = arra print '<td>'; if (!empty($help)) { - print $form->textwithtooltip(($title?$title:$langs->trans($confkey)), $langs->trans($help), 2, 1, img_help(1, '')); + print $form->textwithtooltip(($title ? $title : $langs->trans($confkey)), $langs->trans($help), 2, 1, img_help(1, '')); } else { - print $title?$title:$langs->trans($confkey); + print $title ? $title : $langs->trans($confkey); } if (!empty($desc)) { @@ -244,12 +244,12 @@ function _printInputFormPart($confkey, $title = false, $desc = '', $metas = arra print '<input type="hidden" name="param'.$inputCount.'" value="'.$confkey.'">'; print '<input type="hidden" name="action" value="setModuleOptions">'; - if ($type=='textarea') { + if ($type == 'textarea') { print '<textarea '.$metascompil.' >'.dol_htmlentities($conf->global->{$confkey}).'</textarea>'; - }elseif($type=='input'){ + }elseif ($type == 'input') { print '<input '.$metascompil.' />'; } - else{ + else { // custom print $type; } diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index e5cfb1574dc..89801a357dd 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -140,8 +140,8 @@ $isdraft = (($object->statut == Facture::STATUS_DRAFT) ? 1 : 0); $result = restrictedArea($user, 'facture', $id, '', '', 'fk_soc', $fieldid, $isdraft); // retained warranty invoice available type -$retainedWarrantyInvoiceAvailableType=array(); -if(!empty($conf->global->INVOICE_USE_RETAINED_WARRANTY)) { +$retainedWarrantyInvoiceAvailableType = array(); +if (!empty($conf->global->INVOICE_USE_RETAINED_WARRANTY)) { $retainedWarrantyInvoiceAvailableType = explode('+', $conf->global->INVOICE_USE_RETAINED_WARRANTY); } @@ -952,7 +952,7 @@ if (empty($reshook)) } $discount->tva_tx = abs($tva_tx); - $discount->vat_src_code =$vat_src_code; + $discount->vat_src_code = $vat_src_code; $result = $discount->create($user); if ($result < 0) @@ -1362,11 +1362,11 @@ if (empty($reshook)) $object->situation_cycle_ref = $object->newCycle(); } - if(in_array($object->type, $retainedWarrantyInvoiceAvailableType)){ + if (in_array($object->type, $retainedWarrantyInvoiceAvailableType)) { $object->retained_warranty = GETPOST('retained_warranty', 'int'); $object->retained_warranty_fk_cond_reglement = GETPOST('retained_warranty_fk_cond_reglement', 'int'); } - else{ + else { $object->retained_warranty = 0; $object->retained_warranty_fk_cond_reglement = 0; } @@ -1772,15 +1772,15 @@ if (empty($reshook)) $object->origin_id = $originid; // retained warranty - if(!empty($conf->global->INVOICE_USE_RETAINED_WARRANTY)) + if (!empty($conf->global->INVOICE_USE_RETAINED_WARRANTY)) { $retained_warranty = GETPOST('retained_warranty', 'int'); - if(price2num($retained_warranty) > 0) + if (price2num($retained_warranty) > 0) { - $object->retained_warranty = price2num($retained_warranty); + $object->retained_warranty = price2num($retained_warranty); } - if(GETPOST('retained_warranty_fk_cond_reglement', 'int') > 0) + if (GETPOST('retained_warranty_fk_cond_reglement', 'int') > 0) { $object->retained_warranty_fk_cond_reglement = GETPOST('retained_warranty_fk_cond_reglement', 'int'); } @@ -2629,10 +2629,10 @@ if (empty($reshook)) $pa_ht = $originLine->pa_ht; $label = $originLine->label; $array_options = $originLine->array_options; - if($object->type == Facture::TYPE_SITUATION){ + if ($object->type == Facture::TYPE_SITUATION) { $situation_percent = 0; } - else{ + else { $situation_percent = 100; } $fk_prev_id = ''; @@ -3393,19 +3393,19 @@ if ($action == 'create') print '</td></tr>'; - if($conf->global->INVOICE_USE_RETAINED_WARRANTY){ + if ($conf->global->INVOICE_USE_RETAINED_WARRANTY) { $rwStyle = 'display:none;'; - if(in_array(GETPOST('type', 'int'), $retainedWarrantyInvoiceAvailableType)){ + if (in_array(GETPOST('type', 'int'), $retainedWarrantyInvoiceAvailableType)) { $rwStyle = ''; } $retained_warranty = GETPOST('retained_warranty', 'int'); - if(empty($retained_warranty)){ - if(!empty($objectsrc->retained_warranty)){ // use previous situation value + if (empty($retained_warranty)) { + if (!empty($objectsrc->retained_warranty)) { // use previous situation value $retained_warranty = $objectsrc->retained_warranty; } } - $retained_warranty_js_default = !empty($retained_warranty)?$retained_warranty:$conf->global->INVOICE_SITUATION_DEFAULT_RETAINED_WARRANTY_PERCENT; + $retained_warranty_js_default = !empty($retained_warranty) ? $retained_warranty : $conf->global->INVOICE_SITUATION_DEFAULT_RETAINED_WARRANTY_PERCENT; print '<tr class="retained-warranty-line" style="'.$rwStyle.'" ><td class="nowrap">'.$langs->trans('RetainedWarranty').'</td><td colspan="2">'; print '<input id="new-situation-invoice-retained-warranty" name="retained_warranty" type="number" value="'.$retained_warranty.'" step="0.01" min="0" max="100" />%'; @@ -3413,11 +3413,11 @@ if ($action == 'create') // Retained warranty payment term print '<tr class="retained-warranty-line" style="'.$rwStyle.'" ><td class="nowrap">'.$langs->trans('PaymentConditionsShortRetainedWarranty').'</td><td colspan="2">'; $retained_warranty_fk_cond_reglement = GETPOST('retained_warranty_fk_cond_reglement', 'int'); - if(empty($retained_warranty_fk_cond_reglement)){ + if (empty($retained_warranty_fk_cond_reglement)) { $retained_warranty_fk_cond_reglement = $conf->global->INVOICE_SITUATION_DEFAULT_RETAINED_WARRANTY_COND_ID; - if(!empty($objectsrc->retained_warranty_fk_cond_reglement)){ // use previous situation value + if (!empty($objectsrc->retained_warranty_fk_cond_reglement)) { // use previous situation value $retained_warranty_fk_cond_reglement = $objectsrc->retained_warranty_fk_cond_reglement; - }else{ + } else { $retained_warranty_fk_cond_reglement = $conf->global->INVOICE_SITUATION_DEFAULT_RETAINED_WARRANTY_COND_ID; } } diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 62acafe4bf9..d872b02a35d 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -813,12 +813,12 @@ class Facture extends CommonInvoice $vatrate = $line->tva_tx; if ($line->vat_src_code && !preg_match('/\(.*\)/', $vatrate)) $vatrate .= ' ('.$line->vat_src_code.')'; - if(!empty($conf->global->MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION)) { - $originid=$line->origin_id; - $origintype=$line->origin; + if (!empty($conf->global->MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION)) { + $originid = $line->origin_id; + $origintype = $line->origin; } else { - $originid=$line->id; - $origintype=$this->element; + $originid = $line->id; + $origintype = $this->element; } $result = $this->addline( @@ -3734,44 +3734,44 @@ class Facture extends CommonInvoice } if (!empty($addon)) { - dol_syslog("Call getNextNumRef with " . $addonConstName . " = " . $conf->global->FACTURE_ADDON . ", thirdparty=" . $soc->nom . ", type=" . $soc->typent_code, LOG_DEBUG); + dol_syslog("Call getNextNumRef with ".$addonConstName." = ".$conf->global->FACTURE_ADDON.", thirdparty=".$soc->nom.", type=".$soc->typent_code, LOG_DEBUG); $mybool = false; - $file = $addon . '.php'; + $file = $addon.'.php'; $classname = $addon; // Include file with class $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']); foreach ($dirmodels as $reldir) { - $dir = dol_buildpath($reldir . 'core/modules/' . $moduleName . '/'); + $dir = dol_buildpath($reldir.'core/modules/'.$moduleName.'/'); // Load file with numbering class (if found) - if (is_file($dir . $file) && is_readable($dir . $file)) { - $mybool |= include_once $dir . $file; + if (is_file($dir.$file) && is_readable($dir.$file)) { + $mybool |= include_once $dir.$file; } } // For compatibility if (!$mybool) { - $file = $addon . '/' . $addon . '.modules.php'; - $classname = 'mod_' . $moduleName . '_' . $addon; + $file = $addon.'/'.$addon.'.modules.php'; + $classname = 'mod_'.$moduleName.'_'.$addon; $classname = preg_replace('/\-.*$/', '', $classname); // Include file with class foreach ($conf->file->dol_document_root as $dirroot) { - $dir = $dirroot . '/core/modules/' . $moduleName . '/'; + $dir = $dirroot.'/core/modules/'.$moduleName.'/'; // Load file with numbering class (if found) - if (is_file($dir . $file) && is_readable($dir . $file)) { - $mybool |= include_once $dir . $file; + if (is_file($dir.$file) && is_readable($dir.$file)) { + $mybool |= include_once $dir.$file; } } } if (!$mybool) { - dol_print_error('', 'Failed to include file ' . $file); + dol_print_error('', 'Failed to include file '.$file); return ''; } @@ -3790,7 +3790,7 @@ class Facture extends CommonInvoice return $numref; } else { $langs->load('errors'); - print $langs->trans('Error') . ' ' . $langs->trans('ErrorModuleSetupNotComplete', $langs->transnoentitiesnoconv($moduleSourceName)); + print $langs->trans('Error').' '.$langs->trans('ErrorModuleSetupNotComplete', $langs->transnoentitiesnoconv($moduleSourceName)); return ''; } } @@ -4756,7 +4756,7 @@ class Facture extends CommonInvoice // note : we dont need to test INVOICE_USE_RETAINED_WARRANTY because if $this->retained_warranty is not empty it's because it was set when this conf was active $displayWarranty = false; - if(!empty($this->retained_warranty)) { + if (!empty($this->retained_warranty)) { $displayWarranty = true; if ($this->type == Facture::TYPE_SITUATION && !empty($conf->global->INVOICE_RETAINED_WARRANTY_LIMITED_TO_FINAL_SITUATION)) { @@ -4795,7 +4795,7 @@ class Facture extends CommonInvoice $retainedWarrantyAmount = 0; // Billed - retained warranty - if($this->type == Facture::TYPE_SITUATION && !empty($conf->global->INVOICE_RETAINED_WARRANTY_LIMITED_TO_FINAL_SITUATION)) + if ($this->type == Facture::TYPE_SITUATION && !empty($conf->global->INVOICE_RETAINED_WARRANTY_LIMITED_TO_FINAL_SITUATION)) { $displayWarranty = true; // Check if this situation invoice is 100% for real @@ -4835,7 +4835,7 @@ class Facture extends CommonInvoice $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT); } - if($rounding>0){ + if ($rounding > 0) { return round($retainedWarrantyAmount, $rounding); } diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index 5c43f4f83a1..4bcfbafa9d8 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -365,7 +365,7 @@ abstract class CommonDocGenerator $remain_to_pay = $sumpayed - $sumdeposit - $sumcreditnote; if ($object->fk_account > 0) { - require_once DOL_DOCUMENT_ROOT .'/compta/bank/class/account.class.php'; + require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $bank_account = new Account($this->db); $bank_account->fetch($object->fk_account); } diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 2dcabbcafaa..76e910bdecd 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -352,7 +352,7 @@ function dolWebsiteOutput($content, $contenttype = 'html', $containerid = '') $content = str_replace(' contenteditable="true"', ' contenteditable="false"', $content); - if (! empty($conf->global->WEBSITE_ADD_CSS_TO_BODY)) { + if (!empty($conf->global->WEBSITE_ADD_CSS_TO_BODY)) { $content = str_replace('<body id="bodywebsite" class="bodywebsite', '<body id="bodywebsite" class="bodywebsite '.$conf->global->WEBSITE_ADD_CSS_TO_BODY, $content); } diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index 7d64a1a7499..a9be157d126 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -451,7 +451,7 @@ class modSociete extends DolibarrModules 's.fk_multicurrency' => 'MulticurrencyUsed', 's.multicurrency_code' => 'MulticurrencyCurrency' ); - if (! empty($conf->global->PRODUIT_MULTIPRICES)) $this->import_fields_array[$r]['s.price_level']='PriceLevel'; + if (!empty($conf->global->PRODUIT_MULTIPRICES)) $this->import_fields_array[$r]['s.price_level'] = 'PriceLevel'; // Add extra fields $sql = "SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'societe' AND entity IN (0, ".$conf->entity.")"; $resql = $this->db->query($sql); diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 4f4334e4125..e245ec2cf4e 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4938,7 +4938,7 @@ class Product extends CommonObject { $filterStatus = '4'; if (isset($includedraftpoforvirtual)) $filterStatus = '0,'.$filterStatus; - $result = $this->load_stats_reception(0, $filterStatus, 1); // Use same tables than when module reception is not used. + $result = $this->load_stats_reception(0, $filterStatus, 1); // Use same tables than when module reception is not used. if ($result < 0) dol_print_error($this->db, $this->error); $stock_reception_fournisseur = $this->stats_reception['qty']; } diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index d57db91aa82..dbdb6cb6f42 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -64,14 +64,14 @@ if ($id > 0 || !empty($ref)) * Actions */ -if ($cancel) $action =''; +if ($cancel) $action = ''; // Action association d'un sousproduit if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->service->creer)) { - $error=0; + $error = 0; $maxprod = GETPOST("max_prod", 'int'); - for ($i=0; $i < $maxprod; $i++) + for ($i = 0; $i < $maxprod; $i++) { $qty = price2num(GETPOST("prod_qty_".$i, 'alpha'), 'MS'); if ($qty > 0) @@ -109,13 +109,13 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se } } - if (! $error) + if (!$error) { header("Location: ".$_SERVER["PHP_SELF"].'?id='.$object->id); exit; } } -elseif($action==='save_composed_product') +elseif ($action === 'save_composed_product') { $TProduct = GETPOST('TProduct', 'array'); if (!empty($TProduct)) @@ -540,38 +540,38 @@ if ($id > 0 || !empty($ref)) if ($resql) { $num = $db->num_rows($resql); - $i=0; + $i = 0; - if($num == 0) print '<tr><td colspan="4">'.$langs->trans("NoMatchFound").'</td></tr>'; + if ($num == 0) print '<tr><td colspan="4">'.$langs->trans("NoMatchFound").'</td></tr>'; $MAX = 100; while ($i < min($num, $MAX)) { $objp = $db->fetch_object($resql); - if($objp->rowid != $id) + if ($objp->rowid != $id) { // check if a product is not already a parent product of this one - $prod_arbo=new Product($db); - $prod_arbo->id=$objp->rowid; + $prod_arbo = new Product($db); + $prod_arbo->id = $objp->rowid; // This type is not supported (not required to have virtual products working). if ($prod_arbo->type == Product::TYPE_ASSEMBLYKIT || $prod_arbo->type == Product::TYPE_STOCKKIT) { - $is_pere=0; + $is_pere = 0; $prod_arbo->get_sousproduits_arbo(); // associations sousproduits $prods_arbo = $prod_arbo->get_arbo_each_prod(); if (count($prods_arbo) > 0) { - foreach($prods_arbo as $key => $value) + foreach ($prods_arbo as $key => $value) { - if ($value[1]==$id) + if ($value[1] == $id) { - $is_pere=1; + $is_pere = 1; } } } - if ($is_pere==1) + if ($is_pere == 1) { $i++; continue; diff --git a/htdocs/societe/class/api_thirdparties.class.php b/htdocs/societe/class/api_thirdparties.class.php index 1100432c854..c50a746c444 100644 --- a/htdocs/societe/class/api_thirdparties.class.php +++ b/htdocs/societe/class/api_thirdparties.class.php @@ -129,7 +129,7 @@ class Thirdparties extends DolibarrApi $sql .= " FROM ".MAIN_DB_PREFIX."societe as t"; if ($category > 0) { if ($mode != 4) $sql .= ", ".MAIN_DB_PREFIX."categorie_societe as c"; - if (!in_array($mode, array(1,2,3))) $sql .= ", ".MAIN_DB_PREFIX."categorie_fournisseur as cc"; + if (!in_array($mode, array(1, 2, 3))) $sql .= ", ".MAIN_DB_PREFIX."categorie_fournisseur as cc"; } if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale $sql .= ", ".MAIN_DB_PREFIX."c_stcomm as st"; diff --git a/htdocs/user/class/usergroup.class.php b/htdocs/user/class/usergroup.class.php index 2cf11c3851f..bc5396e9f51 100644 --- a/htdocs/user/class/usergroup.class.php +++ b/htdocs/user/class/usergroup.class.php @@ -118,12 +118,12 @@ class UserGroup extends CommonObject /** * @var array List of child tables. To test if we can delete object. */ - protected $childtables=array(); + protected $childtables = array(); /** * @var array List of child tables. To know object to delete on cascade. */ - protected $childtablesoncascade = array('usergroup_rights','usergroup_user'); + protected $childtablesoncascade = array('usergroup_rights', 'usergroup_user'); /** @@ -162,7 +162,7 @@ class UserGroup extends CommonObject $this->name = $this->nom; // For compatibility with field name - if($result) + if ($result) { if ($load_members) { diff --git a/htdocs/user/group/perms.php b/htdocs/user/group/perms.php index 8efd7ef38e2..70030dbf1af 100644 --- a/htdocs/user/group/perms.php +++ b/htdocs/user/group/perms.php @@ -77,7 +77,7 @@ if (empty($reshook)) { $editgroup = new Usergroup($db); $result = $editgroup->fetch($id); if ($result > 0) { - $result= $editgroup->addrights($rights, $module, '', $entity); + $result = $editgroup->addrights($rights, $module, '', $entity); if ($result < 0) { setEventMessages($editgroup->error, $editgroup->errors, 'errors'); } diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 32c51d3eef1..0f684ca5232 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -327,8 +327,8 @@ if ($cancel) $savbacktopage = $backtopage; $backtopage = $_SERVER["PHP_SELF"].'?file_manager=1&website='.$websitekey.'&pageid='.$pageid.(GETPOST('section_dir', 'alpha') ? '§ion_dir='.urlencode(GETPOST('section_dir', 'alpha')) : ''); // used after a confirm_deletefile into actions_linkedfiles.inc.php -if ($sortfield) $backtopage.='&sortfield='.$sortfield; -if ($sortorder) $backtopage.='&sortorder='.$sortorder; +if ($sortfield) $backtopage .= '&sortfield='.$sortfield; +if ($sortorder) $backtopage .= '&sortorder='.$sortorder; include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; $backtopage = $savbacktopage; @@ -2133,7 +2133,7 @@ print '<div>'; // Add a margin under toolbar ? $style = ''; -if ($action != 'preview' && $action != 'editcontent' && $action != 'editsource' && ! GETPOST('createpagefromclone', 'alphanohtml')) $style = ' margin-bottom: 5px;'; +if ($action != 'preview' && $action != 'editcontent' && $action != 'editsource' && !GETPOST('createpagefromclone', 'alphanohtml')) $style = ' margin-bottom: 5px;'; if (!GETPOST('hide_websitemenu')) @@ -2437,7 +2437,7 @@ if (!GETPOST('hide_websitemenu')) $preselectedlanguage = GETPOST('newlang', 'aZ09') ? GETPOST('newlang', 'aZ09') : ($objectpage->lang ? $objectpage->lang : $langs->defaultlang); $onlylang = array(); if ($website->otherlang) { - foreach(explode(',', $website->otherlang) as $langkey) { + foreach (explode(',', $website->otherlang) as $langkey) { $onlylang[$langkey] = $langkey; } $textifempty = 1; From 93735bf9cd5c96388736074b53b8e07e375c77e4 Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Thu, 23 Apr 2020 16:55:36 +0000 Subject: [PATCH 165/780] Fixing style errors. --- htdocs/fichinter/class/fichinter.class.php | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 1a4a6817892..025a2e13a88 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -961,15 +961,15 @@ class Fichinter extends CommonObject } } - if (!$error) + if (!$error) { - $main = MAIN_DB_PREFIX . 'fichinterdet'; - $ef = $main . "_extrafields"; - $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_fichinter = " . $this->id . ")"; + $main = MAIN_DB_PREFIX . 'fichinterdet'; + $ef = $main . "_extrafields"; + $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_fichinter = " . $this->id . ")"; - $resql = $this->db->query($sql); - if (!$resql) $error++; - } + $resql = $this->db->query($sql); + if (!$resql) $error++; + } if (!$error) { @@ -1715,11 +1715,11 @@ class FichinterLigne extends CommonObjectLine $this->db->begin(); $result = $this->deleteExtraFields(); - if ($result < 0) { - $error++; - $this->db->rollback(); - return -1; - } + if ($result < 0) { + $error++; + $this->db->rollback(); + return -1; + } $sql = "DELETE FROM ".MAIN_DB_PREFIX."fichinterdet WHERE rowid = ".$this->id; $resql = $this->db->query($sql); From a70be95760a3389161cbd2d49b6c82a13c05b1a0 Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 19:00:47 +0200 Subject: [PATCH 166/780] Clean line extrafields when deleting contrat --- htdocs/contrat/class/contrat.class.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index e40eba40ee2..b265ab59cde 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -1234,6 +1234,22 @@ class Contrat extends CommonObject } } + if (!$error) + { + // Delete contratdet extrafields + $main = MAIN_DB_PREFIX . 'contratdet'; + $ef = $main . "_extrafields"; + $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_contrat = " . $this->id . ")"; + + dol_syslog(get_class($this)."::delete contratdet_extrafields", LOG_DEBUG); + $resql = $this->db->query($sql); + if (!$resql) + { + $this->error = $this->db->error(); + $error++; + } + } + if (!$error) { // Delete contratdet From b8a4c0d83b945214548aa578dfdbd1396624d868 Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Thu, 23 Apr 2020 17:02:57 +0000 Subject: [PATCH 167/780] Fixing style errors. --- htdocs/contrat/class/contrat.class.php | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index b265ab59cde..9d90520e1d7 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -1234,21 +1234,21 @@ class Contrat extends CommonObject } } - if (!$error) + if (!$error) { - // Delete contratdet extrafields - $main = MAIN_DB_PREFIX . 'contratdet'; - $ef = $main . "_extrafields"; - $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_contrat = " . $this->id . ")"; + // Delete contratdet extrafields + $main = MAIN_DB_PREFIX . 'contratdet'; + $ef = $main . "_extrafields"; + $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_contrat = " . $this->id . ")"; - dol_syslog(get_class($this)."::delete contratdet_extrafields", LOG_DEBUG); - $resql = $this->db->query($sql); - if (!$resql) - { - $this->error = $this->db->error(); - $error++; - } - } + dol_syslog(get_class($this)."::delete contratdet_extrafields", LOG_DEBUG); + $resql = $this->db->query($sql); + if (!$resql) + { + $this->error = $this->db->error(); + $error++; + } + } if (!$error) { From 3ea8d1895bef4256e8053bc41d5d8118ef44c3e2 Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 19:09:05 +0200 Subject: [PATCH 168/780] Clean line extrafields when deleting expedition --- htdocs/expedition/class/expedition.class.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index bf20ac42611..006db734a0a 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1280,15 +1280,23 @@ class Expedition extends CommonObject if (!$error) { + $main = MAIN_DB_PREFIX . 'expeditiondet'; + $ef = $main . "_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_expedition = " . $this->id . ")"; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet"; $sql .= " WHERE fk_expedition = ".$this->id; - if ($this->db->query($sql)) + if ($this->db->query($sqlef) && $this->db->query($sql)) { // Delete linked object $res = $this->deleteObjectLinked(); if ($res < 0) $error++; + // delete extrafields + $res = $this->deleteExtraFields(); + if ($res < 0) $error++; + if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."expedition"; From b4fbb8654824da0c3c50c22233f43b269c22c313 Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Thu, 23 Apr 2020 19:22:25 +0200 Subject: [PATCH 169/780] Clean line extrafields when deleting reception --- .../class/fournisseur.commande.dispatch.class.php | 12 ++++++++++++ htdocs/reception/class/reception.class.php | 13 +++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php index b453653c681..bd71918d92d 100644 --- a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php +++ b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php @@ -303,6 +303,7 @@ class CommandeFournisseurDispatch extends CommonObject $this->batch = $obj->batch; $this->eatby = $this->db->jdate($obj->eatby); $this->sellby = $this->db->jdate($obj->sellby); + $this->fetch_optionals(); } $this->db->free($resql); @@ -439,6 +440,16 @@ class CommandeFournisseurDispatch extends CommonObject } } + // Remove extrafields + if (!$error) { + $result = $this->deleteExtraFields(); + if ($result < 0) + { + $error++; + dol_syslog(get_class($this)."::delete error deleteExtraFields ".$this->error, LOG_ERR); + } + } + if (! $error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element; @@ -689,6 +700,7 @@ class CommandeFournisseurDispatch extends CommonObject $line->batch = $obj->batch; $line->eatby = $this->db->jdate($obj->eatby); $line->sellby = $this->db->jdate($obj->sellby); + $line->fetch_optionals(); $this->lines[$line->id] = $line; } diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 5552d45380e..17e9ea9c1ec 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -763,8 +763,13 @@ class Reception extends CommonObject } // extrafields + $line->array_options = $supplierorderline->array_options; if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_options) && count($array_options) > 0) // For avoid conflicts if trigger used - $line->array_options = $array_options; + { + foreach ($array_options as $key => $value) { + $line->array_options[$key] = $value; + } + } $line->fk_product = $fk_product; $line->fk_commande = $supplierorderline->fk_commande; @@ -938,10 +943,14 @@ class Reception extends CommonObject if (!$error) { + $main = MAIN_DB_PREFIX . 'commande_fournisseur_dispatch'; + $ef = $main . "_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_reception = " . $this->id . ")"; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."commande_fournisseur_dispatch"; $sql .= " WHERE fk_reception = ".$this->id; - if ($this->db->query($sql)) + if ($this->db->query($sqlef) && $this->db->query($sql)) { // Delete linked object $res = $this->deleteObjectLinked(); From ababad540a311339e1b5266b586097cdad9b22c1 Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Thu, 23 Apr 2020 17:29:52 +0000 Subject: [PATCH 170/780] Fixing style errors. --- .../fournisseur.commande.dispatch.class.php | 16 ++++++++-------- htdocs/reception/class/reception.class.php | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php index bd71918d92d..cec23c590b2 100644 --- a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php +++ b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php @@ -441,14 +441,14 @@ class CommandeFournisseurDispatch extends CommonObject } // Remove extrafields - if (!$error) { - $result = $this->deleteExtraFields(); - if ($result < 0) - { - $error++; - dol_syslog(get_class($this)."::delete error deleteExtraFields ".$this->error, LOG_ERR); - } - } + if (!$error) { + $result = $this->deleteExtraFields(); + if ($result < 0) + { + $error++; + dol_syslog(get_class($this)."::delete error deleteExtraFields ".$this->error, LOG_ERR); + } + } if (! $error) { diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 17e9ea9c1ec..ce718fda964 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -766,10 +766,10 @@ class Reception extends CommonObject $line->array_options = $supplierorderline->array_options; if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_options) && count($array_options) > 0) // For avoid conflicts if trigger used { - foreach ($array_options as $key => $value) { - $line->array_options[$key] = $value; - } - } + foreach ($array_options as $key => $value) { + $line->array_options[$key] = $value; + } + } $line->fk_product = $fk_product; $line->fk_commande = $supplierorderline->fk_commande; From 2ba6e65feb6c29b4cbdf409629ff5fb9069e4cc6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 20:03:41 +0200 Subject: [PATCH 171/780] Fix label --- htdocs/product/stock/class/entrepot.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index 5f98de4993b..9f764f7d412 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -272,6 +272,7 @@ class Entrepot extends CommonObject $error = 0; if (empty($id)) $id = $this->id; + if (empty($this->label)) $this->label = $this->libelle; // For backward compatibility // Check if new parent is already a child of current warehouse if (!empty($this->fk_parent)) @@ -285,7 +286,7 @@ class Entrepot extends CommonObject } } - $this->libelle = trim($this->libelle); + $this->label = trim($this->label); $this->description = trim($this->description); $this->lieu = trim($this->lieu); @@ -296,7 +297,7 @@ class Entrepot extends CommonObject $this->country_id = ($this->country_id > 0 ? $this->country_id : 0); $sql = "UPDATE ".MAIN_DB_PREFIX."entrepot "; - $sql .= " SET ref = '".$this->db->escape($this->libelle)."'"; + $sql .= " SET ref = '".$this->db->escape($this->label)."'"; $sql .= ", fk_parent = ".(($this->fk_parent > 0) ? $this->fk_parent : "NULL"); $sql .= ", description = '".$this->db->escape($this->description)."'"; $sql .= ", statut = ".$this->statut; From 5756e3be09e2d41fb367559fe597009218941993 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 23 Apr 2020 20:45:51 +0200 Subject: [PATCH 172/780] Look and feel v12 --- htdocs/contrat/agenda.php | 13 ++++++++----- htdocs/contrat/document.php | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/htdocs/contrat/agenda.php b/htdocs/contrat/agenda.php index 2b7ca20c6e8..0055b0ba428 100644 --- a/htdocs/contrat/agenda.php +++ b/htdocs/contrat/agenda.php @@ -146,14 +146,16 @@ if ($id > 0) $morehtmlref .= $form->editfieldval("", 'ref', $object->ref, $object, $user->rights->contrat->creer, 'string', '', 0, 2); } + $permtoedit = 0; + $morehtmlref .= '<div class="refidno">'; // Ref customer - $morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_customer', $object->ref_customer, $object, $user->rights->contrat->creer, 'string', '', 0, 1); - $morehtmlref .= $form->editfieldval("RefCustomer", 'ref_customer', $object->ref_customer, $object, $user->rights->contrat->creer, 'string', '', null, null, '', 1, 'getFormatedCustomerRef'); + $morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_customer', $object->ref_customer, $object, $permtoedit, 'string', '', 0, 1); + $morehtmlref .= $form->editfieldval("RefCustomer", 'ref_customer', $object->ref_customer, $object, $permtoedit, 'string', '', null, null, '', 1, 'getFormatedCustomerRef'); // Ref supplier $morehtmlref .= '<br>'; - $morehtmlref .= $form->editfieldkey("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $user->rights->contrat->creer, 'string', '', 0, 1); - $morehtmlref .= $form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $user->rights->contrat->creer, 'string', '', null, null, '', 1, 'getFormatedSupplierRef'); + $morehtmlref .= $form->editfieldkey("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $permtoedit, 'string', '', 0, 1); + $morehtmlref .= $form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $permtoedit, 'string', '', null, null, '', 1, 'getFormatedSupplierRef'); // Thirdparty $morehtmlref .= '<br>'.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1); if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/contrat/list.php?socid='.$object->thirdparty->id.'&search_name='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherContracts").'</a>)'; @@ -165,7 +167,8 @@ if ($id > 0) if ($user->rights->contrat->creer) { if ($action != 'classify') { - $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> : '; + //$morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a>'; + $morehtmlref .= ' : '; } if ($action == 'classify') { //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); diff --git a/htdocs/contrat/document.php b/htdocs/contrat/document.php index 330db63e30c..7d47b5102ac 100644 --- a/htdocs/contrat/document.php +++ b/htdocs/contrat/document.php @@ -136,6 +136,7 @@ if ($object->id) $morehtmlref .= $form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, 0, 'string', '', null, null, '', 1, 'getFormatedSupplierRef'); // Thirdparty $morehtmlref .= '<br>'.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1); + if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/contrat/list.php?socid='.$object->thirdparty->id.'&search_name='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherContracts").'</a>)'; // Project if (!empty($conf->projet->enabled)) { From dd070cc68046a2ba911d9222e7ab61e8d7044213 Mon Sep 17 00:00:00 2001 From: Matt Sidnell <54064522+pstructures@users.noreply.github.com> Date: Thu, 23 Apr 2020 20:37:15 +0100 Subject: [PATCH 173/780] Update commonobject.class.php --- htdocs/core/class/commonobject.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 7bbf7b6475c..72eff12edca 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1359,7 +1359,7 @@ abstract class CommonObject } if ($conf->{$modulename}->enabled) { $libelle_element = $langs->trans('ContactDefault_'.$obj->element); - $transkey = "TypeContact_".$this->element."_".$source."_".$obj->code; + $transkey = "TypeContact_".$obj->element."_".$source."_".$obj->code; $libelle_type = ($langs->trans($transkey) != $transkey ? $langs->trans($transkey) : $obj->libelle); if (empty($option)) $tab[$obj->rowid] = $libelle_element.' - '.$libelle_type; From 1aafd4667b70148265d79ef44731e659c9b1cc3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Fri, 24 Apr 2020 11:57:23 +0200 Subject: [PATCH 174/780] fix countable php7 warning --- htdocs/core/lib/sendings.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/sendings.lib.php b/htdocs/core/lib/sendings.lib.php index 6dc78611c26..96a51815b09 100644 --- a/htdocs/core/lib/sendings.lib.php +++ b/htdocs/core/lib/sendings.lib.php @@ -388,7 +388,7 @@ function show_list_sending_receive($origin,$origin_id,$filter='') //var_dump($expedition->linkedObjects); $receiving=''; - if (count($expedition->linkedObjects['delivery']) > 0) $receiving=reset($expedition->linkedObjects['delivery']); // Take first link + if (!empty($expedition->linkedObjects['delivery'])) $receiving=reset($expedition->linkedObjects['delivery']); // Take first link if (! empty($receiving)) { From cab4f35438a391fff7301c21320bc2fb7efbf1a0 Mon Sep 17 00:00:00 2001 From: Tobias Sekan <tobias.sekan@startmail.com> Date: Fri, 24 Apr 2020 14:01:08 +0200 Subject: [PATCH 175/780] fix missing vcard values --- htdocs/contact/vcard.php | 60 ++++++++++++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 15 deletions(-) diff --git a/htdocs/contact/vcard.php b/htdocs/contact/vcard.php index 297cadac0be..bf1e8528960 100644 --- a/htdocs/contact/vcard.php +++ b/htdocs/contact/vcard.php @@ -2,6 +2,7 @@ /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com> + * Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com> * * 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 @@ -37,19 +38,19 @@ $id = GETPOST('id', 'int'); $result = restrictedArea($user, 'contact', $id, 'socpeople&societe'); -$result = $contact->fetch($id); +$result=$contact->fetch($id); if ($result <= 0) { dol_print_error($contact->error); exit; } -$physicalperson = 1; +$physicalperson=1; $company = new Societe($db); if ($contact->socid) { - $result = $company->fetch($contact->socid); + $result=$company->fetch($contact->socid); } // We create VCard @@ -57,29 +58,58 @@ $v = new vCard(); $v->setProdId('Dolibarr '.DOL_VERSION); $v->setUid('DOLIBARR-CONTACTID-'.$contact->id); -$v->setName($contact->lastname, $contact->firstname, "", "", ""); -$v->setFormattedName($contact->getFullName($langs)); +$v->setName($contact->lastname, $contact->firstname, "", $contact->civility, ""); +$v->setFormattedName($contact->getFullName($langs, 1)); -// By default, all informations are for work (except phone_perso and phone_mobile) $v->setPhoneNumber($contact->phone_pro, "TYPE=WORK;VOICE"); +//$v->setPhoneNumber($contact->phone_perso,"TYPE=HOME;VOICE"); $v->setPhoneNumber($contact->phone_mobile, "TYPE=CELL;VOICE"); $v->setPhoneNumber($contact->fax, "TYPE=WORK;FAX"); -$v->setAddress("", "", $contact->address, $contact->town, "", $contact->zip, ($contact->country_code ? $contact->country : ''), "TYPE=WORK;POSTAL"); -$v->setLabel("", "", $contact->address, $contact->town, "", $contact->zip, ($contact->country_code ? $contact->country : ''), "TYPE=WORK"); -$v->setEmail($contact->email, 'TYPE=PREF,INTERNET'); -$v->setNote($contact->note); +$country = $contact->country_code ? $contact->country : '' ; +$v->setAddress("", "", $contact->address, $contact->town, $contact->state, $contact->zip, $country, "TYPE=WORK;POSTAL"); +$v->setLabel("", "", $contact->address, $contact->town, $contact->state, $contact->zip, $country, "TYPE=WORK"); + +$v->setEmail($contact->email); +$v->setNote($contact->note); $v->setTitle($contact->poste); // Data from linked company if ($company->id) { $v->setURL($company->url, "TYPE=WORK"); - if (!$contact->phone_pro) $v->setPhoneNumber($company->phone, "TYPE=WORK;VOICE"); - if (!$contact->fax) $v->setPhoneNumber($company->fax, "TYPE=WORK;FAX"); - if (!$contact->zip) $v->setAddress("", "", $company->address, $company->town, "", $company->zip, $company->country, "TYPE=WORK;POSTAL"); - if (empty($contact->email)) $v->setEmail($company->email, 'TYPE=PREF,INTERNET'); + if (! $contact->phone_pro) $v->setPhoneNumber($company->phone, "TYPE=WORK;VOICE"); + if (! $contact->fax) $v->setPhoneNumber($company->fax, "TYPE=WORK;FAX"); + if (! $contact->zip) $v->setAddress("", "", $company->address, $company->town, $company->state, $company->zip, $company->country, "TYPE=WORK;POSTAL"); + + // when company e-mail is empty, use only contact e-mail + if (empty(trim($company->email))) + { + // was set before, don't set twice + } + // when contact e-mail is empty, use only company e-mail + elseif (empty(trim($contact->email))) + { + $v->setEmail($company->email); + } + // when e-mail domain of contact and company are the same, use contact e-mail at first (and company e-mail at second) + elseif (strtolower(end(explode("@", $contact->email))) == strtolower(end(explode("@", $company->email)))) + { + $v->setEmail($contact->email); + + // support by Microsoft Outlook (2019 and possible earlier) + $v->setEmail($company->email, 'INTERNET'); + } + // when e-mail of contact and company complete different use company e-mail at first (and contact e-mail at second) + else + { + $v->setEmail($company->email); + + // support by Microsoft Outlook (2019 and possible earlier) + $v->setEmail($contact->email, 'INTERNET'); + } + // Si contact lie a un tiers non de type "particulier" if ($contact->typent_code != 'TE_PRIVATE') $v->setOrg($company->name); } @@ -95,7 +125,7 @@ $db->close(); $output = $v->getVCard(); -$filename = trim(urldecode($v->getFileName())); // "Nom prenom.vcf" +$filename =trim(urldecode($v->getFileName())); // "Nom prenom.vcf" $filenameurlencoded = dol_sanitizeFileName(urlencode($filename)); //$filename = dol_sanitizeFileName($filename); From 5d9432e4d04f8f73d0f9767e54934dc20086689d Mon Sep 17 00:00:00 2001 From: Tobias Sekan <tobias.sekan@startmail.com> Date: Fri, 24 Apr 2020 14:02:54 +0200 Subject: [PATCH 176/780] fix style --- htdocs/contact/vcard.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/contact/vcard.php b/htdocs/contact/vcard.php index bf1e8528960..75362491424 100644 --- a/htdocs/contact/vcard.php +++ b/htdocs/contact/vcard.php @@ -38,19 +38,19 @@ $id = GETPOST('id', 'int'); $result = restrictedArea($user, 'contact', $id, 'socpeople&societe'); -$result=$contact->fetch($id); +$result = $contact->fetch($id); if ($result <= 0) { dol_print_error($contact->error); exit; } -$physicalperson=1; +$physicalperson = 1; $company = new Societe($db); if ($contact->socid) { - $result=$company->fetch($contact->socid); + $result = $company->fetch($contact->socid); } // We create VCard @@ -125,7 +125,7 @@ $db->close(); $output = $v->getVCard(); -$filename =trim(urldecode($v->getFileName())); // "Nom prenom.vcf" +$filename = trim(urldecode($v->getFileName())); // "Nom prenom.vcf" $filenameurlencoded = dol_sanitizeFileName(urlencode($filename)); //$filename = dol_sanitizeFileName($filename); From 05bb94cd3f105a71ec81162f507dd6cf2522833c Mon Sep 17 00:00:00 2001 From: Tobias Sekan <tobias.sekan@startmail.com> Date: Fri, 24 Apr 2020 14:12:43 +0200 Subject: [PATCH 177/780] fix wrong set e-mail for vCard + docu update --- htdocs/core/class/vcard.class.php | 53 ++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/htdocs/core/class/vcard.class.php b/htdocs/core/class/vcard.class.php index a3948bdeed6..4147b6f086a 100644 --- a/htdocs/core/class/vcard.class.php +++ b/htdocs/core/class/vcard.class.php @@ -1,7 +1,8 @@ <?php /* Copyright (C) Kai Blankenhorn <kaib@bitfolge.de> * Copyright (C) 2005-2017 Laurent Destailleur <eldy@users.sourceforge.org> - * + * Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com> + * * 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 @@ -135,11 +136,11 @@ class vCard /** * mise en forme du nom complet * - * @param string $family Family - * @param string $first First - * @param string $additional Additionnal - * @param string $prefix Prefix - * @param string $suffix Suffix + * @param string $family Family name + * @param string $first First name + * @param string $additional Additional (e.g. second name, nick name) + * @param string $prefix Prefix (e.g. "Mr.", "Ms.", "Prof.") + * @param string $suffix Suffix (e.g. "sen." for senior, "jun." for junior) * @return void */ public function setName($family = "", $first = "", $additional = "", $prefix = "", $suffix = "") @@ -216,15 +217,17 @@ class vCard } /** - * mise en forme de l'email + * Add a e-mail address to this vCard * - * @param string $address EMail - * @param string $type Vcard type + * @param string $address E-mail address + * @param string $type (optional) The type of the e-mail (typical "PREF;INTERNET" or "INTERNET") * @return void */ - public function setEmail($address, $type = "internet,pref") + public function setEmail($address, $type = "TYPE=INTERNET;PREF") { - $this->properties["EMAIL;TYPE=".$type] = $address; + $key = "EMAIL"; + if ($type != "") $key .= ";".$type; + $this->properties[$key] = $address; } /** @@ -330,4 +333,32 @@ class vCard { return $this->filename; } + + /* Example from Microsoft Outlook 2019 + + BEGIN:VCARD + VERSION:2.1 + + N;LANGUAGE=de:surename;forename;secondname;Sir;jun. + FN:Sir surename secondname forename jun. + ORG:Companyname + TITLE:position + TEL;WORK;VOICE:work-phone-number + TEL;HOME;VOICE:private-phone-number + TEL;CELL;VOICE:mobile-phone-number + TEL;WORK;FAX:fax-phone-number + ADR;WORK;PREF:;;street and number;town;region;012345;Deutschland + LABEL;WORK;PREF;ENCODING=QUOTED-PRINTABLE:street and number=0D=0A= + =0D=0A= + 012345 town region + X-MS-OL-DEFAULT-POSTAL-ADDRESS:2 + URL;WORK:www.mywebpage.de + EMAIL;PREF;INTERNET:test1@test1.de + EMAIL;INTERNET:test2@test2.de + EMAIL;INTERNET:test3@test3.de + X-MS-IMADDRESS:test@jabber.org + REV:20200424T104242Z + + END:VCARD + */ } From 6d4d638ec10acb6c6cd770ac3937ff40c22c3416 Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Fri, 24 Apr 2020 12:38:46 +0000 Subject: [PATCH 178/780] Fixing style errors. --- htdocs/core/class/vcard.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/vcard.class.php b/htdocs/core/class/vcard.class.php index 4147b6f086a..fc67eb2f2a0 100644 --- a/htdocs/core/class/vcard.class.php +++ b/htdocs/core/class/vcard.class.php @@ -2,7 +2,7 @@ /* Copyright (C) Kai Blankenhorn <kaib@bitfolge.de> * Copyright (C) 2005-2017 Laurent Destailleur <eldy@users.sourceforge.org> * Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com> - * + * * 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 @@ -333,7 +333,7 @@ class vCard { return $this->filename; } - + /* Example from Microsoft Outlook 2019 BEGIN:VCARD From 42ee9845ad33dfa9a7a623102357c4e13e3ee0cc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 24 Apr 2020 15:21:02 +0200 Subject: [PATCH 179/780] Report error --- htdocs/compta/facture/class/facture.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 05661fb01cc..1558b6cbfab 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -5013,8 +5013,7 @@ class FactureLigne extends CommonInvoiceLine $returnPercent = floatval($res['situation_percent']); - if($include_credit_note) { - + if ($include_credit_note) { $sql = 'SELECT fd.situation_percent FROM ' . MAIN_DB_PREFIX . 'facturedet fd'; $sql.= ' JOIN ' . MAIN_DB_PREFIX . 'facture f ON (f.rowid = fd.fk_facture) '; $sql.= ' WHERE fd.fk_prev_id =' . $this->fk_prev_id; @@ -5026,6 +5025,8 @@ class FactureLigne extends CommonInvoiceLine while($obj = $this->db->fetch_object($res)) { $returnPercent = $returnPercent + floatval($obj->situation_percent); } + } else { + dol_print_error($this->db); } } From b2b580f6fb7d89bf9f295c7308c215e95d5aa9ab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 24 Apr 2020 15:21:38 +0200 Subject: [PATCH 180/780] Report error --- htdocs/compta/facture/class/facture.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index d872b02a35d..118bcb790bc 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -5569,7 +5569,7 @@ class FactureLigne extends CommonInvoiceLine $sql = 'SELECT fd.situation_percent FROM '.MAIN_DB_PREFIX.'facturedet fd'; $sql .= ' JOIN '.MAIN_DB_PREFIX.'facture f ON (f.rowid = fd.fk_facture) '; $sql .= ' WHERE fd.fk_prev_id ='.$this->fk_prev_id; - $sql .= ' AND f.situation_cycle_ref = '.$tmpinvoice->situation_cycle_ref; // Prevent cycle outed + $sql .= ' AND f.situation_cycle_ref = '.$invoicecache[$invoiceid]->situation_cycle_ref; // Prevent cycle outed $sql .= ' AND f.type = '.Facture::TYPE_CREDIT_NOTE; $res = $this->db->query($sql); @@ -5577,6 +5577,8 @@ class FactureLigne extends CommonInvoiceLine while ($obj = $this->db->fetch_object($res)) { $returnPercent = $returnPercent + floatval($obj->situation_percent); } + } else { + dol_print_error($this->db); } } From e98671e40489da84d3b9f3728e54dd41f5f6713f Mon Sep 17 00:00:00 2001 From: gauthier <gauthier.verdol@atm-consulting.fr> Date: Fri, 24 Apr 2020 15:22:38 +0200 Subject: [PATCH 181/780] FIX : Access to undeclared static property: Contact::$table_element --- htdocs/core/tpl/advtarget.tpl.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/tpl/advtarget.tpl.php b/htdocs/core/tpl/advtarget.tpl.php index 07b7744e2f8..a40f1214af1 100644 --- a/htdocs/core/tpl/advtarget.tpl.php +++ b/htdocs/core/tpl/advtarget.tpl.php @@ -459,7 +459,8 @@ if (!empty($conf->categorie->enabled) && $user->rights->categorie->lire) { // Standard Extrafield feature if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) { - $elementype = Contact::$table_element; + $contactstatic = new Contact($db); + $elementype = $contactstatic->table_element; // fetch optionals attributes and labels dol_include_once('/core/class/extrafields.class.php'); $extrafields = new ExtraFields($db); From df917805525cbd22453c9b05c68d4b2785f2290a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 24 Apr 2020 15:57:08 +0200 Subject: [PATCH 182/780] FIX Situation invoice take into account the credit notes. --- htdocs/compta/facture/card.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index d83e13da433..934916fa31e 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -1590,6 +1590,8 @@ if (empty($reshook)) if (!empty($origin) && !empty($originid)) { + include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; + $object->origin = $origin; $object->origin_id = $originid; @@ -1601,6 +1603,17 @@ if (empty($reshook)) $line->fetch_optionals($line->id); $line->situation_percent = $line->get_prev_progress($object->id); // get good progress including credit note + // The $line->situation_percent has been modified, so we must recalculate all amounts + $tabprice = calcul_price_total($line->qty, $line->subprice, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 0, 'HT', 0, $line->product_type, $mysoc, '', $line->situation_percent); + $line->total_ht = $tabprice[0]; + $line->total_tva = $tabprice[1]; + $line->total_ttc = $tabprice[2]; + $line->total_localtax1 = $tabprice[9]; + $line->total_localtax2 = $tabprice[10]; + $line->multicurrency_total_ht = $tabprice[16]; + $line->multicurrency_total_tva = $tabprice[17]; + $line->multicurrency_total_ttc = $tabprice[18]; + // Si fk_remise_except defini on vérifie si la réduction à déjà été appliquée if ($line->fk_remise_except) { @@ -1644,6 +1657,7 @@ if (empty($reshook)) { $nextSituationInvoice = new Facture($db); $nextSituationInvoice->fetch($id); + // create extrafields with data from create form $extralabels = $extrafields->fetch_name_optionals_label($nextSituationInvoice->table_element); $ret = $extrafields->setOptionalsFromPost($extralabels, $nextSituationInvoice); From a685026756fc1046bfb5426947006de9cb4fff5f Mon Sep 17 00:00:00 2001 From: florian HENRY <florian.henry@atm-consuliting.fr> Date: Fri, 24 Apr 2020 17:22:35 +0200 Subject: [PATCH 183/780] fix: remove php warning --- htdocs/compta/accounting-files.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index b8e10e7d0e3..665ab6ce485 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -23,7 +23,7 @@ * \brief Page to show portoflio and files of a thirdparty and download it */ -if ($_GET['action'] == 'dl' || $_POST['action'] == 'dl') { // To not replace token when downloading file +if (array_key_exists('action', $_GET) && $_GET['action'] == 'dl' || array_key_exists('action', $_POST) && $_POST['action'] == 'dl') { // To not replace token when downloading file if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); } From 4564a5cffd7e6c2f1f8ab81db902f8036622d693 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 24 Apr 2020 19:01:08 +0200 Subject: [PATCH 184/780] Update accounting-files.php --- htdocs/compta/accounting-files.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index 665ab6ce485..83f735c1eeb 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -23,7 +23,7 @@ * \brief Page to show portoflio and files of a thirdparty and download it */ -if (array_key_exists('action', $_GET) && $_GET['action'] == 'dl' || array_key_exists('action', $_POST) && $_POST['action'] == 'dl') { // To not replace token when downloading file +if ((array_key_exists('action', $_GET) && $_GET['action'] == 'dl') || (array_key_exists('action', $_POST) && $_POST['action'] == 'dl')) { // To not replace token when downloading file if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); } From df10b86d1fbe6a613160ea8922d617cde6d62faf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 24 Apr 2020 19:52:34 +0200 Subject: [PATCH 185/780] FIX consistency of price w/wo vat wrong when price entered with tax --- htdocs/core/class/commonobject.class.php | 25 ++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index d4735e4ba8d..157fc718700 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2807,8 +2807,8 @@ abstract class CommonObject $sql = 'SELECT rowid, qty, '.$fieldup.' as up, remise_percent, total_ht, '.$fieldtva.' as total_tva, total_ttc, '.$fieldlocaltax1.' as total_localtax1, '.$fieldlocaltax2.' as total_localtax2,'; $sql.= ' tva_tx as vatrate, localtax1_tx, localtax2_tx, localtax1_type, localtax2_type, info_bits, product_type'; - if ($this->table_element_line == 'facturedet') $sql.= ', situation_percent'; - $sql.= ', multicurrency_total_ht, multicurrency_total_tva, multicurrency_total_ttc'; + if ($this->table_element_line == 'facturedet') $sql.= ', situation_percent'; + $sql.= ', multicurrency_total_ht, multicurrency_total_tva, multicurrency_total_ttc'; $sql.= ' FROM '.MAIN_DB_PREFIX.$this->table_element_line; $sql.= ' WHERE '.$this->fk_element.' = '.$this->id; if ($exclspec) @@ -2847,18 +2847,23 @@ abstract class CommonObject if (empty($reshook) && $forcedroundingmode == '0') // Check if data on line are consistent. This may solve lines that were not consistent because set with $forcedroundingmode='auto' { + // This part of code is to fix data. We should not call it too often. $localtax_array=array($obj->localtax1_type,$obj->localtax1_tx,$obj->localtax2_type,$obj->localtax2_tx); $tmpcal=calcul_price_total($obj->qty, $obj->up, $obj->remise_percent, $obj->vatrate, $obj->localtax1_tx, $obj->localtax2_tx, 0, 'HT', $obj->info_bits, $obj->product_type, $seller, $localtax_array, (isset($obj->situation_percent) ? $obj->situation_percent : 100), $multicurrency_tx); - $diff=price2num($tmpcal[1] - $obj->total_tva, 'MT', 1); - if ($diff) + + $diff_when_using_price_ht=price2num($tmpcal[1] - $obj->total_tva, 'MT', 1); // If price was set with tax price adn unit price HT has a low number of digits, then we may have a diff on recalculation from unit price HT. + $diff_on_current_total=price2num($obj->total_ttc - $obj->total_ht - $obj->total_tva - $obj->total_localtax1 - $obj->total_localtax2, 'MT', 1); + //var_dump($obj->total_ht.' '.$obj->total_tva.' '.$obj->total_localtax1.' '.$obj->total_localtax2.' =? '.$obj->total_ttc); + //var_dump($diff_when_using_price_ht.' '.$diff_on_current_total); + + if ($diff_when_using_price_ht && $diff_on_current_total) { $sqlfix="UPDATE ".MAIN_DB_PREFIX.$this->table_element_line." SET ".$fieldtva." = ".$tmpcal[1].", total_ttc = ".$tmpcal[2]." WHERE rowid = ".$obj->rowid; - dol_syslog('We found unconsistent data into detailed line (difference of '.$diff.') for line rowid = '.$obj->rowid." (total vat of line calculated=".$tmpcal[1].", database=".$obj->total_tva."). We fix the total_vat and total_ttc of line by running sqlfix = ".$sqlfix); - $resqlfix=$this->db->query($sqlfix); - if (! $resqlfix) dol_print_error($this->db, 'Failed to update line'); - $obj->total_tva = $tmpcal[1]; - $obj->total_ttc = $tmpcal[2]; - // + dol_syslog('We found unconsistent data into detailed line (diff_when_using_price_ht = '.$diff_when_using_price_ht.' and diff_on_current_total = '.$diff_on_current_total.') for line rowid = '.$obj->rowid." (total vat of line calculated=".$tmpcal[1].", database=".$obj->total_tva."). We fix the total_vat and total_ttc of line by running sqlfix = ".$sqlfix, LOG_WARNING); + $resqlfix=$this->db->query($sqlfix); + if (! $resqlfix) dol_print_error($this->db, 'Failed to update line'); + $obj->total_tva = $tmpcal[1]; + $obj->total_ttc = $tmpcal[2]; } } From 6798e9e6f5ab8862450ee9745b0017e8f08a5c68 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 24 Apr 2020 19:52:54 +0200 Subject: [PATCH 186/780] Fix remove warning missing the seller in update_price --- 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 b62190686b3..e20a3f9e7de 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1967,7 +1967,7 @@ class FactureFournisseur extends CommonInvoice $this->errors[] = $line->error; } else { // Update total price into invoice record - $res = $this->update_price('', 'auto'); + $res = $this->update_price('', 'auto', 0, $this->thirdparty); } return $res; From 9ed7ff80a1922e9882d57dc0b7a0a2c6097b837c Mon Sep 17 00:00:00 2001 From: Maxime Lecoq <maxime.lecoq.a@wanadoo.fr> Date: Fri, 24 Apr 2020 21:08:47 +0200 Subject: [PATCH 187/780] FIX CUnit->fetch id/rowid --- htdocs/core/class/cunits.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/cunits.class.php b/htdocs/core/class/cunits.class.php index 65baf0056e9..a25250516f4 100644 --- a/htdocs/core/class/cunits.class.php +++ b/htdocs/core/class/cunits.class.php @@ -147,7 +147,7 @@ class CUnits // extends CommonObject /** * Load object in memory from database * - * @param int $id Id object + * @param int $id Id of CUnit object to fetch (rowid) * @param string $code Code * @param string $short_label Short Label ('g', 'kg', ...) * @param string $unit_type Unit type ('size', 'surface', 'volume', 'weight', ...) @@ -168,7 +168,7 @@ class CUnits // extends CommonObject $sql .= " t.active"; $sql .= " FROM ".MAIN_DB_PREFIX."c_units as t"; $sql_where = array(); - if ($id) $sql_where[] = " t.id = ".$id; + if ($id) $sql_where[] = " t.rowid = ".$id; if ($unit_type) $sql_where[] = " t.unit_type = '".$this->db->escape($unit_type)."'"; if ($code) $sql_where[] = " t.code = '".$this->db->escape($code)."'"; if ($short_label) $sql_where[] = " t.short_label = '".$this->db->escape($short_label)."'"; From ac872b6d3dc618b23b456fd7dccb9e9c1535e103 Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Fri, 24 Apr 2020 23:36:37 +0200 Subject: [PATCH 188/780] Update global.inc.php --- htdocs/theme/eldy/global.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index e495a3bb4bc..7b8e1373df9 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3360,6 +3360,7 @@ tr.liste_titre th, th.liste_titre, tr.liste_titre td, td.liste_titre, form.liste } tr.liste_titre th a, th.liste_titre a, tr.liste_titre td a, td.liste_titre a, form.liste_titre div a, div.liste_titre a { text-shadow: none !important; + color: unset; } tr.liste_titre_topborder td { border-top-width: <?php echo $borderwidth; ?>px; From 3ed11f374a9a8aabcb06753f58bf73ee93f0c1cc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 24 Apr 2020 23:56:57 +0200 Subject: [PATCH 189/780] Look and feel v12 --- htdocs/adherents/class/adherent.class.php | 3 + htdocs/core/lib/functions.lib.php | 13 +- htdocs/core/modules/modAsset.class.php | 2 +- htdocs/core/modules/modDon.class.php | 2 +- htdocs/don/card.php | 6 +- htdocs/don/class/don.class.php | 2 +- htdocs/don/document.php | 2 +- htdocs/don/index.php | 2 +- htdocs/don/info.php | 2 +- htdocs/don/list.php | 6 +- htdocs/don/note.php | 2 +- .../class/fournisseur.commande.class.php | 2 +- htdocs/index.php | 331 ++++++++---------- htdocs/product/class/product.class.php | 13 + htdocs/projet/class/project.class.php | 2 +- htdocs/user/class/user.class.php | 2 + 16 files changed, 189 insertions(+), 203 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index dd2593329e0..55504a547c2 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -60,6 +60,9 @@ class Adherent extends CommonObject */ public $ismultientitymanaged = 1; + public $picto = 'member'; + + public $mesgs; /** diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 507ef0fef08..44ebb23fe93 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3148,9 +3148,10 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bom', 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', - 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_dynamicprice', + 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_donation', 'object_dynamicprice', 'object_holiday', 'object_hrm', 'object_intervention', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', - 'object_lot', 'object_mrp', 'object_payment', 'object_product', 'object_propal', 'object_supplier_proposal', 'object_service', 'object_stock', + 'object_lot', 'object_mrp', 'object_payment', 'object_product', 'object_propal', + 'object_supplier_invoice', 'object_supplier_order', 'object_supplier_proposal', 'object_service', 'object_stock', 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', 'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member', 'object_other', 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', @@ -3178,7 +3179,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $arrayconvpictotofa = array( 'account'=>'university', 'action'=>'calendar-alt', 'address'=> 'address-book', 'bank_account'=>'university', 'bom'=>'cubes', - 'company'=>'building', 'contact'=>'address-book', 'contract'=>'suitcase', 'dynamicprice'=>'hand-holding-usd', + 'company'=>'building', 'contact'=>'address-book', 'contract'=>'suitcase', 'donation'=>'file-medical', 'dynamicprice'=>'hand-holding-usd', 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accountancy'=>'money-check-alt', 'accounting'=>'chart-line', 'category'=>'tag', 'dollyrevert'=>'dolly', 'hrm'=>'umbrella-beach', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode', @@ -3193,7 +3194,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'error'=>'exclamation-triangle', 'warning'=>'exclamation-triangle', 'other'=>'square', 'playdisabled'=>'play', 'poll'=>'check-double', 'preview'=>'binoculars', 'project'=>'sitemap', 'projectpub'=>'sitemap', 'projecttask'=>'tasks', 'propal'=>'file-signature', - 'resize'=>'crop', 'supplier_proposal'=>'file-signature', + 'resize'=>'crop', 'supplier_order'=>'dol-order_supplier', 'supplier_proposal'=>'file-signature', 'payment'=>'money-check-alt', 'phoning'=>'phone', 'phoning_mobile'=>'mobile-alt', 'phoning_fax'=>'fax', 'printer'=>'print', 'product'=>'cube', 'service'=>'concierge-bell', 'resource'=>'laptop-house', 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'technic'=>'cogs', 'ticket'=>'ticket-alt', @@ -3249,7 +3250,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ // Add CSS $arrayconvpictotomorcess = array( 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', 'cash-register'=>'bg-infobox-bank_account', - 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'dollyrevert'=>'flip', 'ecm'=>'bg-infobox-action', + 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'donation'=>'bg-infobox-commande', 'dollyrevert'=>'flip', 'ecm'=>'bg-infobox-action', 'hrm'=>'bg-infobox-adherent', 'group'=>'bg-infobox-adherent', 'intervention'=>'bg-infobox-contrat', 'multicurrency'=>'bg-infobox-bank_account', 'members'=>'bg-infobox-adherent', 'member'=>'bg-infobox-adherent', 'money-bill-alt'=>'bg-infobox-bank_account', @@ -3258,7 +3259,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'error'=>'pictoerror', 'warning'=>'pictowarning', 'switch_on'=>'font-status4', 'holiday'=>'bg-infobox-holiday', 'payment'=>'bg-infobox-bank_account', 'poll'=>'bg-infobox-adherent', 'project'=>'bg-infobox-project', 'projecttask'=>'bg-infobox-project', 'propal'=>'bg-infobox-propal', - 'resource'=>'bg-infobox-action', 'supplier_proposal'=>'bg-infobox-supplier_proposal', + 'resource'=>'bg-infobox-action', 'supplier_order'=>'bg-infobox-order_supplier', 'supplier_proposal'=>'bg-infobox-supplier_proposal', 'ticket'=>'bg-infobox-contrat', 'title_hrm'=>'bg-infobox-holiday', 'trip'=>'bg-infobox-expensereport', 'title_agenda'=>'bg-infobox-action', 'list-alt'=>'imgforviewmode', 'calendar'=>'imgforviewmode', 'calendarweek'=>'imgforviewmode', 'calendarmonth'=>'imgforviewmode', 'calendarday'=>'imgforviewmode', 'calendarperuser'=>'imgforviewmode' ); diff --git a/htdocs/core/modules/modAsset.class.php b/htdocs/core/modules/modAsset.class.php index 1efeec1ff43..06e8521b4e5 100644 --- a/htdocs/core/modules/modAsset.class.php +++ b/htdocs/core/modules/modAsset.class.php @@ -69,7 +69,7 @@ class modAsset extends DolibarrModules // Name of image file used for this module. // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' - $this->picto = 'generic'; + $this->picto = 'accounting'; // Defined all module parts (triggers, login, substitutions, menus, css, etc...) // for default path (eg: /asset/core/xxxxx) (0=disable, 1=enable) diff --git a/htdocs/core/modules/modDon.class.php b/htdocs/core/modules/modDon.class.php index 003fd61b578..88b7400cc36 100644 --- a/htdocs/core/modules/modDon.class.php +++ b/htdocs/core/modules/modDon.class.php @@ -54,7 +54,7 @@ class modDon extends DolibarrModules $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); // Name of png file (without png) used for this module. // Png file must be in theme/yourtheme/img directory under name object_pictovalue.png. - $this->picto = 'bill'; + $this->picto = 'donation'; // Data directories to create when module is enabled $this->dirs = array("/don/temp"); diff --git a/htdocs/don/card.php b/htdocs/don/card.php index 4eb6123b305..505d2fbed29 100644 --- a/htdocs/don/card.php +++ b/htdocs/don/card.php @@ -318,7 +318,7 @@ if (!empty($conf->projet->enabled)) { $formproject = new FormProjets($db); } if ($action == 'create') { - print load_fiche_titre($langs->trans("AddDonation"), '', 'invoicing'); + print load_fiche_titre($langs->trans("AddDonation"), '', 'object_donation'); print '<form name="add" action="'.$_SERVER["PHP_SELF"].'" method="POST">'; print '<input type="hidden" name="token" value="'.newToken().'">'; @@ -500,7 +500,7 @@ if (!empty($id) && $action == 'edit') print '<input type="hidden" name="amount" value="'.$object->amount.'">'; - dol_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'generic'); + dol_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'donation'); print '<table class="border centpercent">'; @@ -629,7 +629,7 @@ if (!empty($id) && $action != 'edit') $hselected = 'card'; $head = donation_prepare_head($object); - dol_fiche_head($head, $hselected, $langs->trans("Donation"), -1, 'generic'); + dol_fiche_head($head, $hselected, $langs->trans("Donation"), -1, 'donation'); // Print form confirm print $formconfirm; diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index 102d7e58685..bbd2a9b4577 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -60,7 +60,7 @@ class Don extends CommonObject /** * @var string String with name of icon for object don. Must be the part after the 'object_' into object_myobject.png */ - public $picto = 'generic'; + public $picto = 'donation'; /** * @var string Date of the donation diff --git a/htdocs/don/document.php b/htdocs/don/document.php index dcb245e3e85..f2994b95577 100644 --- a/htdocs/don/document.php +++ b/htdocs/don/document.php @@ -104,7 +104,7 @@ if ($object->id) $head = donation_prepare_head($object); - dol_fiche_head($head, 'documents', $langs->trans("Donation"), -1, 'generic'); + dol_fiche_head($head, 'documents', $langs->trans("Donation"), -1, 'donation'); // Build file list diff --git a/htdocs/don/index.php b/htdocs/don/index.php index 3f74cfa53a1..d8df1f910fc 100644 --- a/htdocs/don/index.php +++ b/htdocs/don/index.php @@ -85,7 +85,7 @@ if ($result) dol_print_error($db); } -print load_fiche_titre($langs->trans("DonationsArea"), '', 'invoicing'); +print load_fiche_titre($langs->trans("DonationsArea"), '', 'object_donation'); print '<div class="fichecenter"><div class="fichethirdleft">'; diff --git a/htdocs/don/info.php b/htdocs/don/info.php index cff4aceae79..170c577dc00 100644 --- a/htdocs/don/info.php +++ b/htdocs/don/info.php @@ -67,7 +67,7 @@ $object->info($id); $head = donation_prepare_head($object); -dol_fiche_head($head, 'info', $langs->trans("Donation"), -1, 'generic'); +dol_fiche_head($head, 'info', $langs->trans("Donation"), -1, 'donation'); $linkback = '<a href="'.DOL_URL_ROOT.'/don/list.php'.(!empty($socid) ? '?socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>'; diff --git a/htdocs/don/list.php b/htdocs/don/list.php index cd0d0539f8f..65ec24b1458 100644 --- a/htdocs/don/list.php +++ b/htdocs/don/list.php @@ -77,17 +77,17 @@ $fieldstosearchall = array( 'd.firstname'=>'Firstname', ); + /* * View */ +$donationstatic = new Don($db); $form = new Form($db); if (!empty($conf->projet->enabled)) $projectstatic = new Project($db); llxHeader('', $langs->trans("Donations"), 'EN:Module_Donations|FR:Module_Dons|ES:Módulo_Donaciones'); -$donationstatic = new Don($db); - // Genere requete de liste des dons $sql = "SELECT d.rowid, d.datedon, d.fk_soc as socid, d.firstname, d.lastname, d.societe,"; $sql .= " d.amount, d.fk_statut as status,"; @@ -163,7 +163,7 @@ if ($resql) print '<input type="hidden" name="page" value="'.$page.'">'; print '<input type="hidden" name="type" value="'.$type.'">'; - print_barre_liste($langs->trans("Donations"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($langs->trans("Donations"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'object_donation', 0, $newcardbutton, '', $limit, 0, 0, 1); if ($search_all) { diff --git a/htdocs/don/note.php b/htdocs/don/note.php index 08b8c05b520..111ea2399a3 100644 --- a/htdocs/don/note.php +++ b/htdocs/don/note.php @@ -83,7 +83,7 @@ if ($id > 0 || !empty($ref)) $head = donation_prepare_head($object); - dol_fiche_head($head, 'note', $langs->trans("Donation"), -1, 'generic'); + dol_fiche_head($head, 'note', $langs->trans("Donation"), -1, 'donation'); $linkback = '<a href="'.DOL_URL_ROOT.'/don/list.php'.(!empty($socid) ? '?socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>'; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 3784b3a9c6a..faf0b76ce33 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -65,7 +65,7 @@ class CommandeFournisseur extends CommonOrder /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png */ - public $picto = 'order'; + public $picto = 'supplier_order'; /** * 0=No test on entity, 1=Test with field entity, 2=Test with link by societe diff --git a/htdocs/index.php b/htdocs/index.php index 850a6c3a932..cfa927ef9b1 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -125,212 +125,178 @@ if (empty($user->socid) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTATS)) if (empty($reshook)) { + // Cle array returned by the method load_state_board for each line + $keys = array( + 'users', + 'members', + 'expensereports', + 'holidays', + 'customers', + 'prospects', + 'suppliers', + 'contacts', + 'products', + 'services', + 'projects', + 'proposals', + 'orders', + 'invoices', + 'donations', + 'contracts', + 'interventions', + 'supplier_orders', + 'supplier_invoices', + 'supplier_proposals', + 'ticket' + ); + // Condition to be checked for each display line dashboard $conditions = array( - $user->rights->user->user->lire, - !empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS), - !empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS), - !empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS), - !empty($conf->societe->enabled) && $user->rights->societe->contact->lire, - !empty($conf->adherent->enabled) && $user->rights->adherent->lire, - !empty($conf->product->enabled) && $user->rights->produit->lire, - !empty($conf->service->enabled) && $user->rights->service->lire, - !empty($conf->propal->enabled) && $user->rights->propale->lire, - !empty($conf->commande->enabled) && $user->rights->commande->lire, - !empty($conf->facture->enabled) && $user->rights->facture->lire, - !empty($conf->contrat->enabled) && $user->rights->contrat->lire, - !empty($conf->ficheinter->enabled) && $user->rights->ficheinter->lire, - !empty($conf->supplier_order->enabled) && $user->rights->fournisseur->commande->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_ORDERS_STATS), - !empty($conf->supplier_invoice->enabled) && $user->rights->fournisseur->facture->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_INVOICES_STATS), - !empty($conf->supplier_proposal->enabled) && $user->rights->supplier_proposal->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_PROPOSAL_STATS), - !empty($conf->projet->enabled) && $user->rights->projet->lire, - !empty($conf->expensereport->enabled) && $user->rights->expensereport->lire, - !empty($conf->holiday->enabled) && $user->rights->holiday->read, - !empty($conf->don->enabled) && $user->rights->don->lire, - !empty($conf->ticket->enabled) && $user->rights->ticket->read + 'users' => $user->rights->user->user->lire, + 'members' => !empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS), + 'customers' => !empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS), + 'prospects' => !empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS), + 'suppliers' => !empty($conf->societe->enabled) && $user->rights->societe->contact->lire, + 'contacts' => !empty($conf->adherent->enabled) && $user->rights->adherent->lire, + 'products' => !empty($conf->product->enabled) && $user->rights->produit->lire, + 'services' => !empty($conf->service->enabled) && $user->rights->service->lire, + 'proposals' => !empty($conf->propal->enabled) && $user->rights->propale->lire, + 'orders' => !empty($conf->commande->enabled) && $user->rights->commande->lire, + 'invoices' => !empty($conf->facture->enabled) && $user->rights->facture->lire, + 'donations' => !empty($conf->don->enabled) && $user->rights->don->lire, + 'contracts' => !empty($conf->contrat->enabled) && $user->rights->contrat->lire, + 'interventions' => !empty($conf->ficheinter->enabled) && $user->rights->ficheinter->lire, + 'supplier_orders' => !empty($conf->supplier_order->enabled) && $user->rights->fournisseur->commande->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_ORDERS_STATS), + 'supplier_invoices' => !empty($conf->supplier_invoice->enabled) && $user->rights->fournisseur->facture->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_INVOICES_STATS), + 'supplier_proposals' => !empty($conf->supplier_proposal->enabled) && $user->rights->supplier_proposal->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_PROPOSAL_STATS), + 'projects' => !empty($conf->projet->enabled) && $user->rights->projet->lire, + 'expensereports' => !empty($conf->expensereport->enabled) && $user->rights->expensereport->lire, + 'holidays' => !empty($conf->holiday->enabled) && $user->rights->holiday->read, + 'ticket' => !empty($conf->ticket->enabled) && $user->rights->ticket->read ); // Class file containing the method load_state_board for each line $includes = array( - DOL_DOCUMENT_ROOT."/user/class/user.class.php", - DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php", - DOL_DOCUMENT_ROOT."/societe/class/client.class.php", - DOL_DOCUMENT_ROOT."/societe/class/client.class.php", - DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.class.php", - DOL_DOCUMENT_ROOT."/contact/class/contact.class.php", - DOL_DOCUMENT_ROOT."/product/class/product.class.php", - DOL_DOCUMENT_ROOT."/product/class/product.class.php", - DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php", - DOL_DOCUMENT_ROOT."/commande/class/commande.class.php", - DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php", - DOL_DOCUMENT_ROOT."/don/class/don.class.php", - DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php", - DOL_DOCUMENT_ROOT."/fichinter/class/fichinter.class.php", - DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php", - DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.facture.class.php", - DOL_DOCUMENT_ROOT."/supplier_proposal/class/supplier_proposal.class.php", - DOL_DOCUMENT_ROOT."/projet/class/project.class.php", - DOL_DOCUMENT_ROOT."/expensereport/class/expensereport.class.php", - DOL_DOCUMENT_ROOT."/holiday/class/holiday.class.php", - DOL_DOCUMENT_ROOT."/ticket/class/ticket.class.php" + 'users' => DOL_DOCUMENT_ROOT."/user/class/user.class.php", + 'members' => DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php", + 'customers' => DOL_DOCUMENT_ROOT."/societe/class/client.class.php", + 'prospects' => DOL_DOCUMENT_ROOT."/societe/class/client.class.php", + 'suppliers' => DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.class.php", + 'contacts' => DOL_DOCUMENT_ROOT."/contact/class/contact.class.php", + 'products' => DOL_DOCUMENT_ROOT."/product/class/product.class.php", + 'services' => DOL_DOCUMENT_ROOT."/product/class/product.class.php", + 'proposals' => DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php", + 'orders' => DOL_DOCUMENT_ROOT."/commande/class/commande.class.php", + 'invoices' => DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php", + 'donations' => DOL_DOCUMENT_ROOT."/don/class/don.class.php", + 'contracts' => DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php", + 'interventions' => DOL_DOCUMENT_ROOT."/fichinter/class/fichinter.class.php", + 'supplier_orders' => DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php", + 'supplier_invoices' => DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.facture.class.php", + 'supplier_proposals' => DOL_DOCUMENT_ROOT."/supplier_proposal/class/supplier_proposal.class.php", + 'projects' => DOL_DOCUMENT_ROOT."/projet/class/project.class.php", + 'expensereports' => DOL_DOCUMENT_ROOT."/expensereport/class/expensereport.class.php", + 'holidays' => DOL_DOCUMENT_ROOT."/holiday/class/holiday.class.php", + 'ticket' => DOL_DOCUMENT_ROOT."/ticket/class/ticket.class.php" ); // Name class containing the method load_state_board for each line $classes = array( - 'User', - 'Adherent', - 'Client', - 'Client', - 'Fournisseur', - 'Contact', - 'Product', - 'Product', - 'Propal', - 'Commande', - 'Facture', - 'Don', - 'Contrat', - 'Fichinter', - 'CommandeFournisseur', - 'FactureFournisseur', - 'SupplierProposal', - 'Project', - 'ExpenseReport', - 'Holiday', - 'Ticket', - ); - // Cle array returned by the method load_state_board for each line - $keys = array( - 'users', - 'members', - 'customers', - 'prospects', - 'suppliers', - 'contacts', - 'products', - 'services', - 'proposals', - 'orders', - 'invoices', - 'donations', - 'contracts', - 'interventions', - 'supplier_orders', - 'supplier_invoices', - 'askprice', - 'projects', - 'expensereports', - 'holidays', - 'ticket' - ); - // Dashboard Icon lines - $icons = array( - 'user', - 'user', - 'company', - 'company', - 'company', - 'contact', - 'product', - 'service', - 'propal', - 'order', - 'bill', - 'generic', - 'contract', - 'intervention', - 'order', - 'bill', - 'propal', - 'project', - 'trip', - 'holiday', - 'ticket', + 'users' => 'User', + 'members' => 'Adherent', + 'customers' => 'Client', + 'prospects' => 'Client', + 'suppliers' => 'Fournisseur', + 'contacts' => 'Contact', + 'products' => 'Product', + 'services' => 'Service', + 'proposals' => 'Propal', + 'orders' => 'Commande', + 'invoices' => 'Facture', + 'donations' => 'Don', + 'contracts' => 'Contrat', + 'interventions' => 'Fichinter', + 'supplier_orders' => 'CommandeFournisseur', + 'supplier_invoices' => 'FactureFournisseur', + 'supplier_proposals' => 'SupplierProposal', + 'projects' => 'Project', + 'expensereports' => 'ExpenseReport', + 'holidays' => 'Holiday', + 'ticket' => 'Ticket', ); // Translation keyword $titres = array( - "Users", - "Members", - "ThirdPartyCustomersStats", - "ThirdPartyProspectsStats", - "Suppliers", - "Contacts", - "Products", - "Services", - "CommercialProposalsShort", - "CustomersOrders", - "BillsCustomers", - "Donations", - "Contracts", - "Interventions", - "SuppliersOrders", - "SuppliersInvoices", - "SupplierProposalShort", - "Projects", - "ExpenseReports", - "Holidays", - "Ticket", + 'users' => "Users", + 'members' => "Members", + 'customers' => "ThirdPartyCustomersStats", + 'prospects' => "ThirdPartyProspectsStats", + 'suppliers' => "Suppliers", + 'contacts' => "Contacts", + 'products' => "Products", + 'services' => "Services", + 'proposals' => "CommercialProposalsShort", + 'orders' => "CustomersOrders", + 'invoices' => "BillsCustomers", + 'donations' => "Donations", + 'contracts' => "Contracts", + 'interventions' => "Interventions", + 'supplier_orders' => "SuppliersOrders", + 'supplier_invoices' => "SuppliersInvoices", + 'supplier_proposals' => "SupplierProposalShort", + 'projects' => "Projects", + 'expensereports' => "ExpenseReports", + 'holidays' => "Holidays", + 'ticket' => "Ticket", ); // Dashboard Link lines $links = array( - DOL_URL_ROOT.'/user/list.php', - DOL_URL_ROOT.'/adherents/list.php?statut=1&mainmenu=members', - DOL_URL_ROOT.'/societe/list.php?type=c&mainmenu=companies', - DOL_URL_ROOT.'/societe/list.php?type=p&mainmenu=companies', - DOL_URL_ROOT.'/societe/list.php?type=f&mainmenu=companies', - DOL_URL_ROOT.'/contact/list.php?mainmenu=companies', - DOL_URL_ROOT.'/product/list.php?type=0&mainmenu=products', - DOL_URL_ROOT.'/product/list.php?type=1&mainmenu=products', - DOL_URL_ROOT.'/comm/propal/list.php?mainmenu=commercial&leftmenu=propals', - DOL_URL_ROOT.'/commande/list.php?mainmenu=commercial&leftmenu=orders', - DOL_URL_ROOT.'/compta/facture/list.php?mainmenu=billing&leftmenu=customers_bills', - DOL_URL_ROOT.'/don/list.php?leftmenu=donations', - DOL_URL_ROOT.'/contrat/list.php?mainmenu=commercial&leftmenu=contracts', - DOL_URL_ROOT.'/fichinter/list.php?mainmenu=commercial&leftmenu=ficheinter', - DOL_URL_ROOT.'/fourn/commande/list.php?mainmenu=commercial&leftmenu=orders_suppliers', - DOL_URL_ROOT.'/fourn/facture/list.php?mainmenu=billing&leftmenu=suppliers_bills', - DOL_URL_ROOT.'/supplier_proposal/list.php?mainmenu=commercial&leftmenu=', - DOL_URL_ROOT.'/projet/list.php?mainmenu=project', - DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm&leftmenu=expensereport', - DOL_URL_ROOT.'/holiday/list.php?mainmenu=hrm&leftmenu=holiday', - DOL_URL_ROOT.'/ticket/list.php?leftmenu=ticket' + 'users' => DOL_URL_ROOT.'/user/list.php', + 'members' => DOL_URL_ROOT.'/adherents/list.php?statut=1&mainmenu=members', + 'customers' => DOL_URL_ROOT.'/societe/list.php?type=c&mainmenu=companies', + 'prospects' => DOL_URL_ROOT.'/societe/list.php?type=p&mainmenu=companies', + 'suppliers' => DOL_URL_ROOT.'/societe/list.php?type=f&mainmenu=companies', + 'contacts' => DOL_URL_ROOT.'/contact/list.php?mainmenu=companies', + 'products' => DOL_URL_ROOT.'/product/list.php?type=0&mainmenu=products', + 'services' => DOL_URL_ROOT.'/product/list.php?type=1&mainmenu=products', + 'proposals' => DOL_URL_ROOT.'/comm/propal/list.php?mainmenu=commercial&leftmenu=propals', + 'orders' => DOL_URL_ROOT.'/commande/list.php?mainmenu=commercial&leftmenu=orders', + 'invoices' => DOL_URL_ROOT.'/compta/facture/list.php?mainmenu=billing&leftmenu=customers_bills', + 'donations' => DOL_URL_ROOT.'/don/list.php?leftmenu=donations', + 'contracts' => DOL_URL_ROOT.'/contrat/list.php?mainmenu=commercial&leftmenu=contracts', + 'interventions' => DOL_URL_ROOT.'/fichinter/list.php?mainmenu=commercial&leftmenu=ficheinter', + 'supplier_orders' => DOL_URL_ROOT.'/fourn/commande/list.php?mainmenu=commercial&leftmenu=orders_suppliers', + 'supplier_invoices' => DOL_URL_ROOT.'/fourn/facture/list.php?mainmenu=billing&leftmenu=suppliers_bills', + 'supplier_proposals' => DOL_URL_ROOT.'/supplier_proposal/list.php?mainmenu=commercial&leftmenu=', + 'projects' => DOL_URL_ROOT.'/projet/list.php?mainmenu=project', + 'expensereports' => DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm&leftmenu=expensereport', + 'holidays' => DOL_URL_ROOT.'/holiday/list.php?mainmenu=hrm&leftmenu=holiday', + 'ticket' => DOL_URL_ROOT.'/ticket/list.php?leftmenu=ticket' ); // Translation lang files $langfile = array( - "users", - "members", - "companies", - "prospects", - "suppliers", - "companies", - "products", - "products", - "propal", - "orders", - "bills", - "donations", - "contracts", - "interventions", - "bills", - "bills", - "supplier_proposal", - "projects", - "trips", - "holiday", - "ticket" + 'customers' => "companies", + 'contacts' => "companies", + 'services' => "products", + 'proposals' => "propal", + 'invoices' => "bills", + 'supplier_orders' => "orders", + 'supplier_invoices' => "bills", + 'supplier_proposals' => 'supplier_proposal', + 'expensereports' => "trips", + 'holidays' => "holiday", ); // Loop and displays each line of table $boardloaded = array(); - foreach ($keys as $key => $val) + foreach ($keys as $val) { - if ($conditions[$key]) + if ($conditions[$val]) { $boxstatItem = ''; - $classe = $classes[$key]; + $classe = $classes[$val]; // Search in cache if load_state_board is already realized if (!isset($boardloaded[$classe]) || !is_object($boardloaded[$classe])) { - include_once $includes[$key]; // Loading a class cost around 1Mb + include_once $includes[$val]; // Loading a class cost around 1Mb $board = new $classe($db); $board->load_state_board($user); @@ -341,12 +307,13 @@ if (empty($user->socid) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTATS)) $board = $boardloaded[$classe]; } - if (!empty($langfile[$key])) $langs->load($langfile[$key]); - $text = $langs->trans($titres[$key]); - $boxstatItem .= '<a href="'.$links[$key].'" class="boxstatsindicator thumbstat nobold nounderline">'; + $langs->load(empty($langfile[$val]) ? $val : $langfile[$val]); + + $text = $langs->trans($titres[$val]); + $boxstatItem .= '<a href="'.$links[$val].'" class="boxstatsindicator thumbstat nobold nounderline">'; $boxstatItem .= '<div class="boxstats">'; $boxstatItem .= '<span class="boxstatstext" title="'.dol_escape_htmltag($text).'">'.$text.'</span><br>'; - $boxstatItem .= '<span class="boxstatsindicator">'.img_object("", $icons[$key], 'class="inline-block"').' '.($board->nb[$val] ? $board->nb[$val] : 0).'</span>'; + $boxstatItem .= '<span class="boxstatsindicator">'.img_object("", $board->picto, 'class="inline-block"').' '.($board->nb[$val] ? $board->nb[$val] : 0).'</span>'; $boxstatItem .= '</div>'; $boxstatItem .= '</a>'; diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index e245ec2cf4e..336c6b85fa4 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -71,6 +71,9 @@ class Product extends CommonObject */ public $ismultientitymanaged = 1; + + public $picto = 'product'; + /** * {@inheritdoc} */ @@ -5632,3 +5635,13 @@ class Product extends CommonObject } } } + + + +/** + * Class to manage products or services + */ +class Service extends Product +{ + public $picto = 'service'; +} diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 674db2cc5d6..1ee17511304 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -68,7 +68,7 @@ class Project extends CommonObject /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png */ - public $picto = 'projectpub'; + public $picto = 'project'; /** * {@inheritdoc} diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 24bf871af1f..23d42ba3e65 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -64,6 +64,8 @@ class User extends CommonObject */ public $ismultientitymanaged = 1; + public $picto = 'user'; + public $id = 0; public $statut; public $ldap_sid; From 291664d1099e1e90f7b8e3126a66fa36502f194d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 01:04:26 +0200 Subject: [PATCH 190/780] Look and feel v12 --- htdocs/compta/localtax/list.php | 2 +- htdocs/core/lib/functions.lib.php | 17 +++++++++-------- .../fourn/class/fournisseur.facture.class.php | 2 +- htdocs/fourn/class/paiementfourn.class.php | 5 ++++- htdocs/fourn/facture/paiement.php | 12 ++++++++++-- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/htdocs/compta/localtax/list.php b/htdocs/compta/localtax/list.php index 911eb7e88f3..47a0f44be47 100644 --- a/htdocs/compta/localtax/list.php +++ b/htdocs/compta/localtax/list.php @@ -48,7 +48,7 @@ if ($user->rights->tax->charges->creer) $newcardbutton .= dolGetButtonTitle($langs->trans('NewLocalTaxPayment', ($ltt + 1)), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/compta/localtax/card.php?action=create&localTaxType='.$ltt); } -print load_fiche_titre($langs->transcountry($ltt == 2 ? "LT2Payments" : "LT1Payments", $mysoc->country_code), $newcardbutton, 'invoicing'); +print load_fiche_titre($langs->transcountry($ltt == 2 ? "LT2Payments" : "LT1Payments", $mysoc->country_code), $newcardbutton, 'title_accountancy'); $sql = "SELECT rowid, amount, label, f.datev, f.datep"; $sql .= " FROM ".MAIN_DB_PREFIX."localtax as f "; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 44ebb23fe93..13727fe8669 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3141,11 +3141,11 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (empty($srconly) && in_array($pictowithouttext, array( '1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected', - 'address', 'bank_account', 'barcode', 'bank', 'bookmark', 'bom', 'building', 'cash-register', 'check', 'close_title', 'company', 'contact', 'cubes', + 'address', 'bank_account', 'barcode', 'bank', 'bill', 'bookmark', 'bom', 'building', 'cash-register', 'check', 'close_title', 'company', 'contact', 'cubes', 'delete', 'dolly', 'dollyrevert', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'globe', 'globe-americas', 'grip', 'grip_title', 'help', 'language', 'list', 'listlight', 'lot', 'map-marker-alt', 'money-bill-alt', 'mrp', 'note', 'stock', - 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bom', + 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bill', 'object_bom', 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_donation', 'object_dynamicprice', @@ -3178,7 +3178,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $pictowithouttext = str_replace('object_', '', $pictowithouttext); $arrayconvpictotofa = array( - 'account'=>'university', 'action'=>'calendar-alt', 'address'=> 'address-book', 'bank_account'=>'university', 'bom'=>'cubes', + 'account'=>'university', 'action'=>'calendar-alt', 'address'=> 'address-book', 'bank_account'=>'university', 'bill'=>'file-invoice-dollar', 'bom'=>'cubes', 'company'=>'building', 'contact'=>'address-book', 'contract'=>'suitcase', 'donation'=>'file-medical', 'dynamicprice'=>'hand-holding-usd', 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accountancy'=>'money-check-alt', 'accounting'=>'chart-line', 'category'=>'tag', 'dollyrevert'=>'dolly', @@ -3197,7 +3197,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'resize'=>'crop', 'supplier_order'=>'dol-order_supplier', 'supplier_proposal'=>'file-signature', 'payment'=>'money-check-alt', 'phoning'=>'phone', 'phoning_mobile'=>'mobile-alt', 'phoning_fax'=>'fax', 'printer'=>'print', 'product'=>'cube', 'service'=>'concierge-bell', 'resource'=>'laptop-house', - 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'technic'=>'cogs', 'ticket'=>'ticket-alt', + 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'supplier_invoice'=>'file-invoice-dollar', 'technic'=>'cogs', 'ticket'=>'ticket-alt', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach', 'title_agenda'=>'calendar-alt', 'uparrow'=>'mail-forward', @@ -3249,8 +3249,9 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ // Add CSS $arrayconvpictotomorcess = array( - 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', 'cash-register'=>'bg-infobox-bank_account', - 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'donation'=>'bg-infobox-commande', 'dollyrevert'=>'flip', 'ecm'=>'bg-infobox-action', + 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', 'bill'=>'bg-infobox-commande', + 'cash-register'=>'bg-infobox-bank_account', 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', + 'donation'=>'bg-infobox-commande', 'dollyrevert'=>'flip', 'ecm'=>'bg-infobox-action', 'hrm'=>'bg-infobox-adherent', 'group'=>'bg-infobox-adherent', 'intervention'=>'bg-infobox-contrat', 'multicurrency'=>'bg-infobox-bank_account', 'members'=>'bg-infobox-adherent', 'member'=>'bg-infobox-adherent', 'money-bill-alt'=>'bg-infobox-bank_account', @@ -3259,8 +3260,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'error'=>'pictoerror', 'warning'=>'pictowarning', 'switch_on'=>'font-status4', 'holiday'=>'bg-infobox-holiday', 'payment'=>'bg-infobox-bank_account', 'poll'=>'bg-infobox-adherent', 'project'=>'bg-infobox-project', 'projecttask'=>'bg-infobox-project', 'propal'=>'bg-infobox-propal', - 'resource'=>'bg-infobox-action', 'supplier_order'=>'bg-infobox-order_supplier', 'supplier_proposal'=>'bg-infobox-supplier_proposal', - 'ticket'=>'bg-infobox-contrat', 'title_hrm'=>'bg-infobox-holiday', 'trip'=>'bg-infobox-expensereport', 'title_agenda'=>'bg-infobox-action', + 'resource'=>'bg-infobox-action', 'supplier_invoice'=>'bg-infobox-order_supplier', 'supplier_order'=>'bg-infobox-order_supplier', 'supplier_proposal'=>'bg-infobox-supplier_proposal', + 'ticket'=>'bg-infobox-contrat', 'title_accountancy'=>'bg-infobox-bank_account', 'title_hrm'=>'bg-infobox-holiday', 'trip'=>'bg-infobox-expensereport', 'title_agenda'=>'bg-infobox-action', 'list-alt'=>'imgforviewmode', 'calendar'=>'imgforviewmode', 'calendarweek'=>'imgforviewmode', 'calendarmonth'=>'imgforviewmode', 'calendarday'=>'imgforviewmode', 'calendarperuser'=>'imgforviewmode' ); if (!empty($arrayconvpictotomorcess[$pictowithouttext])) { diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index ba0bcfb052c..52c5f15abd3 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -66,7 +66,7 @@ class FactureFournisseur extends CommonInvoice /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png */ - public $picto = 'bill'; + public $picto = 'supplier_invoice'; /** * 0=No test on entity, 1=Test with field entity, 2=Test with link by societe diff --git a/htdocs/fourn/class/paiementfourn.class.php b/htdocs/fourn/class/paiementfourn.class.php index ace596b6bb4..a95aefede0f 100644 --- a/htdocs/fourn/class/paiementfourn.class.php +++ b/htdocs/fourn/class/paiementfourn.class.php @@ -67,6 +67,8 @@ class PaiementFourn extends Paiement */ public $type_code; + + /** * Constructor * @@ -583,13 +585,14 @@ class PaiementFourn extends Paiement $result = ''; $text = $this->ref; // Sometimes ref contains label + $reg = array(); if (preg_match('/^\((.*)\)$/i', $text, $reg)) { // Label generique car entre parentheses. On l'affiche en le traduisant if ($reg[1] == 'paiement') $reg[1] = 'Payment'; $text = $langs->trans($reg[1]); } - $label = '<u>'.$langs->trans("ShowPayment").'</u><br>'; + $label = '<u>'.$langs->trans("Payment").'</u><br>'; $label .= '<strong>'.$langs->trans("Ref").':</strong> '.$text; if ($this->datepaye ? $this->datepaye : $this->date) $label .= '<br><strong>'.$langs->trans("Date").':</strong> '.dol_print_date($this->datepaye ? $this->datepaye : $this->date, 'dayhour'); diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index 45d9c8ef967..99b982f5e40 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -822,7 +822,7 @@ if (empty($action) || $action == 'list') if (!$sortorder) $sortorder = 'DESC'; if (!$sortfield) $sortfield = 'p.datep'; - $sql = 'SELECT p.rowid as pid, p.datep as dp, p.amount as pamount, p.num_paiement,'; + $sql = 'SELECT p.rowid as pid, p.ref, p.datep as dp, p.amount as pamount, p.num_paiement,'; $sql .= ' s.rowid as socid, s.nom as name,'; $sql .= ' c.code as paiement_type, c.libelle as paiement_libelle,'; $sql .= ' ba.rowid as bid, ba.label,'; @@ -972,16 +972,24 @@ if (empty($action) || $action == 'list') print_liste_field_titre('', $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'maxwidthsearch '); print "</tr>\n"; + $paymentfournstatic = new PaiementFourn($db); + $i = 0; $totalarray = array(); while ($i < min($num, $limit)) { $objp = $db->fetch_object($resql); + $paymentfournstatic->id = $objp->pid; + $paymentfournstatic->ref = $objp->ref; + $paymentfournstatic->datepaye = $objp->dp; + print '<tr class="oddeven">'; // Ref payment - print '<td class="nowrap"><a href="'.DOL_URL_ROOT.'/fourn/paiement/card.php?id='.$objp->pid.'">'.img_object($langs->trans('ShowPayment'), 'payment').' '.$objp->pid.'</a></td>'; + print '<td class="nowrap">'; + print $paymentfournstatic->getNomUrl(1); + print '</td>'; if (!$i) $totalarray['nbfield']++; // Date From c9f242406c8510b95088d4eea6f567a8da66d4d4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 02:44:24 +0200 Subject: [PATCH 191/780] Look and feel v12 --- htdocs/accountancy/admin/index.php | 2 ++ htdocs/accountancy/customer/list.php | 6 +++--- htdocs/accountancy/journal/bankjournal.php | 2 +- htdocs/accountancy/journal/expensereportsjournal.php | 2 +- htdocs/accountancy/journal/purchasesjournal.php | 2 +- htdocs/accountancy/journal/sellsjournal.php | 2 +- htdocs/accountancy/supplier/list.php | 10 +++++----- 7 files changed, 14 insertions(+), 12 deletions(-) diff --git a/htdocs/accountancy/admin/index.php b/htdocs/accountancy/admin/index.php index 02963557222..006db08fe9c 100644 --- a/htdocs/accountancy/admin/index.php +++ b/htdocs/accountancy/admin/index.php @@ -236,6 +236,7 @@ if (!empty($user->admin)) } print '</tr>'; + /* Set this option as a hidden option but keep it for some needs. print '<tr>'; print '<td>'.$langs->trans("ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL").'</td>'; if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) { @@ -248,6 +249,7 @@ if (!empty($user->admin)) print '</a></td>'; } print '</tr>'; + */ print '<tr>'; print '<td>'.$langs->trans("BANK_DISABLE_DIRECT_INPUT").'</td>'; diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 9dbb846370c..8d09587ca5a 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -567,12 +567,12 @@ if ($result) { print '<td>'.$objp->tva_intra.'</td>'; // Found accounts - print '<td style="'.$code_sell_p_notset.'">'; + print '<td>'; $s = '<span class="small">'.(($objp->type_l == 1) ? $langs->trans("DefaultForService") : $langs->trans("DefaultForProduct")).': </span>'; $shelp = ''; if ($suggestedaccountingaccountbydefaultfor == 'eec') $shelp .= $langs->trans("SaleEEC"); elseif ($suggestedaccountingaccountbydefaultfor == 'export') $shelp .= $langs->trans("SaleExport"); - $s .= ($objp->code_sell_l > 0 ? length_accountg($objp->code_sell_l) : $langs->trans("NotDefined")); + $s .= ($objp->code_sell_l > 0 ? length_accountg($objp->code_sell_l) : '<span style="'.$code_sell_p_notset.'">'.$langs->trans("NotDefined").'</span>'); print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1); if ($objp->product_id > 0) { @@ -583,7 +583,7 @@ if ($result) { elseif ($suggestedaccountingaccountfor == 'eecwithvat') $shelp = $langs->trans("SaleEECWithVAT"); elseif ($suggestedaccountingaccountfor == 'eecwithoutvatnumber') $shelp = $langs->trans("SaleEECWithoutVATNumber"); elseif ($suggestedaccountingaccountfor == 'export') $shelp = $langs->trans("SaleExport"); - $s .= (empty($objp->code_sell_p) ? $langs->trans("NotDefined") : length_accountg($objp->code_sell_p)); + $s .= (empty($objp->code_sell_p) ? '<span style="'.$code_sell_p_notset.'">'.$langs->trans("NotDefined").'</span>' : length_accountg($objp->code_sell_p)); print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1); } print '</td>'; diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index b3d1e6ce7f8..3372105cd85 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -994,7 +994,7 @@ if (empty($action) || $action == 'view') { print '<div class="tabsAction tabsActionNoBottom">'; - if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />'; + if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />'; if (($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == "") || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1' || ($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == "") || $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == '-1') { diff --git a/htdocs/accountancy/journal/expensereportsjournal.php b/htdocs/accountancy/journal/expensereportsjournal.php index d0a84c1236c..4be0b133143 100644 --- a/htdocs/accountancy/journal/expensereportsjournal.php +++ b/htdocs/accountancy/journal/expensereportsjournal.php @@ -508,7 +508,7 @@ if (empty($action) || $action == 'view') { } print '<div class="tabsAction tabsActionNoBottom">'; - if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />'; + if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />'; if (empty($conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT) || $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT == '-1') { print '<input type="button" class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans("SomeMandatoryStepsOfSetupWereNotDone")).'" value="'.$langs->trans("WriteBookKeeping").'" />'; } diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index dd7dc1ca9e1..ee67aaad392 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -740,7 +740,7 @@ if (empty($action) || $action == 'view') { print ' : '.$langs->trans("AccountancyAreaDescMisc", 4, '<strong>'.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuDefaultAccounts").'</strong>'); } print '<div class="tabsAction tabsActionNoBottom">'; - if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />'; + if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />'; if (($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == "") || $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == '-1') { print '<input type="button" class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans("SomeMandatoryStepsOfSetupWereNotDone")).'" value="'.$langs->trans("WriteBookKeeping").'" />'; } diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index 80603106cb3..1710a61ccdd 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -677,7 +677,7 @@ if (empty($action) || $action == 'view') { print ' : '.$langs->trans("AccountancyAreaDescMisc", 4, '<strong>'.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuDefaultAccounts").'</strong>'); } print '<div class="tabsAction tabsActionNoBottom">'; - if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />'; + if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />'; if (($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == "") || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1') { print '<input type="button" class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans("SomeMandatoryStepsOfSetupWereNotDone")).'" value="'.$langs->trans("WriteBookKeeping").'" />'; } diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index ce354c789f3..c100868bd63 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -553,21 +553,21 @@ if ($result) { print '<td>'.$objp->tva_intra.'</td>'; // Found accounts - print '<td style="'.$code_buy_p_notset.'">'; - $s = '<span class="small">'.(($objp->type_l == 1) ? $langs->trans("DefaultForService") : $langs->trans("DefaultForProduct")).': </span>'; + print '<td>'; + $s = '<span class="small unsetcolor">'.(($objp->type_l == 1) ? $langs->trans("DefaultForService") : $langs->trans("DefaultForProduct")).': </span>'; $shelp = ''; if ($suggestedaccountingaccountbydefaultfor == 'eec') $shelp .= $langs->trans("SaleEEC"); elseif ($suggestedaccountingaccountbydefaultfor == 'export') $shelp .= $langs->trans("SaleExport"); - $s .= ($objp->code_buy_l > 0 ? length_accountg($objp->code_buy_l) : $langs->trans("NotDefined")); + $s .= ($objp->code_buy_l > 0 ? length_accountg($objp->code_buy_l) : '<span style="'.$code_buy_p_notset.'">'.$langs->trans("NotDefined").'</span>'); print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1); if ($objp->product_id > 0) { print '<br>'; - $s = '<span class="small">'.(($objp->type_l == 1) ? $langs->trans("ThisService") : $langs->trans("ThisProduct")).': </span>'; + $s = '<span class="small unsetcolor">'.(($objp->type_l == 1) ? $langs->trans("ThisService") : $langs->trans("ThisProduct")).': </span>'; $shelp = ''; if ($suggestedaccountingaccountfor == 'eec') $shelp = $langs->trans("SaleEEC"); elseif ($suggestedaccountingaccountfor == 'export') $shelp = $langs->trans("SaleExport"); - $s .= (empty($objp->code_buy_p) ? $langs->trans("NotDefined") : length_accountg($objp->code_buy_p)); + $s .= (empty($objp->code_buy_p) ? '<span style="'.$code_buy_p_notset.'">'.$langs->trans("NotDefined").'</span>' : length_accountg($objp->code_buy_p)); print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1); } print '</td>'; From 6b114a31ced82e81d5bf35267e4d8e37da5e4ffc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 03:00:41 +0200 Subject: [PATCH 192/780] Look and feel v12 --- htdocs/accountancy/admin/account.php | 4 ++-- htdocs/accountancy/admin/accountmodel.php | 2 +- htdocs/accountancy/admin/categories_list.php | 4 ++-- htdocs/accountancy/admin/journals_list.php | 2 +- htdocs/accountancy/admin/productaccount.php | 3 +-- htdocs/accountancy/index.php | 2 +- htdocs/accountancy/supplier/list.php | 4 ++-- htdocs/admin/dict.php | 2 +- htdocs/compta/resultat/clientfourn.php | 8 +++----- htdocs/core/lib/functions.lib.php | 10 +++++----- htdocs/fourn/class/fournisseur.facture.class.php | 2 +- 11 files changed, 20 insertions(+), 23 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index f735a0a0cfc..86981e5b5de 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -488,11 +488,11 @@ if ($resql) // Action print '<td class="center">'; if ($user->rights->accounting->chartofaccount) { - print '<a href="./card.php?action=update&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?chartofaccounts='.$object->id).'">'; + print '<a class="editfielda" href="./card.php?action=update&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?chartofaccounts='.$object->id).'">'; print img_edit(); print '</a>'; print ' '; - print '<a href="./card.php?action=delete&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?chartofaccounts='.$object->id).'">'; + print '<a class="marginleftonly" href="./card.php?action=delete&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?chartofaccounts='.$object->id).'">'; print img_delete(); print '</a>'; } diff --git a/htdocs/accountancy/admin/accountmodel.php b/htdocs/accountancy/admin/accountmodel.php index 0ab42d582d1..b31cd23dfa4 100644 --- a/htdocs/accountancy/admin/accountmodel.php +++ b/htdocs/accountancy/admin/accountmodel.php @@ -696,7 +696,7 @@ if ($id) print "</td>"; // Modify link - if ($canbemodified) print '<td class="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>'; + if ($canbemodified) print '<td class="center"><a class="reposition editfielda" href="'.$url.'action=edit">'.img_edit().'</a></td>'; else print '<td> </td>'; // Delete link diff --git a/htdocs/accountancy/admin/categories_list.php b/htdocs/accountancy/admin/categories_list.php index 500a0d3cbba..1b2733e2045 100644 --- a/htdocs/accountancy/admin/categories_list.php +++ b/htdocs/accountancy/admin/categories_list.php @@ -408,7 +408,7 @@ llxHeader('', $langs->trans('DictionaryAccountancyCategory')); $titre = $langs->trans($tablib[$id]); $linkback = ''; -$titlepicto = 'title_setup'; +$titlepicto = 'title_accountancy'; print load_fiche_titre($titre, $linkback, $titlepicto); @@ -806,7 +806,7 @@ if ($id) print "</td>"; // Modify link - if ($canbemodified) print '<td class="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>'; + if ($canbemodified) print '<td class="center"><a class="reposition editfielda" href="'.$url.'action=edit">'.img_edit().'</a></td>'; else print '<td> </td>'; // Delete link diff --git a/htdocs/accountancy/admin/journals_list.php b/htdocs/accountancy/admin/journals_list.php index eccb7450594..e34ce8094dd 100644 --- a/htdocs/accountancy/admin/journals_list.php +++ b/htdocs/accountancy/admin/journals_list.php @@ -657,7 +657,7 @@ if ($id) print "</td>"; // Modify link - if ($canbemodified) print '<td class="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>'; + if ($canbemodified) print '<td class="center"><a class="reposition editfielda" href="'.$url.'action=edit">'.img_edit().'</a></td>'; else print '<td> </td>'; // Delete link diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index c6c76a57621..e32e47b169d 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -362,7 +362,6 @@ if ($result) print '<input type="hidden" name="action" value="update">'; print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; - print '<input type="hidden" name="page" value="'.$page.'">'; print load_fiche_titre($langs->trans("ProductsBinding"), '', 'title_accountancy'); print '<br>'; @@ -412,7 +411,7 @@ if ($result) //print '<br><div class="center">'.$buttonsave.'</div>'; $texte = $langs->trans("ListOfProductsServices"); - print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $buttonsave, $num, $nbtotalofrecords, '', 0, '', '', $limit); + print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $buttonsave, $num, $nbtotalofrecords, '', 0, '', '', $limit, 0, 0, 1); print '<div class="div-table-responsive">'; print '<table class="liste '.($moreforfilter ? "listwithfilterbefore" : "").'">'; diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php index bc0cf66a938..4d64c7666d8 100644 --- a/htdocs/accountancy/index.php +++ b/htdocs/accountancy/index.php @@ -88,7 +88,7 @@ if ($conf->accounting->enabled) } - print load_fiche_titre($langs->trans("AccountancyArea"), $resultboxes['selectboxlist'], 'accountancy', 0, '', '', $showtutorial); + print load_fiche_titre($langs->trans("AccountancyArea"), $resultboxes['selectboxlist'], 'title_accountancy', 0, '', '', $showtutorial); print '<div class="'.($helpisexpanded ? '' : 'hideobject').'" id="idfaq">'; // hideobject is to start hidden print "<br>\n"; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index c100868bd63..7daf526c658 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -554,7 +554,7 @@ if ($result) { // Found accounts print '<td>'; - $s = '<span class="small unsetcolor">'.(($objp->type_l == 1) ? $langs->trans("DefaultForService") : $langs->trans("DefaultForProduct")).': </span>'; + $s = '<span class="small">'.(($objp->type_l == 1) ? $langs->trans("DefaultForService") : $langs->trans("DefaultForProduct")).': </span>'; $shelp = ''; if ($suggestedaccountingaccountbydefaultfor == 'eec') $shelp .= $langs->trans("SaleEEC"); elseif ($suggestedaccountingaccountbydefaultfor == 'export') $shelp .= $langs->trans("SaleExport"); @@ -563,7 +563,7 @@ if ($result) { if ($objp->product_id > 0) { print '<br>'; - $s = '<span class="small unsetcolor">'.(($objp->type_l == 1) ? $langs->trans("ThisService") : $langs->trans("ThisProduct")).': </span>'; + $s = '<span class="small">'.(($objp->type_l == 1) ? $langs->trans("ThisService") : $langs->trans("ThisProduct")).': </span>'; $shelp = ''; if ($suggestedaccountingaccountfor == 'eec') $shelp = $langs->trans("SaleEEC"); elseif ($suggestedaccountingaccountfor == 'export') $shelp = $langs->trans("SaleExport"); diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 7d12ffca433..3c19121d424 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -1718,7 +1718,7 @@ if ($id) print "</td>"; // Modify link - if ($canbemodified) print '<td align="center"><a class="reposition" href="'.$url.'action=edit">'.img_edit().'</a></td>'; + if ($canbemodified) print '<td align="center"><a class="reposition editfielda" href="'.$url.'action=edit">'.img_edit().'</a></td>'; else print '<td> </td>'; // Delete link diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 17d2becfc19..44be66a2218 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -227,17 +227,15 @@ print "</tr>\n"; if ($modecompta == 'BOOKKEEPING') { $predefinedgroupwhere = "("; - //$predefinedgroupwhere.= " (pcg_type = 'EXPENSE' and pcg_subtype in ('PRODUCT','SERVICE'))"; $predefinedgroupwhere .= " (pcg_type = 'EXPENSE')"; $predefinedgroupwhere .= " OR "; - //$predefinedgroupwhere.= " (pcg_type = 'INCOME' and pcg_subtype in ('PRODUCT','SERVICE'))"; $predefinedgroupwhere .= " (pcg_type = 'INCOME')"; $predefinedgroupwhere .= ")"; $charofaccountstring = $conf->global->CHARTOFACCOUNTS; $charofaccountstring = dol_getIdFromCode($db, $conf->global->CHARTOFACCOUNTS, 'accounting_system', 'rowid', 'pcg_version'); - $sql = "SELECT f.thirdparty_code as name, -1 as socid, aa.pcg_type, aa.pcg_subtype, sum(f.credit - f.debit) as amount"; + $sql = "SELECT f.thirdparty_code as name, -1 as socid, aa.pcg_type, SUM(f.credit - f.debit) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as f"; $sql .= ", ".MAIN_DB_PREFIX."accounting_account as aa"; $sql .= " WHERE f.numero_compte = aa.account_number"; @@ -271,7 +269,7 @@ if ($modecompta == 'BOOKKEEPING') print '<tr class="oddeven">'; print '<td> </td>'; - print '<td>'.$objp->pcg_type.($objp->pcg_subtype != 'XXXXXX' ? ' - '.$objp->pcg_subtype : '').($objp->name ? ' ('.$objp->name.')' : '')."</td>\n"; + print '<td>'.$objp->pcg_type.($objp->name ? ' ('.$objp->name.')' : '')."</td>\n"; print '<td class="right">'.price($objp->amount)."</td>\n"; print "</tr>\n"; @@ -282,7 +280,7 @@ if ($modecompta == 'BOOKKEEPING') // This make 14 calls for each detail of account (NP, N and month m) if ($showaccountdetail != 'no') { - $tmppredefinedgroupwhere = "pcg_type = '".$db->escape($objp->pcg_type)."' AND pcg_subtype = '".$db->escape($objp->pcg_subtype)."'"; + $tmppredefinedgroupwhere = "pcg_type = '".$db->escape($objp->pcg_type)."'"; $tmppredefinedgroupwhere .= " AND fk_pcg_version = '".$db->escape($charofaccountstring)."'"; //$tmppredefinedgroupwhere.= " AND thirdparty_code = '".$db->escape($objp->name)."'"; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 13727fe8669..2f49c678d09 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3141,7 +3141,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (empty($srconly) && in_array($pictowithouttext, array( '1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected', - 'address', 'bank_account', 'barcode', 'bank', 'bill', 'bookmark', 'bom', 'building', 'cash-register', 'check', 'close_title', 'company', 'contact', 'cubes', + 'accountancy', 'address', 'bank_account', 'barcode', 'bank', 'bill', 'bookmark', 'bom', 'building', 'cash-register', 'check', 'close_title', 'company', 'contact', 'cubes', 'delete', 'dolly', 'dollyrevert', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'globe', 'globe-americas', 'grip', 'grip_title', 'help', 'language', 'list', 'listlight', 'lot', 'map-marker-alt', 'money-bill-alt', 'mrp', 'note', 'stock', @@ -3160,7 +3160,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'note', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', 'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', - 'home', 'companies', 'products', 'commercial', 'invoicing', 'accountancy', 'preview', 'project', 'projectpub', 'hrm', 'members', 'ticket', 'generic', + 'home', 'companies', 'products', 'commercial', 'invoicing', 'preview', 'project', 'projectpub', 'hrm', 'members', 'ticket', 'generic', 'error', 'warning', 'title_setup', 'title_accountancy', 'title_bank', 'title_hrm', 'title_agenda' ) @@ -3178,9 +3178,9 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $pictowithouttext = str_replace('object_', '', $pictowithouttext); $arrayconvpictotofa = array( - 'account'=>'university', 'action'=>'calendar-alt', 'address'=> 'address-book', 'bank_account'=>'university', 'bill'=>'file-invoice-dollar', 'bom'=>'cubes', + 'account'=>'university', 'accountancy'=>'money-check-alt', 'action'=>'calendar-alt', 'address'=> 'address-book', 'bank_account'=>'university', 'bill'=>'file-invoice-dollar', 'bom'=>'cubes', 'company'=>'building', 'contact'=>'address-book', 'contract'=>'suitcase', 'donation'=>'file-medical', 'dynamicprice'=>'hand-holding-usd', - 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accountancy'=>'money-check-alt', + 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accounting'=>'chart-line', 'category'=>'tag', 'dollyrevert'=>'dolly', 'hrm'=>'umbrella-beach', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode', 'email'=>'at', @@ -3249,7 +3249,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ // Add CSS $arrayconvpictotomorcess = array( - 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', 'bill'=>'bg-infobox-commande', + 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'accountancy'=>'bg-infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', 'bill'=>'bg-infobox-commande', 'cash-register'=>'bg-infobox-bank_account', 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'donation'=>'bg-infobox-commande', 'dollyrevert'=>'flip', 'ecm'=>'bg-infobox-action', 'hrm'=>'bg-infobox-adherent', 'group'=>'bg-infobox-adherent', 'intervention'=>'bg-infobox-contrat', diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 52c5f15abd3..ce2de03a762 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -2355,7 +2355,7 @@ class FactureFournisseur extends CommonInvoice if ($this->type == self::TYPE_CREDIT_NOTE) $picto .= 'a'; // Credit note if ($this->type == self::TYPE_DEPOSIT) $picto .= 'd'; // Deposit invoice - $label = '<u>'.$langs->trans("ShowSupplierInvoice").'</u>'; + $label = '<u>'.$langs->trans("SupplierInvoice").'</u>'; if (!empty($this->ref)) $label .= '<br><b>'.$langs->trans('Ref').':</b> '.$this->ref; if (!empty($this->ref_supplier)) From 38f2aad0c6ab4749dac22863ee04b91c432fefae Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 03:19:30 +0200 Subject: [PATCH 193/780] Debug asset module --- htdocs/asset/card.php | 76 +++++++++++++------ htdocs/asset/class/asset.class.php | 8 +- htdocs/core/menus/standard/eldy.lib.php | 2 +- htdocs/core/modules/modAsset.class.php | 2 +- .../modulebuilder/template/myobject_card.php | 4 +- 5 files changed, 60 insertions(+), 32 deletions(-) diff --git a/htdocs/asset/card.php b/htdocs/asset/card.php index ddb2eaed9c4..0a604c023ec 100644 --- a/htdocs/asset/card.php +++ b/htdocs/asset/card.php @@ -34,15 +34,18 @@ $langs->loadLangs(array("asset")); // Get parameters $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); -$action = GETPOST('action', 'alpha'); +$action = GETPOST('action', 'aZ09'); +$confirm = GETPOST('confirm', 'alpha'); $cancel = GETPOST('cancel', 'aZ09'); +$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'myobjectcard'; // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); +$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); // Initialize technical objects $object = new Asset($db); $extrafields = new ExtraFields($db); $diroutputmassaction = $conf->asset->dir_output.'/temp/massgeneration/'.$user->id; -$hookmanager->initHooks(array('assetcard')); // Note that conf->hooks_modules contains array +$hookmanager->initHooks(array('assetcard', 'globalcard')); // Note that conf->hooks_modules contains array // Fetch optionals attributes and labels $extrafields->fetch_name_optionals_label($object->table_element); @@ -59,23 +62,20 @@ foreach ($object->fields as $key => $val) if (empty($action) && empty($id) && empty($ref)) $action = 'view'; -// Security check - Protection if external user -//if ($user->socid > 0) accessforbidden(); -//if ($user->socid > 0) $socid = $user->socid; -//$result = restrictedArea($user, 'asset', $id); - // Load object include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once. + +$permissiontoread = $user->rights->asset->read; +$permissiontoadd = $user->rights->asset->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php +$permissiontodelete = $user->rights->asset->delete || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT); $permissionnote = $user->rights->asset->write; // Used by the include of actions_setnotes.inc.php $permissiondellink = $user->rights->asset->write; // Used by the include of actions_dellink.inc.php -$permissiontoadd = $user->rights->asset->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php +$upload_dir = $conf->mymodule->multidir_output[isset($object->entity) ? $object->entity : 1]; /* * Actions - * - * Put here all code to do according to value of "action" parameter */ $parameters = array(); @@ -86,16 +86,35 @@ if (empty($reshook)) { $error = 0; - $permissiontoadd = $user->rights->asset->create; - $permissiontodelete = $user->rights->asset->delete; $backurlforlist = dol_buildpath('/asset/list.php', 1); // Actions cancel, add, update or delete include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; + // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen + include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; + + // Actions when linking object each other + include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; + // Actions when printing a doc from card include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php'; + // Action to move up and down lines of object + //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php'; + + // Action to build doc + include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php'; + + if ($action == 'set_thirdparty' && $permissiontoadd) + { + $object->setValueFrom('fk_soc', GETPOST('fk_soc', 'int'), '', '', 'date', '', $user, 'MYOBJECT_MODIFY'); + } + if ($action == 'classin' && $permissiontoadd) + { + $object->setProject(GETPOST('projectid', 'int')); + } + // Actions to send emails $triggersendname = 'ASSET_SENTBYMAIL'; $autocopy = 'MAIN_MAIL_AUTOCOPY_ASSET_TO'; @@ -143,11 +162,12 @@ if ($action == 'create') print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; print '<input type="hidden" name="token" value="'.newToken().'">'; print '<input type="hidden" name="action" value="add">'; - print '<input type="hidden" name="backtopage" value="'.$backtopage.'">'; - + if ($backtopage) print '<input type="hidden" name="backtopage" value="'.$backtopage.'">'; + if ($backtopageforcancel) print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">'; + dol_fiche_head(array(), ''); - print '<table class="border centpercent">'."\n"; + print '<table class="border centpercent tableforfieldcreate">'."\n"; // Common attributes include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php'; @@ -166,6 +186,8 @@ if ($action == 'create') print '</div>'; print '</form>'; + + //dol_set_focus('input[name="ref"]'); } // Part to edit record @@ -178,10 +200,12 @@ if (($id || $ref) && $action == 'edit') print '<input type="hidden" name="action" value="update">'; print '<input type="hidden" name="backtopage" value="'.$backtopage.'">'; print '<input type="hidden" name="id" value="'.$object->id.'">'; - + if ($backtopage) print '<input type="hidden" name="backtopage" value="'.$backtopage.'">'; + if ($backtopageforcancel) print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">'; + dol_fiche_head(); - print '<table class="border centpercent">'."\n"; + print '<table class="border centpercent tableforfieldedit">'."\n"; // Common attributes include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php'; @@ -206,7 +230,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $res = $object->fetch_optionals(); $head = asset_prepare_head($object); - dol_fiche_head($head, 'card', $langs->trans("Asset"), -1, 'generic'); + dol_fiche_head($head, 'card', $langs->trans("Asset"), -1, $object->picto); $formconfirm = ''; @@ -255,10 +279,12 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print '<table class="border centpercent">'."\n"; // Common attributes - //$keyforbreak='fieldkeytoswithonsecondcolumn'; + //$keyforbreak='fieldkeytoswitchonsecondcolumn'; // We change column just after this field + //unset($object->fields['fk_project']); // Hide field already shown in banner + //unset($object->fields['fk_soc']); // Hide field already shown in banner include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php'; - // Other attributes + // Other attributes. Fields from hook formObjectOptions and Extrafields. include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php'; print '</table>'; @@ -266,7 +292,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print '</div>'; print '</div>'; - print '<div class="clearboth"></div><br>'; + print '<div class="clearboth"></div>'; dol_fiche_end(); @@ -349,14 +375,14 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } //Select mail models is same action as presend - /* if (GETPOST('modelselected')) $action = 'presend'; // Presend form - $modelmail='inventory'; + /* + $modelmail='asset'; $defaulttopic='InformationMessage'; - $diroutput = $conf->product->dir_output.'/inventory'; - $trackid = 'stockinv'.$object->id; + $diroutput = $conf->asset->dir_output.'/asset'; + $trackid = 'asset'.$object->id; include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php'; */ diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index 6fe78edad60..7c9d91d79e7 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -77,12 +77,12 @@ class Asset extends CommonObject */ public $fields = array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'visible'=>-1, 'enabled'=>1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",), - 'ref' => array('type'=>'varchar(10)', 'label'=>'Ref', 'visible'=>1, 'enabled'=>1, 'position'=>10, 'notnull'=>1, 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of object",), - 'entity' => array('type'=>'integer', 'label'=>'Entity', 'visible'=>-1, 'enabled'=>1, 'position'=>20, 'notnull'=>1, 'index'=>1,), - 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'notnull'=>-1, 'searchall'=>1, 'help'=>"Help text",), + 'ref' => array('type'=>'varchar(10)', 'label'=>'Ref', 'visible'=>1, 'enabled'=>1, 'position'=>10, 'notnull'=>1, 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of object", 'showoncombobox'=>1), + 'entity' => array('type'=>'integer', 'label'=>'Entity', 'visible'=>0, 'enabled'=>1, 'position'=>20, 'notnull'=>1, 'index'=>1,), + 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'notnull'=>-1, 'searchall'=>1), 'amount_ht' => array('type'=>'double(24,8)', 'label'=>'AmountHTShort', 'visible'=>1, 'enabled'=>1, 'position'=>40, 'notnull'=>-1, 'isameasure'=>'1', 'help'=>"Help text",), 'amount_vat' => array('type'=>'double(24,8)', 'label'=>'AmountVAT', 'visible'=>1, 'enabled'=>1, 'position'=>40, 'notnull'=>-1, 'isameasure'=>'1', 'help'=>"Help text",), - 'fk_asset_type' => array('type'=>'integer:AssetType:asset/class/asset_type.class.php', 'label'=>'AssetsType', 'visible'=>1, 'enabled'=>1, 'position'=>50, 'notnull'=>-1, 'index'=>1, 'searchall'=>1, 'help'=>"LinkToThirparty",), + 'fk_asset_type' => array('type'=>'integer:AssetType:asset/class/asset_type.class.php', 'label'=>'AssetsType', 'visible'=>1, 'enabled'=>1, 'position'=>50, 'notnull'=>1, 'index'=>1, 'searchall'=>1, 'help'=>"LinkToThirparty",), 'description' => array('type'=>'text', 'label'=>'Description', 'visible'=>-1, 'enabled'=>1, 'position'=>90, 'notnull'=>-1,), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'visible'=>-1, 'enabled'=>1, 'position'=>91, 'notnull'=>-1,), 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'visible'=>-1, 'enabled'=>1, 'position'=>92, 'notnull'=>-1,), diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index dba6dd2f4a4..9f32435ef66 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1447,7 +1447,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM $newmenu->add("/asset/list.php?leftmenu=asset&mainmenu=accountancy", $langs->trans("MenuListAssets"), 1, $user->rights->asset->read); $newmenu->add("/asset/type.php?leftmenu=asset_type", $langs->trans("MenuTypeAssets"), 1, $user->rights->asset->read, '', $mainmenu, 'asset_type'); if ($usemenuhider || empty($leftmenu) || preg_match('/asset_type/', $leftmenu)) { - $newmenu->add("/asset/type.php?leftmenu=asset_type&action=create", $langs->trans("MenuNewTypeAssets"), 2, $user->rights->asset->configurer); + $newmenu->add("/asset/type.php?leftmenu=asset_type&action=create", $langs->trans("MenuNewTypeAssets"), 2, (empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->rights->asset->write) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->rights->asset->setup_advance)); $newmenu->add("/asset/type.php?leftmenu=asset_type", $langs->trans("MenuListTypeAssets"), 2, $user->rights->asset->read); } } diff --git a/htdocs/core/modules/modAsset.class.php b/htdocs/core/modules/modAsset.class.php index 06e8521b4e5..4feb38536ce 100644 --- a/htdocs/core/modules/modAsset.class.php +++ b/htdocs/core/modules/modAsset.class.php @@ -200,7 +200,7 @@ class modAsset extends DolibarrModules $this->rights[$r][1] = 'Setup types of asset'; // Permission label $this->rights[$r][2] = 'w'; $this->rights[$r][3] = 0; // Permission by default for new user (0/1) - $this->rights[$r][4] = 'advanced_configurer'; // In php code, permission will be checked by test if ($user->rights->asset->level1->level2) + $this->rights[$r][4] = 'setup_advance'; // In php code, permission will be checked by test if ($user->rights->asset->level1->level2) $this->rights[$r][5] = ''; // In php code, permission will be checked by test if ($user->rights->asset->level1->level2) // Menus diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index e299fec88c5..50fcd2629a7 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -182,7 +182,9 @@ if (empty($reshook)) $form = new Form($db); $formfile = new FormFile($db); -llxHeader('', $langs->trans('MyObject'), ''); +$title = $langs->trans("MyObject"); +$help_url = ''; +llxHeader('', $title, $help_url); // Example : Adding jquery code print '<script type="text/javascript" language="javascript"> From 5ce3174181dddd3f0f5b0560a9e4ba1247080be1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 03:31:47 +0200 Subject: [PATCH 194/780] Look and feel v12 --- htdocs/core/lib/functions.lib.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 2f49c678d09..d652a2ebd9b 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3145,7 +3145,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'delete', 'dolly', 'dollyrevert', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'globe', 'globe-americas', 'grip', 'grip_title', 'help', 'language', 'list', 'listlight', 'lot', 'map-marker-alt', 'money-bill-alt', 'mrp', 'note', 'stock', - 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bill', 'object_bom', + 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bill', 'object_billa', 'object_billd', 'object_bom', 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_donation', 'object_dynamicprice', @@ -3178,8 +3178,9 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $pictowithouttext = str_replace('object_', '', $pictowithouttext); $arrayconvpictotofa = array( - 'account'=>'university', 'accountancy'=>'money-check-alt', 'action'=>'calendar-alt', 'address'=> 'address-book', 'bank_account'=>'university', 'bill'=>'file-invoice-dollar', 'bom'=>'cubes', - 'company'=>'building', 'contact'=>'address-book', 'contract'=>'suitcase', 'donation'=>'file-medical', 'dynamicprice'=>'hand-holding-usd', + 'account'=>'university', 'accountancy'=>'money-check-alt', 'action'=>'calendar-alt', 'address'=> 'address-book', + 'bank_account'=>'university', 'bill'=>'file-invoice-dollar', 'billa'=>'file-excel', 'billd'=>'file-medical', 'bom'=>'cubes', + 'company'=>'building', 'contact'=>'address-book', 'contract'=>'suitcase', 'donation'=>'file-alt', 'dynamicprice'=>'hand-holding-usd', 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accounting'=>'chart-line', 'category'=>'tag', 'dollyrevert'=>'dolly', 'hrm'=>'umbrella-beach', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode', @@ -3249,7 +3250,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ // Add CSS $arrayconvpictotomorcess = array( - 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'accountancy'=>'bg-infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', 'bill'=>'bg-infobox-commande', + 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'accountancy'=>'bg-infobox-bank_account', + 'bank_account'=>'bg-infobox-bank_account', 'bill'=>'bg-infobox-commande', 'billa'=>'bg-infobox-commande', 'billd'=>'bg-infobox-commande', 'cash-register'=>'bg-infobox-bank_account', 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'donation'=>'bg-infobox-commande', 'dollyrevert'=>'flip', 'ecm'=>'bg-infobox-action', 'hrm'=>'bg-infobox-adherent', 'group'=>'bg-infobox-adherent', 'intervention'=>'bg-infobox-contrat', From 4dc8e59e7f4fd3b7027e8f14e085bf4d610c5cf1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 03:34:31 +0200 Subject: [PATCH 195/780] Fix order of thumbs --- htdocs/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/index.php b/htdocs/index.php index cfa927ef9b1..7fe07ba2a42 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -144,9 +144,9 @@ if (empty($user->socid) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTATS)) 'donations', 'contracts', 'interventions', + 'supplier_proposals', 'supplier_orders', 'supplier_invoices', - 'supplier_proposals', 'ticket' ); From 99f445962be24207513cc9ec470804f03ce39297 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 03:38:12 +0200 Subject: [PATCH 196/780] Fix regression --- htdocs/index.php | 10 +++++----- .../class/supplier_proposal.class.php | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index 7fe07ba2a42..477168a0a59 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -292,19 +292,19 @@ if (empty($user->socid) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTATS)) if ($conditions[$val]) { $boxstatItem = ''; - $classe = $classes[$val]; + $class = $classes[$val]; // Search in cache if load_state_board is already realized - if (!isset($boardloaded[$classe]) || !is_object($boardloaded[$classe])) + if (!isset($boardloaded[$class]) || !is_object($boardloaded[$class])) { include_once $includes[$val]; // Loading a class cost around 1Mb - $board = new $classe($db); + $board = new $class($db); $board->load_state_board($user); - $boardloaded[$classe] = $board; + $boardloaded[$class] = $board; } else { - $board = $boardloaded[$classe]; + $board = $boardloaded[$class]; } $langs->load(empty($langfile[$val]) ? $val : $langfile[$val]); diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 16b408e677a..ee17941d965 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -2465,7 +2465,7 @@ class SupplierProposal extends CommonObject // This assignment in condition is not a bug. It allows walking the results. while ($obj = $this->db->fetch_object($resql)) { - $this->nb["askprice"] = $obj->nb; + $this->nb["supplier_proposals"] = $obj->nb; } $this->db->free($resql); return 1; From 966fedc5014d3e26f8a3c246498939cd37ab24c9 Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Sat, 25 Apr 2020 10:19:09 +0200 Subject: [PATCH 197/780] ADD: New hook updateTotalPrice in commonObject update_price --- htdocs/core/class/commonobject.class.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 7804f7a304f..494bbad03d1 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2974,6 +2974,14 @@ abstract class CommonObject // phpcs:enable global $conf, $hookmanager, $action; + $parameters = array('exclspec' => $exclspec, 'roundingadjust' => $roundingadjust, 'nodatabaseupdate' => $nodatabaseupdate, 'seller' => $seller); + $reshook = $hookmanager->executeHooks('updateTotalPrice', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + return 1; // replacement code + } elseif ($reshook < 0) { + return -1; // failure + } // reshook = 0 => execute normal code + // Some external module want no update price after a trigger because they have another method to calculate the total (ex: with an extrafield) $MODULE = ""; if ($this->element == 'propal') From fb2759eaf69d129be722782a3564c661fc93840b Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Sat, 25 Apr 2020 10:32:35 +0200 Subject: [PATCH 198/780] Correct lint errors --- htdocs/core/class/commonobject.class.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 494bbad03d1..c8efe197b54 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2974,13 +2974,13 @@ abstract class CommonObject // phpcs:enable global $conf, $hookmanager, $action; - $parameters = array('exclspec' => $exclspec, 'roundingadjust' => $roundingadjust, 'nodatabaseupdate' => $nodatabaseupdate, 'seller' => $seller); - $reshook = $hookmanager->executeHooks('updateTotalPrice', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks - if ($reshook > 0) { - return 1; // replacement code - } elseif ($reshook < 0) { - return -1; // failure - } // reshook = 0 => execute normal code + $parameters = array('exclspec' => $exclspec, 'roundingadjust' => $roundingadjust, 'nodatabaseupdate' => $nodatabaseupdate, 'seller' => $seller); + $reshook = $hookmanager->executeHooks('updateTotalPrice', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + return 1; // replacement code + } elseif ($reshook < 0) { + return -1; // failure + } // reshook = 0 => execute normal code // Some external module want no update price after a trigger because they have another method to calculate the total (ex: with an extrafield) $MODULE = ""; From 731864eb4a1f1b77b7ef2e16559f628bc3f100ed Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 12:43:41 +0200 Subject: [PATCH 199/780] Removed useless translation keys --- htdocs/compta/bank/line.php | 26 +++++++++---------- htdocs/compta/facture/class/facture.class.php | 12 ++++----- .../sociales/class/chargesociales.class.php | 4 +-- htdocs/don/class/don.class.php | 8 ++++-- htdocs/langs/en_US/bills.lang | 8 ------ htdocs/langs/en_US/donations.lang | 1 - 6 files changed, 27 insertions(+), 32 deletions(-) diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index 5c64c4ee5d9..6e53dd00c37 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -346,7 +346,7 @@ if ($result) $paymenttmp->fetch($links[$key]['url_id']); $paymenttmp->ref = $langs->trans("Payment").' '.$paymenttmp->ref; /*print '<a href="'.DOL_URL_ROOT.'/compta/paiement/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowPayment'),'payment').' '; + print img_object($langs->trans('Payment'),'payment').' '; print $langs->trans("Payment"); print '</a>';*/ print $paymenttmp->getNomUrl(1); @@ -357,7 +357,7 @@ if ($result) $paymenttmp->fetch($links[$key]['url_id']); $paymenttmp->ref = $langs->trans("Payment").' '.$paymenttmp->ref; /*print '<a href="'.DOL_URL_ROOT.'/fourn/paiement/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowPayment'),'payment').' '; + print img_object($langs->trans('Payment'),'payment').' '; print $langs->trans("Payment"); print '</a>';*/ print $paymenttmp->getNomUrl(1); @@ -369,67 +369,67 @@ if ($result) } elseif ($links[$key]['type'] == 'sc') { print '<a href="'.DOL_URL_ROOT.'/compta/sociales/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowSocialContribution'), 'bill').' '; + print img_object($langs->trans('SocialContribution'), 'bill').' '; print $langs->trans("SocialContribution").($links[$key]['label'] ? ' - '.$links[$key]['label'] : ''); print '</a>'; } elseif ($links[$key]['type'] == 'payment_sc') { print '<a href="'.DOL_URL_ROOT.'/compta/payment_sc/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowPayment'), 'payment').' '; + print img_object($langs->trans('Payment'), 'payment').' '; print $langs->trans("SocialContributionPayment"); print '</a>'; } elseif ($links[$key]['type'] == 'payment_vat') { print '<a href="'.DOL_URL_ROOT.'/compta/tva/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowVAT'), 'payment').' '; + print img_object($langs->trans('VAT'), 'payment').' '; print $langs->trans("VATPayment"); print '</a>'; } elseif ($links[$key]['type'] == 'payment_salary') { print '<a href="'.DOL_URL_ROOT.'/salaries/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowPaymentSalary'), 'payment').' '; + print img_object($langs->trans('PaymentSalary'), 'payment').' '; print $langs->trans("SalaryPayment"); print '</a>'; } elseif ($links[$key]['type'] == 'payment_loan') { print '<a href="'.DOL_URL_ROOT.'/loan/payment/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowLoanPayment'), 'payment').' '; + print img_object($langs->trans('LoanPayment'), 'payment').' '; print $langs->trans("PaymentLoan"); print '</a>'; } elseif ($links[$key]['type'] == 'loan') { print '<a href="'.DOL_URL_ROOT.'/loan/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowLoan'), 'bill').' '; + print img_object($langs->trans('Loan'), 'bill').' '; print $langs->trans("Loan"); print '</a>'; } elseif ($links[$key]['type'] == 'member') { print '<a href="'.DOL_URL_ROOT.'/adherents/card.php?rowid='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowMember'), 'user').' '; + print img_object($langs->trans('Member'), 'user').' '; print $links[$key]['label']; print '</a>'; } elseif ($links[$key]['type'] == 'payment_donation') { print '<a href="'.DOL_URL_ROOT.'/don/payment/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowDonation'), 'payment').' '; + print img_object($langs->trans('Donation'), 'payment').' '; print $langs->trans("DonationPayment"); print '</a>'; } elseif ($links[$key]['type'] == 'banktransfert') { print '<a href="'.DOL_URL_ROOT.'/compta/bank/line.php?rowid='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowTransaction'), 'payment').' '; + print img_object($langs->trans('Transaction'), 'payment').' '; print $langs->trans("TransactionOnTheOtherAccount"); print '</a>'; } elseif ($links[$key]['type'] == 'user') { print '<a href="'.DOL_URL_ROOT.'/user/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowUser'), 'user').' '; + print img_object($langs->trans('User'), 'user').' '; print $langs->trans("User"); print '</a>'; } elseif ($links[$key]['type'] == 'payment_various') { print '<a href="'.DOL_URL_ROOT.'/compta/bank/various_payment/card.php?id='.$links[$key]['url_id'].'">'; - print img_object($langs->trans('ShowVariousPayment'), 'payment').' '; + print img_object($langs->trans('VariousPayment'), 'payment').' '; print $langs->trans("VariousPayment"); print '</a>'; } diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index e3757e15e85..8e415658a98 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1394,11 +1394,11 @@ class Facture extends CommonInvoice $label = ''; if ($user->rights->facture->lire) { - $label = '<u>'.$langs->trans("ShowInvoice").'</u>'; - if ($this->type == self::TYPE_REPLACEMENT) $label = '<u>'.$langs->transnoentitiesnoconv("ShowInvoiceReplace").'</u>'; - if ($this->type == self::TYPE_CREDIT_NOTE) $label = '<u>'.$langs->transnoentitiesnoconv("ShowInvoiceAvoir").'</u>'; - if ($this->type == self::TYPE_DEPOSIT) $label = '<u>'.$langs->transnoentitiesnoconv("ShowInvoiceDeposit").'</u>'; - if ($this->type == self::TYPE_SITUATION) $label = '<u>'.$langs->transnoentitiesnoconv("ShowInvoiceSituation").'</u>'; + $label = '<u>'.$langs->trans("Invoice").'</u>'; + if ($this->type == self::TYPE_REPLACEMENT) $label = '<u>'.$langs->transnoentitiesnoconv("ReplacementInvoice").'</u>'; + if ($this->type == self::TYPE_CREDIT_NOTE) $label = '<u>'.$langs->transnoentitiesnoconv("CreditNote").'</u>'; + if ($this->type == self::TYPE_DEPOSIT) $label = '<u>'.$langs->transnoentitiesnoconv("Deposit").'</u>'; + if ($this->type == self::TYPE_SITUATION) $label = '<u>'.$langs->transnoentitiesnoconv("InvoiceSituation").'</u>'; if (!empty($this->ref)) $label .= '<br><b>'.$langs->trans('Ref').':</b> '.$this->ref; if (!empty($this->ref_client)) @@ -1426,7 +1426,7 @@ class Facture extends CommonInvoice { if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label = $langs->trans("ShowInvoice"); + $label = $langs->trans("Invoice"); $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index f6ff04ebe54..6d3f4dffa4a 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -556,7 +556,7 @@ class ChargeSociales extends CommonObject if (empty($this->ref)) $this->ref = $this->label; - $label = '<u>'.$langs->trans("ShowSocialContribution").'</u>'; + $label = '<u>'.$langs->trans("SocialContribution").'</u>'; if (!empty($this->ref)) $label .= '<br><b>'.$langs->trans('Ref').':</b> '.$this->ref; if (!empty($this->label)) @@ -569,7 +569,7 @@ class ChargeSociales extends CommonObject { if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label = $langs->trans("ShowSocialContribution"); + $label = $langs->trans("SocialContribution"); $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index bbd2a9b4577..d2786cd2a79 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -924,14 +924,18 @@ class Don extends CommonObject { global $langs; + if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips + $result = ''; - $label = $langs->trans("ShowDonation").': '.$this->id; + $label = '<u>'.$langs->trans("Donation").'</u>'; + if (!empty($this->id)) + $label .= '<br><b>'.$langs->trans('Ref').':</b> '.$this->id; $linkstart = '<a href="'.DOL_URL_ROOT.'/don/card.php?id='.$this->id.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; $linkend = '</a>'; $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) $result .= img_object(($notooltip ? '' : $label), $this->picto, ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); if ($withpicto != 2) $result .= $this->ref; $result .= $linkend; diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index ab26114d905..55de1591689 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -209,13 +209,6 @@ NumberOfBillsByMonth=No. of invoices per month AmountOfBills=Amount of invoices AmountOfBillsHT=Amount of invoices (net of tax) AmountOfBillsByMonthHT=Amount of invoices by month (net of tax) -ShowSocialContribution=Show social/fiscal tax -ShowBill=Show invoice -ShowInvoice=Show invoice -ShowInvoiceReplace=Show replacing invoice -ShowInvoiceAvoir=Show credit note -ShowInvoiceDeposit=Show down payment invoice -ShowInvoiceSituation=Show situation invoice UseSituationInvoices=Allow situation invoice UseSituationInvoicesCreditNote=Allow situation invoice credit note Retainedwarranty=Retained warranty @@ -233,7 +226,6 @@ setretainedwarranty=Set retained warranty setretainedwarrantyDateLimit=Set retained warranty date limit RetainedWarrantyDateLimit=Retained warranty date limit RetainedWarrantyNeed100Percent=The situation invoice need to be at 100%% progress to be displayed on PDF -ShowPayment=Show payment AlreadyPaid=Already paid AlreadyPaidBack=Already paid back AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and down payments) diff --git a/htdocs/langs/en_US/donations.lang b/htdocs/langs/en_US/donations.lang index a810c61c8f4..de4bdf68f03 100644 --- a/htdocs/langs/en_US/donations.lang +++ b/htdocs/langs/en_US/donations.lang @@ -7,7 +7,6 @@ AddDonation=Create a donation NewDonation=New donation DeleteADonation=Delete a donation ConfirmDeleteADonation=Are you sure you want to delete this donation? -ShowDonation=Show donation PublicDonation=Public donation DonationsArea=Donations area DonationStatusPromiseNotValidated=Draft promise From 1121d2c1c6ed9ecd90d6226fec9859c41e2eeff6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 13:49:44 +0200 Subject: [PATCH 200/780] Look and feel v12 --- htdocs/comm/propal/card.php | 7 +++--- htdocs/comm/propal/index.php | 2 +- htdocs/comm/propal/list.php | 2 +- htdocs/comm/propal/stats/index.php | 11 +++++----- htdocs/commande/card.php | 2 +- htdocs/commande/index.php | 2 +- htdocs/commande/list.php | 2 +- htdocs/commande/stats/index.php | 12 +++++----- htdocs/compta/facture/card-rec.php | 2 +- htdocs/compta/facture/card.php | 2 +- .../compta/facture/invoicetemplate_list.php | 2 +- htdocs/compta/facture/list.php | 2 +- htdocs/compta/facture/stats/index.php | 18 ++++++++------- htdocs/compta/index.php | 2 +- htdocs/compta/localtax/index.php | 2 +- htdocs/compta/paiement/list.php | 2 +- htdocs/compta/paiement/rapport.php | 2 +- htdocs/compta/prelevement/create.php | 2 +- htdocs/compta/sociales/list.php | 2 +- htdocs/compta/tva/index.php | 2 +- htdocs/contrat/card.php | 2 +- htdocs/contrat/index.php | 2 +- htdocs/contrat/list.php | 2 +- htdocs/contrat/services_list.php | 3 ++- htdocs/core/lib/functions.lib.php | 16 ++++++++------ htdocs/fichinter/card-rec.php | 22 +++++-------------- htdocs/fichinter/card.php | 2 +- htdocs/fichinter/index.php | 2 +- htdocs/fichinter/stats/index.php | 2 +- htdocs/fourn/commande/card.php | 2 +- htdocs/fourn/commande/index.php | 2 +- htdocs/fourn/commande/list.php | 2 +- htdocs/fourn/facture/card.php | 2 +- htdocs/fourn/facture/list.php | 2 +- htdocs/fourn/facture/paiement.php | 2 +- htdocs/fourn/facture/rapport.php | 2 +- htdocs/langs/en_US/interventions.lang | 5 ++--- htdocs/supplier_proposal/card.php | 2 +- htdocs/supplier_proposal/index.php | 10 +++------ htdocs/supplier_proposal/list.php | 2 +- 40 files changed, 78 insertions(+), 88 deletions(-) diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 85927472c56..bd5430c440a 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -1448,8 +1448,6 @@ if (empty($reshook)) * View */ -llxHeader('', $langs->trans('Proposal'), 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); - $form = new Form($db); $formother = new FormOther($db); $formfile = new FormFile($db); @@ -1458,6 +1456,9 @@ $formmargin = new FormMargin($db); $companystatic = new Societe($db); if (!empty($conf->projet->enabled)) { $formproject = new FormProjets($db); } +$help_url = 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'; +llxHeader('', $langs->trans('Proposal'), $help_url); + $now = dol_now(); // Add new proposal @@ -1465,7 +1466,7 @@ if ($action == 'create') { $currency_code = $conf->currency; - print load_fiche_titre($langs->trans("NewProp")); + print load_fiche_titre($langs->trans("NewProp"), '', 'propal'); $soc = new Societe($db); if ($socid > 0) diff --git a/htdocs/comm/propal/index.php b/htdocs/comm/propal/index.php index a0aac3e0387..a320d2b83b9 100644 --- a/htdocs/comm/propal/index.php +++ b/htdocs/comm/propal/index.php @@ -58,7 +58,7 @@ $help_url = "EN:Module_Commercial_Proposals|FR:Module_Propositions_commerciales| llxHeader("", $langs->trans("ProspectionArea"), $help_url); -print load_fiche_titre($langs->trans("ProspectionArea"), '', 'commercial'); +print load_fiche_titre($langs->trans("ProspectionArea"), '', 'propal'); //print '<table width="100%" class="notopnoleftnoright">'; //print '<tr><td valign="top" width="30%" class="notopnoleft">'; diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 955c4f38832..360fe5a911c 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -496,7 +496,7 @@ if ($resql) print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; print '<input type="hidden" name="contextpage" value="'.$contextpage.'">'; - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'commercial', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'propal', 0, $newcardbutton, '', $limit, 0, 0, 1); $topicmail = "SendPropalRef"; $modelmail = "proposal_send"; diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php index e836d37a1b9..3fee370c89b 100644 --- a/htdocs/comm/propal/stats/index.php +++ b/htdocs/comm/propal/stats/index.php @@ -67,20 +67,19 @@ $formpropal = new FormPropal($db); $langs->loadLangs(array('propal', 'other', 'companies')); -if ($mode == 'customer') -{ - $title = $langs->trans("ProposalsStatistics"); - $dir = $conf->propale->dir_temp; -} +$picto = 'propal'; +$title = $langs->trans("ProposalsStatistics"); +$dir = $conf->propale->dir_temp; if ($mode == 'supplier') { + $picto = 'supplier_proposal'; $title = $langs->trans("ProposalsStatisticsSuppliers").' ('.$langs->trans("SentToSuppliers").")"; $dir = $conf->supplier_proposal->dir_temp; } llxHeader('', $title); -print load_fiche_titre($title, '', 'commercial'); +print load_fiche_titre($title, '', $picto); dol_mkdir($dir); diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 4aad42ca44f..4764b53a5c9 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1493,7 +1493,7 @@ if (!empty($conf->projet->enabled)) { $formproject = new FormProjets($db); } // Mode creation if ($action == 'create' && $usercancreate) { - print load_fiche_titre($langs->trans('CreateOrder'), '', 'commercial'); + print load_fiche_titre($langs->trans('CreateOrder'), '', 'order'); $soc = new Societe($db); if ($socid > 0) diff --git a/htdocs/commande/index.php b/htdocs/commande/index.php index 52e5108ff5f..4ca7086c132 100644 --- a/htdocs/commande/index.php +++ b/htdocs/commande/index.php @@ -64,7 +64,7 @@ $help_url = "EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_P llxHeader("", $langs->trans("Orders"), $help_url); -print load_fiche_titre($langs->trans("OrdersArea"), '', 'commercial'); +print load_fiche_titre($langs->trans("OrdersArea"), '', 'order'); print '<div class="fichecenter"><div class="fichethirdleft">'; diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index dda9bee327f..5bcff277ef6 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -502,7 +502,7 @@ if ($resql) print '<input type="hidden" name="search_status" value="'.$search_status.'">'; print '<input type="hidden" name="socid" value="'.$socid.'">'; - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'commercial', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'order', 0, $newcardbutton, '', $limit, 0, 0, 1); $topicmail = "SendOrderRef"; $modelmail = "order_send"; diff --git a/htdocs/commande/stats/index.php b/htdocs/commande/stats/index.php index cc62d7a9089..16cef93d228 100644 --- a/htdocs/commande/stats/index.php +++ b/htdocs/commande/stats/index.php @@ -66,20 +66,20 @@ $langs->loadLangs(array('orders', 'companies', 'other', 'suppliers')); $form = new Form($db); $formorder = new FormOrder($db); -if ($mode == 'customer') -{ - $title = $langs->trans("OrdersStatistics"); - $dir = $conf->commande->dir_temp; -} +$picto = 'order'; +$title = $langs->trans("OrdersStatistics"); +$dir = $conf->commande->dir_temp; + if ($mode == 'supplier') { + $picto = 'supplier_order'; $title = $langs->trans("OrdersStatisticsSuppliers").' ('.$langs->trans("SentToSuppliers").")"; $dir = $conf->fournisseur->commande->dir_temp; } llxHeader('', $title); -print load_fiche_titre($title, '', 'commercial'); +print load_fiche_titre($title, '', $picto); dol_mkdir($dir); diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index 26eee81375f..cad443940f4 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -979,7 +979,7 @@ $today = dol_mktime(23, 59, 59, $tmparray['mon'], $tmparray['mday'], $tmparray[' */ if ($action == 'create') { - print load_fiche_titre($langs->trans("CreateRepeatableInvoice"), '', 'invoicing'); + print load_fiche_titre($langs->trans("CreateRepeatableInvoice"), '', 'bill'); $object = new Facture($db); // Source invoice $product_static = new Product($db); diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 168a0161e3f..4aa147ebb35 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -2784,7 +2784,7 @@ if ($action == 'create') $facturestatic = new Facture($db); $extrafields->fetch_name_optionals_label($facturestatic->table_element); - print load_fiche_titre($langs->trans('NewBill'), '', 'invoicing'); + print load_fiche_titre($langs->trans('NewBill'), '', 'bill'); if ($socid > 0) $res = $soc->fetch($socid); diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php index 8faa0de3de5..65e9044f4f7 100644 --- a/htdocs/compta/facture/invoicetemplate_list.php +++ b/htdocs/compta/facture/invoicetemplate_list.php @@ -333,7 +333,7 @@ if ($resql) $title = $langs->trans("RepeatableInvoices"); - print_barre_liste($title, $page, $_SERVER['PHP_SELF'], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit, 0, 0, 1); + print_barre_liste($title, $page, $_SERVER['PHP_SELF'], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'bill', 0, '', '', $limit, 0, 0, 1); print '<span class="opacitymedium">'.$langs->trans("ToCreateAPredefinedInvoice", $langs->transnoentitiesnoconv("ChangeIntoRepeatableInvoice")).'</span><br><br>'; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 17f70cab375..ed773b038bb 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -691,7 +691,7 @@ if ($resql) print '<input type="hidden" name="search_status" value="'.$search_status.'">'; print '<input type="hidden" name="contextpage" value="'.$contextpage.'">'; - print_barre_liste($langs->trans('BillsCustomers').' '.($socid ? ' '.$soc->name : ''), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'invoicing', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($langs->trans('BillsCustomers').' '.($socid ? ' '.$soc->name : ''), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'bill', 0, $newcardbutton, '', $limit, 0, 0, 1); $topicmail = "SendBillRef"; $modelmail = "facture_send"; diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 79257413716..36dfab5a3c4 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -32,6 +32,9 @@ require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facturestats.class.php'; $WIDTH = DolGraph::getDefaultGraphSizeForStats('width'); $HEIGHT = DolGraph::getDefaultGraphSizeForStats('height'); +// Load translation files required by the page +$langs->loadLangs(array('bills', 'companies', 'other')); + $mode = GETPOST("mode") ?GETPOST("mode") : 'customer'; if ($mode == 'customer' && !$user->rights->facture->lire) accessforbidden(); if ($mode == 'supplier' && !$user->rights->fournisseur->facture->lire) accessforbidden(); @@ -57,25 +60,24 @@ $endyear = $year; /* * View */ -// Load translation files required by the page -$langs->loadLangs(array('bills', 'companies', 'other')); $form = new Form($db); llxHeader(); -if ($mode == 'customer') -{ - $title = $langs->trans("BillsStatistics"); - $dir = $conf->facture->dir_temp; -} +$picto = 'bill'; +$title = $langs->trans("BillsStatistics"); +$dir = $conf->facture->dir_temp; + if ($mode == 'supplier') { + $picto = 'supplier_invoice'; $title = $langs->trans("BillsStatisticsSuppliers"); $dir = $conf->fournisseur->facture->dir_temp; } -print load_fiche_titre($title, '', 'invoicing'); + +print load_fiche_titre($title, '', $picto); dol_mkdir($dir); diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index 6aa05f1cd7e..ffb55f561fe 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -87,7 +87,7 @@ $thirdpartystatic = new Societe($db); llxHeader("", $langs->trans("AccountancyTreasuryArea")); -print load_fiche_titre($langs->trans("AccountancyTreasuryArea"), '', 'invoicing'); +print load_fiche_titre($langs->trans("AccountancyTreasuryArea"), '', 'bill'); print '<div class="fichecenter"><div class="fichethirdleft">'; diff --git a/htdocs/compta/localtax/index.php b/htdocs/compta/localtax/index.php index 7755e4ffd16..a08ac99d6bd 100644 --- a/htdocs/compta/localtax/index.php +++ b/htdocs/compta/localtax/index.php @@ -250,7 +250,7 @@ llxHeader('', $name); //$textprevyear="<a href=\"index.php?localTaxType=".$localTaxType."&year=" . ($year_current-1) . "\">".img_previous()."</a>"; //$textnextyear=" <a href=\"index.php?localTaxType=".$localTaxType."&year=" . ($year_current+1) . "\">".img_next()."</a>"; -//print load_fiche_titre($langs->transcountry($LT,$mysoc->country_code),"$textprevyear ".$langs->trans("Year")." $year_start $textnextyear", 'invoicing'); +//print load_fiche_titre($langs->transcountry($LT,$mysoc->country_code),"$textprevyear ".$langs->trans("Year")." $year_start $textnextyear", 'bill'); report_header($name, '', $period, $periodlink, $description, $builddate, $exportlink, array(), $calcmode); //report_header($name,'',$textprevyear.$langs->trans("Year")." ".$year_start.$textnextyear,'',$description,$builddate,$exportlink,array(),$calcmode); diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index 87bdaa9641d..20401d81a1a 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -217,7 +217,7 @@ if ($resql) print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; print '<input type="hidden" name="search_status" value="'.$search_status.'">'; - print_barre_liste($langs->trans("ReceivedCustomersPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit, 0, 0, 1); + print_barre_liste($langs->trans("ReceivedCustomersPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'bill', 0, '', '', $limit, 0, 0, 1); print '<div class="div-table-responsive">'; print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n"; diff --git a/htdocs/compta/paiement/rapport.php b/htdocs/compta/paiement/rapport.php index 2fb87440d78..a0daa698f24 100644 --- a/htdocs/compta/paiement/rapport.php +++ b/htdocs/compta/paiement/rapport.php @@ -88,7 +88,7 @@ $formother = new FormOther($db); llxHeader(); $titre = ($year ? $langs->trans("PaymentsReportsForYear", $year) : $langs->trans("PaymentsReports")); -print load_fiche_titre($titre, '', 'invoicing'); +print load_fiche_titre($titre, '', 'bill'); // Formulaire de generation print '<form method="post" action="rapport.php?year='.$year.'">'; diff --git a/htdocs/compta/prelevement/create.php b/htdocs/compta/prelevement/create.php index 45c413efb76..5306b6799b9 100644 --- a/htdocs/compta/prelevement/create.php +++ b/htdocs/compta/prelevement/create.php @@ -252,7 +252,7 @@ if ($resql) print '<input type="hidden" name="limit" value="'.$limit.'"/>'; } - print_barre_liste($langs->trans("InvoiceWaitingWithdraw"), $page, $_SERVER['PHP_SELF'], $param, '', '', '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit); + print_barre_liste($langs->trans("InvoiceWaitingWithdraw"), $page, $_SERVER['PHP_SELF'], $param, '', '', '', $num, $nbtotalofrecords, 'bill', 0, '', '', $limit); print '<table class="noborder centpercent">'; print '<tr class="liste_titre">'; diff --git a/htdocs/compta/sociales/list.php b/htdocs/compta/sociales/list.php index ef39d559ca0..9d210c23d85 100644 --- a/htdocs/compta/sociales/list.php +++ b/htdocs/compta/sociales/list.php @@ -199,7 +199,7 @@ if ($resql) $center = ($year ? "<a href='list.php?year=".($year - 1)."'>".img_previous()."</a> ".$langs->trans("Year")." $year <a href='list.php?year=".($year + 1)."'>".img_next()."</a>" : ""); } - print_barre_liste($langs->trans("SocialContributions"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'invoicing', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($langs->trans("SocialContributions"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'bill', 0, $newcardbutton, '', $limit, 0, 0, 1); if (empty($mysoc->country_id) && empty($mysoc->country_code)) { diff --git a/htdocs/compta/tva/index.php b/htdocs/compta/tva/index.php index 43463c34e56..0a785aa78cd 100644 --- a/htdocs/compta/tva/index.php +++ b/htdocs/compta/tva/index.php @@ -255,7 +255,7 @@ llxHeader('', $name); //$textprevyear="<a href=\"index.php?year=" . ($year_current-1) . "\">".img_previous($langs->trans("Previous"), 'class="valignbottom"')."</a>"; //$textnextyear=" <a href=\"index.php?year=" . ($year_current+1) . "\">".img_next($langs->trans("Next"), 'class="valignbottom"')."</a>"; -//print load_fiche_titre($langs->transcountry("VAT", $mysoc->country_code), $textprevyear." ".$langs->trans("Year")." ".$year_start." ".$textnextyear, 'invoicing'); +//print load_fiche_titre($langs->transcountry("VAT", $mysoc->country_code), $textprevyear." ".$langs->trans("Year")." ".$year_start." ".$textnextyear, 'bill'); report_header($name, '', $period, $periodlink, $description, $builddate, $exportlink, array(), $calcmode); //report_header($name,'',$textprevyear.$langs->trans("Year")." ".$year_start.$textnextyear,'',$description,$builddate,$exportlink,array(),$calcmode); diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 322d309b15b..3c64b627a5c 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1098,7 +1098,7 @@ if ($result > 0) // Create if ($action == 'create') { - print load_fiche_titre($langs->trans('AddContract'), '', 'commercial'); + print load_fiche_titre($langs->trans('AddContract'), '', 'contract'); $soc = new Societe($db); if ($socid > 0) $soc->fetch($socid); diff --git a/htdocs/contrat/index.php b/htdocs/contrat/index.php index 3c306453c00..1f3a9fa5b99 100644 --- a/htdocs/contrat/index.php +++ b/htdocs/contrat/index.php @@ -70,7 +70,7 @@ $now = dol_now(); llxHeader(); -print load_fiche_titre($langs->trans("ContractsArea"), '', 'commercial'); +print load_fiche_titre($langs->trans("ContractsArea"), '', 'contract'); //print '<table border="0" width="100%" class="notopnoleftnoright">'; diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 380ab05f01a..70ab37c0380 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -384,7 +384,7 @@ print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; print '<input type="hidden" name="contextpage" value="'.$contextpage.'">'; -print_barre_liste($langs->trans("ListOfContracts"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $totalnboflines, 'commercial', 0, $newcardbutton, '', $limit, 0, 0, 1); +print_barre_liste($langs->trans("ListOfContracts"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $totalnboflines, 'contract', 0, $newcardbutton, '', $limit, 0, 0, 1); $topicmail = "SendContractRef"; $modelmail = "contract"; diff --git a/htdocs/contrat/services_list.php b/htdocs/contrat/services_list.php index c8a6c321b6e..b8ab4cfe1ce 100644 --- a/htdocs/contrat/services_list.php +++ b/htdocs/contrat/services_list.php @@ -349,7 +349,8 @@ if ($mode == "0") $title = $langs->trans("ListOfInactiveServices"); // Must use if ($mode == "4" && $filter != "expired") $title = $langs->trans("ListOfRunningServices"); if ($mode == "4" && $filter == "expired") $title = $langs->trans("ListOfExpiredServices"); if ($mode == "5") $title = $langs->trans("ListOfClosedServices"); -print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'commercial', 0, '', '', $limit); + +print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'contract', 0, '', '', $limit); if ($sall) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index d652a2ebd9b..850879e262e 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3141,9 +3141,11 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (empty($srconly) && in_array($pictowithouttext, array( '1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected', - 'accountancy', 'address', 'bank_account', 'barcode', 'bank', 'bill', 'bookmark', 'bom', 'building', 'cash-register', 'check', 'close_title', 'company', 'contact', 'cubes', + 'accountancy', 'address', 'bank_account', 'barcode', 'bank', 'bill', 'bookmark', 'bom', 'building', + 'cash-register', 'check', 'close_title', 'company', 'contact', 'contract', 'cubes', 'delete', 'dolly', 'dollyrevert', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', - 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'globe', 'globe-americas', 'grip', 'grip_title', 'help', 'language', 'list', 'listlight', 'lot', + 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'globe', 'globe-americas', 'grip', 'grip_title', 'help', + 'intervention', 'language', 'list', 'listlight', 'lot', 'map-marker-alt', 'money-bill-alt', 'mrp', 'note', 'stock', 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bill', 'object_billa', 'object_billd', 'object_bom', 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', @@ -3151,17 +3153,17 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_donation', 'object_dynamicprice', 'object_holiday', 'object_hrm', 'object_intervention', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', 'object_lot', 'object_mrp', 'object_payment', 'object_product', 'object_propal', + 'object_other', 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', 'object_supplier_invoice', 'object_supplier_order', 'object_supplier_proposal', 'object_service', 'object_stock', - 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', - 'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member', 'object_other', + 'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member', 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', - 'off', 'on', + 'off', 'on', 'order', 'paiment', 'play', 'playdisabled', 'poll', 'printer', 'product', 'propal', 'resize', 'service', 'stats', 'trip', 'note', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', 'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', - 'home', 'companies', 'products', 'commercial', 'invoicing', 'preview', 'project', 'projectpub', 'hrm', 'members', 'ticket', 'generic', - 'error', 'warning', + 'home', 'companies', 'products', 'commercial', 'invoicing', 'preview', 'project', 'projectpub', 'supplier_invoice', 'hrm', 'members', 'ticket', 'generic', + 'error', 'warning', 'supplier_proposal', 'supplier_order', 'supplier_invoice', 'title_setup', 'title_accountancy', 'title_bank', 'title_hrm', 'title_agenda' ) )) { diff --git a/htdocs/fichinter/card-rec.php b/htdocs/fichinter/card-rec.php index 7b0ad3180ec..b5b259f2430 100644 --- a/htdocs/fichinter/card-rec.php +++ b/htdocs/fichinter/card-rec.php @@ -224,7 +224,7 @@ if ($action == 'add') { * View */ -llxHeader('', $langs->trans("RepeatableInterventional"), 'ch-fichinter.html#s-fac-fichinter-rec'); +llxHeader('', $langs->trans("RepeatableIntervention"), 'ch-fichinter.html#s-fac-fichinter-rec'); $form = new Form($db); $companystatic = new Societe($db); @@ -245,7 +245,7 @@ $today = dol_mktime(23, 59, 59, $tmparray['mon'], $tmparray['mday'], $tmparray[' * Create mode */ if ($action == 'create') { - print load_fiche_titre($langs->trans("CreateRepeatableIntervention"), '', 'fichinter'); + print load_fiche_titre($langs->trans("CreateRepeatableIntervention"), '', 'intervention'); $object = new Fichinter($db); // Source invoice //$object = new Managementfichinter($db); // Source invoice @@ -429,7 +429,7 @@ if ($action == 'create') { dol_print_error('', "Error, no fichinter ".$object->id); } } elseif ($action == 'selsocforcreatefrommodel') { - print load_fiche_titre($langs->trans("CreateRepeatableIntervention"), '', 'commercial'); + print load_fiche_titre($langs->trans("CreateRepeatableIntervention"), '', 'intervention'); dol_fiche_head(''); print '<form name="fichinter" action="'.$_SERVER['PHP_SELF'].'" method="POST">'; @@ -764,20 +764,10 @@ if ($action == 'create') { $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); - print_barre_liste( - $langs->trans("RepeatableInterventional"), - $page, - $_SERVER['PHP_SELF'], - "&socid=$socid", - $sortfield, - $sortorder, - '', - $num, - '', - 'commercial' - ); - print $langs->trans("ToCreateAPredefinedInterventional").'<br><br>'; + print_barre_liste($langs->trans("RepeatableIntervention"), $page, $_SERVER['PHP_SELF'], "&socid=$socid", $sortfield, $sortorder, '', $num, '', 'intervention'); + + print '<span class="opacitymedium">'.$langs->trans("ToCreateAPredefinedIntervention").'</span><br><br>'; $i = 0; print '<table class="noborder centpercent">'; diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 20f25a1207b..28878443518 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -825,7 +825,7 @@ if ($action == 'create') $soc = new Societe($db); - print load_fiche_titre($langs->trans("AddIntervention"), '', 'commercial'); + print load_fiche_titre($langs->trans("AddIntervention"), '', 'intervention'); dol_htmloutput_mesg($mesg); diff --git a/htdocs/fichinter/index.php b/htdocs/fichinter/index.php index c371be369f3..1ee24997e87 100644 --- a/htdocs/fichinter/index.php +++ b/htdocs/fichinter/index.php @@ -62,7 +62,7 @@ $help_url = "EN:ModuleFichinters|FR:Module_Fiche_Interventions|ES:Módulo_FichaI llxHeader("", $langs->trans("Interventions"), $help_url); -print load_fiche_titre($langs->trans("InterventionsArea"), '', 'commercial'); +print load_fiche_titre($langs->trans("InterventionsArea"), '', 'intervention'); print '<div class="fichecenter"><div class="fichethirdleft">'; diff --git a/htdocs/fichinter/stats/index.php b/htdocs/fichinter/stats/index.php index 9e133f8c5de..0ca948312c6 100644 --- a/htdocs/fichinter/stats/index.php +++ b/htdocs/fichinter/stats/index.php @@ -65,7 +65,7 @@ $dir = $conf->ficheinter->dir_temp; llxHeader('', $title); -print load_fiche_titre($title, '', 'commercial'); +print load_fiche_titre($title, '', 'intervention'); dol_mkdir($dir); diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index f2ab694e352..0cd823304ee 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1465,7 +1465,7 @@ llxHeader('', $langs->trans("Order"), $help_url); $now = dol_now(); if ($action == 'create') { - print load_fiche_titre($langs->trans('NewOrderSupplier')); + print load_fiche_titre($langs->trans('NewOrderSupplier'), '', 'supplier_order'); dol_htmloutput_events(); diff --git a/htdocs/fourn/commande/index.php b/htdocs/fourn/commande/index.php index c12d74e7045..c0272d58a03 100644 --- a/htdocs/fourn/commande/index.php +++ b/htdocs/fourn/commande/index.php @@ -54,7 +54,7 @@ $commandestatic = new CommandeFournisseur($db); $userstatic = new User($db); $formfile = new FormFile($db); -print load_fiche_titre($langs->trans("SuppliersOrdersArea"), '', 'commercial'); +print load_fiche_titre($langs->trans("SuppliersOrdersArea"), '', 'supplier_order'); print '<div class="fichecenter"><div class="fichethirdleft">'; diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index f1f64b996a5..acd79212052 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -675,7 +675,7 @@ if ($resql) print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'commercial', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'supplier_order', 0, $newcardbutton, '', $limit, 0, 0, 1); $topicmail = "SendOrderRef"; $modelmail = "order_supplier_send"; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 0b63356480c..6e8f259bc01 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1695,7 +1695,7 @@ if ($action == 'create') { $facturestatic = new FactureFournisseur($db); - print load_fiche_titre($langs->trans('NewBill')); + print load_fiche_titre($langs->trans('NewBill'), '', 'supplier_invoice'); dol_htmloutput_events(); diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 1c636cf116d..00119fd865d 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -525,7 +525,7 @@ if ($resql) print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; print '<input type="hidden" name="socid" value="'.$socid.'">'; - print_barre_liste($langs->trans("BillsSuppliers").($socid ? ' '.$soc->name : ''), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'invoicing', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($langs->trans("BillsSuppliers").($socid ? ' '.$soc->name : ''), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'supplier_invoice', 0, $newcardbutton, '', $limit, 0, 0, 1); $topicmail = "SendBillRef"; $modelmail = "invoice_supplier_send"; diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index 99b982f5e40..e26357bd4ca 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -897,7 +897,7 @@ if (empty($action) || $action == 'list') print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; - print_barre_liste($langs->trans('SupplierPayments'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit, 0, 0, 1); + print_barre_liste($langs->trans('SupplierPayments'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'supplier_invoice', 0, '', '', $limit, 0, 0, 1); $moreforfilter = ''; diff --git a/htdocs/fourn/facture/rapport.php b/htdocs/fourn/facture/rapport.php index 3e9326a94bf..391c44a2f03 100644 --- a/htdocs/fourn/facture/rapport.php +++ b/htdocs/fourn/facture/rapport.php @@ -91,7 +91,7 @@ $titre = ($year ? $langs->trans("PaymentsReportsForYear", $year) : $langs->trans llxHeader('', $titre); -print load_fiche_titre($titre, '', 'invoicing'); +print load_fiche_titre($titre, '', 'supplier_invoice'); // Formulaire de generation print '<form method="post" action="rapport.php?year='.$year.'">'; diff --git a/htdocs/langs/en_US/interventions.lang b/htdocs/langs/en_US/interventions.lang index e65b966ea09..f04a88db758 100644 --- a/htdocs/langs/en_US/interventions.lang +++ b/htdocs/langs/en_US/interventions.lang @@ -41,9 +41,7 @@ InterventionsArea=Interventions area DraftFichinter=Draft interventions LastModifiedInterventions=Latest %s modified interventions FichinterToProcess=Interventions to process -##### Types de contacts ##### TypeContact_fichinter_external_CUSTOMER=Following-up customer contact -# Modele numérotation PrintProductsOnFichinter=Print also lines of type "product" (not only services) on intervention card PrintProductsOnFichinterDetails=interventions generated from orders UseServicesDurationOnFichinter=Use services duration for interventions generated from orders @@ -53,7 +51,6 @@ InterventionStatistics=Statistics of interventions NbOfinterventions=No. of intervention cards NumberOfInterventionsByMonth=No. of intervention cards by month (date of validation) AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). Add option PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT to 1 into home-setup-other to include them. -##### Exports ##### InterId=Intervention id InterRef=Intervention ref. InterDateCreation=Date creation intervention @@ -65,3 +62,5 @@ InterLineId=Line id intervention InterLineDate=Line date intervention InterLineDuration=Line duration intervention InterLineDesc=Line description intervention +RepeatableIntervention=Template of intevention +ToCreateAPredefinedIntervention=To create a predefined or recurring intervention, create a common intervention and convert it into intervention template diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index ee9f5a1d072..08479b95871 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -1098,7 +1098,7 @@ if ($action == 'create') { $currency_code = $conf->currency; - print load_fiche_titre($langs->trans("NewAskPrice")); + print load_fiche_titre($langs->trans("NewAskPrice"), '', 'supplier_proposal'); $soc = new Societe($db); if ($socid > 0) diff --git a/htdocs/supplier_proposal/index.php b/htdocs/supplier_proposal/index.php index e337f11dfe9..e8432ad8fe4 100644 --- a/htdocs/supplier_proposal/index.php +++ b/htdocs/supplier_proposal/index.php @@ -58,14 +58,12 @@ $help_url = "EN:Module_Ask_Price_Supplier|FR:Module_Demande_de_prix_fournisseur" llxHeader("", $langs->trans("SupplierProposalArea"), $help_url); -print load_fiche_titre($langs->trans("SupplierProposalArea"), '', 'commercial'); +print load_fiche_titre($langs->trans("SupplierProposalArea"), '', 'supplier_proposal'); print '<div class="fichecenter"><div class="fichethirdleft">'; -/* - * Search form - */ +// Search form if (!empty($conf->global->MAIN_SEARCH_FORM_ON_HOME_AREAS)) // This is useless due to the global search combo { @@ -81,9 +79,7 @@ if (!empty($conf->global->MAIN_SEARCH_FORM_ON_HOME_AREAS)) // This is useles } -/* - * Statistics - */ +// Statistics $sql = "SELECT count(p.rowid), p.fk_statut"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index 28dbc3e12b8..cae4e5a81ad 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -431,7 +431,7 @@ if ($resql) print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'commercial', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'supplier_proposal', 0, $newcardbutton, '', $limit, 0, 0, 1); $topicmail = "SendSupplierProposalRef"; $modelmail = "supplier_proposal_send"; From 1bf5745286f5b96365bb0ed9d5a47a96f905a77a Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> Date: Sat, 25 Apr 2020 11:52:07 +0000 Subject: [PATCH 201/780] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- htdocs/admin/expensereport.php | 12 +-- htdocs/admin/external_rss.php | 10 +-- htdocs/admin/notification.php | 18 ++--- htdocs/api/class/api_setup.class.php | 2 +- htdocs/asset/class/asset_type.class.php | 2 +- htdocs/blockedlog/ajax/authority.php | 12 +-- htdocs/bom/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/cashdesk/facturation.php | 46 +++++------ htdocs/core/ajax/price.php | 10 +-- htdocs/core/class/commonobject.class.php | 2 +- htdocs/core/class/dolreceiptprinter.class.php | 2 +- htdocs/core/class/extralanguages.class.php | 10 +-- htdocs/core/class/html.formactions.class.php | 2 +- htdocs/core/customreports.php | 4 +- htdocs/core/lib/memory.lib.php | 70 ++++++++-------- htdocs/core/modules/action/rapport.pdf.php | 2 +- .../expedition/doc/pdf_rouget.modules.php | 6 +- .../doc/pdf_standard.modules.php | 8 +- .../modules/facture/doc/pdf_crabe.modules.php | 2 +- .../modules/import/import_csv.modules.php | 24 +++--- htdocs/core/modules/modFournisseur.class.php | 4 +- htdocs/core/modules/modLabel.class.php | 12 +-- .../tpl/ajax/objectlinked_lineimport.tpl.php | 2 +- .../tpl/document_actions_post_headers.tpl.php | 4 +- htdocs/core/tpl/objectline_view.tpl.php | 2 +- .../class/actions_datapolicy.class.php | 40 +++++----- htdocs/expedition/class/expedition.class.php | 2 +- .../class/api_supplier_invoices.class.php | 26 +++--- .../fournisseur.commande.dispatch.class.php | 4 +- .../fourn/class/fournisseur.facture.class.php | 8 +- htdocs/install/step1.php | 8 +- htdocs/main.inc.php | 2 +- htdocs/product/class/product.class.php | 2 +- htdocs/product/fournisseurs.php | 16 ++-- htdocs/product/stock/class/entrepot.class.php | 4 +- htdocs/product/stock/list.php | 42 +++++----- htdocs/projet/index.php | 2 +- htdocs/projet/list.php | 2 +- htdocs/public/stripe/ipn.php | 30 +++---- htdocs/reception/class/reception.class.php | 4 +- htdocs/salaries/list.php | 2 +- htdocs/societe/class/societe.class.php | 2 +- htdocs/support/inc.php | 80 +++++++++---------- htdocs/user/perms.php | 6 +- 44 files changed, 276 insertions(+), 276 deletions(-) diff --git a/htdocs/admin/expensereport.php b/htdocs/admin/expensereport.php index af1c7c88698..d076e77bf44 100644 --- a/htdocs/admin/expensereport.php +++ b/htdocs/admin/expensereport.php @@ -368,20 +368,20 @@ foreach ($dirmodels as $reldir) { if (file_exists($dir.'/'.$file)) { - $name = substr($file, 4, dol_strlen($file) -16); - $classname = substr($file, 0, dol_strlen($file) -12); + $name = substr($file, 4, dol_strlen($file) - 16); + $classname = substr($file, 0, dol_strlen($file) - 12); require_once $dir.'/'.$file; $module = new $classname($db); - $modulequalified=1; - if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) $modulequalified=0; - if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) $modulequalified=0; + $modulequalified = 1; + if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) $modulequalified = 0; + if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) $modulequalified = 0; if ($modulequalified) { print '<tr class="oddeven"><td width="100">'; - print (empty($module->name)?$name:$module->name); + print (empty($module->name) ? $name : $module->name); print "</td><td>\n"; if (method_exists($module, 'info')) print $module->info($langs); else print $module->description; diff --git a/htdocs/admin/external_rss.php b/htdocs/admin/external_rss.php index cc2edb550a0..51f6c1fd720 100644 --- a/htdocs/admin/external_rss.php +++ b/htdocs/admin/external_rss.php @@ -240,9 +240,9 @@ dol_syslog("select rss boxes", LOG_DEBUG); $resql = $db->query($sql); if ($resql) { - $boxlist = InfoBox::listBoxes($db, 'activated', -1, null); - $num = $db->num_rows($resql); - $i = 0; + $boxlist = InfoBox::listBoxes($db, 'activated', -1, null); + $num = $db->num_rows($resql); + $i = 0; while ($i < $num) { @@ -350,9 +350,9 @@ $db->close(); */ function _isInBoxList($idrss, array $boxlist) { - foreach($boxlist as $box) + foreach ($boxlist as $box) { - if($box->boxcode === "lastrssinfos" && strpos($box->note, $idrss) !== false) + if ($box->boxcode === "lastrssinfos" && strpos($box->note, $idrss) !== false) { return true; } diff --git a/htdocs/admin/notification.php b/htdocs/admin/notification.php index 99643401386..0455fb961ae 100644 --- a/htdocs/admin/notification.php +++ b/htdocs/admin/notification.php @@ -48,19 +48,19 @@ $action = GETPOST('action', 'aZ09'); if ($action == 'update' || $action == 'add') { $constlineid = GETPOST('rowid', 'int'); - $constname=GETPOST('constname', 'alpha'); + $constname = GETPOST('constname', 'alpha'); - $constvalue=(GETPOSTISSET('constvalue_'.$constname) ? GETPOST('constvalue_'.$constname, 'alpha') : GETPOST('constvalue')); - $consttype=(GETPOSTISSET('consttype_'.$constname) ? GETPOST('consttype_'.$constname, 'alphanohtml') : GETPOST('consttype')); - $constnote=(GETPOSTISSET('constnote_'.$constname) ? GETPOST('constnote_'.$constname, 'none') : GETPOST('constnote')); + $constvalue = (GETPOSTISSET('constvalue_'.$constname) ? GETPOST('constvalue_'.$constname, 'alpha') : GETPOST('constvalue')); + $consttype = (GETPOSTISSET('consttype_'.$constname) ? GETPOST('consttype_'.$constname, 'alphanohtml') : GETPOST('consttype')); + $constnote = (GETPOSTISSET('constnote_'.$constname) ? GETPOST('constnote_'.$constname, 'none') : GETPOST('constnote')); $typetouse = empty($oldtypetonewone[$consttype]) ? $consttype : $oldtypetonewone[$consttype]; - $res=dolibarr_set_const($db, $constname, $constvalue, $typetouse, 0, $constnote, $conf->entity); + $res = dolibarr_set_const($db, $constname, $constvalue, $typetouse, 0, $constnote, $conf->entity); - if (! $res > 0) $error++; + if (!$res > 0) $error++; - if (! $error) + if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } @@ -183,7 +183,7 @@ $listofnotifiedevents = $notificationtrigger->getListOfManagedEvents(); if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // Editing global variables not related to a specific theme - $constantes=array(); + $constantes = array(); foreach ($listofnotifiedevents as $notifiedevent) { $label = $langs->trans("Notify_".$notifiedevent['code']); //!=$langs->trans("Notify_".$notifiedevent['code'])?$langs->trans("Notify_".$notifiedevent['code']):$notifiedevent['label']; @@ -210,7 +210,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { $constantes[$notifiedevent['code'].'_TEMPLATE'] = array('type'=>'emailtemplate:'.$model, 'label'=>$label); } - $helptext=''; + $helptext = ''; form_constantes($constantes, 0, $helptext); } else { print '<table class="noborder centpercent">'; diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 945a0efdf46..ec7a6b89596 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -1426,7 +1426,7 @@ class Setup extends DolibarrApi throw new RestException(403, 'Error API open to admin users only or to the login user defined with constant API_LOGIN_ALLOWED_FOR_ADMIN_CHECK'); } - if (!preg_match('/^[a-zA-Z0-9_]+$/', $constantname) || ! isset($conf->global->$constantname)) { + if (!preg_match('/^[a-zA-Z0-9_]+$/', $constantname) || !isset($conf->global->$constantname)) { throw new RestException(500, 'Error Bad or unknown value for constantname'); } if (preg_match('/(_pass|password|secret|_key|key$)/i', $constantname)) { diff --git a/htdocs/asset/class/asset_type.class.php b/htdocs/asset/class/asset_type.class.php index 56be39a8ad0..bfb0c7d073a 100644 --- a/htdocs/asset/class/asset_type.class.php +++ b/htdocs/asset/class/asset_type.class.php @@ -202,7 +202,7 @@ class AssetType extends CommonObject $action = 'update'; // Actions on extra fields - if (! $error) + if (!$error) { $result = $this->insertExtraFields(); if ($result < 0) diff --git a/htdocs/blockedlog/ajax/authority.php b/htdocs/blockedlog/ajax/authority.php index ab91d772288..936ad5edb9c 100644 --- a/htdocs/blockedlog/ajax/authority.php +++ b/htdocs/blockedlog/ajax/authority.php @@ -44,26 +44,26 @@ $signature = GETPOST('s'); $newblock = GETPOST('b'); $hash = GETPOST('h'); -if($auth->fetch(0, $signature)<=0) { +if ($auth->fetch(0, $signature) <= 0) { $auth->signature = $signature; $auth->create($user); } -if(!empty($hash)) { +if (!empty($hash)) { echo $auth->checkBlockchain($hash) ? 'hashisok' : 'hashisjunk'; } -elseif(!empty($newblock)){ - if($auth->checkBlock($newblock)) { +elseif (!empty($newblock)) { + if ($auth->checkBlock($newblock)) { $auth->addBlock($newblock); $auth->update($user); echo 'blockadded'; } - else{ + else { echo 'blockalreadyadded'; } } -else{ +else { echo 'idontunderstandwhatihavetodo'; } diff --git a/htdocs/bom/tpl/linkedobjectblock.tpl.php b/htdocs/bom/tpl/linkedobjectblock.tpl.php index a082d4a1003..d6b8ebf9a7c 100644 --- a/htdocs/bom/tpl/linkedobjectblock.tpl.php +++ b/htdocs/bom/tpl/linkedobjectblock.tpl.php @@ -42,7 +42,7 @@ $ilink = 0; foreach ($linkedObjectBlock as $key => $objectlink) { $ilink++; - $product_static= new Product($db); + $product_static = new Product($db); $trclass = 'oddeven'; if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass .= ' liste_sub_total'; echo '<tr class="'.$trclass.'" >'; diff --git a/htdocs/cashdesk/facturation.php b/htdocs/cashdesk/facturation.php index c8a7e09a9df..3c4a4dd6c7a 100644 --- a/htdocs/cashdesk/facturation.php +++ b/htdocs/cashdesk/facturation.php @@ -32,23 +32,23 @@ * View */ -$form=new Form($db); +$form = new Form($db); // Get list of articles (in warehouse '$conf_fkentrepot' if defined and stock module enabled) -if ( GETPOST('filtre', 'alpha') ) { +if (GETPOST('filtre', 'alpha')) { // Avec filtre - $ret=array(); $i=0; + $ret = array(); $i = 0; $sql = "SELECT p.rowid, p.ref, p.label, p.tva_tx, p.fk_product_type"; - if (! empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql.= ", ps.reel"; - $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; - if (! empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON p.rowid = ps.fk_product AND ps.fk_entrepot = '".$conf_fkentrepot."'"; - $sql.= " WHERE p.entity IN (".getEntity('product').")"; - $sql.= " AND p.tosell = 1"; - if(!$conf->global->CASHDESK_SERVICES) $sql.= " AND p.fk_product_type = 0"; - $sql.= " AND ("; - $sql.= "p.ref LIKE '%".$db->escape(GETPOST('filtre'))."%' OR p.label LIKE '%".$db->escape(GETPOST('filtre'))."%'"; - if (! empty($conf->barcode->enabled)) + if (!empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql .= ", ps.reel"; + $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; + if (!empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON p.rowid = ps.fk_product AND ps.fk_entrepot = '".$conf_fkentrepot."'"; + $sql .= " WHERE p.entity IN (".getEntity('product').")"; + $sql .= " AND p.tosell = 1"; + if (!$conf->global->CASHDESK_SERVICES) $sql .= " AND p.fk_product_type = 0"; + $sql .= " AND ("; + $sql .= "p.ref LIKE '%".$db->escape(GETPOST('filtre'))."%' OR p.label LIKE '%".$db->escape(GETPOST('filtre'))."%'"; + if (!empty($conf->barcode->enabled)) { $filtre = GETPOST('filtre', 'alpha'); @@ -85,23 +85,23 @@ if ( GETPOST('filtre', 'alpha') ) { { dol_print_error($db); } - $tab_designations=$ret; + $tab_designations = $ret; } else { // Sans filtre - $ret=array(); - $i=0; + $ret = array(); + $i = 0; $sql = "SELECT p.rowid, ref, label, tva_tx, p.fk_product_type"; - if (! empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql.= ", ps.reel"; - $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; - if (! empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON p.rowid = ps.fk_product AND ps.fk_entrepot = '".$conf_fkentrepot."'"; - $sql.= " WHERE p.entity IN (".getEntity('product').")"; - $sql.= " AND p.tosell = 1"; - if(!$conf->global->CASHDESK_SERVICES) $sql.= " AND p.fk_product_type = 0"; - $sql.= " ORDER BY p.label"; + if (!empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql .= ", ps.reel"; + $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; + if (!empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON p.rowid = ps.fk_product AND ps.fk_entrepot = '".$conf_fkentrepot."'"; + $sql .= " WHERE p.entity IN (".getEntity('product').")"; + $sql .= " AND p.tosell = 1"; + if (!$conf->global->CASHDESK_SERVICES) $sql .= " AND p.fk_product_type = 0"; + $sql .= " ORDER BY p.label"; dol_syslog($sql); - $resql=$db->query($sql); + $resql = $db->query($sql); if ($resql) { $nbr_enreg = $db->num_rows($resql); diff --git a/htdocs/core/ajax/price.php b/htdocs/core/ajax/price.php index ea5efee7ebf..4e4e302d439 100644 --- a/htdocs/core/ajax/price.php +++ b/htdocs/core/ajax/price.php @@ -40,20 +40,20 @@ top_httphead(); //print '<!-- Ajax page called with url '.dol_escape_htmltag($_SERVER["PHP_SELF"]).'?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]).' -->'."\n"; // Load original field value -if (! empty($output) && isset($amount) && isset($tva_tx)) +if (!empty($output) && isset($amount) && isset($tva_tx)) { - $return=array(); - $price=''; + $return = array(); + $price = ''; if (is_numeric($amount) && $amount != '') { if ($output == 'price_ttc') { - $price = price2num($amount * (1 + ($tva_tx/100)), 'MU'); + $price = price2num($amount * (1 + ($tva_tx / 100)), 'MU'); $return['price_ht'] = $amount; $return['price_ttc'] = (isset($price) && $price != '' ? price($price) : ''); } elseif ($output == 'price_ht') { - $price = price2num($amount / (1 + ($tva_tx/100)), 'MU'); + $price = price2num($amount / (1 + ($tva_tx / 100)), 'MU'); $return['price_ht'] = (isset($price) && $price != '' ? price($price) : ''); $return['price_ttc'] = ($tva_tx == 0 ? $price : $amount); } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 7804f7a304f..70e4ab1520c 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -7130,7 +7130,7 @@ abstract class CommonObject // HTML, select, integer and text add default value if (in_array($extrafields->attributes[$this->table_element]['type'][$key], array('html', 'text', 'select', 'int'))) { - if($action=='create') $value = $extrafields->attributes[$this->table_element]['default'][$key]; + if ($action == 'create') $value = $extrafields->attributes[$this->table_element]['default'][$key]; else $value = $this->array_options['options_'.$key]; } diff --git a/htdocs/core/class/dolreceiptprinter.class.php b/htdocs/core/class/dolreceiptprinter.class.php index 7c5f72e12c6..f921e8ad638 100644 --- a/htdocs/core/class/dolreceiptprinter.class.php +++ b/htdocs/core/class/dolreceiptprinter.class.php @@ -732,7 +732,7 @@ class dolReceiptPrinter extends Printer break; case 'DOL_PRINT_ORDER_LINES': foreach ($object->lines as $line) { - if ($line->special_code==$this->orderprinter) + if ($line->special_code == $this->orderprinter) { $spacestoadd = $nbcharactbyline - strlen($line->ref) - strlen($line->qty) - 10 - 1; $spaces = str_repeat(' ', $spacestoadd); diff --git a/htdocs/core/class/extralanguages.class.php b/htdocs/core/class/extralanguages.class.php index 8ae1fd0a4c7..71a6fa8c1aa 100644 --- a/htdocs/core/class/extralanguages.class.php +++ b/htdocs/core/class/extralanguages.class.php @@ -90,15 +90,15 @@ class ExtraLanguages $array_name_label = array(); - if (! empty($conf->global->MAIN_USE_ALTERNATE_TRANSLATION_FOR)) { + if (!empty($conf->global->MAIN_USE_ALTERNATE_TRANSLATION_FOR)) { $tmpelement = explode(';', $conf->global->MAIN_USE_ALTERNATE_TRANSLATION_FOR); - foreach($tmpelement as $elementstring) { - $reg=array(); + foreach ($tmpelement as $elementstring) { + $reg = array(); preg_match('/^(.*):(.*)$/', $elementstring, $reg); $element = $reg[1]; $array_name_label[$element] = array(); - $tmpfields=explode(',', $reg[2]); - foreach($tmpfields as $field) { + $tmpfields = explode(',', $reg[2]); + foreach ($tmpfields as $field) { //var_dump($fields); //$tmpkeyvar = explode(':', $fields); //$array_name_label[$element][$tmpkeyvar[0]] = $tmpkeyvar[1]; diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index b19a75135aa..b06877c8c3b 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -203,7 +203,7 @@ class FormActions if ($typeelement == 'project') $projectid = $object->id; $newcardbutton = ''; - if (!empty($conf->agenda->enabled) && ! empty($user->rights->agenda->myactions->create)) + if (!empty($conf->agenda->enabled) && !empty($user->rights->agenda->myactions->create)) { $newcardbutton .= dolGetButtonTitle($langs->trans("AddEvent"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.dol_print_date(dol_now(), 'dayhourlog').'&origin='.$typeelement.'&originid='.$object->id.($object->socid > 0 ? '&socid='.$object->socid : ($socid > 0 ? '&socid='.$socid : '')).($projectid > 0 ? '&projectid='.$projectid : '').'&backtopage='.urlencode($urlbacktopage)); } diff --git a/htdocs/core/customreports.php b/htdocs/core/customreports.php index 8375e5f6770..921b3d14bb6 100644 --- a/htdocs/core/customreports.php +++ b/htdocs/core/customreports.php @@ -275,7 +275,7 @@ if (is_array($search_groupby) && count($search_groupby)) { if (class_exists($classname)) { $tmpobject = new $classname($db); $tmpobject->fetch($obj->val); - foreach($tmpobject->fields as $fieldkey => $field) { + foreach ($tmpobject->fields as $fieldkey => $field) { if ($field['showoncombobox']) { $valuetranslated = $tmpobject->$fieldkey; //if ($valuetranslated == '-') $valuetranslated = $langs->transnoentitiesnoconv("Unknown") @@ -747,7 +747,7 @@ if ($mode == 'graph') { $px1->draw($filenamenb, $fileurlnb); $texttoshow = $langs->trans("NoRecordFound"); - if (! GETPOSTISSET('search_measures') || ! GETPOSTISSET('search_xaxis')) { + if (!GETPOSTISSET('search_measures') || !GETPOSTISSET('search_xaxis')) { $texttoshow = $langs->trans("SelectYourGraphOptionsFirst"); } diff --git a/htdocs/core/lib/memory.lib.php b/htdocs/core/lib/memory.lib.php index ba1ed6bb8a0..a301ac40a2b 100644 --- a/htdocs/core/lib/memory.lib.php +++ b/htdocs/core/lib/memory.lib.php @@ -42,24 +42,24 @@ $shmoffset = 1000; // Max number of entries found into a language file. If too l function dol_setcache($memoryid, $data) { global $conf; - $result=0; + $result = 0; // Using a memcached server - if (! empty($conf->memcached->enabled) && class_exists('Memcached')) + if (!empty($conf->memcached->enabled) && class_exists('Memcached')) { global $dolmemcache; - if (empty($dolmemcache) || ! is_object($dolmemcache)) + if (empty($dolmemcache) || !is_object($dolmemcache)) { - $dolmemcache=new Memcached(); - $tmparray=explode(':', $conf->global->MEMCACHED_SERVER); - $result=$dolmemcache->addServer($tmparray[0], $tmparray[1]?$tmparray[1]:11211); - if (! $result) return -1; + $dolmemcache = new Memcached(); + $tmparray = explode(':', $conf->global->MEMCACHED_SERVER); + $result = $dolmemcache->addServer($tmparray[0], $tmparray[1] ? $tmparray[1] : 11211); + if (!$result) return -1; } - $memoryid=session_name().'_'.$memoryid; + $memoryid = session_name().'_'.$memoryid; //$dolmemcache->setOption(Memcached::OPT_COMPRESSION, false); - $dolmemcache->add($memoryid, $data); // This fails if key already exists - $rescode=$dolmemcache->getResultCode(); + $dolmemcache->add($memoryid, $data); // This fails if key already exists + $rescode = $dolmemcache->getResultCode(); if ($rescode == 0) { return count($data); @@ -69,20 +69,20 @@ function dol_setcache($memoryid, $data) return -$rescode; } } - elseif (! empty($conf->memcached->enabled) && class_exists('Memcache')) + elseif (!empty($conf->memcached->enabled) && class_exists('Memcache')) { global $dolmemcache; - if (empty($dolmemcache) || ! is_object($dolmemcache)) + if (empty($dolmemcache) || !is_object($dolmemcache)) { - $dolmemcache=new Memcache(); - $tmparray=explode(':', $conf->global->MEMCACHED_SERVER); - $result=$dolmemcache->addServer($tmparray[0], $tmparray[1]?$tmparray[1]:11211); - if (! $result) return -1; + $dolmemcache = new Memcache(); + $tmparray = explode(':', $conf->global->MEMCACHED_SERVER); + $result = $dolmemcache->addServer($tmparray[0], $tmparray[1] ? $tmparray[1] : 11211); + if (!$result) return -1; } - $memoryid=session_name().'_'.$memoryid; + $memoryid = session_name().'_'.$memoryid; //$dolmemcache->setOption(Memcached::OPT_COMPRESSION, false); - $result=$dolmemcache->add($memoryid, $data); // This fails if key already exists + $result = $dolmemcache->add($memoryid, $data); // This fails if key already exists if ($result) { return count($data); @@ -112,22 +112,22 @@ function dol_getcache($memoryid) global $conf; // Using a memcached server - if (! empty($conf->memcached->enabled) && class_exists('Memcached')) + if (!empty($conf->memcached->enabled) && class_exists('Memcached')) { global $m; - if (empty($m) || ! is_object($m)) + if (empty($m) || !is_object($m)) { - $m=new Memcached(); - $tmparray=explode(':', $conf->global->MEMCACHED_SERVER); - $result=$m->addServer($tmparray[0], $tmparray[1]?$tmparray[1]:11211); - if (! $result) return -1; + $m = new Memcached(); + $tmparray = explode(':', $conf->global->MEMCACHED_SERVER); + $result = $m->addServer($tmparray[0], $tmparray[1] ? $tmparray[1] : 11211); + if (!$result) return -1; } - $memoryid=session_name().'_'.$memoryid; + $memoryid = session_name().'_'.$memoryid; //$m->setOption(Memcached::OPT_COMPRESSION, false); //print "Get memoryid=".$memoryid; - $data=$m->get($memoryid); - $rescode=$m->getResultCode(); + $data = $m->get($memoryid); + $rescode = $m->getResultCode(); //print "memoryid=".$memoryid." - rescode=".$rescode." - data=".count($data)."\n<br>"; //var_dump($data); if ($rescode == 0) @@ -139,20 +139,20 @@ function dol_getcache($memoryid) return -$rescode; } } - elseif (! empty($conf->memcached->enabled) && class_exists('Memcache')) + elseif (!empty($conf->memcached->enabled) && class_exists('Memcache')) { global $m; - if (empty($m) || ! is_object($m)) + if (empty($m) || !is_object($m)) { - $m=new Memcache(); - $tmparray=explode(':', $conf->global->MEMCACHED_SERVER); - $result=$m->addServer($tmparray[0], $tmparray[1]?$tmparray[1]:11211); - if (! $result) return -1; + $m = new Memcache(); + $tmparray = explode(':', $conf->global->MEMCACHED_SERVER); + $result = $m->addServer($tmparray[0], $tmparray[1] ? $tmparray[1] : 11211); + if (!$result) return -1; } - $memoryid=session_name().'_'.$memoryid; + $memoryid = session_name().'_'.$memoryid; //$m->setOption(Memcached::OPT_COMPRESSION, false); - $data=$m->get($memoryid); + $data = $m->get($memoryid); //print "memoryid=".$memoryid." - rescode=".$rescode." - data=".count($data)."\n<br>"; //var_dump($data); if ($data) diff --git a/htdocs/core/modules/action/rapport.pdf.php b/htdocs/core/modules/action/rapport.pdf.php index b8b458c4b2a..1fb4e33a6c6 100644 --- a/htdocs/core/modules/action/rapport.pdf.php +++ b/htdocs/core/modules/action/rapport.pdf.php @@ -174,7 +174,7 @@ class CommActionRapport $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right - $nbpage = $this->_pages($pdf, $outputlangs); // Write content + $nbpage = $this->_pages($pdf, $outputlangs); // Write content if (method_exists($pdf, 'AliasNbPages')) $pdf->AliasNbPages(); $pdf->Close(); diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 1a8f13ea1af..2e0733f1ba2 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -214,14 +214,14 @@ class pdf_rouget extends ModelePdfExpedition $objphoto = new Product($this->db); $objphoto->fetch($object->lines[$i]->fk_product); - if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) + if (!empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) { - $pdir = get_exdir($object->lines[$i]->fk_product, 2, 0, 0, $objphoto, 'product') . $object->lines[$i]->fk_product ."/photos/"; + $pdir = get_exdir($object->lines[$i]->fk_product, 2, 0, 0, $objphoto, 'product').$object->lines[$i]->fk_product."/photos/"; $dir = $conf->product->dir_output.'/'.$pdir; } else { - $pdir = get_exdir(0, 2, 0, 0, $objphoto, 'product') . dol_sanitizeFileName($objphoto->ref).'/'; + $pdir = get_exdir(0, 2, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; $dir = $conf->product->dir_output.'/'.$pdir; } diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index cf6bc12b9a1..3a66a8ae961 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -354,12 +354,12 @@ class pdf_standard extends ModeleExpenseReport // Loop on each lines $i = 0; while ($i < $nblines) { - $pdf->SetFont('', '', $default_font_size - 2); // Into loop to work with multipage + $pdf->SetFont('', '', $default_font_size - 2); // Into loop to work with multipage $pdf->SetTextColor(0, 0, 0); $pdf->setTopMargin($tab_top_newpage); if (empty($showpricebeforepagebreak)) { - $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. + $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. } else { $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext + $heightforinfotot); // The only function to edit the bottom margin of current page to set it. } @@ -385,8 +385,8 @@ class pdf_standard extends ModeleExpenseReport $pdf->setPage($pageposafter + 1); $showpricebeforepagebreak = 1; $nexY = $tab_top_newpage; - $nexY += ($pdf->getFontSize() * 1.3); // Passe espace entre les lignes - $pdf->SetFont('', '', $default_font_size - 2); // Into loop to work with multipage + $nexY += ($pdf->getFontSize() * 1.3); // Passe espace entre les lignes + $pdf->SetFont('', '', $default_font_size - 2); // Into loop to work with multipage $pdf->SetTextColor(0, 0, 0); $pdf->setTopMargin($tab_top_newpage); diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index dcb6cc33a96..1310aec4ccb 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -356,7 +356,7 @@ class pdf_crabe extends ModelePDFFactures if (!empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false); // Set certificate - $cert=empty($user->conf->CERTIFICATE_CRT) ? '' : $user->conf->CERTIFICATE_CRT; + $cert = empty($user->conf->CERTIFICATE_CRT) ? '' : $user->conf->CERTIFICATE_CRT; // If use has no certificate, we try to take the company one if (!$cert) { $cert = empty($conf->global->CERTIFICATE_CRT) ? '' : $conf->global->CERTIFICATE_CRT; diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 85392dd21fa..de32e84d43a 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -462,39 +462,39 @@ class ImportCsv extends ModeleImports $errorforthistable++; $error++; }*/ - $param_array = array('', $newval, 0, $arrayrecord[0]['val']); // Param to fetch parent from account, in chart. + $param_array = array('', $newval, 0, $arrayrecord[0]['val']); // Param to fetch parent from account, in chart. } call_user_func_array(array($classinstance, $method), $param_array); // If not found, try the fetch from label - if (! ($classinstance->id != '') && $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeorlabel') + if (!($classinstance->id != '') && $objimport->array_import_convertvalue[0][$val]['rule'] == 'fetchidfromcodeorlabel') { $param_array = array('', '', $newval); call_user_func_array(array($classinstance, $method), $param_array); } - $this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval]=$classinstance->id; + $this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval] = $classinstance->id; //print 'We have made a '.$class.'->'.$method.' to get id from code '.$newval.'. '; if ($classinstance->id != '') // id may be 0, it is a found value { - $newval=$classinstance->id; + $newval = $classinstance->id; } else { - if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) $this->errors[$error]['lib']=$langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); - elseif (!empty($objimport->array_import_convertvalue[0][$val]['element'])) $this->errors[$error]['lib']=$langs->trans('ErrorFieldRefNotIn', $key, $newval, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['element'])); - else $this->errors[$error]['lib']='ErrorBadDefinitionOfImportProfile'; - $this->errors[$error]['type']='FOREIGNKEY'; + if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); + elseif (!empty($objimport->array_import_convertvalue[0][$val]['element'])) $this->errors[$error]['lib'] = $langs->trans('ErrorFieldRefNotIn', $key, $newval, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['element'])); + else $this->errors[$error]['lib'] = 'ErrorBadDefinitionOfImportProfile'; + $this->errors[$error]['type'] = 'FOREIGNKEY'; $errorforthistable++; $error++; } } } } - elseif ($objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeandlabel') + elseif ($objimport->array_import_convertvalue[0][$val]['rule'] == 'fetchidfromcodeandlabel') { - $isidorref='id'; - if (! is_numeric($newval) && $newval != '' && ! preg_match('/^id:/i', $newval)) $isidorref='ref'; - $newval=preg_replace('/^(id|ref):/i', '', $newval); + $isidorref = 'id'; + if (!is_numeric($newval) && $newval != '' && !preg_match('/^id:/i', $newval)) $isidorref = 'ref'; + $newval = preg_replace('/^(id|ref):/i', '', $newval); if ($isidorref == 'ref') { $file = (empty($objimport->array_import_convertvalue[0][$val]['classfile']) ? $objimport->array_import_convertvalue[0][$val]['file'] : $objimport->array_import_convertvalue[0][$val]['classfile']); diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php index 78055abf5d3..624311c74f0 100644 --- a/htdocs/core/modules/modFournisseur.class.php +++ b/htdocs/core/modules/modFournisseur.class.php @@ -348,8 +348,8 @@ class modFournisseur extends DolibarrModules $tmp = ''; $tmpparam = unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null if ($tmpparam['options'] && is_array($tmpparam['options'])) { - $var=array_keys($tmpparam['options']); - $tmp=array_shift($var); + $var = array_keys($tmpparam['options']); + $tmp = array_shift($var); } if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter = "List:".$tmp; break; diff --git a/htdocs/core/modules/modLabel.class.php b/htdocs/core/modules/modLabel.class.php index 2ad05c19fe9..78ed97cd295 100644 --- a/htdocs/core/modules/modLabel.class.php +++ b/htdocs/core/modules/modLabel.class.php @@ -51,17 +51,17 @@ class modLabel extends DolibarrModules // Possible values for version are: 'development', 'experimental', 'dolibarr' or version $this->version = 'development'; $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); - $this->picto='generic'; + $this->picto = 'generic'; // Data directories to create when module is enabled $this->dirs = array("/label/temp"); // Dependencies - $this->hidden = false; // A condition to hide module - $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled - $this->requiredby = array(); // List of module ids to disable if this one is disabled - $this->conflictwith = array(); // List of module class names as string this module is in conflict with - $this->phpmin = array(5,4); // Minimum version of PHP required by module + $this->hidden = false; // A condition to hide module + $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled + $this->requiredby = array(); // List of module ids to disable if this one is disabled + $this->conflictwith = array(); // List of module class names as string this module is in conflict with + $this->phpmin = array(5, 4); // Minimum version of PHP required by module // Config pages // $this->config_page_url = array("label.php"); diff --git a/htdocs/core/tpl/ajax/objectlinked_lineimport.tpl.php b/htdocs/core/tpl/ajax/objectlinked_lineimport.tpl.php index 6595223083e..4f435bb2106 100644 --- a/htdocs/core/tpl/ajax/objectlinked_lineimport.tpl.php +++ b/htdocs/core/tpl/ajax/objectlinked_lineimport.tpl.php @@ -53,7 +53,7 @@ $(document).ready(function(){ }); - var $dialog = $('<form id="' + formId + '" action="<?php print $objectUrl ; ?>" method="post" ></form>') + var $dialog = $('<form id="' + formId + '" action="<?php print $objectUrl; ?>" method="post" ></form>') .load( page + " #tablelines", function() { $("#" + formId + " #tablelines").prop("id", "ajaxloaded_tablelines"); // change id attribute diff --git a/htdocs/core/tpl/document_actions_post_headers.tpl.php b/htdocs/core/tpl/document_actions_post_headers.tpl.php index 97612645b7d..32f6e67cb00 100644 --- a/htdocs/core/tpl/document_actions_post_headers.tpl.php +++ b/htdocs/core/tpl/document_actions_post_headers.tpl.php @@ -70,14 +70,14 @@ if ($action == 'delete') ); } -$formfile=new FormFile($db); +$formfile = new FormFile($db); // We define var to enable the feature to add prefix of uploaded files. // Caller of this include can make // $savingdocmask=dol_sanitizeFileName($object->ref).'-__file__'; if (!isset($savingdocmask) || !empty($conf->global->MAIN_DISABLE_SUGGEST_REF_AS_PREFIX)) { - $savingdocmask=''; + $savingdocmask = ''; if (empty($conf->global->MAIN_DISABLE_SUGGEST_REF_AS_PREFIX)) { //var_dump($modulepart); if (in_array($modulepart, array( diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index 28b6c6f0dbd..8849020b885 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -284,7 +284,7 @@ if ($line->special_code == 3) { ?> { $tooltiponprice = $langs->transcountry("TotalHT", $mysoc->country_code).'='.price($line->total_ht); $tooltiponprice .= '<br>'.$langs->transcountry("TotalVAT", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_tva); - if (! $senderissupplier && is_object($object->thirdparty)) { + if (!$senderissupplier && is_object($object->thirdparty)) { if ($object->thirdparty->useLocalTax(1)) { if (price2num($line->total_localtax1)) $tooltiponprice .= '<br>'.$langs->transcountry("TotalLT1", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'='.price($line->total_localtax1); else $tooltiponprice .= '<br>'.$langs->transcountry("TotalLT1", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).'=<span class="opacitymedium">'.$langs->trans("NotUsedForThisCustomer").'</span>'; diff --git a/htdocs/datapolicy/class/actions_datapolicy.class.php b/htdocs/datapolicy/class/actions_datapolicy.class.php index 3ef5a12d720..74c254d395f 100644 --- a/htdocs/datapolicy/class/actions_datapolicy.class.php +++ b/htdocs/datapolicy/class/actions_datapolicy.class.php @@ -117,15 +117,15 @@ class ActionsDatapolicy $object->state_id = ''; $object->skype = ''; $object->country_id = ''; - $object->note_private = $object->note_private . '<br/>' . $langs->trans('ANONYMISER_AT', dol_print_date(time())); + $object->note_private = $object->note_private.'<br/>'.$langs->trans('ANONYMISER_AT', dol_print_date(time())); if ($object->update($object->id, $user, 0)) { // On supprime les contacts associé - $sql = "DELETE FROM " . MAIN_DB_PREFIX . "socpeople WHERE fk_soc = " . $object->id; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."socpeople WHERE fk_soc = ".$object->id; $this->db->query($sql); setEventMessages($langs->trans('ANONYMISER_SUCCESS'), array()); - header('Location:' . $_SERVER["PHP_SELF"] . "?socid=" . $object->id); + header('Location:'.$_SERVER["PHP_SELF"]."?socid=".$object->id); } } } elseif ($parameters['currentcontext'] == 'thirdpartycard' && $action == 'datapolicy_portabilite') { @@ -394,40 +394,40 @@ class ActionsDatapolicy if ($parameters['currentcontext'] == 'thirdpartycard') { if (GETPOST('action') == 'create' || GETPOST('action') == 'edit' || GETPOST('action') == '') { $jsscript .= '<script>'; - $jsscript .= "var elementToHide = 'tr.societe_extras_datapolicy_consentement, tr.societe_extras_datapolicy_opposition_traitement, tr.societe_extras_datapolicy_opposition_prospection';" . PHP_EOL; - $jsscript .= "var forme_juridique = [" . PHP_EOL; - $jsscript .= "11, 12, 13, 15, 17, 18, 19, 35, 60, 200, 311, 312, 316, 401, 600, 700, 1005" . PHP_EOL; - $jsscript .= "];" . PHP_EOL; - $jsscript .= "function hideRgPD() {" . PHP_EOL; - $jsscript .= " if ($('#typent_id').val() == 8 || forme_juridique.indexOf(parseInt($('#forme_juridique_code').val())) > -1) {" . PHP_EOL; - $jsscript .= " console.log(elementToHide);" . PHP_EOL; - $jsscript .= " $('tr.societe_extras_datapolicy_consentement, tr.societe_extras_datapolicy_opposition_traitement, tr.societe_extras_datapolicy_opposition_prospection').show(); } else { $('tr.societe_extras_datapolicy_consentement, tr.societe_extras_datapolicy_opposition_traitement, tr.societe_extras_datapolicy_opposition_prospection').hide(); }}" . PHP_EOL; - $jsscript .= "hideRgPD();" . PHP_EOL; - $jsscript .= "$('#forme_juridique_code, #typent_id').change(function(){ hideRgPD(); });" . PHP_EOL; + $jsscript .= "var elementToHide = 'tr.societe_extras_datapolicy_consentement, tr.societe_extras_datapolicy_opposition_traitement, tr.societe_extras_datapolicy_opposition_prospection';".PHP_EOL; + $jsscript .= "var forme_juridique = [".PHP_EOL; + $jsscript .= "11, 12, 13, 15, 17, 18, 19, 35, 60, 200, 311, 312, 316, 401, 600, 700, 1005".PHP_EOL; + $jsscript .= "];".PHP_EOL; + $jsscript .= "function hideRgPD() {".PHP_EOL; + $jsscript .= " if ($('#typent_id').val() == 8 || forme_juridique.indexOf(parseInt($('#forme_juridique_code').val())) > -1) {".PHP_EOL; + $jsscript .= " console.log(elementToHide);".PHP_EOL; + $jsscript .= " $('tr.societe_extras_datapolicy_consentement, tr.societe_extras_datapolicy_opposition_traitement, tr.societe_extras_datapolicy_opposition_prospection').show(); } else { $('tr.societe_extras_datapolicy_consentement, tr.societe_extras_datapolicy_opposition_traitement, tr.societe_extras_datapolicy_opposition_prospection').hide(); }}".PHP_EOL; + $jsscript .= "hideRgPD();".PHP_EOL; + $jsscript .= "$('#forme_juridique_code, #typent_id').change(function(){ hideRgPD(); });".PHP_EOL; $jsscript .= '</script>'; } elseif (GETPOST('action') == 'confirm_delete' && GETPOST('confirm') == 'yes' && GETPOST('socid') > 0) { // La suppression n'a pas été possible - require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php'; + require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; $societe = new Societe($this->db); $societe->fetch(GETPOST('socid')); // On vérifie si il est utilisé if ((in_array($object->forme_juridique_code, array(11, 12, 13, 15, 17, 18, 19, 35, 60, 200, 311, 312, 316, 401, 600, 700, 1005)) || $societe->typent_id == 8) && $societe->isObjectUsed(GETPOST('socid'))) { - require_once DOL_DOCUMENT_ROOT . '/core/class/html.form.class.php'; + require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; $form = new Form($this->db); - echo $form->formconfirm($_SERVER["PHP_SELF"] . "?socid=" . GETPOST('socid'), substr($langs->trans("DATAPOLICIES_POPUP_ANONYME_TITLE"), 0, strlen($langs->trans("DATAPOLICIES_POPUP_ANONYME_TITLE")) - 2), $langs->trans("DATAPOLICIES_POPUP_ANONYME_TEXTE"), 'anonymiser', '', '', 1); + echo $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".GETPOST('socid'), substr($langs->trans("DATAPOLICIES_POPUP_ANONYME_TITLE"), 0, strlen($langs->trans("DATAPOLICIES_POPUP_ANONYME_TITLE")) - 2), $langs->trans("DATAPOLICIES_POPUP_ANONYME_TEXTE"), 'anonymiser', '', '', 1); } } if (GETPOST('socid')) { - require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php'; + require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; $societe = new Societe($this->db); $societe->fetch(GETPOST('socid')); if (!in_array($object->forme_juridique_code, array(11, 12, 13, 15, 17, 18, 19, 35, 60, 200, 311, 312, 316, 401, 600, 700, 1005)) && $societe->typent_id != 8) { - require_once DOL_DOCUMENT_ROOT . '/core/class/html.form.class.php'; + require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; $jsscript .= '<script>'; - $jsscript .= "var elementToHide = 'td.societe_extras_datapolicy_opposition_traitement, td.societe_extras_datapolicy_opposition_prospection, td.societe_extras_datapolicy_consentement';" . PHP_EOL; - $jsscript .= "$(elementToHide).parent('tr').hide();" . PHP_EOL; + $jsscript .= "var elementToHide = 'td.societe_extras_datapolicy_opposition_traitement, td.societe_extras_datapolicy_opposition_prospection, td.societe_extras_datapolicy_consentement';".PHP_EOL; + $jsscript .= "$(elementToHide).parent('tr').hide();".PHP_EOL; $jsscript .= '</script>'; } } diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index b6bc5b15a91..e653ab5d3ca 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1046,7 +1046,7 @@ class Expedition extends CommonObject } } $line->entrepot_id = $linebatch->entrepot_id; - $line->origin_line_id = $dbatch['ix_l']; // deprecated + $line->origin_line_id = $dbatch['ix_l']; // deprecated $line->fk_origin_line = $dbatch['ix_l']; $line->qty = $dbatch['qty']; $line->detail_batch = $tab; diff --git a/htdocs/fourn/class/api_supplier_invoices.class.php b/htdocs/fourn/class/api_supplier_invoices.class.php index 139d87162c6..1f20965fab3 100644 --- a/htdocs/fourn/class/api_supplier_invoices.class.php +++ b/htdocs/fourn/class/api_supplier_invoices.class.php @@ -490,16 +490,16 @@ class SupplierInvoices extends DolibarrApi */ public function getLines($id) { - if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { + if (!DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { throw new RestException(401); } $result = $this->invoice->fetch($id); - if( ! $result ) { + if (!$result) { throw new RestException(404, 'Supplier invoice not found'); } - if( ! DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { + if (!DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } $this->invoice->fetch_lines(); @@ -522,16 +522,16 @@ class SupplierInvoices extends DolibarrApi */ public function postLine($id, $request_data = null) { - if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { + if (!DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { throw new RestException(401); } $result = $this->invoice->fetch($id); - if( ! $result ) { + if (!$result) { throw new RestException(404, 'Supplier invoice not found'); } - if( ! DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { + if (!DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } $request_data = (object) $request_data; @@ -586,16 +586,16 @@ class SupplierInvoices extends DolibarrApi */ public function putLine($id, $lineid, $request_data = null) { - if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { + if (!DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { throw new RestException(401); } $result = $this->invoice->fetch($id); - if( ! $result ) { + if (!$result) { throw new RestException(404, 'Supplier invoice not found'); } - if( ! DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { + if (!DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } $request_data = (object) $request_data; @@ -647,20 +647,20 @@ class SupplierInvoices extends DolibarrApi */ public function deleteLine($id, $lineid) { - if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { + if (!DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { throw new RestException(401); } $result = $this->invoice->fetch($id); - if( ! $result ) { + if (!$result) { throw new RestException(404, 'Supplier invoice not found'); } - if(empty($lineid)) { + if (empty($lineid)) { throw new RestException(400, 'Line ID is mandatory'); } - if( ! DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { + if (!DolibarrApi::_checkAccessToResource('fournisseur', $this->invoice->id, 'facture_fourn', 'facture')) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } diff --git a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php index b809a9fcd37..19ea5880346 100644 --- a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php +++ b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php @@ -211,9 +211,9 @@ class CommandeFournisseurDispatch extends CommonObject } // Create extrafields - if (! $error) + if (!$error) { - $result=$this->insertExtraFields(); + $result = $this->insertExtraFields(); if ($result < 0) $error++; } diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index ce2de03a762..7bc56994fdb 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -977,9 +977,9 @@ class FactureFournisseur extends CommonInvoice } } - if (! $error) + if (!$error) { - $result=$this->insertExtraFields(); + $result = $this->insertExtraFields(); if ($result < 0) { $error++; @@ -3150,9 +3150,9 @@ class SupplierInvoiceLine extends CommonObjectLine $this->deleteObjectLinked(); // Remove extrafields - if (! $error) + if (!$error) { - $result=$this->deleteExtraFields(); + $result = $this->deleteExtraFields(); if ($result < 0) { $error++; diff --git a/htdocs/install/step1.php b/htdocs/install/step1.php index 9d81bca42ce..a5e6b9d3377 100644 --- a/htdocs/install/step1.php +++ b/htdocs/install/step1.php @@ -566,21 +566,21 @@ if (!$error && $db->connected && $action == "set") $error++; } - if (! $error) + if (!$error) { if ($db->connected) { $resultbis = 1; // Create user - $result=$db->DDLCreateUser($dolibarr_main_db_host, $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name); + $result = $db->DDLCreateUser($dolibarr_main_db_host, $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name); // Create user bis if ($databasefortest == 'mysql') { - if (! in_array($dolibarr_main_db_host, array('127.0.0.1', '::1', 'localhost', 'localhost.local'))) + if (!in_array($dolibarr_main_db_host, array('127.0.0.1', '::1', 'localhost', 'localhost.local'))) { - $resultbis=$db->DDLCreateUser('%', $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name); + $resultbis = $db->DDLCreateUser('%', $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name); } } diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 86dd2f128e3..6533b4bfe54 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -2351,7 +2351,7 @@ function main_area($title = '') if (!empty($conf->global->MAIN_ONLY_LOGIN_ALLOWED)) print info_admin($langs->trans("WarningYouAreInMaintenanceMode", $conf->global->MAIN_ONLY_LOGIN_ALLOWED)); // Permit to add user company information on each printed document by set SHOW_SOCINFO_ON_PRINT - if (! empty($conf->global->SHOW_SOCINFO_ON_PRINT) && GETPOST('optioncss', 'aZ09') == 'print' && empty(GETPOST('disable_show_socinfo_on_print', 'az09'))) + if (!empty($conf->global->SHOW_SOCINFO_ON_PRINT) && GETPOST('optioncss', 'aZ09') == 'print' && empty(GETPOST('disable_show_socinfo_on_print', 'az09'))) { global $hookmanager; $hookmanager->initHooks(array('showsocinfoonprint')); diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 336c6b85fa4..e8dd338f4cd 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4737,7 +4737,7 @@ class Product extends CommonObject $op[1] = "-".trim($nbpiece); $movementstock = new MouvementStock($this->db); - $movementstock->setOrigin($origin_element, $origin_id); // Set ->origin and ->origin->id + $movementstock->setOrigin($origin_element, $origin_id); // Set ->origin and ->origin->id $result = $movementstock->_create($user, $this->id, $id_entrepot, $op[$movement], $movement, $price, $label, $inventorycode); if ($result >= 0) { diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 54b70528f9b..7cc5d3966c1 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -780,33 +780,33 @@ SCRIPT; if (empty($rowid)) { foreach ($extralabels as $key => $value) { if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && ($extrafields->attributes["product_fournisseur_price"]['list'][$key] == 1 || $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 3 || ($action == "update_price" && $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 4))) { - if(!empty($extrafields->attributes["product_fournisseur_price"]['langfile'][$key])) $langs->load($extrafields->attributes["product_fournisseur_price"]['langfile'][$key]); + if (!empty($extrafields->attributes["product_fournisseur_price"]['langfile'][$key])) $langs->load($extrafields->attributes["product_fournisseur_price"]['langfile'][$key]); print '<tr><td'.($extrafields->attributes["product_fournisseur_price"]['required'][$key] ? ' class="fieldrequired"' : '').'>'; if (!empty($extrafields->attributes["product_fournisseur_price"]['help'][$key])) print $form->textwithpicto($langs->trans($value), $langs->trans($extrafields->attributes["product_fournisseur_price"]['help'][$key])); else print $langs->trans($value); - print '</td><td>'.$extrafields->showInputField($key, GETPOSTISSET('options_' . $key) ? $extrafield_values['options_' . $key] : '', '', '', '', '', 0, 'product_fournisseur_price').'</td></tr>'; + print '</td><td>'.$extrafields->showInputField($key, GETPOSTISSET('options_'.$key) ? $extrafield_values['options_'.$key] : '', '', '', '', '', 0, 'product_fournisseur_price').'</td></tr>'; } } } else { $sql = "SELECT"; $sql .= " fk_object"; foreach ($extralabels as $key => $value) { - $sql .= ", " . $key; + $sql .= ", ".$key; } - $sql .= " FROM " . MAIN_DB_PREFIX . "product_fournisseur_price_extrafields"; - $sql .= " WHERE fk_object = " . $rowid; + $sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price_extrafields"; + $sql .= " WHERE fk_object = ".$rowid; $resql = $db->query($sql); if ($resql) { $obj = $db->fetch_object($resql); foreach ($extralabels as $key => $value) { if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && ($extrafields->attributes["product_fournisseur_price"]['list'][$key] == 1 || $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 3 || ($action == "update_price" && $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 4))) { - if(!empty($extrafields->attributes["product_fournisseur_price"]['langfile'][$key])) $langs->load($extrafields->attributes["product_fournisseur_price"]['langfile'][$key]); + if (!empty($extrafields->attributes["product_fournisseur_price"]['langfile'][$key])) $langs->load($extrafields->attributes["product_fournisseur_price"]['langfile'][$key]); print '<tr><td'.($extrafields->attributes["product_fournisseur_price"]['required'][$key] ? ' class="fieldrequired"' : '').'>'; if (!empty($extrafields->attributes["product_fournisseur_price"]['help'][$key])) print $form->textwithpicto($langs->trans($value), $langs->trans($extrafields->attributes["product_fournisseur_price"]['help'][$key])); else print $langs->trans($value); - print '</td><td>'.$extrafields->showInputField($key, GETPOSTISSET('options_' . $key) ? $extrafield_values['options_' . $key] : $obj->{$key}, '', '', '', '', 0, 'product_fournisseur_price'); + print '</td><td>'.$extrafields->showInputField($key, GETPOSTISSET('options_'.$key) ? $extrafield_values['options_'.$key] : $obj->{$key}, '', '', '', '', 0, 'product_fournisseur_price'); print '</td></tr>'; } @@ -912,7 +912,7 @@ SCRIPT; foreach ($extralabels as $key => $value) { // Show field if not hidden if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && $extrafields->attributes["product_fournisseur_price"]['list'][$key] != 3) { - if(!empty($extrafields->attributes["product_fournisseur_price"]['langfile'][$key])) $langs->load($extrafields->attributes["product_fournisseur_price"]['langfile'][$key]); + if (!empty($extrafields->attributes["product_fournisseur_price"]['langfile'][$key])) $langs->load($extrafields->attributes["product_fournisseur_price"]['langfile'][$key]); if (!empty($extrafields->attributes["product_fournisseur_price"]['help'][$key])) $extratitle = $form->textwithpicto($langs->trans($value), $langs->trans($extrafields->attributes["product_fournisseur_price"]['help'][$key])); else $extratitle = $langs->trans($value); print_liste_field_titre($extratitle, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'right '); diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index 9f764f7d412..510a6469482 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -112,7 +112,7 @@ class Entrepot extends CommonObject /** * @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( + public $fields = array( 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>10), 'ref' =>array('type'=>'varchar(255)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'showoncombobox'=>1, 'position'=>25), 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>30), @@ -184,7 +184,7 @@ class Entrepot extends CommonObject $error = 0; - if (empty($this->label)) $this->label = $this->libelle; // For backward compatibility + if (empty($this->label)) $this->label = $this->libelle; // For backward compatibility $this->label = trim($this->label); if ($this->label == '') diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index 06d3e46728f..15b92c83acc 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -97,11 +97,11 @@ $fieldstosearchall = array( ); // Initialize array of search criterias -$search_all=trim(GETPOST("search_all", 'alpha')); -$search=array(); -foreach($object->fields as $key => $val) +$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'); + if (GETPOST('search_'.$key, 'alpha') !== '') $search[$key] = GETPOST('search_'.$key, 'alpha'); } // Definition of fields for list @@ -110,7 +110,7 @@ $arrayfields = array( 'estimatedvalue'=>array('type'=>'float', 'label'=>'EstimatedStockValue', 'enabled'=>1, 'visible'=>-2, 'position'=>71), 'estimatedstockvaluesell'=>array('type'=>'float', 'label'=>'EstimatedStockValueSell', 'enabled'=>1, 'visible'=>-2, 'position'=>72), ); -foreach($object->fields as $key => $val) +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'] && ($val['visible'] != 3)), 'position'=>$val['position']); @@ -241,20 +241,20 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $object); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; -$sql.= " GROUP BY "; -foreach($object->fields as $key => $val) +$sql .= " GROUP BY "; +foreach ($object->fields as $key => $val) { - $sql.='t.'.$key.', '; + $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.', ' : ''); +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('/,\s*$/', '', $sql); +$parameters = array(); +$reshook = $hookmanager->executeHooks('printFieldListGroupBy', $parameters); // Note that $action and $object may have been modified by hook +$sql .= $hookmanager->resPrint; +$sql = preg_replace('/,\s*$/', '', $sql); $totalnboflines = 0; $result = $db->query($sql); if ($result) @@ -408,7 +408,7 @@ print '<tr class="liste_titre_filter">'; foreach ($object->fields as $key => $val) { - if($key == 'statut'){ continue; } + if ($key == 'statut') { continue; } $cssforfield = (empty($val['css']) ? '' : $val['css']); if ($key == 'status') $cssforfield .= ($cssforfield ? ' ' : '').'center'; elseif (in_array($val['type'], array('date', 'datetime', 'timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'center'; @@ -421,7 +421,7 @@ foreach ($object->fields as $key => $val) elseif (strpos($val['type'], 'integer:') === 0 || strpos($val['type'], 'sellist:') === 0) { print $object->showInputField($val, $key, $search[$key], '', '', 'search_', 'maxwidth150', 1); } - elseif (! preg_match('/^(date|timestamp)/', $val['type'])) print '<input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.dol_escape_htmltag($search[$key]).'">'; + elseif (!preg_match('/^(date|timestamp)/', $val['type'])) print '<input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.dol_escape_htmltag($search[$key]).'">'; print '</td>'; } } @@ -466,7 +466,7 @@ print '<tr class="liste_titre">'; foreach ($object->fields as $key => $val) { - if($key == 'statut'){ continue; } + if ($key == 'statut') { continue; } $cssforfield = (empty($val['css']) ? '' : $val['css']); if ($key == 'status') $cssforfield .= ($cssforfield ? ' ' : '').'center'; elseif (in_array($val['type'], array('date', 'datetime', 'timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'center'; @@ -525,7 +525,7 @@ if ($num) $warehouse->fk_parent = $obj->fk_parent; $warehouse->statut = $obj->statut; - foreach ($object->fields as $key => $val){ + foreach ($object->fields as $key => $val) { $warehouse->{$key} = $obj->{$key}; } @@ -535,7 +535,7 @@ if ($num) foreach ($warehouse->fields as $key => $val) { - if($key == 'statut'){ continue; } + if ($key == 'statut') { continue; } $cssforfield = (empty($val['css']) ? '' : $val['css']); if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'center'; elseif ($key == 'status') $cssforfield .= ($cssforfield ? ' ' : '').'center'; @@ -562,7 +562,7 @@ if ($num) // Stock qty if (!empty($arrayfields["stockqty"]['checked'])) { - print '<td class="right">' . price2num($obj->stockqty, 5) . '</td>'; + print '<td class="right">'.price2num($obj->stockqty, 5).'</td>'; if (!$i) $totalarray['nbfield']++; if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'stockqty'; } @@ -599,7 +599,7 @@ if ($num) // Status if (!empty($arrayfields['t.statut']['checked'])) { - print '<td class="right">' . $warehouse->LibStatut($obj->statut, 5) . '</td>'; + print '<td class="right">'.$warehouse->LibStatut($obj->statut, 5).'</td>'; if (!$i) $totalarray['nbfield']++; } diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index df6d5b3a13f..3d6903065ab 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -116,7 +116,7 @@ if ($resql) $listofoppstatus[$objp->rowid] = $objp->percent; $listofopplabel[$objp->rowid] = $objp->label; $listofoppcode[$objp->rowid] = $objp->code; - switch($objp->code) { + switch ($objp->code) { case 'PROSP': $colorseries[$objp->rowid] = "-".$badgeStatus0; break; diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 26b00bae2a9..6f60904c67b 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -713,7 +713,7 @@ while ($i < min($num, $limit)) $object->public = $obj->public; $object->ref = $obj->ref; $object->datee = $db->jdate($obj->date_end); - $object->statut = $obj->status; // deprecated + $object->statut = $obj->status; // deprecated $object->status = $obj->status; $object->public = $obj->public; $object->opp_status = $obj->fk_opp_status; diff --git a/htdocs/public/stripe/ipn.php b/htdocs/public/stripe/ipn.php index 8a3bb00e765..4291cb6f834 100644 --- a/htdocs/public/stripe/ipn.php +++ b/htdocs/public/stripe/ipn.php @@ -111,54 +111,54 @@ $user = new User($db); $user->fetch($conf->global->STRIPE_USER_ACCOUNT_FOR_ACTIONS); $user->getrights(); -if (! empty($conf->multicompany->enabled) && ! empty($conf->stripeconnect->enabled) && is_object($mc)) +if (!empty($conf->multicompany->enabled) && !empty($conf->stripeconnect->enabled) && is_object($mc)) { $sql = "SELECT entity"; - $sql.= " FROM ".MAIN_DB_PREFIX."oauth_token"; - $sql.= " WHERE service = '".$db->escape($service)."' and tokenstring = '%".$db->escape($event->account)."%'"; + $sql .= " FROM ".MAIN_DB_PREFIX."oauth_token"; + $sql .= " WHERE service = '".$db->escape($service)."' and tokenstring = '%".$db->escape($event->account)."%'"; - dol_syslog(get_class($db) . "::fetch", LOG_DEBUG); + dol_syslog(get_class($db)."::fetch", LOG_DEBUG); $result = $db->query($sql); if ($result) { if ($db->num_rows($result)) { $obj = $db->fetch_object($result); - $key=$obj->entity; + $key = $obj->entity; } else { - $key=1; + $key = 1; } } else { - $key=1; + $key = 1; } - $ret=$mc->switchEntity($key); - if (! $res && file_exists("../../main.inc.php")) $res=@include "../../main.inc.php"; - if (! $res) die("Include of main fails"); + $ret = $mc->switchEntity($key); + if (!$res && file_exists("../../main.inc.php")) $res = @include "../../main.inc.php"; + if (!$res) die("Include of main fails"); } // list of action -$stripe=new Stripe($db); +$stripe = new Stripe($db); // Subject $societeName = $conf->global->MAIN_INFO_SOCIETE_NOM; -if (! empty($conf->global->MAIN_APPLICATION_TITLE)) $societeName = $conf->global->MAIN_APPLICATION_TITLE; +if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $societeName = $conf->global->MAIN_APPLICATION_TITLE; dol_syslog("***** Stripe IPN was called with event->type = ".$event->type); if ($event->type == 'payout.created') { - $error=0; + $error = 0; - $result=dolibarr_set_const($db, $service."_NEXTPAYOUT", date('Y-m-d H:i:s', $event->data->object->arrival_date), 'chaine', 0, '', $conf->entity); + $result = dolibarr_set_const($db, $service."_NEXTPAYOUT", date('Y-m-d H:i:s', $event->data->object->arrival_date), 'chaine', 0, '', $conf->entity); if ($result > 0) { $subject = $societeName.' - [NOTIFICATION] Stripe payout scheduled'; if (!empty($user->email)) { - $sendto = dolGetFirstLastname($user->firstname, $user->lastname) . " <".$user->email.">"; + $sendto = dolGetFirstLastname($user->firstname, $user->lastname)." <".$user->email.">"; } else { $sendto = $conf->global->MAIN_INFO_SOCIETE_MAIL.'" <'.$conf->global->MAIN_INFO_SOCIETE_MAIL.'>'; } diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index b4e5d0633c7..dbf6e4b9e29 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -306,9 +306,9 @@ class Reception extends CommonObject } // Create extrafields - if (! $error) + if (!$error) { - $result=$this->insertExtraFields(); + $result = $this->insertExtraFields(); if ($result < 0) $error++; } diff --git a/htdocs/salaries/list.php b/htdocs/salaries/list.php index fd89ba5dd2d..fd6e7a3ec95 100644 --- a/htdocs/salaries/list.php +++ b/htdocs/salaries/list.php @@ -58,7 +58,7 @@ $optioncss = GETPOST('optioncss', 'alpha'); $filtre = GETPOST("filtre", 'none'); -if (! GETPOST('typeid', 'int')) +if (!GETPOST('typeid', 'int')) { $newfiltre = str_replace('filtre=', '', $filtre); $filterarray = explode('-', $newfiltre); diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index c35b17fe4fa..62140ba5d89 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -3623,7 +3623,7 @@ class Societe extends CommonObject $this->phone = $member->phone; // Prof phone $this->email = $member->email; $this->socialnetworks = $member->socialnetworks; - $this->entity=$member->entity; + $this->entity = $member->entity; $this->client = 1; // A member is a customer by default $this->code_client = ($customercode ? $customercode : -1); diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php index c12526bbe85..7e5b6aaf531 100644 --- a/htdocs/support/inc.php +++ b/htdocs/support/inc.php @@ -66,87 +66,87 @@ if (!file_exists($conffile)) // Load conf file if it is already defined -if (! defined('DONOTLOADCONF') && file_exists($conffile) && filesize($conffile) > 8) // Test on filesize is to ensure that conf file is more that an empty template with just <?php in first line +if (!defined('DONOTLOADCONF') && file_exists($conffile) && filesize($conffile) > 8) // Test on filesize is to ensure that conf file is more that an empty template with just <?php in first line { - $result=include_once $conffile; // Load conf file + $result = include_once $conffile; // Load conf file if ($result) { - if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // For backward compatibility + if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type = 'mysql'; // For backward compatibility //Mysql driver support has been removed in favor of mysqli if ($dolibarr_main_db_type == 'mysql') { $dolibarr_main_db_type = 'mysqli'; } - if (empty($dolibarr_main_db_port) && ($dolibarr_main_db_type=='mysqli')) $dolibarr_main_db_port='3306'; // For backward compatibility + if (empty($dolibarr_main_db_port) && ($dolibarr_main_db_type == 'mysqli')) $dolibarr_main_db_port = '3306'; // For backward compatibility // Clean parameters - $dolibarr_main_data_root =isset($dolibarr_main_data_root)?trim($dolibarr_main_data_root):''; - $dolibarr_main_url_root =isset($dolibarr_main_url_root)?trim($dolibarr_main_url_root):''; - $dolibarr_main_url_root_alt =isset($dolibarr_main_url_root_alt)?trim($dolibarr_main_url_root_alt):''; - $dolibarr_main_document_root =isset($dolibarr_main_document_root)?trim($dolibarr_main_document_root):''; - $dolibarr_main_document_root_alt=isset($dolibarr_main_document_root_alt)?trim($dolibarr_main_document_root_alt):''; + $dolibarr_main_data_root = isset($dolibarr_main_data_root) ?trim($dolibarr_main_data_root) : ''; + $dolibarr_main_url_root = isset($dolibarr_main_url_root) ?trim($dolibarr_main_url_root) : ''; + $dolibarr_main_url_root_alt = isset($dolibarr_main_url_root_alt) ?trim($dolibarr_main_url_root_alt) : ''; + $dolibarr_main_document_root = isset($dolibarr_main_document_root) ?trim($dolibarr_main_document_root) : ''; + $dolibarr_main_document_root_alt = isset($dolibarr_main_document_root_alt) ?trim($dolibarr_main_document_root_alt) : ''; // Remove last / or \ on directories or url value - if (! empty($dolibarr_main_document_root) && ! preg_match('/^[\\/]+$/', $dolibarr_main_document_root)) $dolibarr_main_document_root=preg_replace('/[\\/]+$/', '', $dolibarr_main_document_root); - if (! empty($dolibarr_main_url_root) && ! preg_match('/^[\\/]+$/', $dolibarr_main_url_root)) $dolibarr_main_url_root=preg_replace('/[\\/]+$/', '', $dolibarr_main_url_root); - if (! empty($dolibarr_main_data_root) && ! preg_match('/^[\\/]+$/', $dolibarr_main_data_root)) $dolibarr_main_data_root=preg_replace('/[\\/]+$/', '', $dolibarr_main_data_root); - if (! empty($dolibarr_main_document_root_alt) && ! preg_match('/^[\\/]+$/', $dolibarr_main_document_root_alt)) $dolibarr_main_document_root_alt=preg_replace('/[\\/]+$/', '', $dolibarr_main_document_root_alt); - if (! empty($dolibarr_main_url_root_alt) && ! preg_match('/^[\\/]+$/', $dolibarr_main_url_root_alt)) $dolibarr_main_url_root_alt=preg_replace('/[\\/]+$/', '', $dolibarr_main_url_root_alt); + if (!empty($dolibarr_main_document_root) && !preg_match('/^[\\/]+$/', $dolibarr_main_document_root)) $dolibarr_main_document_root = preg_replace('/[\\/]+$/', '', $dolibarr_main_document_root); + if (!empty($dolibarr_main_url_root) && !preg_match('/^[\\/]+$/', $dolibarr_main_url_root)) $dolibarr_main_url_root = preg_replace('/[\\/]+$/', '', $dolibarr_main_url_root); + if (!empty($dolibarr_main_data_root) && !preg_match('/^[\\/]+$/', $dolibarr_main_data_root)) $dolibarr_main_data_root = preg_replace('/[\\/]+$/', '', $dolibarr_main_data_root); + if (!empty($dolibarr_main_document_root_alt) && !preg_match('/^[\\/]+$/', $dolibarr_main_document_root_alt)) $dolibarr_main_document_root_alt = preg_replace('/[\\/]+$/', '', $dolibarr_main_document_root_alt); + if (!empty($dolibarr_main_url_root_alt) && !preg_match('/^[\\/]+$/', $dolibarr_main_url_root_alt)) $dolibarr_main_url_root_alt = preg_replace('/[\\/]+$/', '', $dolibarr_main_url_root_alt); // Create conf object - if (! empty($dolibarr_main_document_root)) + if (!empty($dolibarr_main_document_root)) { - $result=conf($dolibarr_main_document_root); + $result = conf($dolibarr_main_document_root); } // Load database driver if ($result) { - if (! empty($dolibarr_main_document_root) && ! empty($dolibarr_main_db_type)) + if (!empty($dolibarr_main_document_root) && !empty($dolibarr_main_db_type)) { - $result=include_once $dolibarr_main_document_root . "/core/db/".$dolibarr_main_db_type.'.class.php'; - if (! $result) + $result = include_once $dolibarr_main_document_root."/core/db/".$dolibarr_main_db_type.'.class.php'; + if (!$result) { - $includeconferror='ErrorBadValueForDolibarrMainDBType'; + $includeconferror = 'ErrorBadValueForDolibarrMainDBType'; } } } else { - $includeconferror='ErrorBadValueForDolibarrMainDocumentRoot'; + $includeconferror = 'ErrorBadValueForDolibarrMainDocumentRoot'; } } else { - $includeconferror='ErrorBadFormatForConfFile'; + $includeconferror = 'ErrorBadFormatForConfFile'; } } $conf->global->MAIN_LOGTOHTML = 1; // Define prefix -if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_'; -define('MAIN_DB_PREFIX', (isset($dolibarr_main_db_prefix)?$dolibarr_main_db_prefix:'')); +if (!isset($dolibarr_main_db_prefix) || !$dolibarr_main_db_prefix) $dolibarr_main_db_prefix = 'llx_'; +define('MAIN_DB_PREFIX', (isset($dolibarr_main_db_prefix) ? $dolibarr_main_db_prefix : '')); -define('DOL_CLASS_PATH', 'class/'); // Filsystem path to class dir -define('DOL_DATA_ROOT', (isset($dolibarr_main_data_root)?$dolibarr_main_data_root:'')); -define('DOL_MAIN_URL_ROOT', (isset($dolibarr_main_url_root)?$dolibarr_main_url_root:'')); // URL relative root -$uri=preg_replace('/^http(s?):\/\//i', '', constant('DOL_MAIN_URL_ROOT')); // $uri contains url without http* -$suburi = strstr($uri, '/'); // $suburi contains url without domain -if ($suburi == '/') $suburi = ''; // If $suburi is /, it is now '' -define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...) +define('DOL_CLASS_PATH', 'class/'); // Filsystem path to class dir +define('DOL_DATA_ROOT', (isset($dolibarr_main_data_root) ? $dolibarr_main_data_root : '')); +define('DOL_MAIN_URL_ROOT', (isset($dolibarr_main_url_root) ? $dolibarr_main_url_root : '')); // URL relative root +$uri = preg_replace('/^http(s?):\/\//i', '', constant('DOL_MAIN_URL_ROOT')); // $uri contains url without http* +$suburi = strstr($uri, '/'); // $suburi contains url without domain +if ($suburi == '/') $suburi = ''; // If $suburi is /, it is now '' +define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...) -if (empty($character_set_client)) $character_set_client="UTF-8"; -$conf->file->character_set_client=strtoupper($character_set_client); -if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($conf->db->type=='mysql'?'latin1':''); // Old installation -$conf->db->character_set=$dolibarr_main_db_character_set; -if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($conf->db->type=='mysql'?'latin1_swedish_ci':''); // Old installation -$conf->db->dolibarr_main_db_collation=$dolibarr_main_db_collation; -if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; +if (empty($character_set_client)) $character_set_client = "UTF-8"; +$conf->file->character_set_client = strtoupper($character_set_client); +if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set = ($conf->db->type == 'mysql' ? 'latin1' : ''); // Old installation +$conf->db->character_set = $dolibarr_main_db_character_set; +if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation = ($conf->db->type == 'mysql' ? 'latin1_swedish_ci' : ''); // Old installation +$conf->db->dolibarr_main_db_collation = $dolibarr_main_db_collation; +if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption = 0; $conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption; -if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey=''; +if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey = ''; $conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey; -if (empty($conf->db->user)) $conf->db->user=''; +if (empty($conf->db->user)) $conf->db->user = ''; // Defini objet langs diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php index 24061a9e949..5d06973abf6 100644 --- a/htdocs/user/perms.php +++ b/htdocs/user/perms.php @@ -294,9 +294,9 @@ print '</tr>'."\n"; //print "xx".$conf->global->MAIN_USE_ADVANCED_PERMS; $sql = "SELECT r.id, r.libelle as label, r.module, r.perms, r.subperms, r.module_position"; $sql .= " FROM ".MAIN_DB_PREFIX."rights_def as r"; -$sql .= " WHERE r.libelle NOT LIKE 'tou%'"; // On ignore droits "tous" -$sql .= " AND r.entity = " . $entity; -if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) $sql .= " AND r.perms NOT LIKE '%_advance'"; // Hide advanced perms if option is not enabled +$sql .= " WHERE r.libelle NOT LIKE 'tou%'"; // On ignore droits "tous" +$sql .= " AND r.entity = ".$entity; +if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) $sql .= " AND r.perms NOT LIKE '%_advance'"; // Hide advanced perms if option is not enabled $sql .= " ORDER BY r.family_position, r.module_position, r.module, r.id"; $result = $db->query($sql); From a040cd030569f06a84ea57aaeef31350dd5cbf44 Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Sat, 25 Apr 2020 15:19:47 +0200 Subject: [PATCH 202/780] Properly assign ->id in expensereport fetch_lines --- htdocs/expensereport/class/expensereport.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index ab54a4f3915..048bdb5d493 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1049,7 +1049,7 @@ class ExpenseReport extends CommonObject $deplig = new ExpenseReportLine($this->db); $deplig->rowid = $objp->rowid; - $deplig->id = $objp->id; + $deplig->id = $objp->rowid; $deplig->comments = $objp->comments; $deplig->qty = $objp->qty; $deplig->value_unit = $objp->value_unit; From 3090eb578bddee0bb2980da54b5e1487bae60742 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 17:18:57 +0200 Subject: [PATCH 203/780] Look and feel v12 --- htdocs/admin/ihm.php | 19 +-- htdocs/commande/index.php | 1 + htdocs/compta/stats/cabyuser.php | 2 +- htdocs/compta/stats/casoc.php | 2 +- .../stats/supplier_turnover_by_thirdparty.php | 2 +- htdocs/core/class/html.formticket.class.php | 4 +- htdocs/core/lib/ajax.lib.php | 4 +- htdocs/core/lib/functions.lib.php | 10 +- htdocs/core/lib/project.lib.php | 2 +- htdocs/core/lib/usergroups.lib.php | 42 ++---- htdocs/margin/admin/margin.php | 16 +-- htdocs/projet/activity/index.php | 4 +- htdocs/projet/tasks.php | 2 +- htdocs/projet/tasks/contact.php | 8 +- htdocs/projet/tasks/list.php | 2 +- htdocs/projet/tasks/stats/index.php | 2 +- htdocs/supplier_proposal/list.php | 4 +- htdocs/ticket/class/ticket.class.php | 133 ++++-------------- htdocs/ticket/index.php | 20 ++- 19 files changed, 105 insertions(+), 174 deletions(-) diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index ab67974c920..68ab91c4638 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -160,7 +160,6 @@ if ($action == 'update') dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", GETPOST("MAIN_FIRSTNAME_NAME_POSITION", 'aZ09'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_HELPCENTER_DISABLELINK", GETPOST('MAIN_HELPCENTER_DISABLELINK', 'aZ09'), 'chaine', 0, '', 0); // Param for all entities dolibarr_set_const($db, "MAIN_MOTD", dol_htmlcleanlastbr(GETPOST("main_motd", 'none')), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_HOME", dol_htmlcleanlastbr(GETPOST("main_home", 'none')), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_HELP_DISABLELINK", GETPOST("MAIN_HELP_DISABLELINK", 'aZ09'), 'chaine', 0, '', 0); // Param for all entities @@ -278,8 +277,10 @@ print '</tr>'; // Disable javascript and ajax print '<tr class="oddeven"><td>'.$langs->trans("DisableJavascript").'</td><td>'; print ajax_constantonoff("MAIN_DISABLE_JAVASCRIPT", array(), $conf->entity, 0, 0, 1, 0); +print ' <span class="opacitymedium">     '.$langs->trans("DisableJavascriptNote").'</span>'; +print '</td>'; +print '<td>'; print '</td>'; -print '<td width="20"> </td>'; print '</tr>'; // Max size of lists @@ -392,6 +393,13 @@ print '<tr class="liste_titre"><th class="titlefield">'.$langs->trans("LoginPage print '<th width="20"> </th>'; print '</tr>'; +// Hide helpcenter link on login page +print '<tr class="oddeven"><td class="titlefield">'.$langs->trans("DisableLinkToHelpCenter").'</td><td>'; +print ajax_constantonoff("MAIN_HELPCENTER_DISABLELINK", array(), $conf->entity, 0, 0, 0, 0); +print '</td>'; +print '<td width="20"> </td>'; +print '</tr>'; + // Message on login page $substitutionarray = getCommonSubstitutionArray($langs, 0, array('object', 'objectamount', 'user')); complete_substitutions_array($substitutionarray, $langs); @@ -407,13 +415,6 @@ $doleditor = new DolEditor('main_home', (isset($conf->global->MAIN_HOME) ? $conf $doleditor->Create(); print '</td></tr>'."\n"; -// Hide helpcenter link on login page -print '<tr class="oddeven"><td class="titlefield">'.$langs->trans("DisableLinkToHelpCenter").'</td><td>'; -print $form->selectyesno('MAIN_HELPCENTER_DISABLELINK', isset($conf->global->MAIN_HELPCENTER_DISABLELINK) ? $conf->global->MAIN_HELPCENTER_DISABLELINK : 0, 1); -print '</td>'; -print '<td width="20"> </td>'; -print '</tr>'; - // Background print '<tr class="oddeven"><td><label for="imagebackground">'.$langs->trans("BackgroundImageLogin").' (png,jpg)</label></td><td colspan="2">'; print '<div class="centpercent inline-block">'; diff --git a/htdocs/commande/index.php b/htdocs/commande/index.php index 4ca7086c132..13d67c942ed 100644 --- a/htdocs/commande/index.php +++ b/htdocs/commande/index.php @@ -106,6 +106,7 @@ if ($resql) $total = 0; $totalinprocess = 0; $dataseries = array(); + $colorseries = array(); $vals = array(); // -1=Canceled, 0=Draft, 1=Validated, 2=Accepted/On process, 3=Closed (Sent/Received, billed or not) while ($i < $num) diff --git a/htdocs/compta/stats/cabyuser.php b/htdocs/compta/stats/cabyuser.php index 9a4ce5b0427..4d4f56a1354 100644 --- a/htdocs/compta/stats/cabyuser.php +++ b/htdocs/compta/stats/cabyuser.php @@ -462,7 +462,7 @@ if (count($amount)) { print '<tr class="liste_total">'; print '<td>'.$langs->trans("Total").'</td>'; if ($modecompta != 'CREANCES-DETTES') { - print '<td colspan="1"></td>'; + print '<td></td>'; } else { print '<td class="right">'.price($catotal_ht).'</td>'; } diff --git a/htdocs/compta/stats/casoc.php b/htdocs/compta/stats/casoc.php index c563d8c5ae6..bec20998cfa 100644 --- a/htdocs/compta/stats/casoc.php +++ b/htdocs/compta/stats/casoc.php @@ -625,7 +625,7 @@ if (count($amount)) { print '<td> </td>'; print '<td> </td>'; if ($modecompta != 'CREANCES-DETTES') { - print '<td colspan="1"></td>'; + print '<td></td>'; } else { print '<td class="right">'.price($catotal_ht).'</td>'; } diff --git a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php index a9cdef94711..fcae12f744b 100644 --- a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php +++ b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php @@ -574,7 +574,7 @@ if (count($amount)) { print '<td> </td>'; print '<td> </td>'; if ($modecompta != 'CREANCES-DETTES') { - print '<td colspan="1"></td>'; + print '<td></td>'; } else { print '<td class="right">'.price($catotal_ht).'</td>'; } diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index 35e5d00bab8..da41a02491b 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -247,7 +247,7 @@ class FormTicket $doleditor->Create(); print '</td></tr>'; - // FK_USER_CREATE + // User of creation if ($this->withusercreate > 0 && $this->fk_user_create) { print '<tr><td class="titlefield">'.$langs->trans("CreatedBy").'</td><td>'; $langs->load("users"); @@ -270,6 +270,7 @@ class FormTicket print '<tr><td class="titlefield">'.$langs->trans("ThirdParty").'</td><td>'; $events = array(); $events[] = array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php', 1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled')); + print img_picto('', 'company', 'class="paddingright"'); print $form->select_company($this->withfromsocid, 'socid', '', 1, 1, '', $events, 0, 'minwidth200'); print '</td></tr>'; if (!empty($conf->use_javascript_ajax) && !empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT)) { @@ -330,6 +331,7 @@ class FormTicket print '<tr><td>'.$langs->trans("Contact").'</td><td>'; // If no socid, set to -1 to avoid full contacts list $selectedCompany = ($this->withfromsocid > 0) ? $this->withfromsocid : -1; + print img_picto('', 'contact', 'class="paddingright"'); $nbofcontacts = $form->select_contacts($selectedCompany, $this->withfromcontactid, 'contactid', 3, '', '', 0, 'minwidth200'); print ' '; $formcompany->selectTypeContact($ticketstatic, '', 'type', 'external', '', 0, 'maginleftonly'); diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index c29b82f4329..329d177a33d 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -533,8 +533,8 @@ function ajax_constantonoff($code, $input = array(), $entity = null, $revertonof </script>'."\n"; $out .= '<div id="confirm_'.$code.'" title="" style="display: none;"></div>'; - $out .= '<span id="set_'.$code.'" class="linkobject '.(!empty($conf->global->$code) ? 'hideobject' : '').'">'.($revertonoff ?img_picto($langs->trans("Enabled"), 'switch_on', '', false, 0, 0, '', '', $marginleftonlyshort) : img_picto($langs->trans("Disabled"), 'switch_off', '', false, 0, 0, '', '', $marginleftonlyshort)).'</span>'; - $out .= '<span id="del_'.$code.'" class="linkobject '.(!empty($conf->global->$code) ? '' : 'hideobject').'">'.($revertonoff ?img_picto($langs->trans("Disabled"), 'switch_off', '', false, 0, 0, '', '', $marginleftonlyshort) : img_picto($langs->trans("Enabled"), 'switch_on', '', false, 0, 0, '', '', $marginleftonlyshort)).'</span>'; + $out .= '<span id="set_'.$code.'" class="valignmiddle linkobject '.(!empty($conf->global->$code) ? 'hideobject' : '').'">'.($revertonoff ?img_picto($langs->trans("Enabled"), 'switch_on', '', false, 0, 0, '', '', $marginleftonlyshort) : img_picto($langs->trans("Disabled"), 'switch_off', '', false, 0, 0, '', '', $marginleftonlyshort)).'</span>'; + $out .= '<span id="del_'.$code.'" class="valignmiddle linkobject '.(!empty($conf->global->$code) ? '' : 'hideobject').'">'.($revertonoff ?img_picto($langs->trans("Disabled"), 'switch_off', '', false, 0, 0, '', '', $marginleftonlyshort) : img_picto($langs->trans("Enabled"), 'switch_on', '', false, 0, 0, '', '', $marginleftonlyshort)).'</span>'; $out .= "\n"; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 850879e262e..94a32ceacaf 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3146,20 +3146,20 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'delete', 'dolly', 'dollyrevert', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'globe', 'globe-americas', 'grip', 'grip_title', 'help', 'intervention', 'language', 'list', 'listlight', 'lot', - 'map-marker-alt', 'money-bill-alt', 'mrp', 'note', 'stock', + 'map-marker-alt', 'money-bill-alt', 'mrp', 'note', 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bill', 'object_billa', 'object_billd', 'object_bom', 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_donation', 'object_dynamicprice', - 'object_holiday', 'object_hrm', 'object_intervention', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', + 'object_holiday', 'object_hrm', 'object_intervention', 'object_margin', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', 'object_lot', 'object_mrp', 'object_payment', 'object_product', 'object_propal', 'object_other', 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', 'object_supplier_invoice', 'object_supplier_order', 'object_supplier_proposal', 'object_service', 'object_stock', 'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member', 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', 'off', 'on', 'order', - 'paiment', 'play', 'playdisabled', 'poll', 'printer', 'product', 'propal', 'resize', 'service', 'stats', 'trip', - 'note', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', + 'paiment', 'play', 'playdisabled', 'poll', 'printer', 'product', 'propal', 'projecttask', 'stock', 'resize', 'service', 'stats', 'trip', + 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', 'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', 'home', 'companies', 'products', 'commercial', 'invoicing', 'preview', 'project', 'projectpub', 'supplier_invoice', 'hrm', 'members', 'ticket', 'generic', @@ -3185,7 +3185,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'company'=>'building', 'contact'=>'address-book', 'contract'=>'suitcase', 'donation'=>'file-alt', 'dynamicprice'=>'hand-holding-usd', 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accounting'=>'chart-line', 'category'=>'tag', 'dollyrevert'=>'dolly', - 'hrm'=>'umbrella-beach', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode', + 'hrm'=>'umbrella-beach', 'margin'=>'calculator', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode', 'email'=>'at', 'edit'=>'pencil-alt', 'grip_title'=>'arrows-alt', 'grip'=>'arrows-alt', 'help'=>'info-circle', 'generic'=>'file', 'holiday'=>'umbrella-beach', 'member'=>'users', 'mrp'=>'cubes', 'trip'=>'wallet', 'group'=>'users', diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 428d976ab6d..581a7ebab74 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -2241,7 +2241,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { if (!in_array('prospectionstatus', $hiddenfields)) { - print '<td class="right">'; + print '<td class="center">'; // Because color of prospection status has no meaning yet, it is used if hidden constant is set if (empty($conf->global->USE_COLOR_FOR_PROSPECTION_STATUS)) { $oppStatusCode = dol_getIdFromCode($db, $objp->opp_status, 'c_lead_status', 'rowid', 'code'); diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 5b7c923001b..d41965bdf1f 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -502,9 +502,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print yn($conf->global->THEME_TOPMENU_DISABLE_IMAGE); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; } @@ -549,9 +548,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">'; else print $langs->trans("Default"); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong>ffffff</strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>ffffff</strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; } @@ -597,9 +595,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">'; else print $langs->trans("Default"); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; } @@ -645,9 +642,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">'; else print $langs->trans("Default"); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; } @@ -671,9 +667,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLENOTAB, $langs->trans("Default")); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong><span style="color: #'.$default.'">'.$default.'</span></strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong><span style="color: #'.$default.'">'.$default.'</span></strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; @@ -698,9 +693,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->showColor($conf->global->THEME_ELDY_BACKTITLE1, $langs->trans("Default")); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; // $colorbacktitle1 in CSS + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; // $colorbacktitle1 in CSS print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; @@ -725,9 +719,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLE, $langs->trans("Default")); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong><span style="color: #'.$default.'">'.$default.'</span></strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong><span style="color: #'.$default.'">'.$default.'</span></strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; @@ -754,9 +747,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">'; else print $langs->trans("Default"); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; } @@ -782,9 +774,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">'; else print $langs->trans("Default"); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; } @@ -835,9 +826,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print $langs->trans("Default"); } } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong><span style="color: #'.$default.'">'.$default.'</span></strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong><span style="color: #'.$default.'">'.$default.'</span></strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; } @@ -881,9 +871,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else print $langs->trans("Default"); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; } @@ -927,9 +916,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else print $langs->trans("Default"); } - print '   <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; + print '   <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - print '</span>'; print '</td>'; print '</tr>'; } @@ -959,7 +947,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if (empty($fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER)) print ' ('.$langs->trans("ForcedByGlobalSetup").')'; } } - print '   ('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; + print '   <span class="opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; print $form->textwithpicto('', $langs->trans("MAIN_OPTIMIZEFORTEXTBROWSERDesc")); print '</td>'; print '</tr>'; @@ -979,7 +967,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print yn($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER); } - print '   ('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; + print '   wspan class="opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; print $form->textwithpicto('', $langs->trans("MAIN_OPTIMIZEFORTEXTBROWSERDesc")); print '</span>'; print '</td>'; @@ -1018,7 +1006,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print yn(0); } } - print '   ('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; + print '   <span class="opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; print $form->textwithpicto('', $langs->trans("MAIN_OPTIMIZEFORCOLORBLINDDesc")); print '</td>'; print '</tr>'; diff --git a/htdocs/margin/admin/margin.php b/htdocs/margin/admin/margin.php index a2ac11abf7d..5b6cd01ba97 100644 --- a/htdocs/margin/admin/margin.php +++ b/htdocs/margin/admin/margin.php @@ -39,6 +39,7 @@ $action = GETPOST('action', 'alpha'); /* * Action */ + if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) { $code = $reg[1]; @@ -107,6 +108,8 @@ if ($action == 'contact') * View */ +$form = new Form($db); + llxHeader('', $langs->trans("margesSetup")); @@ -118,16 +121,13 @@ $head = marges_admin_prepare_head(); dol_fiche_head($head, 'parameters', $langs->trans("Margins"), -1, 'margin'); -print load_fiche_titre($langs->trans("MemberMainOptions"), '', ''); print '<table class="noborder centpercent">'; print '<tr class="liste_titre">'; -print '<td width=300>'.$langs->trans("Description").'</td>'; -print '<td colspan="2" class="center">'.$langs->trans("Value").'</td>'."\n"; +print '<td width=300>'.$langs->trans("MemberMainOptions").'</td>'; +print '<td colspan="2">'.$langs->trans("Value").'</td>'."\n"; print '<td class="left">'.$langs->trans("Description").'</td>'."\n"; print '</tr>'; -$form = new Form($db); - // GLOBAL DISCOUNT MANAGEMENT print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">'; print '<input type="hidden" name="token" value="'.newToken().'">'; @@ -162,7 +162,7 @@ print '</form>'; // DISPLAY MARGIN RATES print '<tr class="oddeven">'; print '<td>'.$langs->trans("DisplayMarginRates").'</td>'; -print '<td colspan="2" class="center">'; +print '<td colspan="2">'; if (!empty($conf->use_javascript_ajax)) { print ajax_constantonoff('DISPLAY_MARGIN_RATES'); @@ -185,7 +185,7 @@ print '</tr>'; // DISPLAY MARK RATES print '<tr class="oddeven">'; print '<td>'.$langs->trans("DisplayMarkRates").'</td>'; -print '<td colspan="2" class="center">'; +print '<td colspan="2">'; if (!empty($conf->use_javascript_ajax)) { print ajax_constantonoff('DISPLAY_MARK_RATES'); @@ -208,7 +208,7 @@ print '</tr>'; print '<tr class="oddeven">'; print '<td>'.$langs->trans("ForceBuyingPriceIfNull").'</td>'; -print '<td colspan="2" class="center">'; +print '<td colspan="2">'; if (!empty($conf->use_javascript_ajax)) { print ajax_constantonoff('ForceBuyingPriceIfNull'); diff --git a/htdocs/projet/activity/index.php b/htdocs/projet/activity/index.php index 63115350bbc..107bcb4e4e3 100644 --- a/htdocs/projet/activity/index.php +++ b/htdocs/projet/activity/index.php @@ -21,7 +21,7 @@ /** * \file htdocs/projet/activity/index.php * \ingroup projet - * \brief Page activite perso du module projet + * \brief Page on activity of projects */ require "../../main.inc.php"; @@ -92,7 +92,7 @@ else else $tooltiphelp = $langs->trans("TasksPublicDesc"); } -print_barre_liste($form->textwithpicto($title, $tooltiphelp), 0, $_SERVER["PHP_SELF"], '', '', '', '', 0, -1, 'project', 0, $morehtml); +print_barre_liste($form->textwithpicto($title, $tooltiphelp), 0, $_SERVER["PHP_SELF"], '', '', '', '', 0, -1, 'projecttask', 0, $morehtml); print '<div class="fichecenter"><div class="fichethirdleft">'; diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index cb004bc33a0..ebc6a7dc556 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -499,7 +499,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third { if ($id > 0 || !empty($ref)) print '<br>'; - print load_fiche_titre($langs->trans("NewTask"), '', 'project'); + print load_fiche_titre($langs->trans("NewTask"), '', 'projecttask'); if ($object->statut == Project::STATUS_CLOSED) { diff --git a/htdocs/projet/tasks/contact.php b/htdocs/projet/tasks/contact.php index 0c9a09b37c0..415859127db 100644 --- a/htdocs/projet/tasks/contact.php +++ b/htdocs/projet/tasks/contact.php @@ -395,11 +395,11 @@ if ($id > 0 || !empty($ref)) print img_object('', 'user').' '.$langs->trans("Users"); print '</td>'; - print '<td colspan="1">'; + print '<td>'; print $conf->global->MAIN_INFO_SOCIETE_NOM; print '</td>'; - print '<td colspan="1">'; + print '<td>'; // On recupere les id des users deja selectionnes if ($object->project->public) $contactsofproject = ''; // Everybody else $contactsofproject = $projectstatic->getListContactId('internal'); @@ -430,13 +430,13 @@ if ($id > 0 || !empty($ref)) print img_object('', 'contact').' '.$langs->trans("ThirdPartyContacts"); print '</td>'; - print '<td colspan="1">'; + print '<td>'; $thirdpartyofproject = $projectstatic->getListContactId('thirdparty'); $selectedCompany = isset($_GET["newcompany"]) ? $_GET["newcompany"] : $projectstatic->socid; $selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany', $thirdpartyofproject, 0, '&withproject='.$withproject); print '</td>'; - print '<td colspan="1">'; + print '<td>'; $contactofproject = $projectstatic->getListContactId('external'); $nbofcontacts = $form->select_contacts($selectedCompany, '', 'contactid', 0, '', $contactofproject); print '</td>'; diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index 67131c29ef4..b7a3f33c117 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -441,7 +441,7 @@ else else $texthelp .= $langs->trans("TasksOnProjectsPublicDesc"); } -print_barre_liste($form->textwithpicto($title, $texthelp), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'project', 0, $newcardbutton, '', $limit, 0, 0, 1); +print_barre_liste($form->textwithpicto($title, $texthelp), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'projecttask', 0, $newcardbutton, '', $limit, 0, 0, 1); $topicmail = "Information"; $modelmail = "task"; diff --git a/htdocs/projet/tasks/stats/index.php b/htdocs/projet/tasks/stats/index.php index c758664d2c6..bbb275ef5df 100644 --- a/htdocs/projet/tasks/stats/index.php +++ b/htdocs/projet/tasks/stats/index.php @@ -67,7 +67,7 @@ llxHeader('', $langs->trans('Tasks')); $title = $langs->trans("TasksStatistics"); $dir = $conf->projet->dir_output.'/temp'; -print load_fiche_titre($title, '', 'project'); +print load_fiche_titre($title, '', 'projecttask'); dol_mkdir($dir); diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index cae4e5a81ad..b4708780c63 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -534,7 +534,7 @@ if ($resql) // Date if (!empty($arrayfields['sp.date_valid']['checked'])) { - print '<td class="liste_titre center" colspan="1">'; + print '<td class="liste_titre center">'; //print $langs->trans('Month').': '; print '<input class="flat width25 valignmiddle" type="text" maxlength="2" name="monthvalid" value="'.dol_escape_htmltag($monthvalid).'">'; //print ' '.$langs->trans('Year').': '; @@ -545,7 +545,7 @@ if ($resql) // Date if (!empty($arrayfields['sp.date_livraison']['checked'])) { - print '<td class="liste_titre center" colspan="1">'; + print '<td class="liste_titre center">'; //print $langs->trans('Month').': '; print '<input class="flat width25 valignmiddle" type="text" maxlength="2" name="month" value="'.dol_escape_htmltag($month).'">'; //print ' '.$langs->trans('Year').': '; diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 172309a233e..85c900eaf55 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -1177,116 +1177,41 @@ class Ticket extends CommonObject // phpcs:enable global $langs; - if ($mode == 0) { - return $langs->trans($this->statuts[$status]); + $labelStatus = $this->statuts[$status]; + $labelStatusShort = $this->statuts_short[$status]; + + if ($status == self::STATUS_NOT_READ) { + $statusType = 'status0'; } - elseif ($mode == 1) { - return $langs->trans($this->statuts_short[$status]); + elseif ($status == self::STATUS_READ) { + $statusType = 'status1'; } - elseif ($mode == 2) { - if ($status == self::STATUS_NOT_READ) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut0.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_READ) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut1.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_ASSIGNED) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut2.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_IN_PROGRESS) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut3.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_NEED_MORE_INFO) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut5.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_WAITING) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut6.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_CLOSED) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut8.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_CANCELED) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut9.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } + elseif ($status == self::STATUS_ASSIGNED) { + $statusType = 'status3'; } - elseif ($mode == 3) { - if ($status == self::STATUS_NOT_READ) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut0.png@ticket'); - } - elseif ($status == self::STATUS_READ) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut1.png@ticket'); - } - elseif ($status == self::STATUS_ASSIGNED) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut2.png@ticket'); - } - elseif ($status == self::STATUS_IN_PROGRESS) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut3.png@ticket'); - } - elseif ($status == self::STATUS_NEED_MORE_INFO) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut5.png@ticket'); - } - elseif ($status == self::STATUS_WAITING) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut6.png@ticket'); - } - elseif ($status == self::STATUS_CLOSED) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut8.png@ticket'); - } - elseif ($status == self::STATUS_CANCELED) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut9.png@ticket'); - } + elseif ($status == self::STATUS_IN_PROGRESS) { + $statusType = 'status4'; } - elseif ($mode == 4) { - if ($status == self::STATUS_NOT_READ) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut0.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_READ) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut1.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_ASSIGNED) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut2.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_IN_PROGRESS) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut3.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_NEED_MORE_INFO) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut5.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_WAITING) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut6.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_CLOSED) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut8.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($status == self::STATUS_CANCELED) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut9.png@ticket').' '.$langs->trans($this->statuts_short[$status]); - } + elseif ($status == self::STATUS_WAITING) { + $statusType = 'status3'; } - elseif ($mode == 5 || $mode == 6) { - if ($status == self::STATUS_NOT_READ) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut0.png@ticket'); - } - elseif ($status == self::STATUS_READ) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut1.png@ticket'); - } - elseif ($status == self::STATUS_ASSIGNED) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut2.png@ticket'); - } - elseif ($status == self::STATUS_IN_PROGRESS) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut3.png@ticket'); - } - elseif ($status == self::STATUS_NEED_MORE_INFO) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut5.png@ticket'); - } - elseif ($status == self::STATUS_WAITING) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut6.png@ticket'); - } - elseif ($status == self::STATUS_CLOSED) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut8.png@ticket'); - } - elseif ($status == self::STATUS_CANCELED) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut9.png@ticket'); - } + elseif ($status == self::STATUS_NEED_MORE_INFO) { + $statusType = 'status9'; } + elseif ($status == self::STATUS_CANCELED) { + $statusType = 'status9'; + } + elseif ($status == self::STATUS_CLOSED) { + $statusType = 'status6'; + } + else { + $labelStatus = $langs->trans('Unknown'); + $labelStatusShort = $langs->trans('Unknown'); + $statusType = 'status0'; + $mode = 0; + } + + return dolGetStatus($langs->trans($labelStatus), $langs->trans($labelStatusShort), '', $statusType, $mode); } diff --git a/htdocs/ticket/index.php b/htdocs/ticket/index.php index 86929157d25..cfd8e3f26f3 100644 --- a/htdocs/ticket/index.php +++ b/htdocs/ticket/index.php @@ -181,15 +181,27 @@ if ($result) { } } + include_once DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php'; + $dataseries = array(); + $colorseries = array(); + $dataseries[] = array('label' => $langs->trans("Unread"), 'data' => round($tick['unread'])); + $colorseries[Ticket::STATUS_NOT_READ] = '-'.$badgeStatus0; $dataseries[] = array('label' => $langs->trans("Read"), 'data' => round($tick['read'])); - $dataseries[] = array('label' => $langs->trans("NeedMoreInformation"), 'data' => round($tick['needmoreinfo'])); + $colorseries[Ticket::STATUS_READ] = $badgeStatus1; $dataseries[] = array('label' => $langs->trans("Assigned"), 'data' => round($tick['assigned'])); + $colorseries[Ticket::STATUS_ASSIGNED] = $badgeStatus3; $dataseries[] = array('label' => $langs->trans("InProgress"), 'data' => round($tick['inprogress'])); - $dataseries[] = array('label' => $langs->trans("Waiting"), 'data' => round($tick['waiting'])); - $dataseries[] = array('label' => $langs->trans("Closed"), 'data' => round($tick['closed'])); + $colorseries[Ticket::STATUS_IN_PROGRESS] = $badgeStatus4; + $dataseries[] = array('label' => $langs->trans("Suspended"), 'data' => round($tick['waiting'])); + $colorseries[Ticket::STATUS_WAITING] = '-'.$badgeStatus3; + $dataseries[] = array('label' => $langs->trans("NeedMoreInformation"), 'data' => round($tick['needmoreinfo'])); + $colorseries[Ticket::STATUS_NEED_MORE_INFO] = $badgeStatus9; $dataseries[] = array('label' => $langs->trans("Canceled"), 'data' => round($tick['canceled'])); + $colorseries[Ticket::STATUS_CANCELED] = $badgeStatus9; + $dataseries[] = array('label' => $langs->trans("Closed"), 'data' => round($tick['closed'])); + $colorseries[Ticket::STATUS_CLOSED] = $badgeStatus6; } else { dol_print_error($db); } @@ -233,6 +245,8 @@ if (!empty($dataseries) && count($dataseries) > 1) { $mesg = $px1->isGraphKo(); if (!$mesg) { $px1->SetData($data); + $px1->SetDataColor(array_values($colorseries)); + unset($data1); $i = $startyear; $legend = array(); From b426bbe7586d0dd7b7196533032b37d3dabe0551 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 17:47:41 +0200 Subject: [PATCH 204/780] Fix bad code --- htdocs/adherents/class/adherent_type.class.php | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/htdocs/adherents/class/adherent_type.class.php b/htdocs/adherents/class/adherent_type.class.php index 46733575c36..4af80ab4a63 100644 --- a/htdocs/adherents/class/adherent_type.class.php +++ b/htdocs/adherents/class/adherent_type.class.php @@ -183,20 +183,14 @@ class AdherentType extends CommonObject $sql2 .= " SET "; $sql2 .= " label='".$this->db->escape($this->label)."',"; $sql2 .= " description='".$this->db->escape($this->description)."'"; - if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", email='".$this->db->escape($this->other)."'"; - } $sql2 .= " WHERE fk_type=".$this->id." AND lang='".$this->db->escape($key)."'"; } else { $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."adherent_type_lang (fk_type, lang, label, description"; - if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", email"; - } $sql2 .= ")"; $sql2 .= " VALUES(".$this->id.",'".$this->db->escape($key)."','".$this->db->escape($this->label)."',"; $sql2 .= " '".$this->db->escape($this->description)."'"; - if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", '".$this->db->escape($this->other)."'"; - } $sql2 .= ")"; } dol_syslog(get_class($this).'::setMultiLangs key = current_lang = '.$key); @@ -219,20 +213,14 @@ class AdherentType extends CommonObject $sql2 .= " SET "; $sql2 .= " label='".$this->db->escape($this->multilangs["$key"]["label"])."',"; $sql2 .= " description='".$this->db->escape($this->multilangs["$key"]["description"])."'"; - if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", email='".$this->db->escape($this->multilangs["$key"]["other"])."'"; - } $sql2 .= " WHERE fk_type=".$this->id." AND lang='".$this->db->escape($key)."'"; } else { $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."adherent_type_lang (fk_type, lang, label, description"; - if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", email"; - } $sql2 .= ")"; $sql2 .= " VALUES(".$this->id.",'".$this->db->escape($key)."','".$this->db->escape($this->multilangs["$key"]["label"])."',"; $sql2 .= " '".$this->db->escape($this->multilangs["$key"]["description"])."'"; - if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", '".$this->db->escape($this->multilangs["$key"]["other"])."'"; - } $sql2 .= ")"; } From 068a890c36d4a739602d24df38805dee0102073d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 19:13:20 +0200 Subject: [PATCH 205/780] Enable more PHPCS rules --- dev/setup/codesniffer/README | 4 ++++ dev/setup/codesniffer/ruleset.xml | 7 +------ htdocs/admin/mails_templates.php | 7 ++----- htdocs/asset/card.php | 16 ++++++++-------- htdocs/core/class/smtps.class.php | 7 ++----- htdocs/core/modules/modEmailCollector.class.php | 9 ++++++--- htdocs/core/modules/modReceiptPrinter.class.php | 4 +++- htdocs/core/modules/modReception.class.php | 3 ++- htdocs/core/modules/modTicket.class.php | 7 ++++++- htdocs/install/upgrade2.php | 8 +++----- .../test/phpunit/MyModuleFunctionalTest.php | 2 +- 11 files changed, 38 insertions(+), 36 deletions(-) diff --git a/dev/setup/codesniffer/README b/dev/setup/codesniffer/README index 8a68d8a1140..087fb318f6f 100644 --- a/dev/setup/codesniffer/README +++ b/dev/setup/codesniffer/README @@ -6,6 +6,10 @@ This directory contains ruleset files to use to develop Dolibarr EPR & CRM. To install/upgrade phpcs: > sudo pear upgrade PHP_CodeSniffer +To run phpcs: +> cd dolibarrgitrepo +> phpcs --standard=dev/setup/codesniffer/ruleset.xml --extensions=php --parallel=8 . + Note with Eclipse: You must setup the PTI plugin of Eclipse into PHPCodeSniffer menu with: * tab value to 4 * path of code sniffer standard to dev/codesniffer diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index 10d6e29bbe2..6b92522d11e 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -36,8 +36,6 @@ <exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedElseif"/> <exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedCatch"/> <exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedForeach"/> - <exclude name="Generic.CodeAnalysis.EmptyStatement.NotAllowed"/> - <exclude name="Generic.CodeAnalysis.EmptyStatement.NotAllowedWarning"/> </rule> <!-- <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" /> --> @@ -70,9 +68,6 @@ <severity>0</severity> </rule> - <rule ref="Generic.CodeAnalysis.UselessOverridingMethod"> - <severity>0</severity> - </rule> <!-- <rule ref="Generic.Commenting.Todo" /> @@ -141,7 +136,7 @@ <!-- Tweaks to metrics --> <rule ref="Generic.Metrics.CyclomaticComplexity"> <properties> - <property name="complexity" value="120" /> + <property name="complexity" value="150" /> <property name="absoluteComplexity" value="300" /> </properties> </rule> diff --git a/htdocs/admin/mails_templates.php b/htdocs/admin/mails_templates.php index cc8a92f819b..37d1f903b4a 100644 --- a/htdocs/admin/mails_templates.php +++ b/htdocs/admin/mails_templates.php @@ -536,7 +536,7 @@ $errors = $hookmanager->errors; // Line to enter new values (input fields) -print "<tr ".$bcnd[$var].">"; +print '<tr class="oddeven">'; if (empty($reshook)) { @@ -976,12 +976,9 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') { global $conf, $langs, $user, $db; global $form; - global $region_id; - global $elementList, $sourceList, $localtax_typeList; - global $bc; + global $elementList, $sourceList; $formadmin = new FormAdmin($db); - $formcompany = new FormCompany($db); foreach ($fieldlist as $field => $value) { diff --git a/htdocs/asset/card.php b/htdocs/asset/card.php index 0a604c023ec..110d662c9e8 100644 --- a/htdocs/asset/card.php +++ b/htdocs/asset/card.php @@ -93,19 +93,19 @@ if (empty($reshook)) // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; - + // Actions when linking object each other include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; - + // Actions when printing a doc from card include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php'; // Action to move up and down lines of object //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php'; - + // Action to build doc include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php'; - + if ($action == 'set_thirdparty' && $permissiontoadd) { $object->setValueFrom('fk_soc', GETPOST('fk_soc', 'int'), '', '', 'date', '', $user, 'MYOBJECT_MODIFY'); @@ -114,7 +114,7 @@ if (empty($reshook)) { $object->setProject(GETPOST('projectid', 'int')); } - + // Actions to send emails $triggersendname = 'ASSET_SENTBYMAIL'; $autocopy = 'MAIN_MAIL_AUTOCOPY_ASSET_TO'; @@ -164,7 +164,7 @@ if ($action == 'create') print '<input type="hidden" name="action" value="add">'; if ($backtopage) print '<input type="hidden" name="backtopage" value="'.$backtopage.'">'; if ($backtopageforcancel) print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">'; - + dol_fiche_head(array(), ''); print '<table class="border centpercent tableforfieldcreate">'."\n"; @@ -186,7 +186,7 @@ if ($action == 'create') print '</div>'; print '</form>'; - + //dol_set_focus('input[name="ref"]'); } @@ -202,7 +202,7 @@ if (($id || $ref) && $action == 'edit') print '<input type="hidden" name="id" value="'.$object->id.'">'; if ($backtopage) print '<input type="hidden" name="backtopage" value="'.$backtopage.'">'; if ($backtopageforcancel) print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">'; - + dol_fiche_head(); print '<table class="border centpercent tableforfieldedit">'."\n"; diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php index ba3c8199fca..f65b87944cf 100644 --- a/htdocs/core/class/smtps.class.php +++ b/htdocs/core/class/smtps.class.php @@ -533,12 +533,9 @@ class SMTPs /** * Now send the message * - * @param boolean $_bolTestMsg whether to run this method in 'Test' mode. - * @param boolean $_bolDebug whether to log all communication between this Class and the Mail Server. - * @return boolean|null void - * $_strMsg If this is run in 'Test' mode, the actual message structure will be returned + * @return boolean|null Result */ - public function sendMsg($_bolTestMsg = false, $_bolDebug = false) + public function sendMsg() { global $conf; diff --git a/htdocs/core/modules/modEmailCollector.class.php b/htdocs/core/modules/modEmailCollector.class.php index cba555391d7..46d17f9668c 100644 --- a/htdocs/core/modules/modEmailCollector.class.php +++ b/htdocs/core/modules/modEmailCollector.class.php @@ -282,8 +282,9 @@ class modEmailCollector extends DolibarrModules $tmpresql = $this->db->query($tmpsql); if ($tmpresql) { if ($this->db->num_rows($tmpresql) == 0) { + $descriptionA1 = 'This collector will scan your mailbox to find emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from the ticket, you may also see answers of your customers or partners directly on the ticket view.'; $sqlforexampleA1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)"; - $sqlforexampleA1 .= " VALUES (".$conf->entity.", 'Collect_Ticket_Requets', 'Example to collect ticket requests', 'This collector will scan your mailbox to find emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from the ticket, you may also see answers of your customers or partners directly on the ticket view.', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; + $sqlforexampleA1 .= " VALUES (".$conf->entity.", 'Collect_Ticket_Requets', 'Example to collect ticket requests', $this->db->escape($descriptionA1), 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; $sqlforexampleA2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)"; $sqlforexampleA2 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Ticket_Requets' and entity = ".$conf->entity."), 'withouttrackingid', '".$this->db->idate(dol_now())."', ".$user->id.", 1)"; $sqlforexampleA3 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, rulevalue, date_creation, fk_user_creat, status)"; @@ -301,8 +302,9 @@ class modEmailCollector extends DolibarrModules $tmpresql = $this->db->query($tmpsql); if ($tmpresql) { if ($this->db->num_rows($tmpresql) == 0) { + $descriptionB1 = 'This collector will scan your mailbox to find all emails that are an answer of an email sent from your application. An event with the email response will be recorded at the good place (Module Agenda must be enabled). For example, if your send a commercial proposal, order or invoice by email and your customer answers your email, the system will automatically find the answer and add it into your ERP.'; $sqlforexampleB1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)"; - $sqlforexampleB1 .= " VALUES (".$conf->entity.", 'Collect_Responses', 'Example to collect any email responses', 'This collector will scan your mailbox to find all emails that are an answer of an email sent from your application. An event with the email response will be recorded at the good place (Module Agenda must be enabled). For example, if your send a commercial proposal, order or invoice by email and your customer answers your email, the system will automatically find the answer and add it into your ERP.', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; + $sqlforexampleB1 .= " VALUES (".$conf->entity.", 'Collect_Responses', 'Example to collect any email responses', $this->db->escape($descriptionB1), 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; $sqlforexampleB2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)"; $sqlforexampleB2 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Responses' and entity = ".$conf->entity."), 'withtrackingid', '".$this->db->idate(dol_now())."', ".$user->id.", 1)"; $sqlforexampleB3 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectoraction (fk_emailcollector, type, date_creation, fk_user_creat, status)"; @@ -317,8 +319,9 @@ class modEmailCollector extends DolibarrModules $tmpresql = $this->db->query($tmpsql); if ($tmpresql) { if ($this->db->num_rows($tmpresql) == 0) { + $descriptionC1 = "This collector will scan your mailbox to find emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.<br>Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1."; $sqlforexampleC1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)"; - $sqlforexampleC1 .= " VALUES (".$conf->entity.", 'Collect_Leads', 'Example to collect leads', 'This collector will scan your mailbox to find emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.<br>Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can''t be found in database (new customer), the lead will be attached to the thirdparty with ID 1.', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; + $sqlforexampleC1 .= " VALUES (".$conf->entity.", 'Collect_Leads', 'Example to collect leads',$this->db->escape($descriptionC1), 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; $sqlforexampleC2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)"; $sqlforexampleC2 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Leads' and entity = ".$conf->entity."), 'withouttrackingid', '".$this->db->idate(dol_now())."', ".$user->id.", 1)"; $sqlforexampleC3 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, rulevalue, date_creation, fk_user_creat, status)"; diff --git a/htdocs/core/modules/modReceiptPrinter.class.php b/htdocs/core/modules/modReceiptPrinter.class.php index 47f62a21b08..f761238213a 100644 --- a/htdocs/core/modules/modReceiptPrinter.class.php +++ b/htdocs/core/modules/modReceiptPrinter.class.php @@ -135,11 +135,13 @@ class modReceiptPrinter extends DolibarrModules global $conf, $langs; // Clean before activation $this->remove($options); + + $templateexample = '<dol_align_center>\r\n<dol_print_text><dol_value_mysoc_name>\r\n<dol_print_text><dol_value_mysoc_address>\r\n<dol_print_text><dol_value_mysoc_zip><dol_value_mysoc_town>\r\n<dol_line_feed>\r\n<dol_print_text>Facture <dol_value_object_ref>\r\n<dol_line_feed>\r\n<dol_align_left>\r\n<dol_print_object_lines>\r\n<dol_line_feed>\r\n<dol_print_object_tax>\r\n<dol_line_feed>\r\n<dol_print_object_total>\r\n<dol_line_feed>\r\n<dol_cut_paper_full>'; $sql = array( "CREATE TABLE IF NOT EXISTS ".MAIN_DB_PREFIX."printer_receipt (rowid integer AUTO_INCREMENT PRIMARY KEY, name varchar(128), fk_type integer, fk_profile integer, parameter varchar(128), entity integer) ENGINE=innodb;", "CREATE TABLE IF NOT EXISTS ".MAIN_DB_PREFIX."printer_receipt_template (rowid integer AUTO_INCREMENT PRIMARY KEY, name varchar(128), template text, entity integer) ENGINE=innodb;", "DELETE FROM ".MAIN_DB_PREFIX."printer_receipt_template WHERE name = '".$langs->trans('Example')."';", - "INSERT INTO ".MAIN_DB_PREFIX."printer_receipt_template (name,template,entity) VALUES ('".$langs->trans('Example')."', '<dol_align_center>\r\n<dol_print_text><dol_value_mysoc_name>\r\n<dol_print_text><dol_value_mysoc_address>\r\n<dol_print_text><dol_value_mysoc_zip><dol_value_mysoc_town>\r\n<dol_line_feed>\r\n<dol_print_text>Facture <dol_value_object_ref>\r\n<dol_line_feed>\r\n<dol_align_left>\r\n<dol_print_object_lines>\r\n<dol_line_feed>\r\n<dol_print_object_tax>\r\n<dol_line_feed>\r\n<dol_print_object_total>\r\n<dol_line_feed>\r\n<dol_cut_paper_full>', 1);", + "INSERT INTO ".MAIN_DB_PREFIX."printer_receipt_template (name,template,entity) VALUES ('".$langs->trans('Example')."', $templateexample, 1);", ); return $this->_init($sql, $options); } diff --git a/htdocs/core/modules/modReception.class.php b/htdocs/core/modules/modReception.class.php index 637afae049d..c09915febb8 100644 --- a/htdocs/core/modules/modReception.class.php +++ b/htdocs/core/modules/modReception.class.php @@ -197,7 +197,8 @@ class modReception extends DolibarrModules $this->export_entities_array[$r] = array( 's.rowid'=>"company", 's.nom'=>'company', 's.address'=>'company', 's.zip'=>'company', 's.town'=>'company', 'd.nom'=>'company', 'co.label'=>'company', 'co.code'=>'company', 's.fk_pays'=>'company', 's.phone'=>'company', 's.siren'=>'company', 's.ape'=>'company', 's.siret'=>'company', 's.idprof4'=>'company', 's.idprof5'=>'company', 's.idprof6'=>'company', - 'c.rowid'=>"reception", 'c.ref'=>"reception", 'c.ref_supplier'=>"reception", 'c.fk_soc'=>"reception", 'c.date_creation'=>"reception", 'c.date_delivery'=>"reception", 'c.tracking_number'=>'reception', 'c.height'=>"reception", 'c.width'=>"reception", 'c.size'=>'reception', 'c.size_units'=>'reception', 'c.weight'=>"reception", 'c.weight_units'=>'reception', 'c.fk_statut'=>"reception", 'c.note_public'=>"reception", 'ed.rowid'=>'reception_line', 'ed.comment'=>'reception_line', 'ed.qty'=>"reception_line", + 'c.rowid'=>"reception", 'c.ref'=>"reception", 'c.ref_supplier'=>"reception", 'c.fk_soc'=>"reception", 'c.date_creation'=>"reception", 'c.date_delivery'=>"reception", 'c.tracking_number'=>'reception', 'c.height'=>"reception", 'c.width'=>"reception", 'c.size'=>'reception', 'c.size_units'=>'reception', 'c.weight'=>"reception", 'c.weight_units'=>'reception', 'c.fk_statut'=>"reception", 'c.note_public'=>"reception", + 'ed.rowid'=>'reception_line', 'ed.comment'=>'reception_line', 'ed.qty'=>"reception_line", 'p.rowid'=>'product', 'p.ref'=>'product', 'p.label'=>'product', 'p.weight'=>'product', 'p.weight_units'=>'product', 'p.volume'=>'product', 'p.volume_units'=>'product' ); if ($idcontacts && !empty($conf->global->RECEPTION_ADD_CONTACTS_IN_EXPORT)) $this->export_entities_array[$r] += array('sp.rowid'=>'contact', 'sp.lastname'=>'contact', 'sp.firstname'=>'contact', 'sp.note_public'=>'contact'); diff --git a/htdocs/core/modules/modTicket.class.php b/htdocs/core/modules/modTicket.class.php index 1fc755455de..0b5e54e9637 100644 --- a/htdocs/core/modules/modTicket.class.php +++ b/htdocs/core/modules/modTicket.class.php @@ -122,7 +122,12 @@ class modTicket extends DolibarrModules 'langs' => 'ticket', 'tabname' => array(MAIN_DB_PREFIX."c_ticket_type", MAIN_DB_PREFIX."c_ticket_severity", MAIN_DB_PREFIX."c_ticket_category", MAIN_DB_PREFIX."c_ticket_resolution"), 'tablib' => array("TicketDictType", "TicketDictSeverity", "TicketDictCategory", "TicketDictResolution"), - 'tabsql' => array('SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.'c_ticket_type as f', 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.'c_ticket_severity as f', 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.'c_ticket_category as f', 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.'c_ticket_resolution as f'), + 'tabsql' => array( + 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.'c_ticket_type as f', + 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.'c_ticket_severity as f', + 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.'c_ticket_category as f', + 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.'c_ticket_resolution as f' + ), 'tabsqlsort' => array("pos ASC", "pos ASC", "pos ASC", "pos ASC"), 'tabfield' => array("pos,code,label,use_default", "pos,code,label,use_default", "pos,code,label,use_default", "pos,code,label,use_default"), 'tabfieldvalue' => array("pos,code,label,use_default", "pos,code,label,use_default", "pos,code,label,use_default", "pos,code,label,use_default"), diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 70f4bb32d19..0fb36466a02 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -498,7 +498,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ migrate_reload_modules($db, $langs, $conf, $listofmodule); // Reload menus (this must be always and only into last targeted version) - migrate_reload_menu($db, $langs, $conf, $versionto); + migrate_reload_menu($db, $langs, $conf); } // Can force activation of some module during migration with parameter 'enablemodules=MAIN_MODULE_XXX,MAIN_MODULE_YYY,...' @@ -3624,10 +3624,9 @@ function migrate_mode_reglement($db, $langs, $conf) * @param DoliDB $db Database handler * @param Translate $langs Object langs * @param Conf $conf Object conf - * @param string $versionto Version target * @return void */ -function migrate_clean_association($db, $langs, $conf, $versionto) +function migrate_clean_association($db, $langs, $conf) { $result = $db->DDLDescTable(MAIN_DB_PREFIX."categorie_association"); if ($result) // result defined for version 3.2 or - @@ -4834,10 +4833,9 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo * @param DoliDB $db Database handler * @param Translate $langs Object langs * @param Conf $conf Object conf - * @param string $versionto Version target * @return void */ -function migrate_reload_menu($db, $langs, $conf, $versionto) +function migrate_reload_menu($db, $langs, $conf) { global $conf; dolibarr_install_syslog("upgrade2::migrate_reload_menu"); diff --git a/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php b/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php index 3a3870958e8..7c038971ed6 100644 --- a/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php +++ b/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php @@ -17,7 +17,7 @@ */ /** - * \file test/functional/MyModuleFunctionalTest.php + * \file test/phpunit/MyModuleFunctionalTest.php * \ingroup mymodule * \brief Example Selenium test. * From 6caa872280759954ac04127bee6ca85a1e3f0e01 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 19:27:42 +0200 Subject: [PATCH 206/780] Enable more PHPCS rules --- dev/setup/codesniffer/ruleset.xml | 7 ------- htdocs/admin/external_rss.php | 12 ++++++------ htdocs/admin/modulehelp.php | 2 +- htdocs/compta/paiement/rapport.php | 6 ++++-- htdocs/core/class/smtps.class.php | 4 ++-- htdocs/mrp/mo_production.php | 2 +- htdocs/product/price.php | 2 +- htdocs/product/stock/movement_card.php | 12 +++++------- htdocs/product/stock/movement_list.php | 14 +++++--------- 9 files changed, 25 insertions(+), 36 deletions(-) diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index 6b92522d11e..9c564c24b0c 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -120,13 +120,6 @@ <rule ref="Generic.Functions.FunctionCallArgumentSpacing" /> - <rule ref="Generic.Functions.FunctionCallArgumentSpacing.NoSpaceBeforeEquals"> - <severity>0</severity> - </rule> - <rule ref="Generic.Functions.FunctionCallArgumentSpacing.NoSpaceBeforeEquals"> - <severity>0</severity> - </rule> - <!-- Disallow several spaces after comma --> <!-- We want to allow this because we want to be able to align params on several similare functions on different lines --> <rule ref="Generic.Functions.FunctionCallArgumentSpacing.TooMuchSpaceAfterComma"> diff --git a/htdocs/admin/external_rss.php b/htdocs/admin/external_rss.php index 51f6c1fd720..b3a66fa112e 100644 --- a/htdocs/admin/external_rss.php +++ b/htdocs/admin/external_rss.php @@ -271,19 +271,19 @@ if ($resql) print '<input type="submit" class="button buttongen" name="delete" value="'.$langs->trans("Delete").'">'; print '<input type="hidden" name="norss" value="'.$idrss.'">'; print '</td>'; - print "</tr>"."\n"; + print '</tr>'."\n"; print '<tr class="oddeven">'; print "<td width=\"100px\">".$langs->trans("Title")."</td>"; print "<td><input type=\"text\" class=\"flat minwidth300\" name=\"external_rss_title_".$idrss."\" value=\"".dol_escape_htmltag($conf->global->$keyrsstitle)."\"></td>"; - print "</tr>"."\n"; + print '</tr>'."\n"; print '<tr class="oddeven">'; print "<td>".$langs->trans("URL")."</td>"; print "<td><input type=\"text\" class=\"flat minwidth300\" name=\"external_rss_urlrss_".$idrss."\" value=\"".dol_escape_htmltag($conf->global->$keyrssurl)."\"></td>"; - print "</tr>"."\n"; + print '</tr>'."\n"; print '<tr class="oddeven">'; @@ -301,7 +301,7 @@ if ($resql) print '</div>'; } print "</td>"; - print "</tr>"."\n"; + print '</tr>'."\n"; // Logo if ($result > 0 && empty($rss->error)) @@ -315,7 +315,7 @@ if ($resql) if ($imageurl) print '<img height="32" src="'.$imageurl.'">'; else print $langs->trans("None"); print '</td>'; - print "</tr>"."\n"; + print '</tr>'."\n"; } // Active @@ -323,7 +323,7 @@ if ($resql) print '<tr class="oddeven">'; print '<td>'.$langs->trans('WidgetEnabled').'</td>'; print '<td>'.yn($active).'</td>'; - print "</tr>"."\n"; + print '</tr>'."\n"; print '</table>'."\n"; diff --git a/htdocs/admin/modulehelp.php b/htdocs/admin/modulehelp.php index 339b98be44a..d5bf12f1061 100644 --- a/htdocs/admin/modulehelp.php +++ b/htdocs/admin/modulehelp.php @@ -387,7 +387,7 @@ if ($mode == 'feature') $filedata = dol_buildpath($moduledir.'/sql/data.sql'); if (dol_is_file($filedata)) { - $text .= $langs->trans("Yes").' ('.$moduledir.'/sql/data.sql'.')'; + $text .= $langs->trans("Yes").' ('.$moduledir.'/sql/data.sql)'; } else $text .= $langs->trans("No"); diff --git a/htdocs/compta/paiement/rapport.php b/htdocs/compta/paiement/rapport.php index a0daa698f24..80013d3d865 100644 --- a/htdocs/compta/paiement/rapport.php +++ b/htdocs/compta/paiement/rapport.php @@ -154,9 +154,11 @@ if ($year) { $tfile = $dir.'/'.$year.'/'.$file; $relativepath = $year.'/'.$file; - print '<tr class="oddeven">'.'<td><a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart=facture_paiement&file='.urlencode($relativepath).'">'.img_pdf().' '.$file.'</a></td>'; + print '<tr class="oddeven">'; + print '<td><a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart=facture_paiement&file='.urlencode($relativepath).'">'.img_pdf().' '.$file.'</a></td>'; print '<td class="right">'.dol_print_size(dol_filesize($tfile)).'</td>'; - print '<td class="right">'.dol_print_date(dol_filemtime($tfile), "dayhour").'</td></tr>'; + print '<td class="right">'.dol_print_date(dol_filemtime($tfile), "dayhour").'</td>'; + print '</tr>'; } } closedir($handle); diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php index f65b87944cf..f6bc31c2f53 100644 --- a/htdocs/core/class/smtps.class.php +++ b/htdocs/core/class/smtps.class.php @@ -1507,8 +1507,8 @@ class SMTPs } // always end related and end alternative after inline images - $content .= "--".$this->_getBoundary('related')."--"."\r\n"; - $content .= "\r\n"."--".$this->_getBoundary('alternative')."--"."\r\n"; + $content .= "--".$this->_getBoundary('related')."--\r\n"; + $content .= "\r\n--".$this->_getBoundary('alternative')."--\r\n"; $content .= "\r\n"; } else diff --git a/htdocs/mrp/mo_production.php b/htdocs/mrp/mo_production.php index 301cf4a76ae..599cb094aac 100644 --- a/htdocs/mrp/mo_production.php +++ b/htdocs/mrp/mo_production.php @@ -667,7 +667,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print load_fiche_titre($langs->trans('Consumption'), '', '', 0, '', '', $newlinetext); print '<div class="div-table-responsive-no-min">'; - print '<table class="noborder noshadow centpercent'.' nobottom'.'">'; + print '<table class="noborder noshadow centpercent nobottom'.'">'; print '<tr class="liste_titre">'; print '<td>'.$langs->trans("Product").'</td>'; diff --git a/htdocs/product/price.php b/htdocs/product/price.php index a4e9f46fa0a..f2109b94795 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -2048,7 +2048,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) print '<tr class="oddeven">'; print "<td>".$langs->trans("Default")."</td>"; - print "<td>"."</td>"; + print "<td></td>"; print '<td class="center">'.$langs->trans($object->price_base_type)."</td>"; print '<td class="right">'; diff --git a/htdocs/product/stock/movement_card.php b/htdocs/product/stock/movement_card.php index 2714740eb45..03171fbeac5 100644 --- a/htdocs/product/stock/movement_card.php +++ b/htdocs/product/stock/movement_card.php @@ -1049,14 +1049,12 @@ if ($resql) { // Inventory code print '<td><a href="' - .DOL_URL_ROOT.'/product/stock/movement_card.php' - .'?id='.$objp->entrepot_id - .'&search_inventorycode='.$objp->inventorycode - .'&search_type_mouvement='.$objp->type_mouvement + .DOL_URL_ROOT.'/product/stock/movement_card.php?id='.urlencode($objp->entrepot_id) + .'&search_inventorycode='.urlencode($objp->inventorycode) + .'&search_type_mouvement='.urlencode($objp->type_mouvement) .'">' - .$objp->inventorycode - .'</a>' - .'</td>'; + .$objp->inventorycode + .'</a></td>'; } if (!empty($arrayfields['m.label']['checked'])) { diff --git a/htdocs/product/stock/movement_list.php b/htdocs/product/stock/movement_list.php index 944462ccdfc..535a0533249 100644 --- a/htdocs/product/stock/movement_list.php +++ b/htdocs/product/stock/movement_list.php @@ -1086,15 +1086,11 @@ if ($resql) if (!empty($arrayfields['m.inventorycode']['checked'])) { // Inventory code - print '<td>'.'<a href="' - .DOL_URL_ROOT.'/product/stock/movement_card.php' - .'?id='.$objp->entrepot_id - .'&search_inventorycode='.$objp->inventorycode - .'&search_type_mouvement='.$objp->type_mouvement - .'">' - .$objp->inventorycode - .'</a>' - .'</td>'; + print '<td><a href="' + .DOL_URL_ROOT.'/product/stock/movement_card.php?id='.urlencode($objp->entrepot_id) + .'&search_inventorycode='.urlencode($objp->inventorycode) + .'&search_type_mouvement='.urlencode($objp->type_mouvement) + .'">'.$objp->inventorycode.'</a></td>'; } if (!empty($arrayfields['m.label']['checked'])) { From 1d68510c7d7ccfe27c7089e454a1b10d6feeb812 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 25 Apr 2020 19:32:18 +0200 Subject: [PATCH 207/780] Fix syntax error --- htdocs/core/modules/modEmailCollector.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/modules/modEmailCollector.class.php b/htdocs/core/modules/modEmailCollector.class.php index 46d17f9668c..ed37a3a70ab 100644 --- a/htdocs/core/modules/modEmailCollector.class.php +++ b/htdocs/core/modules/modEmailCollector.class.php @@ -284,7 +284,7 @@ class modEmailCollector extends DolibarrModules if ($this->db->num_rows($tmpresql) == 0) { $descriptionA1 = 'This collector will scan your mailbox to find emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from the ticket, you may also see answers of your customers or partners directly on the ticket view.'; $sqlforexampleA1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)"; - $sqlforexampleA1 .= " VALUES (".$conf->entity.", 'Collect_Ticket_Requets', 'Example to collect ticket requests', $this->db->escape($descriptionA1), 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; + $sqlforexampleA1 .= " VALUES (".$conf->entity.", 'Collect_Ticket_Requets', 'Example to collect ticket requests', '".$this->db->escape($descriptionA1)."', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; $sqlforexampleA2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)"; $sqlforexampleA2 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Ticket_Requets' and entity = ".$conf->entity."), 'withouttrackingid', '".$this->db->idate(dol_now())."', ".$user->id.", 1)"; $sqlforexampleA3 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, rulevalue, date_creation, fk_user_creat, status)"; @@ -304,7 +304,7 @@ class modEmailCollector extends DolibarrModules if ($this->db->num_rows($tmpresql) == 0) { $descriptionB1 = 'This collector will scan your mailbox to find all emails that are an answer of an email sent from your application. An event with the email response will be recorded at the good place (Module Agenda must be enabled). For example, if your send a commercial proposal, order or invoice by email and your customer answers your email, the system will automatically find the answer and add it into your ERP.'; $sqlforexampleB1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)"; - $sqlforexampleB1 .= " VALUES (".$conf->entity.", 'Collect_Responses', 'Example to collect any email responses', $this->db->escape($descriptionB1), 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; + $sqlforexampleB1 .= " VALUES (".$conf->entity.", 'Collect_Responses', 'Example to collect any email responses', '".$this->db->escape($descriptionB1)."', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; $sqlforexampleB2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)"; $sqlforexampleB2 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Responses' and entity = ".$conf->entity."), 'withtrackingid', '".$this->db->idate(dol_now())."', ".$user->id.", 1)"; $sqlforexampleB3 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectoraction (fk_emailcollector, type, date_creation, fk_user_creat, status)"; @@ -321,7 +321,7 @@ class modEmailCollector extends DolibarrModules if ($this->db->num_rows($tmpresql) == 0) { $descriptionC1 = "This collector will scan your mailbox to find emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.<br>Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1."; $sqlforexampleC1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)"; - $sqlforexampleC1 .= " VALUES (".$conf->entity.", 'Collect_Leads', 'Example to collect leads',$this->db->escape($descriptionC1), 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; + $sqlforexampleC1 .= " VALUES (".$conf->entity.", 'Collect_Leads', 'Example to collect leads', '".$this->db->escape($descriptionC1)."', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; $sqlforexampleC2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)"; $sqlforexampleC2 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Leads' and entity = ".$conf->entity."), 'withouttrackingid', '".$this->db->idate(dol_now())."', ".$user->id.", 1)"; $sqlforexampleC3 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, rulevalue, date_creation, fk_user_creat, status)"; From 62ca9a984e1d8d4c32b794c0bb0a6526affbfe3f Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sat, 25 Apr 2020 21:42:59 +0200 Subject: [PATCH 208/780] Update list.php --- htdocs/societe/list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 3d72fb1cdd3..282a4f44e8f 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -1153,12 +1153,12 @@ while ($i < min($num, $limit)) } if (!empty($arrayfields['s.phone']['checked'])) { - print "<td>".dol_print_phone($obj->phone, $obj->country_code, 0, $obj->rowid)."</td>\n"; + print "<td>".dol_print_phone($obj->phone, $obj->country_code, 0, $obj->rowid, 'AC_TEL')."</td>\n"; if (!$i) $totalarray['nbfield']++; } if (!empty($arrayfields['s.fax']['checked'])) { - print "<td>".dol_print_phone($obj->fax, $obj->country_code, 0, $obj->rowid)."</td>\n"; + print "<td>".dol_print_phone($obj->fax, $obj->country_code, 0, $obj->rowid, 'AC_TEL')."</td>\n"; if (!$i) $totalarray['nbfield']++; } if (!empty($arrayfields['s.url']['checked'])) From 58409ce93e91ae6f6e7cb3b5dc9823f98041e067 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 26 Apr 2020 14:11:25 +0200 Subject: [PATCH 209/780] Look and feel v12 --- htdocs/societe/paymentmodes.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php index d440930bbf5..3583d104dbf 100644 --- a/htdocs/societe/paymentmodes.php +++ b/htdocs/societe/paymentmodes.php @@ -1138,11 +1138,11 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' print '<a href="'.$_SERVER['PHP_SELF'].'?action=synccardtostripe&socid='.$object->id.'&id='.$companypaymentmodetemp->id.'" class="button">'.$langs->trans("CreateCardOnStripe").'</a>'; } - print '<a href="'.DOL_URL_ROOT.'/societe/paymentmodes.php?socid='.$object->id.'&id='.$companypaymentmodetemp->id.'&action=editcard">'; + print '<a class="editfielda" href="'.DOL_URL_ROOT.'/societe/paymentmodes.php?socid='.$object->id.'&id='.$companypaymentmodetemp->id.'&action=editcard">'; print img_picto($langs->trans("Modify"), 'edit'); print '</a>'; print ' '; - print '<a href="'.DOL_URL_ROOT.'/societe/paymentmodes.php?socid='.$object->id.'&id='.$companypaymentmodetemp->id.'&action=deletecard">'; // source='.$companypaymentmodetemp->stripe_card_ref.'& + print '<a class="marginleftonly" href="'.DOL_URL_ROOT.'/societe/paymentmodes.php?socid='.$object->id.'&id='.$companypaymentmodetemp->id.'&action=deletecard">'; // source='.$companypaymentmodetemp->stripe_card_ref.'& print img_picto($langs->trans("Delete"), 'delete'); print '</a>'; } From 06cb0194d562d81f2c14093b3e32e758755ff9f8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 26 Apr 2020 14:12:51 +0200 Subject: [PATCH 210/780] Look and feel v12 --- htdocs/societe/paymentmodes.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php index 3583d104dbf..6385346ce5d 100644 --- a/htdocs/societe/paymentmodes.php +++ b/htdocs/societe/paymentmodes.php @@ -1547,13 +1547,11 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' print '<td class="right nowraponall">'; if ($user->rights->societe->creer) { - print '<a href="'.$_SERVER["PHP_SELF"].'?socid='.$object->id.'&id='.$rib->id.'&action=edit">'; + print '<a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?socid='.$object->id.'&id='.$rib->id.'&action=edit">'; print img_picto($langs->trans("Modify"), 'edit'); print '</a>'; - print ' '; - - print '<a href="'.$_SERVER["PHP_SELF"].'?socid='.$object->id.'&id='.$rib->id.'&action=delete">'; + print '<a class="marginleftonly" href="'.$_SERVER["PHP_SELF"].'?socid='.$object->id.'&id='.$rib->id.'&action=delete">'; print img_picto($langs->trans("Delete"), 'delete'); print '</a>'; } From a36d0c96c1458c31c20f8a170ef879e7319bd9f8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 26 Apr 2020 22:28:43 +0200 Subject: [PATCH 211/780] Fix sql --- htdocs/core/modules/modReceiptPrinter.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/modReceiptPrinter.class.php b/htdocs/core/modules/modReceiptPrinter.class.php index f761238213a..818c090dcc0 100644 --- a/htdocs/core/modules/modReceiptPrinter.class.php +++ b/htdocs/core/modules/modReceiptPrinter.class.php @@ -141,7 +141,7 @@ class modReceiptPrinter extends DolibarrModules "CREATE TABLE IF NOT EXISTS ".MAIN_DB_PREFIX."printer_receipt (rowid integer AUTO_INCREMENT PRIMARY KEY, name varchar(128), fk_type integer, fk_profile integer, parameter varchar(128), entity integer) ENGINE=innodb;", "CREATE TABLE IF NOT EXISTS ".MAIN_DB_PREFIX."printer_receipt_template (rowid integer AUTO_INCREMENT PRIMARY KEY, name varchar(128), template text, entity integer) ENGINE=innodb;", "DELETE FROM ".MAIN_DB_PREFIX."printer_receipt_template WHERE name = '".$langs->trans('Example')."';", - "INSERT INTO ".MAIN_DB_PREFIX."printer_receipt_template (name,template,entity) VALUES ('".$langs->trans('Example')."', $templateexample, 1);", + "INSERT INTO ".MAIN_DB_PREFIX."printer_receipt_template (name,template,entity) VALUES ('".$langs->trans('Example')."', '".$templateexample."', 1);", ); return $this->_init($sql, $options); } From b20d85b198f432d9dfbdcff4214bd0c60ea2574e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 26 Apr 2020 23:06:52 +0200 Subject: [PATCH 212/780] Fix phpcs --- dev/setup/codesniffer/ruleset.xml | 1 - .../accountancy/journal/purchasesjournal.php | 2 +- htdocs/accountancy/journal/sellsjournal.php | 2 +- .../admin/dolistore/class/dolistore.class.php | 20 ++++++------ htdocs/admin/external_rss.php | 2 +- htdocs/admin/system/perf.php | 4 +-- htdocs/blockedlog/admin/blockedlog_list.php | 28 ++++++++-------- htdocs/categories/index.php | 4 +-- htdocs/compta/tva/clients.php | 18 +++++------ htdocs/core/class/html.form.class.php | 3 +- .../filemanagerdol/connectors/php/util.php | 12 ++----- htdocs/core/js/lib_notification.js.php | 2 +- htdocs/core/lib/cron.lib.php | 2 +- htdocs/core/lib/project.lib.php | 2 +- htdocs/core/lib/website2.lib.php | 4 +-- htdocs/core/lib/xcal.lib.php | 14 ++++---- .../bank/doc/pdf_sepamandate.modules.php | 4 +-- htdocs/install/repair.php | 6 ++-- htdocs/opensurvey/fonctions.php | 2 +- htdocs/product/stock/replenishorders.php | 32 +++++++++---------- htdocs/public/members/public_card.php | 2 +- htdocs/public/opensurvey/studs.php | 2 +- htdocs/public/payment/newpayment.php | 2 +- htdocs/reception/card.php | 8 ++--- htdocs/takepos/admin/terminal.php | 2 +- 25 files changed, 84 insertions(+), 96 deletions(-) diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index 9c564c24b0c..e4bdefaecd4 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -167,7 +167,6 @@ <rule ref="Generic.Strings.UnnecessaryStringConcat" /> <rule ref="Generic.Strings.UnnecessaryStringConcat.Found"> - <severity>0</severity> </rule> <!-- Disallow usage of tab --> diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index ee67aaad392..59bfd561c6c 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -936,7 +936,7 @@ if (empty($action) || $action == 'view') { $accountoshow = length_accountg($k); if (($accountoshow == "") || $accountoshow == 'NotDefined') { - print '<span class="error">'.$langs->trans("VATAccountNotDefined").' ('.$langs->trans("Purchase").')'.'</span>'; + print '<span class="error">'.$langs->trans("VATAccountNotDefined").' ('.$langs->trans("Purchase").')</span>'; } else print $accountoshow; print "</td>"; diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index 1710a61ccdd..c3c9f45ed5a 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -874,7 +874,7 @@ if (empty($action) || $action == 'view') { $accountoshow = length_accountg($k); if (($accountoshow == "") || $accountoshow == 'NotDefined') { - print '<span class="error">'.$langs->trans("VATAccountNotDefined").' ('.$langs->trans("Sale").')'.'</span>'; + print '<span class="error">'.$langs->trans("VATAccountNotDefined").' ('.$langs->trans("Sale").')</span>'; } else print $accountoshow; print "</td>"; diff --git a/htdocs/admin/dolistore/class/dolistore.class.php b/htdocs/admin/dolistore/class/dolistore.class.php index 251322ea798..d250203b3d8 100644 --- a/htdocs/admin/dolistore/class/dolistore.class.php +++ b/htdocs/admin/dolistore/class/dolistore.class.php @@ -213,19 +213,17 @@ class Dolistore { $cat = $this->categories[$i]; if ($cat->is_root_category == 1 && $parent == 0) { - $html .= '<li class="root"><h3 class="nomargesupinf"><a class="nomargesupinf link2cat" href="?mode=marketplace&categorie='.$cat->id.'" ' - .'title="'.dol_escape_htmltag(strip_tags($cat->description->language[$this->lang - 1])).'"' - .'>'.$cat->name->language[$this->lang - 1].' <sup>'.$cat->nb_products_recursive.'</sup></a></h3>'; - $html .= self::get_categories($cat->id); - $html .= "</li>\n"; + $html .= '<li class="root"><h3 class="nomargesupinf"><a class="nomargesupinf link2cat" href="?mode=marketplace&categorie='.$cat->id.'" '; + $html .= 'title="'.dol_escape_htmltag(strip_tags($cat->description->language[$this->lang - 1])).'">'.$cat->name->language[$this->lang - 1].' <sup>'.$cat->nb_products_recursive.'</sup></a></h3>'; + $html .= self::get_categories($cat->id); + $html .= "</li>\n"; } elseif (trim($cat->id_parent) == $parent && $cat->active == 1 && trim($cat->id_parent) != 0) { // si cat est de ce niveau $select = ($cat->id == $this->categorie) ? ' selected' : ''; - $html .= '<li><a class="link2cat'.$select.'" href="?mode=marketplace&categorie='.$cat->id.'"' - .' title="'.dol_escape_htmltag(strip_tags($cat->description->language[$this->lang - 1])).'" ' - .'>'.$cat->name->language[$this->lang - 1].' <sup>'.$cat->nb_products_recursive.'</sup></a>'; - $html .= self::get_categories($cat->id); - $html .= "</li>\n"; - } else { + $html .= '<li><a class="link2cat'.$select.'" href="?mode=marketplace&categorie='.$cat->id.'"'; + $html .= ' title="'.dol_escape_htmltag(strip_tags($cat->description->language[$this->lang - 1])).'" '; + $html .= '>'.$cat->name->language[$this->lang - 1].' <sup>'.$cat->nb_products_recursive.'</sup></a>'; + $html .= self::get_categories($cat->id); + $html .= "</li>\n"; } } diff --git a/htdocs/admin/external_rss.php b/htdocs/admin/external_rss.php index b3a66fa112e..8aa1a425778 100644 --- a/htdocs/admin/external_rss.php +++ b/htdocs/admin/external_rss.php @@ -327,7 +327,7 @@ if ($resql) print '</table>'."\n"; - print "</form>"."\n"; + print "</form>\n"; $i++; } diff --git a/htdocs/admin/system/perf.php b/htdocs/admin/system/perf.php index fcfe25ce3d3..dd77c41a673 100644 --- a/htdocs/admin/system/perf.php +++ b/htdocs/admin/system/perf.php @@ -66,7 +66,7 @@ if ($test) print img_picto('', 'tick.png').' '.$langs->trans("NotInstalled"); else { print img_picto('', 'warning').' '.$langs->trans("ModuleActivated", $langs->transnoentities("XDebug")); - print ' - '.$langs->trans("MoreInformation").' <a href="'.DOL_URL_ROOT.'/admin/system/xdebug.php'.'">XDebug admin page</a>'; + print ' - '.$langs->trans("MoreInformation").' <a href="'.DOL_URL_ROOT.'/admin/system/xdebug.php">XDebug admin page</a>'; } print '<br>'; @@ -123,7 +123,7 @@ if (!$foundcache && $test) { $foundcache++; print img_picto('', 'tick.png').' '.$langs->trans("PHPModuleLoaded", "XCache"); - print ' '.$langs->trans("MoreInformation").' <a href="'.DOL_URL_ROOT.'/admin/system/xcache.php'.'">Xcache admin page</a>'; + print ' '.$langs->trans("MoreInformation").' <a href="'.DOL_URL_ROOT.'/admin/system/xcache.php">Xcache admin page</a>'; } $test = function_exists('eaccelerator_info'); if (!$foundcache && $test) diff --git a/htdocs/blockedlog/admin/blockedlog_list.php b/htdocs/blockedlog/admin/blockedlog_list.php index d753b3a66ea..66cc3b44848 100644 --- a/htdocs/blockedlog/admin/blockedlog_list.php +++ b/htdocs/blockedlog/admin/blockedlog_list.php @@ -223,20 +223,20 @@ if ($action === 'downloadblockchain') { { $statusofrecordnote = $langs->trans("PreviousFingerprint").': '.$previoushash.($statusofrecordnote ? ' - '.$statusofrecordnote : ''); } - print $obj->rowid - .';'.$obj->date_creation - .';"'.$obj->user_fullname.'"' - .';'.$obj->action - .';'.$obj->element - .';'.$obj->amounts - .';'.$obj->fk_object - .';'.$obj->date_object - .';"'.$obj->ref_object.'"' - .';'.$obj->signature - .';'.$statusofrecord - .';'.$statusofrecordnote - .';"'.str_replace('"', '""', $obj->object_data).'"' - ."\n"; + print $obj->rowid; + print ';'.$obj->date_creation; + print ';"'.str_replace('"', '""', $obj->user_fullname).'"'; + print ';'.$obj->action; + print ';'.$obj->element; + print ';'.$obj->amounts; + print ';'.$obj->fk_object; + print ';'.$obj->date_object; + print ';"'.str_replace('"', '""', $obj->ref_object).'"'; + print ';'.$obj->signature; + print ';'.$statusofrecord; + print ';'.$statusofrecordnote; + print ';"'.str_replace('"', '""', $obj->object_data).'"'; + print "\n"; // Set new previous hash for next fetch $previoushash = $obj->signature; diff --git a/htdocs/categories/index.php b/htdocs/categories/index.php index 2103a4081d3..b36101750f2 100644 --- a/htdocs/categories/index.php +++ b/htdocs/categories/index.php @@ -184,9 +184,7 @@ foreach ($fulltree as $key => $val) 'rowid'=>$val['rowid'], 'fk_menu'=>$val['fk_parent'], 'entry'=>'<table class="nobordernopadding centpercent"><tr><td><span class="noborderoncategories" '.($categstatic->color ? ' style="background: #'.$categstatic->color.';"' : ' style="background: #aaa"').'>'.$li.'</span></td>'.$counter. - //'<td width="50%">'.dolGetFirstLineOfText($desc).'</td>'. - '<td class="right" width="20px;"><a href="'.DOL_URL_ROOT.'/categories/viewcat.php?id='.$val['id'].'&type='.$type.'">'.img_view().'</a></td>'. - '</tr></table>' + '<td class="right" width="20px;"><a href="'.DOL_URL_ROOT.'/categories/viewcat.php?id='.$val['id'].'&type='.$type.'">'.img_view().'</a></td></tr></table>' ); } diff --git a/htdocs/compta/tva/clients.php b/htdocs/compta/tva/clients.php index 0bce99df2ff..bcedba7a074 100644 --- a/htdocs/compta/tva/clients.php +++ b/htdocs/compta/tva/clients.php @@ -191,15 +191,15 @@ if (!empty($conf->global->MAIN_MODULE_ACCOUNTING)) $description .= '<br>'.$langs $description .= ($description ? '<br>' : '').$fsearch; if (!empty($conf->global->TAX_REPORT_EXTRA_REPORT)) { - $description .= '<br>' - . '<input type="radio" name="extra_report" value="0" '.($special_report ? '' : 'checked="checked"').'> ' - . $langs->trans('SimpleReport') - . '</input>' - . '<br>' - . '<input type="radio" name="extra_report" value="1" '.($special_report ? 'checked="checked"' : '').'> ' - . $langs->trans('AddExtraReport') - . '</input>' - . '<br>'; + $description .= '<br>'; + $description .= '<input type="radio" name="extra_report" value="0" '.($special_report ? '' : 'checked="checked"').'> '; + $description .= $langs->trans('SimpleReport'); + $description .= '</input>'; + $description .= '<br>'; + $description .= '<input type="radio" name="extra_report" value="1" '.($special_report ? 'checked="checked"' : '').'> '; + $description .= $langs->trans('AddExtraReport'); + $description .= '</input>'; + $description .= '<br>'; } $elementcust = $langs->trans("CustomersInvoices"); diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 63500b156a8..954a996b0a8 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6642,8 +6642,7 @@ class Form $out .= 'function formatResult(record) {'."\n"; if ($elemtype == 'category') { - $out .= ' //return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> <a href="'.DOL_URL_ROOT.'/categories/viewcat.php?type=0&id=\'+record.id+\'">\'+record.text+\'</a></span>\'; - return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> \'+record.text+\'</span>\';'; + $out .= 'return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> \'+record.text+\'</span>\';'; } else { diff --git a/htdocs/core/filemanagerdol/connectors/php/util.php b/htdocs/core/filemanagerdol/connectors/php/util.php index 3ea4baf8c87..1349ed00dad 100644 --- a/htdocs/core/filemanagerdol/connectors/php/util.php +++ b/htdocs/core/filemanagerdol/connectors/php/util.php @@ -56,16 +56,10 @@ function RemoveFromEnd($sourceString, $charToRemove) */ function FindBadUtf8($string) { - $regex = '([\x00-\x7F]'. - '|[\xC2-\xDF][\x80-\xBF]'. - '|\xE0[\xA0-\xBF][\x80-\xBF]'. - '|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'. - '|\xED[\x80-\x9F][\x80-\xBF]'. - '|\xF0[\x90-\xBF][\x80-\xBF]{2}'. - '|[\xF1-\xF3][\x80-\xBF]{3}'. - '|\xF4[\x80-\x8F][\x80-\xBF]{2}'. - '|(.{1}))'; + $regex = '([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]'; + $regex .= '|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2}|(.{1}))'; + $matches =array(); while (preg_match('/'.$regex.'/S', $string, $matches)) { if (isset($matches[2])) { return true; diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index 3e4f838fe33..769e0a36157 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -75,7 +75,7 @@ if (!($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root.'/' || $_SERVER['HTTP var audio = null; <?php if (!empty($conf->global->AGENDA_REMINDER_BROWSER_SOUND)) { - print 'audio = new Audio(\''.DOL_URL_ROOT.'/theme/common/sound/notification_agenda.wav'.'\');'; + print 'audio = new Audio(\''.DOL_URL_ROOT.'/theme/common/sound/notification_agenda.wav\');'; } ?> diff --git a/htdocs/core/lib/cron.lib.php b/htdocs/core/lib/cron.lib.php index 8128a449cfd..33ad0a85229 100644 --- a/htdocs/core/lib/cron.lib.php +++ b/htdocs/core/lib/cron.lib.php @@ -107,7 +107,7 @@ function dol_print_cron_urls() print '<u>'.$langs->trans("FileToLaunchCronJobs").':</u><br>'; - $file = '/scripts/cron/cron_run_jobs.php'.' '.(empty($conf->global->CRON_KEY) ? 'securitykey' : ''.$conf->global->CRON_KEY.'').' '.$logintouse.' [cronjobid]'; + $file = '/scripts/cron/cron_run_jobs.php '.(empty($conf->global->CRON_KEY) ? 'securitykey' : ''.$conf->global->CRON_KEY.'').' '.$logintouse.' [cronjobid]'; print '<textarea class="quatrevingtpercent">..'.$file."</textarea><br>\n"; print '<br>'; diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 581a7ebab74..be23fc65cfc 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -642,7 +642,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t if ($source == 'internal') $c = new User($db); else $c = new Contact($db); $c->fetch($contacttask['id']); - print $c->getNomUrl(1).' ('.$contacttask['libelle'].')'.'<br>'; + print $c->getNomUrl(1).' ('.$contacttask['libelle'].')<br>'; } } } diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php index b2b5ef06abf..6ef17220283 100644 --- a/htdocs/core/lib/website2.lib.php +++ b/htdocs/core/lib/website2.lib.php @@ -133,7 +133,7 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage) $tplcontent .= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) {\n"; $tplcontent .= ' $pathdepth = count(explode(\'/\', $_SERVER[\'SCRIPT_NAME\'])) - 2;'."\n"; $tplcontent .= ' require_once ($pathdepth ? str_repeat(\'../\', $pathdepth) : \'./\').\'master.inc.php\';'."\n"; - $tplcontent .= "} // Not already loaded"."\n"; + $tplcontent .= "} // Not already loaded\n"; $tplcontent .= "require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n"; $tplcontent .= "require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';\n"; $tplcontent .= "ob_start();\n"; @@ -212,7 +212,7 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage) $tplcontent .= '<?php // BEGIN PHP'."\n"; $tplcontent .= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", '.$objectpage->id.');'."\n"; - $tplcontent .= "// END PHP ?>"."\n"; + $tplcontent .= "// END PHP ?>\n"; //var_dump($filetpl);exit; $result = file_put_contents($filetpl, $tplcontent); diff --git a/htdocs/core/lib/xcal.lib.php b/htdocs/core/lib/xcal.lib.php index 4a85c595223..440f1147cbf 100644 --- a/htdocs/core/lib/xcal.lib.php +++ b/htdocs/core/lib/xcal.lib.php @@ -251,7 +251,7 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) } fwrite($calfileh, "DTEND".$prefix.":".$enddatef."\n"); - fwrite($calfileh, "STATUS:CONFIRMED"."\n"); + fwrite($calfileh, "STATUS:CONFIRMED\n"); if (!empty($transparency)) { @@ -295,7 +295,7 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) fwrite($calfileh, "SUMMARY:".$encoding.$summary."\n"); fwrite($calfileh, "DESCRIPTION:".$encoding.$description."\n"); - fwrite($calfileh, "STATUS:CONFIRMED"."\n"); + fwrite($calfileh, "STATUS:CONFIRMED\n"); fwrite($calfileh, "CATEGORIES:".$category."\n"); fwrite($calfileh, "LOCATION:".$location."\n"); fwrite($calfileh, "TRANSP:OPAQUE\n"); @@ -381,7 +381,7 @@ function build_rssfile($format, $title, $desc, $events_array, $outputfile, $filt $url = $urlwithroot."/public/agenda/agendaexport.php?format=rss&exportkey=".urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY); } - fwrite($fichier, "<link><![CDATA[".$url."]]></link>"."\n"); + fwrite($fichier, "<link><![CDATA[".$url."]]></link>\n"); foreach ($events_array as $key => $event) { @@ -480,9 +480,9 @@ function format_cal($format, $string) if ($format === "ical") { // Replace new lines chars by "\n" - $newstring = preg_replace("/"."\r\n"."/i", "\\n", $newstring); - $newstring = preg_replace("/"."\n\r"."/i", "\\n", $newstring); - $newstring = preg_replace("/"."\n"."/i", "\\n", $newstring); + $newstring = preg_replace("/\r\n/i", "\\n", $newstring); + $newstring = preg_replace("/\n\r/i", "\\n", $newstring); + $newstring = preg_replace("/\n/i", "\\n", $newstring); // Must not exceed 75 char. Cut with "\r\n"+Space $newstring = calEncode($newstring); @@ -586,7 +586,7 @@ function quotedPrintEncode($str, $forcal = 0) if ((strlen($newpara) + strlen($char)) >= 76) { // New line with carray-return (CR) and line-feed (LF) - $out .= $newpara."="."\r\n"; + $out .= $newpara."=\r\n"; // extra space for cal if ($forcal) diff --git a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php index 0ce2f2bbbb2..23868eef643 100644 --- a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php +++ b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php @@ -227,14 +227,14 @@ class pdf_sepamandate extends ModeleBankAccountDoc $posY += 2; $pdf->SetXY($this->marge_gauche, $posY); - $pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv("RUMLong").' ('.$outputlangs->transnoentitiesnoconv("RUM").')'.' : '.$object->rum, 0, 'L'); + $pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv("RUMLong").' ('.$outputlangs->transnoentitiesnoconv("RUM").') : '.$object->rum, 0, 'L'); $posY = $pdf->GetY(); $posY += 2; $pdf->SetXY($this->marge_gauche, $posY); $ics = ''; if (!empty($conf->global->PRELEVEMENT_ICS)) $ics = $conf->global->PRELEVEMENT_ICS; - $pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv("CreditorIdentifier").' ('.$outputlangs->transnoentitiesnoconv("ICS").')'.' : '.$ics, 0, 'L'); + $pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv("CreditorIdentifier").' ('.$outputlangs->transnoentitiesnoconv("ICS").') : '.$ics, 0, 'L'); $posY = $pdf->GetY(); $posY += 1; diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php index d129fbeb1e4..2c99c28e7e5 100644 --- a/htdocs/install/repair.php +++ b/htdocs/install/repair.php @@ -1440,9 +1440,9 @@ if ($ok && GETPOST('repair_link_dispatch_lines_supplier_order_lines')) { exit; } while ($obj_dispatch = $db->fetch_object($resql_dispatch)) { - $sql_line = 'SELECT line.rowid, line.qty FROM '.MAIN_DB_PREFIX.'commande_fournisseurdet AS line' - . ' WHERE line.fk_commande = '.$obj_dispatch->fk_commande - . ' AND line.fk_product = '.$obj_dispatch->fk_product; + $sql_line = 'SELECT line.rowid, line.qty FROM '.MAIN_DB_PREFIX.'commande_fournisseurdet AS line'; + $sql_line .= ' WHERE line.fk_commande = '.$obj_dispatch->fk_commande; + $sql_line .= ' AND line.fk_product = '.$obj_dispatch->fk_product; $resql_line = $db->query($sql_line); // s’il y a plusieurs lignes avec le même produit sur cette commande fournisseur, diff --git a/htdocs/opensurvey/fonctions.php b/htdocs/opensurvey/fonctions.php index 09a9c10e789..30529b49f56 100644 --- a/htdocs/opensurvey/fonctions.php +++ b/htdocs/opensurvey/fonctions.php @@ -84,7 +84,7 @@ function llxHeaderSurvey($title, $head = "", $disablejs = 0, $disablehead = 0, $ print '<span id="dolpaymentspan"></span>'."\n"; print '<div class="center">'."\n"; - print '<form name="formulaire" action="studs.php?sondage='.$numsondage.'"'.'#bas" method="POST">'."\n"; + print '<form name="formulaire" action="studs.php?sondage='.urlencode($numsondage).'#bas" method="POST">'."\n"; print '<input type="hidden" name="sondage" value="'.$numsondage.'"/>'; print '<input type="hidden" name="token" value="'.newToken().'">'."\n"; print "\n"; diff --git a/htdocs/product/stock/replenishorders.php b/htdocs/product/stock/replenishorders.php index 9ed74d112eb..25f3e38a81b 100644 --- a/htdocs/product/stock/replenishorders.php +++ b/htdocs/product/stock/replenishorders.php @@ -172,22 +172,22 @@ if ($resql) print '<table class="noborder centpercent">'; print '<tr class="liste_titre_filter">'; - print '<td class="liste_titre">'. - '<input type="text" class="flat" name="search_ref" value="'.dol_escape_htmltag($sref).'">'. - '</td>'. - '<td class="liste_titre">'. - '<input type="text" class="flat" name="search_nom" value="'.dol_escape_htmltag($snom).'">'. - '</td>'. - '<td class="liste_titre">'. - '<input type="text" class="flat" name="search_user" value="'.dol_escape_htmltag($suser).'">'. - '</td>'. - '<td class="liste_titre">'. - '<input type="text" class="flat" name="search_ttc" value="'.dol_escape_htmltag($sttc).'">'. - '</td>'. - '<td class="liste_titre">'. - $form->selectDate($search_date, 'search_date', 0, 0, 1, '', 1, 0, 0, ''). - '</td>'. - '<td class="liste_titre right">'; + print '<td class="liste_titre">'; + print '<input type="text" class="flat" name="search_ref" value="'.dol_escape_htmltag($sref).'">'; + print '</td>'; + print '<td class="liste_titre">'; + print '<input type="text" class="flat" name="search_nom" value="'.dol_escape_htmltag($snom).'">'; + print '</td>'; + print '<td class="liste_titre">'; + print '<input type="text" class="flat" name="search_user" value="'.dol_escape_htmltag($suser).'">'; + print '</td>'; + print '<td class="liste_titre">'; + print '<input type="text" class="flat" name="search_ttc" value="'.dol_escape_htmltag($sttc).'">'; + print '</td>'; + print '<td class="liste_titre">'; + print $form->selectDate($search_date, 'search_date', 0, 0, 1, '', 1, 0, 0, ''); + print '</td>'; + print '<td class="liste_titre right">'; $searchpicto = $form->showFilterAndCheckAddButtons(0); print $searchpicto; print '</td>'; diff --git a/htdocs/public/members/public_card.php b/htdocs/public/members/public_card.php index 195a7560631..04fe1f75fca 100644 --- a/htdocs/public/members/public_card.php +++ b/htdocs/public/members/public_card.php @@ -66,7 +66,7 @@ $extrafields = new ExtraFields($db); $morehead = ''; if (!empty($conf->global->MEMBER_PUBLIC_CSS)) $morehead = '<link rel="stylesheet" type="text/css" href="'.$conf->global->MEMBER_PUBLIC_CSS.'">'; -else $morehead = '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/theme/eldy/style.css.php'.'">'; +else $morehead = '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/theme/eldy/style.css.php">'; llxHeaderVierge($langs->trans("MemberCard"), $morehead); diff --git a/htdocs/public/opensurvey/studs.php b/htdocs/public/opensurvey/studs.php index ef5458456c5..d0ce716bb7d 100644 --- a/htdocs/public/opensurvey/studs.php +++ b/htdocs/public/opensurvey/studs.php @@ -690,7 +690,7 @@ if ($object->allow_spy) { 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').' ('.dol_print_date($toutsujetdate[0], '%A').') - '.$toutsujetdate[1]; } else { $meilleursujet .= dol_print_date($toutsujet[$i], 'daytext').' ('.dol_print_date($toutsujet[$i], '%A').')'; } diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index c3e6553cf92..8b1e8a42574 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -1924,7 +1924,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment print '<br>'; print '<button class="button buttonpayment" style="text-align: center; padding-left: 0; padding-right: 0;" id="buttontopay" data-secret="'.(is_object($paymentintent) ? $paymentintent->client_secret : '').'">'.$langs->trans("ValidatePayment").'</button>'; - print '<img id="hourglasstopay" class="hidden" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/working.gif'.'">'; + print '<img id="hourglasstopay" class="hidden" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/working.gif">'; print '</td></tr></tbody>'; print '</table>'; diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index 9c6e8df76f1..3d8547f9322 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -1858,7 +1858,7 @@ elseif ($id || $ref) print '<!-- case edit 1 -->'; print '<tr>'; // Qty to receive or received - print '<td>'.'<input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty.'">'.'</td>'; + print '<td><input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty.'"></td>'; // Warehouse source print '<td>'.$formproduct->selectWarehouses($lines[$i]->fk_entrepot, 'entl'.$line_id, '', 1, 0, $lines[$i]->fk_product, '', 1).'</td>'; // Batch number managment @@ -1878,11 +1878,11 @@ elseif ($id || $ref) print '<!-- case edit 2 -->'; print '<tr>'; // Qty to receive or received - print '<td>'.'<input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty.'">'.'</td>'; + print '<td><input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty.'"></td>'; // Warehouse source - print '<td>'.'</td>'; + print '<td></td>'; // Batch number managment - print '<td>'.'</td>'; + print '<td></td>'; print '</tr>'; } } diff --git a/htdocs/takepos/admin/terminal.php b/htdocs/takepos/admin/terminal.php index 10a679615a9..46d168ddd24 100644 --- a/htdocs/takepos/admin/terminal.php +++ b/htdocs/takepos/admin/terminal.php @@ -264,7 +264,7 @@ if ($conf->global->TAKEPOS_PRINT_METHOD == "receiptprinter") { print '<tr class="oddeven"><td>'.$langs->trans('CashDeskReaderKeyCodeForEnter').'</td>'; print '<td>'; -print '<input type="text" name="'.'CASHDESK_READER_KEYCODE_FOR_ENTER'.$terminaltouse.'" value="'.$conf->global->{'CASHDESK_READER_KEYCODE_FOR_ENTER'.$terminaltouse}.'" />'; +print '<input type="text" name="CASHDESK_READER_KEYCODE_FOR_ENTER'.$terminaltouse.'" value="'.$conf->global->{'CASHDESK_READER_KEYCODE_FOR_ENTER'.$terminaltouse}.'" />'; print '</td></tr>'; // Numbering module From 31ba277da708f99d33b3476c8997a74398b206f0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 26 Apr 2020 23:18:09 +0200 Subject: [PATCH 213/780] Fix phpcs --- .../compta/paiement/class/cpaiement.class.php | 2 +- htdocs/core/class/smtps.class.php | 19 +++++-------------- htdocs/core/db/sqlite3.class.php | 2 +- htdocs/expensereport/card.php | 4 ++-- test/phpunit/AdherentTest.php | 10 +++++----- test/phpunit/FilesLibTest.php | 2 +- 6 files changed, 15 insertions(+), 24 deletions(-) diff --git a/htdocs/compta/paiement/class/cpaiement.class.php b/htdocs/compta/paiement/class/cpaiement.class.php index 5b66dbec15e..d1cd1f0015b 100644 --- a/htdocs/compta/paiement/class/cpaiement.class.php +++ b/htdocs/compta/paiement/class/cpaiement.class.php @@ -185,7 +185,7 @@ class Cpaiement $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; if (null !== $ref) { $sql .= ' WHERE t.entity IN ('.getEntity('c_paiement').')'; - $sql .= ' AND t.code = '.'\''.$ref.'\''; + $sql .= " AND t.code = '".$this->db->escape($ref)."'"; } else { $sql .= ' WHERE t.id = '.$id; } diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php index f6bc31c2f53..51e375c5279 100644 --- a/htdocs/core/class/smtps.class.php +++ b/htdocs/core/class/smtps.class.php @@ -1534,34 +1534,25 @@ class SMTPs $content .= "--".$this->_getBoundary('alternative')."\r\n"; } - $content .= 'Content-Type: '.$_content['mimeType'].'; ' - // . 'charset="' . $this->getCharSet() . '"'; - . 'charset='.$this->getCharSet().''; + $content .= 'Content-Type: '.$_content['mimeType'].'; charset='.$this->getCharSet(); - // $content .= ( $type == 'html') ? '; name="HTML Part"' : ''; $content .= "\r\n"; - // $content .= 'Content-Transfer-Encoding: '; - // $content .= ($type == 'html') ? 'quoted-printable' : $this->getTransEncodeType(); - // $content .= "\r\n" - // . 'Content-Disposition: inline' . "\r\n" - // . 'Content-Description: ' . $type . ' message' . "\r\n"; - if ($this->getMD5flag()) - $content .= 'Content-MD5: '.$_content['md5']."\r\n"; + if ($this->getMD5flag()) { + $content .= 'Content-MD5: '.$_content['md5']."\r\n"; + } $content .= "\r\n".$_content['data']."\r\n"; if (!key_exists('image', $this->_msgContent) && $_content['dataText'] && !empty($conf->global->MAIN_MAIL_USE_MULTI_PART)) // Add plain text message part after html part { - $content .= "--".$this->_getBoundary('alternative')."--"."\r\n"; + $content .= "--".$this->_getBoundary('alternative')."--\r\n"; } $content .= "\r\n"; } } - // Close message boundries - // $content .= "\r\n--" . $this->_getBoundary() . '--' . "\r\n" ; $content .= "--".$this->_getBoundary('mixed').'--'."\r\n"; } diff --git a/htdocs/core/db/sqlite3.class.php b/htdocs/core/db/sqlite3.class.php index ba8f8eff3e9..2d24c232797 100644 --- a/htdocs/core/db/sqlite3.class.php +++ b/htdocs/core/db/sqlite3.class.php @@ -1325,7 +1325,7 @@ class DoliDBSqlite3 extends DoliDB if ($this->db) { $newname = preg_replace('/_/', '', $name); - $localname = __CLASS__.'::'.'db'.$newname; + $localname = __CLASS__.'::db'.$newname; $reflectClass = new ReflectionClass(__CLASS__); $reflectFunction = $reflectClass->getMethod('db'.$newname); if ($arg_count < 0) { diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index fd582ac0a1e..2a0f804b196 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -2330,7 +2330,7 @@ else print '</a>'; if (empty($conf->global->EXPENSEREPORT_DISABLE_ATTACHMENT_ON_LINES)) { - print '   -   '.'<a href="" class="commonlink aattachtodoc reposition">'.$langs->trans("AttachTheNewLineToTheDocument"); + print '   -   <a href="" class="commonlink aattachtodoc reposition">'.$langs->trans("AttachTheNewLineToTheDocument"); print img_picto($langs->trans("AttachTheNewLineToTheDocument"), 'chevron-down', '', false, 0, 0, '', 'marginleftonly'); print '</a>'; } @@ -2478,7 +2478,7 @@ else print '</a>'; if (empty($conf->global->EXPENSEREPORT_DISABLE_ATTACHMENT_ON_LINES)) { - print '   -   '.'<a href="" class="commonlink aattachtodoc reposition">'.$langs->trans("AttachTheNewLineToTheDocument"); + print '   -   <a href="" class="commonlink aattachtodoc reposition">'.$langs->trans("AttachTheNewLineToTheDocument"); print img_picto($langs->trans("AttachTheNewLineToTheDocument"), 'chevron-down', '', false, 0, 0, '', 'marginleftonly'); print '</a>'; } diff --git a/test/phpunit/AdherentTest.php b/test/phpunit/AdherentTest.php index c78bc6542bb..89e78b32bd9 100644 --- a/test/phpunit/AdherentTest.php +++ b/test/phpunit/AdherentTest.php @@ -325,13 +325,13 @@ class AdherentTest extends PHPUnit\Framework\TestCase $conf->global->MAIN_FIRSTNAME_NAME_POSITION = 0; // Force setup for firstname+lastname - $template = '__CIVILITY__,__FIRSTNAME__,__LASTNAME__,__FULLNAME__,__COMPANY__,'. - '__ADDRESS__,__ZIP__,__TOWN__,__COUNTRY__,__EMAIL__,__BIRTH__,__PHOTO__,__LOGIN__'; + $template = '__CIVILITY__,__FIRSTNAME__,__LASTNAME__,__FULLNAME__,__COMPANY__,'; + $template .= '__ADDRESS__,__ZIP__,__TOWN__,__COUNTRY__,__EMAIL__,__BIRTH__,__PHOTO__,__LOGIN__'; // If option to store clear password has been set, we get 'dolibspec' into PASSWORD field. - $expected = ',New firstname,New name,New firstname New name,'. - 'New company label,New address,New zip,New town,Belgium,newemail@newemail.com,'.dol_print_date($localobject->birth, 'day').',,'. - 'newlogin'; + $expected = ',New firstname,New name,New firstname New name,'; + $expected .= 'New company label,New address,New zip,New town,Belgium,newemail@newemail.com,'.dol_print_date($localobject->birth, 'day').',,'; + $expected .= 'newlogin'; $result = $localobject->makeSubstitution($template); print __METHOD__." result=".$result."\n"; diff --git a/test/phpunit/FilesLibTest.php b/test/phpunit/FilesLibTest.php index 776e783a6b0..fb3ce8f5814 100644 --- a/test/phpunit/FilesLibTest.php +++ b/test/phpunit/FilesLibTest.php @@ -336,7 +336,7 @@ class FilesLibTest extends PHPUnit\Framework\TestCase $result=dol_copy($file, $conf->admin->dir_temp.'/file.csv', 0, 1); print __METHOD__." result=".$result."\n"; - $this->assertGreaterThanOrEqual(1, $result, 'copy file ('.$file.') into a dir that exists ('.$conf->admin->dir_temp.'/file.csv'.')'); // Should be 1 + $this->assertGreaterThanOrEqual(1, $result, 'copy file ('.$file.') into a dir that exists ('.$conf->admin->dir_temp.'/file.csv)'); // Should be 1 // Again to test with overwriting=0 $result=dol_copy($file, $conf->admin->dir_temp.'/file.csv', 0, 0); From 31157931a94ceebbdd49907d4f5198d8161a52dc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 26 Apr 2020 23:52:23 +0200 Subject: [PATCH 214/780] Fix phpcs --- htdocs/accountancy/index.php | 20 +++++++++---------- .../accountancy/journal/purchasesjournal.php | 8 ++++---- htdocs/admin/tools/dolibarr_export.php | 2 +- htdocs/bom/tpl/objectline_create.tpl.php | 2 +- htdocs/comm/mailing/advtargetemailing.php | 16 +++++++-------- .../mailing/class/advtargetemailing.class.php | 8 ++++---- htdocs/core/class/html.form.class.php | 3 +-- htdocs/core/lib/pdf.lib.php | 2 +- htdocs/fourn/facture/rapport.php | 3 ++- htdocs/install/repair.php | 12 +++++------ htdocs/mrp/mo_production.php | 2 +- htdocs/opensurvey/results.php | 4 ++-- htdocs/product/stock/replenish.php | 20 +++++++++---------- htdocs/product/stock/replenishorders.php | 10 ++++++---- htdocs/public/members/public_list.php | 2 +- htdocs/ticket/card.php | 2 +- htdocs/website/index.php | 4 ++-- 17 files changed, 61 insertions(+), 59 deletions(-) diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php index 4d64c7666d8..2379c31ce53 100644 --- a/htdocs/accountancy/index.php +++ b/htdocs/accountancy/index.php @@ -101,13 +101,13 @@ if ($conf->accounting->enabled) // STEPS $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescJournalSetup", $step, '<a href="'.DOL_URL_ROOT.'/accountancy/admin/journals_list.php?id=35">'.'<strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("AccountingJournals").'</strong>'.'</a>'); + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescJournalSetup", $step, '<a href="'.DOL_URL_ROOT.'/accountancy/admin/journals_list.php?id=35"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("AccountingJournals").'</strong></a>'); print "<br>\n"; $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescChartModel", $step, '<a href="'.DOL_URL_ROOT.'/accountancy/admin/accountmodel.php">'.'<strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("Pcg_version").'</strong>'.'</a>'); + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescChartModel", $step, '<a href="'.DOL_URL_ROOT.'/accountancy/admin/accountmodel.php"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("Pcg_version").'</strong></a>'); print "<br>\n"; $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescChart", $step, '<a href="'.DOL_URL_ROOT.'/accountancy/admin/account.php">'.'<strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("Chartofaccounts").'</strong>'.'</a>'); + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescChart", $step, '<a href="'.DOL_URL_ROOT.'/accountancy/admin/account.php"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("Chartofaccounts").'</strong></a>'); print "<br>\n"; print "<br>\n"; @@ -116,11 +116,11 @@ if ($conf->accounting->enabled) print "<br>\n"; $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescDefault", $step, '<a href="'.DOL_URL_ROOT.'/accountancy/admin/defaultaccounts.php">'.'<strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuDefaultAccounts").'</strong>'.'</a>'); + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescDefault", $step, '<a href="'.DOL_URL_ROOT.'/accountancy/admin/defaultaccounts.php"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuDefaultAccounts").'</strong></a>'); print "<br>\n"; $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBank", $step, '<a href="'.DOL_URL_ROOT.'/compta/bank/list.php">'.'<strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuBankAccounts").'</strong>'.'</a>')."\n"; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBank", $step, '<a href="'.DOL_URL_ROOT.'/compta/bank/list.php"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuBankAccounts").'</strong></a>')."\n"; print "<br>\n"; $step++; @@ -145,7 +145,7 @@ if ($conf->accounting->enabled) if (!empty($conf->expensereport->enabled)) // TODO Move this in the default account page because this is only one accounting account per purpose, not several. { $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescExpenseReport", $step, '<a href="'.DOL_URL_ROOT.'/admin/dict.php?id=17&from=accountancy">'.'<strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuExpenseReportAccounts").'</strong>'.'</a>'); + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescExpenseReport", $step, '<a href="'.DOL_URL_ROOT.'/admin/dict.php?id=17&from=accountancy"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuExpenseReportAccounts").'</strong></a>'); print "<br>\n"; } /* @@ -169,7 +169,7 @@ if ($conf->accounting->enabled) }*/ $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescProd", $step, '<a href="'.DOL_URL_ROOT.'/accountancy/admin/productaccount.php">'.'<strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("ProductsBinding").'</strong>'.'</a>'); + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescProd", $step, '<a href="'.DOL_URL_ROOT.'/accountancy/admin/productaccount.php"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("ProductsBinding").'</strong></a>'); print "<br>\n"; @@ -186,17 +186,17 @@ if ($conf->accounting->enabled) $langs->loadLangs(array('bills', 'trips')); $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64 + $step), $langs->transnoentitiesnoconv("BillsCustomers"), '<a href="'.DOL_URL_ROOT.'/accountancy/customer/index.php">'.'<strong>'.$langs->transnoentitiesnoconv("TransferInAccounting").' - '.$langs->transnoentitiesnoconv("CustomersVentilation").'</strong>'.'</a>')."\n"; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64 + $step), $langs->transnoentitiesnoconv("BillsCustomers"), '<a href="'.DOL_URL_ROOT.'/accountancy/customer/index.php"><strong>'.$langs->transnoentitiesnoconv("TransferInAccounting").' - '.$langs->transnoentitiesnoconv("CustomersVentilation").'</strong></a>')."\n"; print "<br>\n"; $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64 + $step), $langs->transnoentitiesnoconv("BillsSuppliers"), '<a href="'.DOL_URL_ROOT.'/accountancy/supplier/index.php">'.'<strong>'.$langs->transnoentitiesnoconv("TransferInAccounting").' - '.$langs->transnoentitiesnoconv("SuppliersVentilation").'</strong>'.'</a>')."\n"; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64 + $step), $langs->transnoentitiesnoconv("BillsSuppliers"), '<a href="'.DOL_URL_ROOT.'/accountancy/supplier/index.php"><strong>'.$langs->transnoentitiesnoconv("TransferInAccounting").' - '.$langs->transnoentitiesnoconv("SuppliersVentilation").'</strong></a>')."\n"; print "<br>\n"; if (!empty($conf->expensereport->enabled) || !empty($conf->deplacement->enabled)) { $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64 + $step), $langs->transnoentitiesnoconv("ExpenseReports"), '<a href="'.DOL_URL_ROOT.'/accountancy/expensereport/index.php">'.'<strong>'.$langs->transnoentitiesnoconv("TransferInAccounting").' - '.$langs->transnoentitiesnoconv("ExpenseReportsVentilation").'</strong>'.'</a>')."\n"; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64 + $step), $langs->transnoentitiesnoconv("ExpenseReports"), '<a href="'.DOL_URL_ROOT.'/accountancy/expensereport/index.php"><strong>'.$langs->transnoentitiesnoconv("TransferInAccounting").' - '.$langs->transnoentitiesnoconv("ExpenseReportsVentilation").'</strong></a>')."\n"; print "<br>\n"; } diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index 59bfd561c6c..42bff74097f 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -959,15 +959,15 @@ if (empty($action) || $action == 'view') { foreach ($tabother[$key] as $k => $mt) { if ($mt) { print '<tr class="oddeven">'; - print "<!-- VAT counterpart NPR -->"; + print '<!-- VAT counterpart NPR -->'; print "<td>".$date."</td>"; print "<td>".$invoicestatic->getNomUrl(1)."</td>"; // Account - print "<td>"; + print '<td>'; $accountoshow = length_accountg($k); - if (($accountoshow == "") || $accountoshow == 'NotDefined') + if ($accountoshow == '' || $accountoshow == 'NotDefined') { - print '<span class="error">'.$langs->trans("VATAccountNotDefined").' ('.$langs->trans("NPR counterpart").'). Set ACCOUNTING_COUNTERPART_VAT_NPR to the subvention account'.'</span>'; + print '<span class="error">'.$langs->trans("VATAccountNotDefined").' ('.$langs->trans("NPR counterpart").'). Set ACCOUNTING_COUNTERPART_VAT_NPR to the subvention account</span>'; } else print $accountoshow; print '</td>'; diff --git a/htdocs/admin/tools/dolibarr_export.php b/htdocs/admin/tools/dolibarr_export.php index 68bbd03162f..f88563ff512 100644 --- a/htdocs/admin/tools/dolibarr_export.php +++ b/htdocs/admin/tools/dolibarr_export.php @@ -303,7 +303,7 @@ if (in_array($type, array('mysql', 'mysqli'))) { print '<br>'; print '<fieldset><legend>'.$langs->trans('ExportStructure').'</legend>'; - print '<input type="checkbox" name="nobin_drop"'.((!isset($_GET["nobin_drop"]) && !isset($_POST["nobin_drop"])) || GETPOST('nobin_drop')) ? ' checked' : ''.' id="checkbox_dump_drop" />'; + print '<input type="checkbox" name="nobin_drop"'.((! GETPOSTISSET("nobin_drop") || GETPOST('nobin_drop')) ? ' checked' : '').' id="checkbox_dump_drop" />'; print '<label for="checkbox_dump_drop">'.$langs->trans("AddDropTable").'</label>'; print '<br>'; print '</fieldset>'; diff --git a/htdocs/bom/tpl/objectline_create.tpl.php b/htdocs/bom/tpl/objectline_create.tpl.php index be7eb3e775f..eeffb625381 100644 --- a/htdocs/bom/tpl/objectline_create.tpl.php +++ b/htdocs/bom/tpl/objectline_create.tpl.php @@ -74,7 +74,7 @@ if ($nolinesbefore) { print '<td class="linecoledit" colspan="'.$colspan.'"> </td>'; print '</tr>'; } -print '<tr class="pair nodrag nodrop nohoverpair'.($nolinesbefore || $object->element == 'contrat') ? '' : ' liste_titre_create'.'">'; +print '<tr class="pair nodrag nodrop nohoverpair'.(($nolinesbefore || $object->element == 'contrat') ? '' : ' liste_titre_create').'">'; $coldisplay = 0; // Adds a line numbering column diff --git a/htdocs/comm/mailing/advtargetemailing.php b/htdocs/comm/mailing/advtargetemailing.php index b716790aa8f..d4db9fc6ea9 100644 --- a/htdocs/comm/mailing/advtargetemailing.php +++ b/htdocs/comm/mailing/advtargetemailing.php @@ -147,15 +147,15 @@ if ($action == 'add') { if (preg_match("/st_dt/", $key)) { $dtarr = array(); $dtarr = explode('_', $key); - if (!array_key_exists('options_'.$dtarr[1].'_st_dt'.'_cnct', $array_query)) { - $array_query['options_'.$dtarr[1].'_st_dt'.'_cnct'] = dol_mktime(0, 0, 0, GETPOST('options_'.$dtarr[1].'_st_dtmonth'.'_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_st_dtday'.'_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_st_dtyear'.'_cnct', 'int')); + if (!array_key_exists('options_'.$dtarr[1].'_st_dt_cnct', $array_query)) { + $array_query['options_'.$dtarr[1].'_st_dt_cnct'] = dol_mktime(0, 0, 0, GETPOST('options_'.$dtarr[1].'_st_dtmonth_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_st_dtday_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_st_dtyear_cnct', 'int')); } } elseif (preg_match("/end_dt/", $key)) { // Special case for end date come with 3 inputs day, month, year $dtarr = array(); $dtarr = explode('_', $key); - if (!array_key_exists('options_'.$dtarr[1].'_end_dt'.'_cnct', $array_query)) { - $array_query['options_'.$dtarr[1].'_end_dt'.'_cnct'] = dol_mktime(0, 0, 0, GETPOST('options_'.$dtarr[1].'_end_dtmonth'.'_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_end_dtday'.'_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_end_dtyear'.'_cnct', 'int')); + if (!array_key_exists('options_'.$dtarr[1].'_end_dt_cnct', $array_query)) { + $array_query['options_'.$dtarr[1].'_end_dt_cnct'] = dol_mktime(0, 0, 0, GETPOST('options_'.$dtarr[1].'_end_dtmonth_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_end_dtday_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_end_dtyear_cnct', 'int')); } } else { $array_query[$key] = GETPOST($key); @@ -299,15 +299,15 @@ if ($action == 'savefilter' || $action == 'createfilter') { if (preg_match("/st_dt/", $key)) { $dtarr = array(); $dtarr = explode('_', $key); - if (!array_key_exists('options_'.$dtarr[1].'_st_dt'.'_cnct', $array_query)) { - $array_query['options_'.$dtarr[1].'_st_dt'.'_cnct'] = dol_mktime(0, 0, 0, GETPOST('options_'.$dtarr[1].'_st_dtmonth'.'_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_st_dtday'.'_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_st_dtyear'.'_cnct', 'int')); + if (!array_key_exists('options_'.$dtarr[1].'_st_dt_cnct', $array_query)) { + $array_query['options_'.$dtarr[1].'_st_dt_cnct'] = dol_mktime(0, 0, 0, GETPOST('options_'.$dtarr[1].'_st_dtmonth_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_st_dtday_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_st_dtyear_cnct', 'int')); } } elseif (preg_match("/end_dt/", $key)) { // Special case for end date come with 3 inputs day, month, year $dtarr = array(); $dtarr = explode('_', $key); - if (!array_key_exists('options_'.$dtarr[1].'_end_dt'.'_cnct', $array_query)) { - $array_query['options_'.$dtarr[1].'_end_dt'.'_cnct'] = dol_mktime(0, 0, 0, GETPOST('options_'.$dtarr[1].'_end_dtmonth'.'_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_end_dtday'.'_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_end_dtyear'.'_cnct', 'int')); + if (!array_key_exists('options_'.$dtarr[1].'_end_dt_cnct', $array_query)) { + $array_query['options_'.$dtarr[1].'_end_dt_cnct'] = dol_mktime(0, 0, 0, GETPOST('options_'.$dtarr[1].'_end_dtmonth_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_end_dtday_cnct', 'int'), GETPOST('options_'.$dtarr[1].'_end_dtyear_cnct', 'int')); // print $array_query['cnct_options_'.$dtarr[1].'_end_dt']; // 01/02/1013=1361228400 } diff --git a/htdocs/comm/mailing/class/advtargetemailing.class.php b/htdocs/comm/mailing/class/advtargetemailing.class.php index 83ea16641fe..7bb73a61c9f 100644 --- a/htdocs/comm/mailing/class/advtargetemailing.class.php +++ b/htdocs/comm/mailing/class/advtargetemailing.class.php @@ -724,13 +724,13 @@ class AdvanceTargetingMailing extends CommonObject } } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'int') || ($extrafields->attributes[$elementtype]['type'][$key] == 'double')) { - if (!empty($arrayquery['options_'.$key.'_max'.'_cnct'])) { - $sqlwhere[] = " (te.".$key." >= ".$arrayquery['options_'.$key.'_max'.'_cnct']." AND te.".$key." <= ".$arrayquery['options_'.$key.'_min'.'_cnct'].")"; + if (!empty($arrayquery['options_'.$key.'_max_cnct'])) { + $sqlwhere[] = " (te.".$key." >= ".$arrayquery['options_'.$key.'_max'.'_cnct']." AND te.".$key." <= ".$arrayquery['options_'.$key.'_min_cnct'].")"; } } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'date') || ($extrafields->attributes[$elementtype]['type'][$key] == 'datetime')) { - if (!empty($arrayquery['options_'.$key.'_end_dt'.'_cnct'])) { - $sqlwhere[] = " (te.".$key." >= '".$this->db->idate($arrayquery['options_'.$key.'_st_dt'.'_cnct'])."' AND te.".$key." <= '".$this->db->idate($arrayquery['options_'.$key.'_end_dt'.'_cnct'])."')"; + if (!empty($arrayquery['options_'.$key.'_end_dt_cnct'])) { + $sqlwhere[] = " (te.".$key." >= '".$this->db->idate($arrayquery['options_'.$key.'_st_dt'.'_cnct'])."' AND te.".$key." <= '".$this->db->idate($arrayquery['options_'.$key.'_end_dt_cnct'])."')"; } } elseif ($extrafields->attributes[$elementtype]['type'][$key] == 'boolean') { if ($arrayquery['options_'.$key.'_cnct'] != '') { diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 954a996b0a8..05174f176b0 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6652,8 +6652,7 @@ class Form $out .= 'function formatSelection(record) {'."\n"; if ($elemtype == 'category') { - $out .= ' //return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> <a href="'.DOL_URL_ROOT.'/categories/viewcat.php?type=0&id=\'+record.id+\'">\'+record.text+\'</a></span>\'; - return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> \'+record.text+\'</span>\';'; + $out .= 'return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> \'+record.text+\'</span>\';'; } else { diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index d31baf70b69..63789a18e62 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -914,7 +914,7 @@ function pdf_pagefoot(&$pdf, $outputlangs, $paramfreetext, $fromcompany, $marge_ // <img alt="" src="/dolibarr_dev/htdocs/viewimage.php?modulepart=medias&entity=1&file=image/ldestailleur_166x166.jpg" style="height:166px; width:166px" /> // become // <img alt="" src="'.DOL_DATA_ROOT.'/medias/image/ldestailleur_166x166.jpg" style="height:166px; width:166px" /> - $newfreetext = preg_replace('/(<img.*src=")[^\"]*viewimage\.php[^\"]*modulepart=medias[^\"]*file=([^\"]*)("[^\/]*\/>)/', '\1'.'file:/'.DOL_DATA_ROOT.'/medias/\2\3', $newfreetext); + $newfreetext = preg_replace('/(<img.*src=")[^\"]*viewimage\.php[^\"]*modulepart=medias[^\"]*file=([^\"]*)("[^\/]*\/>)/', '\1file:/'.DOL_DATA_ROOT.'/medias/\2\3', $newfreetext); $line .= $outputlangs->convToOutputCharset($newfreetext); } diff --git a/htdocs/fourn/facture/rapport.php b/htdocs/fourn/facture/rapport.php index 391c44a2f03..f0bf2d85dd1 100644 --- a/htdocs/fourn/facture/rapport.php +++ b/htdocs/fourn/facture/rapport.php @@ -157,13 +157,14 @@ if ($year) { $tfile = $dir.'/'.$year.'/'.$file; $relativepath = $year.'/'.$file; - print '<tr class="oddeven">'.'<td><a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart=facture_fournisseur&file=payments/'.urlencode($relativepath).'">'.img_pdf().' '.$file.'</a></td>'; + print '<tr class="oddeven"><td><a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart=facture_fournisseur&file=payments/'.urlencode($relativepath).'">'.img_pdf().' '.$file.'</a></td>'; print '<td class="right">'.dol_print_size(dol_filesize($tfile)).'</td>'; print '<td class="right">'.dol_print_date(dol_filemtime($tfile), "dayhour").'</td></tr>'; } } closedir($handle); } + print '</table>'; } } diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php index 2c99c28e7e5..034741c7c7e 100644 --- a/htdocs/install/repair.php +++ b/htdocs/install/repair.php @@ -1465,9 +1465,9 @@ if ($ok && GETPOST('repair_link_dispatch_lines_supplier_order_lines')) { } $qty_for_line = min($remaining_qty, $obj_line->qty); if ($first_iteration) { - $sql_attach = 'UPDATE '.MAIN_DB_PREFIX.'commande_fournisseur_dispatch' - . ' SET fk_commandefourndet = '.$obj_line->rowid.', qty = '.$qty_for_line - . ' WHERE rowid = '.$obj_dispatch->rowid; + $sql_attach = 'UPDATE '.MAIN_DB_PREFIX.'commande_fournisseur_dispatch'; + $sql_attach .= ' SET fk_commandefourndet = '.$obj_line->rowid.', qty = '.$qty_for_line; + $sql_attach .= ' WHERE rowid = '.$obj_dispatch->rowid; $first_iteration = false; } else { $sql_attach_values = array( @@ -1487,9 +1487,9 @@ if ($ok && GETPOST('repair_link_dispatch_lines_supplier_order_lines')) { ); $sql_attach_values = join(', ', $sql_attach_values); - $sql_attach = 'INSERT INTO '.MAIN_DB_PREFIX.'commande_fournisseur_dispatch' - . ' (fk_commande, fk_product, fk_commandefourndet, qty, fk_entrepot, fk_user, datec, comment, status, tms, batch, eatby, sellby)' - . ' VALUES ('.$sql_attach_values.')'; + $sql_attach = 'INSERT INTO '.MAIN_DB_PREFIX.'commande_fournisseur_dispatch'; + $sql_attach .= ' (fk_commande, fk_product, fk_commandefourndet, qty, fk_entrepot, fk_user, datec, comment, status, tms, batch, eatby, sellby)'; + $sql_attach .= ' VALUES ('.$sql_attach_values.')'; } if ($repair_link_dispatch_lines_supplier_order_lines == 'confirmed') diff --git a/htdocs/mrp/mo_production.php b/htdocs/mrp/mo_production.php index 599cb094aac..f762ca9291c 100644 --- a/htdocs/mrp/mo_production.php +++ b/htdocs/mrp/mo_production.php @@ -667,7 +667,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print load_fiche_titre($langs->trans('Consumption'), '', '', 0, '', '', $newlinetext); print '<div class="div-table-responsive-no-min">'; - print '<table class="noborder noshadow centpercent nobottom'.'">'; + print '<table class="noborder noshadow centpercent nobottom">'; print '<tr class="liste_titre">'; print '<td>'.$langs->trans("Product").'</td>'; diff --git a/htdocs/opensurvey/results.php b/htdocs/opensurvey/results.php index c7d712b4633..337ccb3e435 100644 --- a/htdocs/opensurvey/results.php +++ b/htdocs/opensurvey/results.php @@ -507,7 +507,7 @@ print '</form>'."\n"; print '<div class="tabsAction">'; -print '<a class="butAction" href="exportcsv.php?id='.$numsondage.'">'.$langs->trans("ExportSpreadsheet").' (.CSV)'.'</a>'; +print '<a class="butAction" href="exportcsv.php?id='.urlencode($numsondage).'">'.$langs->trans("ExportSpreadsheet").' (.CSV)</a>'; print '</div>'; @@ -522,7 +522,7 @@ if (GETPOST('ajoutsujet')) print '<input type="hidden" name="backtopage" value="'.GETPOST('backtopage', 'alpha').'">'; print '<div class="center">'."\n"; - print "<br><br>"."\n"; + print "<br><br>\n"; // Add new column if ($object->format == "A") diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index ed83034bb6c..97d3871c027 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -588,16 +588,16 @@ if (!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entre { $stocklabel .= ' ('.$langs->trans("AllWarehouses").')'; } -print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" name="formulaire">'. - '<input type="hidden" name="token" value="'.newToken().'">'. - '<input type="hidden" name="fk_supplier" value="'.$fk_supplier.'">'. - '<input type="hidden" name="fk_entrepot" value="'.$fk_entrepot.'">'. - '<input type="hidden" name="sortfield" value="'.$sortfield.'">'. - '<input type="hidden" name="sortorder" value="'.$sortorder.'">'. - '<input type="hidden" name="type" value="'.$type.'">'. - '<input type="hidden" name="linecount" value="'.$num.'">'. - '<input type="hidden" name="action" value="order">'. - '<input type="hidden" name="mode" value="'.$mode.'">'; +print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" name="formulaire">'; +print '<input type="hidden" name="token" value="'.newToken().'">'; +print '<input type="hidden" name="fk_supplier" value="'.$fk_supplier.'">'; +print '<input type="hidden" name="fk_entrepot" value="'.$fk_entrepot.'">'; +print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; +print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; +print '<input type="hidden" name="type" value="'.$type.'">'; +print '<input type="hidden" name="linecount" value="'.$num.'">'; +print '<input type="hidden" name="action" value="order">'; +print '<input type="hidden" name="mode" value="'.$mode.'">'; // Fields title search print '<tr class="liste_titre_filter">'; diff --git a/htdocs/product/stock/replenishorders.php b/htdocs/product/stock/replenishorders.php index 25f3e38a81b..42469b4dd2a 100644 --- a/htdocs/product/stock/replenishorders.php +++ b/htdocs/product/stock/replenishorders.php @@ -268,7 +268,9 @@ if ($resql) if ($showline) { $href = DOL_URL_ROOT.'/fourn/commande/card.php?id='.$obj->rowid; + print '<tr>'; + // Ref print '<td>'; print '<a href="'.$href.'">'.img_object($langs->trans('ShowOrder'), 'order').' '.$obj->ref.'</a>'; @@ -276,10 +278,7 @@ if ($resql) // Company $href = DOL_URL_ROOT.'/fourn/card.php?socid='.$obj->socid; - print '<td>'. - '<a href="'.$href.'">'. - img_object($langs->trans('ShowCompany'), 'company').' '. - $obj->name.'</a></td>'; + print '<td><a href="'.$href.'">'.img_object($langs->trans('ShowCompany'), 'company').' '.$obj->name.'</a></td>'; // Author $userstatic->id = $obj->fk_user_author; @@ -290,6 +289,7 @@ if ($resql) $txt = ' '; } print '<td>'.$txt.'</td>'; + // Amount print '<td>'.price($obj->total_ttc).'</td>'; @@ -300,8 +300,10 @@ if ($resql) $date = '-'; } print '<td>'.$date.'</td>'; + // Statut print '<td class="right">'.$commandestatic->LibStatut($obj->fk_statut, 5).'</td>'; + print '</tr>'; } $i++; diff --git a/htdocs/public/members/public_list.php b/htdocs/public/members/public_list.php index 0514c5ad565..459926707b8 100644 --- a/htdocs/public/members/public_list.php +++ b/htdocs/public/members/public_list.php @@ -101,7 +101,7 @@ $form = new Form($db); $morehead = ''; if (!empty($conf->global->MEMBER_PUBLIC_CSS)) $morehead = '<link rel="stylesheet" type="text/css" href="'.$conf->global->MEMBER_PUBLIC_CSS.'">'; -else $morehead = '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/theme/eldy/style.css.php'.'">'; +else $morehead = '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/theme/eldy/style.css.php">'; llxHeaderVierge($langs->trans("ListOfValidatedPublicMembers"), $morehead); diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index dbdb15bfedc..7f4601eb177 100644 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -856,7 +856,7 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd // Creation date print '<tr><td>'.$langs->trans("DateCreation").'</td><td>'; print dol_print_date($object->datec, 'dayhour'); - print '<span class="opacitymedium"> - '.$langs->trans("TimeElapsedSince").': '.'<i>'.convertSecondToTime(roundUpToNextMultiple($now - $object->datec, 60)).'</i></span>'; + print '<span class="opacitymedium"> - '.$langs->trans("TimeElapsedSince").': <i>'.convertSecondToTime(roundUpToNextMultiple($now - $object->datec, 60)).'</i></span>'; print '</td></tr>'; // Read date diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 0f684ca5232..32fa5d4eefb 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -1232,7 +1232,7 @@ if ($action == 'updatecss') $csscontent .= "<?php // BEGIN PHP\n"; $csscontent .= '$websitekey=basename(__DIR__);'."\n"; - $csscontent .= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { require_once __DIR__.'/master.inc.php'; } // Load env if not already loaded"."\n"; // For the css, we need to set path of master using the dirname of css file. + $csscontent .= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { require_once __DIR__.'/master.inc.php'; } // Load env if not already loaded\n"; // For the css, we need to set path of master using the dirname of css file. $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"; @@ -1246,7 +1246,7 @@ if ($action == 'updatecss') $csscontent .= '<?php // BEGIN PHP'."\n"; $csscontent .= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "css");'."\n"; - $csscontent .= "// END PHP ?>"."\n"; + $csscontent .= "// END PHP ?>\n"; dol_syslog("Save css content into ".$filecss); From c0821a8ed680f3e4df6a6cbff1d1c5bec2e88157 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 00:02:31 +0200 Subject: [PATCH 215/780] Fix phpcs --- .../accountancy/class/bookkeeping.class.php | 2 +- htdocs/admin/menus/index.php | 32 +++++++++++-------- htdocs/admin/notification.php | 2 +- htdocs/core/tpl/advtarget.tpl.php | 4 +-- htdocs/expedition/card.php | 14 ++++---- htdocs/website/index.php | 8 ++--- 6 files changed, 33 insertions(+), 29 deletions(-) diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 43762c2d36a..0162a98394e 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -704,7 +704,7 @@ class BookKeeping extends CommonObject $sql .= ' WHERE 1 = 1'; $sql .= " AND entity IN (".getEntity('accountancy').")"; if (null !== $ref) { - $sql .= ' AND t.ref = '.'\''.$ref.'\''; + $sql .= " AND t.ref = '".$this->db->escape($ref)."'"; } else { $sql .= ' AND t.rowid = '.$id; } diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php index cc83e019833..56251e48f7b 100644 --- a/htdocs/admin/menus/index.php +++ b/htdocs/admin/menus/index.php @@ -325,6 +325,22 @@ if ($conf->use_javascript_ajax) if (!empty($menu['langs'])) $langs->load($menu['langs']); $titre = $langs->trans($menu['titre']); + $entry = '<table class="nobordernopadding centpercent"><tr><td>'; + $entry .= '<strong>   <a href="edit.php?menu_handler='.$menu_handler_to_search.'&action=edit&menuId='.$menu['rowid'].'">'.$titre.'</a></strong>'; + $entry .= '</td><td class="right">'; + $entry .= '<a href="edit.php?menu_handler='.$menu_handler_to_search.'&action=edit&menuId='.$menu['rowid'].'">'.img_edit('default', 0, 'class="menuEdit" id="edit'.$menu['rowid'].'"').'</a> '; + $entry .= '<a href="edit.php?menu_handler='.$menu_handler_to_search.'&action=create&menuId='.$menu['rowid'].'">'.img_edit_add('default').'</a> '; + $entry .= '<a href="index.php?menu_handler='.$menu_handler_to_search.'&action=delete&menuId='.$menu['rowid'].'">'.img_delete('default').'</a> '; + $entry .= '     '; + $entry .= '<a href="index.php?menu_handler='.$menu_handler_to_search.'&action=up&menuId='.$menu['rowid'].'">'.img_picto("Up", "1uparrow").'</a><a href="index.php?menu_handler='.$menu_handler_to_search.'&action=down&menuId='.$menu['rowid'].'">'.img_picto("Down", "1downarrow").'</a>'; + $entry .= '</td></tr></table>'; + + $buttons = '<a href="edit.php?menu_handler='.$menu_handler_to_search.'&action=edit&menuId='.$menu['rowid'].'">'.img_edit('default', 0, 'class="menuEdit" id="edit'.$menu['rowid'].'"').'</a> '; + $buttons .= '<a href="edit.php?menu_handler='.$menu_handler_to_search.'&action=create&menuId='.$menu['rowid'].'">'.img_edit_add('default').'</a> '; + $buttons .= '<a href="index.php?menu_handler='.$menu_handler_to_search.'&action=delete&menuId='.$menu['rowid'].'">'.img_delete('default').'</a> '; + $buttons .= '     '; + $buttons .= '<a href="index.php?menu_handler='.$menu_handler_to_search.'&action=up&menuId='.$menu['rowid'].'">'.img_picto("Up", "1uparrow").'</a><a href="index.php?menu_handler='.$menu_handler_to_search.'&action=down&menuId='.$menu['rowid'].'">'.img_picto("Down", "1downarrow").'</a>'; + $data[] = array( 'rowid'=>$menu['rowid'], 'module'=>$menu['module'], @@ -335,20 +351,8 @@ if ($conf->use_javascript_ajax) 'fk_mainmenu'=>$menu['fk_mainmenu'], 'fk_leftmenu'=>$menu['fk_leftmenu'], 'position'=>$menu['position'], - 'entry'=>'<table class="nobordernopadding centpercent"><tr><td>'. - '<strong>   <a href="edit.php?menu_handler='.$menu_handler_to_search.'&action=edit&menuId='.$menu['rowid'].'">'.$titre.'</a></strong>'. - '</td><td class="right">'. - '<a href="edit.php?menu_handler='.$menu_handler_to_search.'&action=edit&menuId='.$menu['rowid'].'">'.img_edit('default', 0, 'class="menuEdit" id="edit'.$menu['rowid'].'"').'</a> '. - '<a href="edit.php?menu_handler='.$menu_handler_to_search.'&action=create&menuId='.$menu['rowid'].'">'.img_edit_add('default').'</a> '. - '<a href="index.php?menu_handler='.$menu_handler_to_search.'&action=delete&menuId='.$menu['rowid'].'">'.img_delete('default').'</a> '. - '     '. - '<a href="index.php?menu_handler='.$menu_handler_to_search.'&action=up&menuId='.$menu['rowid'].'">'.img_picto("Up", "1uparrow").'</a><a href="index.php?menu_handler='.$menu_handler_to_search.'&action=down&menuId='.$menu['rowid'].'">'.img_picto("Down", "1downarrow").'</a>'. - '</td></tr></table>', - 'buttons'=>'<a href="edit.php?menu_handler='.$menu_handler_to_search.'&action=edit&menuId='.$menu['rowid'].'">'.img_edit('default', 0, 'class="menuEdit" id="edit'.$menu['rowid'].'"').'</a> '. - '<a href="edit.php?menu_handler='.$menu_handler_to_search.'&action=create&menuId='.$menu['rowid'].'">'.img_edit_add('default').'</a> '. - '<a href="index.php?menu_handler='.$menu_handler_to_search.'&action=delete&menuId='.$menu['rowid'].'">'.img_delete('default').'</a> '. - '     '. - '<a href="index.php?menu_handler='.$menu_handler_to_search.'&action=up&menuId='.$menu['rowid'].'">'.img_picto("Up", "1uparrow").'</a><a href="index.php?menu_handler='.$menu_handler_to_search.'&action=down&menuId='.$menu['rowid'].'">'.img_picto("Down", "1downarrow").'</a>' + 'entry'=>$entry, + 'buttons'=>$buttons ); $i++; } diff --git a/htdocs/admin/notification.php b/htdocs/admin/notification.php index 0455fb961ae..97b09861a42 100644 --- a/htdocs/admin/notification.php +++ b/htdocs/admin/notification.php @@ -265,7 +265,7 @@ print '<td>'.$langs->trans("Code").'</td>'; print '<td>'.$langs->trans("Label").'</td>'; print '<td>'.$langs->trans("FixedEmailTarget").'</td>'; print '<td>'.$langs->trans("Threshold").'</td>'; -print '<td>'.'</td>'; +print '<td></td>'; print "</tr>\n"; foreach ($listofnotifiedevents as $notifiedevent) diff --git a/htdocs/core/tpl/advtarget.tpl.php b/htdocs/core/tpl/advtarget.tpl.php index f433366f112..23727e4ad97 100644 --- a/htdocs/core/tpl/advtarget.tpl.php +++ b/htdocs/core/tpl/advtarget.tpl.php @@ -486,9 +486,9 @@ if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) { } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'date') || ($extrafields->attributes[$elementtype]['type'][$key] == 'datetime')) { print '<table class="nobordernopadding"><tr>'; print '<td>'.$langs->trans("AdvTgtStartDt").'</td><td>'; - print $form->selectDate('', 'options_'.$key.'_st_dt'.'_cnct'); + print $form->selectDate('', 'options_'.$key.'_st_dt_cnct'); print '</td><td>'.$langs->trans("AdvTgtEndDt").'</td><td>'; - print $form->selectDate('', 'options_'.$key.'_end_dt'.'_cnct'); + print $form->selectDate('', 'options_'.$key.'_end_dt_cnct'); print '</td></tr></table>'; print '</td><td>'."\n"; print $form->textwithpicto('', $langs->trans("AdvTgtSearchDtHelp"), 1, 'help'); diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 655ba8f060f..7fd2948480e 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -2278,7 +2278,7 @@ elseif ($id || $ref) { print '<tr>'; // Qty to ship or shipped - print '<td>'.'<input name="qtyl'.$detail_batch->fk_expeditiondet.'_'.$detail_batch->id.'" id="qtyl'.$line_id.'_'.$detail_batch->id.'" type="text" size="4" value="'.$detail_batch->qty.'">'.'</td>'; + print '<td><input name="qtyl'.$detail_batch->fk_expeditiondet.'_'.$detail_batch->id.'" id="qtyl'.$line_id.'_'.$detail_batch->id.'" type="text" size="4" value="'.$detail_batch->qty.'"></td>'; // Batch number managment if ($lines[$i]->entrepot_id == 0) { @@ -2291,7 +2291,7 @@ elseif ($id || $ref) // add a 0 qty lot row to be able to add a lot print '<tr>'; // Qty to ship or shipped - print '<td>'.'<input name="qtyl'.$line_id.'_0" id="qtyl'.$line_id.'_0" type="text" size="4" value="0">'.'</td>'; + print '<td><input name="qtyl'.$line_id.'_0" id="qtyl'.$line_id.'_0" type="text" size="4" value="0"></td>'; // Batch number managment print '<td>'.$formproduct->selectLotStock('', 'batchl'.$line_id.'_0', '', 1, 0, $lines[$i]->fk_product).'</td>'; print '</tr>'; @@ -2305,7 +2305,7 @@ elseif ($id || $ref) print '<!-- case edit 2 -->'; print '<tr>'; // Qty to ship or shipped - print '<td>'.'<input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty_shipped.'">'.'</td>'; + print '<td><input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty_shipped.'"></td>'; // Warehouse source print '<td>'.$formproduct->selectWarehouses($lines[$i]->entrepot_id, 'entl'.$line_id, '', 1, 0, $lines[$i]->fk_product, '', 1).'</td>'; // Batch number managment @@ -2319,7 +2319,7 @@ elseif ($id || $ref) { print '<tr>'; // Qty to ship or shipped - print '<td>'.'<input name="qtyl'.$detail_entrepot->line_id.'" id="qtyl'.$detail_entrepot->line_id.'" type="text" size="4" value="'.$detail_entrepot->qty_shipped.'">'.'</td>'; + print '<td><input name="qtyl'.$detail_entrepot->line_id.'" id="qtyl'.$detail_entrepot->line_id.'" type="text" size="4" value="'.$detail_entrepot->qty_shipped.'"></td>'; // Warehouse source print '<td>'.$formproduct->selectWarehouses($detail_entrepot->entrepot_id, 'entl'.$detail_entrepot->line_id, '', 1, 0, $lines[$i]->fk_product, '', 1).'</td>'; // Batch number managment @@ -2338,11 +2338,11 @@ elseif ($id || $ref) print '<!-- case edit 5 -->'; print '<tr>'; // Qty to ship or shipped - print '<td>'.'<input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty_shipped.'">'.'</td>'; + print '<td><input name="qtyl'.$line_id.'" id="qtyl'.$line_id.'" type="text" size="4" value="'.$lines[$i]->qty_shipped.'"></td>'; // Warehouse source - print '<td>'.'</td>'; + print '<td></td>'; // Batch number managment - print '<td>'.'</td>'; + print '<td></td>'; print '</tr>'; } } diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 32fa5d4eefb..403473071f4 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -1263,7 +1263,7 @@ if ($action == 'updatecss') $jscontent .= "<?php // BEGIN PHP\n"; $jscontent .= '$websitekey=basename(__DIR__);'."\n"; - $jscontent .= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { require_once __DIR__.'/master.inc.php'; } // Load env if not already loaded"."\n"; // For the css, we need to set path of master using the dirname of css file. + $jscontent .= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { require_once __DIR__.'/master.inc.php'; } // Load env if not already loaded\n"; // For the css, we need to set path of master using the dirname of css file. $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"; @@ -1275,7 +1275,7 @@ if ($action == 'updatecss') $jscontent .= '<?php // BEGIN PHP'."\n"; $jscontent .= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "js");'."\n"; - $jscontent .= "// END PHP ?>"."\n"; + $jscontent .= "// END PHP ?>\n"; $result = dolSaveJsFile($filejs, $jscontent); if (!$result) @@ -1329,7 +1329,7 @@ if ($action == 'updatecss') $manifestjsoncontent .= "<?php // BEGIN PHP\n"; $manifestjsoncontent .= '$websitekey=basename(__DIR__);'."\n"; - $manifestjsoncontent .= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { require_once __DIR__.'/master.inc.php'; } // Load env if not already loaded"."\n"; // For the css, we need to set path of master using the dirname of css file. + $manifestjsoncontent .= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { require_once __DIR__.'/master.inc.php'; } // Load env if not already loaded\n"; // For the css, we need to set path of master using the dirname of css file. $manifestjsoncontent .= "require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n"; $manifestjsoncontent .= "require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';\n"; $manifestjsoncontent .= "ob_start();\n"; @@ -1341,7 +1341,7 @@ if ($action == 'updatecss') $manifestjsoncontent .= '<?php // BEGIN PHP'."\n"; $manifestjsoncontent .= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "manifest");'."\n"; - $manifestjsoncontent .= "// END PHP ?>"."\n"; + $manifestjsoncontent .= "// END PHP ?>\n"; $result = dolSaveManifestJson($filemanifestjson, $manifestjsoncontent); if (!$result) From 4c605283f5b515f6d9dddb0359a0fede90d574e9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 00:09:21 +0200 Subject: [PATCH 216/780] Fix phpcs --- htdocs/accountancy/index.php | 4 ++-- htdocs/admin/dolistore/class/dolistore.class.php | 4 ++-- htdocs/comm/mailing/class/advtargetemailing.class.php | 4 ++-- htdocs/core/class/html.form.class.php | 4 ++-- htdocs/ticket/card.php | 2 +- htdocs/ticket/class/ticket.class.php | 8 ++++---- htdocs/website/index.php | 4 +++- 7 files changed, 16 insertions(+), 14 deletions(-) diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php index 2379c31ce53..56cf674505b 100644 --- a/htdocs/accountancy/index.php +++ b/htdocs/accountancy/index.php @@ -124,12 +124,12 @@ if ($conf->accounting->enabled) print "<br>\n"; $step++; - $textlink = '<a href="'.DOL_URL_ROOT.'/admin/dict.php?id=10&from=accountancy">'.'<strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuVatAccounts").'</strong>'.'</a>'; + $textlink = '<a href="'.DOL_URL_ROOT.'/admin/dict.php?id=10&from=accountancy"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuVatAccounts").'</strong></a>'; print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescVat", $step, $textlink); print "<br>\n"; if (!empty($conf->tax->enabled)) { - $textlink = '<a href="'.DOL_URL_ROOT.'/admin/dict.php?id=7&from=accountancy">'.'<strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuTaxAccounts").'</strong>'.'</a>'; + $textlink = '<a href="'.DOL_URL_ROOT.'/admin/dict.php?id=7&from=accountancy"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuTaxAccounts").'</strong></a>'; $step++; print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescContrib", $step, $textlink); print "<br>\n"; diff --git a/htdocs/admin/dolistore/class/dolistore.class.php b/htdocs/admin/dolistore/class/dolistore.class.php index d250203b3d8..230c588f7e4 100644 --- a/htdocs/admin/dolistore/class/dolistore.class.php +++ b/htdocs/admin/dolistore/class/dolistore.class.php @@ -267,8 +267,8 @@ class Dolistore // add image or default ? if ($product->id_default_image != '') { $image_url = DOL_URL_ROOT.'/admin/dolistore/ajax/image.php?id_product='.$product->id.'&id_image='.$product->id_default_image; - $images = '<a href="'.$image_url.'" class="fancybox" rel="gallery'.$product->id.'" title="'.$product->name->language[$this->lang - 1].', '.$langs->trans('Version').' '.$product->module_version.'">'. - '<img src="'.$image_url.'&quality=home_default" style="max-height:250px;max-width: 210px;" alt="" /></a>'; + $images = '<a href="'.$image_url.'" class="fancybox" rel="gallery'.$product->id.'" title="'.$product->name->language[$this->lang - 1].', '.$langs->trans('Version').' '.$product->module_version.'">'; + $images .= '<img src="'.$image_url.'&quality=home_default" style="max-height:250px;max-width: 210px;" alt="" /></a>'; } else { $images = '<img src="'.DOL_URL_ROOT.'/admin/dolistore/img/NoImageAvailable.png" />'; } diff --git a/htdocs/comm/mailing/class/advtargetemailing.class.php b/htdocs/comm/mailing/class/advtargetemailing.class.php index 7bb73a61c9f..b398235e8d8 100644 --- a/htdocs/comm/mailing/class/advtargetemailing.class.php +++ b/htdocs/comm/mailing/class/advtargetemailing.class.php @@ -725,12 +725,12 @@ class AdvanceTargetingMailing extends CommonObject } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'int') || ($extrafields->attributes[$elementtype]['type'][$key] == 'double')) { if (!empty($arrayquery['options_'.$key.'_max_cnct'])) { - $sqlwhere[] = " (te.".$key." >= ".$arrayquery['options_'.$key.'_max'.'_cnct']." AND te.".$key." <= ".$arrayquery['options_'.$key.'_min_cnct'].")"; + $sqlwhere[] = " (te.".$key." >= ".$arrayquery['options_'.$key.'_max_cnct']." AND te.".$key." <= ".$arrayquery['options_'.$key.'_min_cnct'].")"; } } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'date') || ($extrafields->attributes[$elementtype]['type'][$key] == 'datetime')) { if (!empty($arrayquery['options_'.$key.'_end_dt_cnct'])) { - $sqlwhere[] = " (te.".$key." >= '".$this->db->idate($arrayquery['options_'.$key.'_st_dt'.'_cnct'])."' AND te.".$key." <= '".$this->db->idate($arrayquery['options_'.$key.'_end_dt_cnct'])."')"; + $sqlwhere[] = " (te.".$key." >= '".$this->db->idate($arrayquery['options_'.$key.'_st_dt_cnct'])."' AND te.".$key." <= '".$this->db->idate($arrayquery['options_'.$key.'_end_dt_cnct'])."')"; } } elseif ($extrafields->attributes[$elementtype]['type'][$key] == 'boolean') { if ($arrayquery['options_'.$key.'_cnct'] != '') { diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 05174f176b0..25ed9f86625 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6642,7 +6642,7 @@ class Form $out .= 'function formatResult(record) {'."\n"; if ($elemtype == 'category') { - $out .= 'return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> \'+record.text+\'</span>\';'; + $out .= 'return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png"> \'+record.text+\'</span>\';'; } else { @@ -6652,7 +6652,7 @@ class Form $out .= 'function formatSelection(record) {'."\n"; if ($elemtype == 'category') { - $out .= 'return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> \'+record.text+\'</span>\';'; + $out .= 'return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png"> \'+record.text+\'</span>\';'; } else { diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index 7f4601eb177..b9459a0e161 100644 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -864,7 +864,7 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd if (!empty($object->date_read)) { print dol_print_date($object->date_read, 'dayhour'); print '<span class="opacitymedium"> - '.$langs->trans("TicketTimeToRead").': <i>'.convertSecondToTime(roundUpToNextMultiple($object->date_read - $object->datec, 60)).'</i>'; - print ' - '.$langs->trans("TimeElapsedSince").': '.'<i>'.convertSecondToTime(roundUpToNextMultiple($now - $object->date_read, 60)).'</i></span>'; + print ' - '.$langs->trans("TimeElapsedSince").': <i>'.convertSecondToTime(roundUpToNextMultiple($now - $object->date_read, 60)).'</i></span>'; } print '</td></tr>'; diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 85c900eaf55..f94599153f0 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -1441,10 +1441,10 @@ class Ticket extends CommonObject if ($info_sendto['source'] == 'internal') { $url_internal_ticket = dol_buildpath('/ticket/card.php', 2).'?track_id='.$this->track_id; - $message .= "\n".$langs->transnoentities('TicketNotificationEmailBodyInfosTrackUrlinternal').' : '.'<a href="'.$url_internal_ticket.'">'.$this->track_id.'</a>'."\n"; + $message .= "\n".$langs->transnoentities('TicketNotificationEmailBodyInfosTrackUrlinternal').' : <a href="'.$url_internal_ticket.'">'.$this->track_id.'</a>'."\n"; } else { $url_public_ticket = ($conf->global->TICKET_URL_PUBLIC_INTERFACE ? $conf->global->TICKET_URL_PUBLIC_INTERFACE.'/' : dol_buildpath('/public/ticket/view.php', 2)).'?track_id='.$this->track_id; - $message .= "\n".$langs->transnoentities('TicketNewEmailBodyInfosTrackUrlCustomer').' : '.'<a href="'.$url_public_ticket.'">'.$this->track_id.'</a>'."\n"; + $message .= "\n".$langs->transnoentities('TicketNewEmailBodyInfosTrackUrlCustomer').' : <a href="'.$url_public_ticket.'">'.$this->track_id.'</a>'."\n"; } $message .= "\n"; @@ -2510,7 +2510,7 @@ class Ticket extends CommonObject $url_internal_ticket = dol_buildpath('/ticket/card.php', 2).'?track_id='.$object->track_id; // altairis: make html link on url - $message .= "\n".$langs->trans('TicketNotificationEmailBodyInfosTrackUrlinternal').' : '.'<a href="'.$url_internal_ticket.'">'.$object->track_id.'</a>'."\n"; + $message .= "\n".$langs->trans('TicketNotificationEmailBodyInfosTrackUrlinternal').' : <a href="'.$url_internal_ticket.'">'.$object->track_id.'</a>'."\n"; // Add global email address recipient if ($conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS && !in_array($conf->global->TICKET_NOTIFICATION_EMAIL_TO, $sendto)) { @@ -2572,7 +2572,7 @@ class Ticket extends CommonObject // If public interface is not enable, use link to internal page into mail $url_public_ticket = (!empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE) ? (!empty($conf->global->TICKET_URL_PUBLIC_INTERFACE) ? $conf->global->TICKET_URL_PUBLIC_INTERFACE.'/view.php' : dol_buildpath('/public/ticket/view.php', 2)) : dol_buildpath('/ticket/card.php', 2)).'?track_id='.$object->track_id; - $message .= "\n".$langs->trans('TicketNewEmailBodyInfosTrackUrlCustomer').' : '.'<a href="'.$url_public_ticket.'">'.$object->track_id.'</a>'."\n"; + $message .= "\n".$langs->trans('TicketNewEmailBodyInfosTrackUrlCustomer').' : <a href="'.$url_public_ticket.'">'.$object->track_id.'</a>'."\n"; // Build final message $message = $message_intro.$message; diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 403473071f4..a617d9ae018 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -2719,7 +2719,9 @@ if ($action == 'editcss') { $csscontent = GETPOST('WEBSITE_CSS_INLINE', 'none'); } - if (!trim($csscontent)) $csscontent = '/* CSS content (all pages) */'."\n"."body.bodywebsite { margin: 0; font-family: 'Open Sans', sans-serif; }\n.bodywebsite h1 { margin-top: 0; margin-bottom: 0; padding: 10px;}"; + if (!trim($csscontent)) { + $csscontent = '/* CSS content (all pages) */'."\nbody.bodywebsite { margin: 0; font-family: 'Open Sans', sans-serif; }\n.bodywebsite h1 { margin-top: 0; margin-bottom: 0; padding: 10px;}"; + } if (!GETPOSTISSET('WEBSITE_JS_INLINE')) { From b90a6024f57097830be749a5eee755cc45b603af Mon Sep 17 00:00:00 2001 From: Ferran Marcet <fmarcet@2byte.es> Date: Mon, 27 Apr 2020 10:15:47 +0200 Subject: [PATCH 217/780] FIX: Wrong Sql on getListOfTowns api method --- htdocs/api/class/api_setup.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 5174aae7221..1e1ab2f8307 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -603,7 +603,7 @@ class Setup extends DolibarrApi $sql = "SELECT rowid AS id, zip, town, fk_county, fk_pays AS fk_country"; $sql.= " FROM ".MAIN_DB_PREFIX."c_ziptown as t"; - $sql.= " AND t.active = ".$active; + $sql.= " WHERE t.active = ".$active; if ($zipcode) $sql.=" AND t.zip LIKE '%" . $this->db->escape($zipcode) . "%'"; if ($town) $sql.=" AND t.town LIKE '%" . $this->db->escape($town) . "%'"; // Add sql filters From 7f56c4a785b93f460f43a049257617faa0102d36 Mon Sep 17 00:00:00 2001 From: gauthier <gauthier.verdol@atm-consulting.fr> Date: Mon, 27 Apr 2020 11:18:53 +0200 Subject: [PATCH 218/780] FIX : Another "Access to undeclared static property: Contact::$table_element" && "Societe::$table_element" --- htdocs/comm/mailing/class/advtargetemailing.class.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/mailing/class/advtargetemailing.class.php b/htdocs/comm/mailing/class/advtargetemailing.class.php index da1775955b7..6987a27dacd 100644 --- a/htdocs/comm/mailing/class/advtargetemailing.class.php +++ b/htdocs/comm/mailing/class/advtargetemailing.class.php @@ -615,7 +615,8 @@ class AdvanceTargetingMailing extends CommonObject //Standard Extrafield feature if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) { - $elementtype = Societe::$table_element; + $socstatic = new Societe($this->db); + $elementtype = $socstatic->table_element; $extrafields->fetch_name_optionals_label($elementtype); @@ -752,7 +753,8 @@ class AdvanceTargetingMailing extends CommonObject //Standard Extrafield feature if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) { - $elementtype = Contact::$table_element; + $contactstatic = new Contact($this->db); + $elementtype = $contactstatic->table_element; // fetch optionals attributes and labels dol_include_once('/core/class/extrafields.class.php'); @@ -854,7 +856,8 @@ class AdvanceTargetingMailing extends CommonObject //Standard Extrafield feature if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) { - $elementtype = Societe::$table_element; + $socstatic = new Societe($this->db); + $elementtype = $socstatic->table_element; // fetch optionals attributes and labels dol_include_once('/core/class/extrafields.class.php'); From 3c1d989c301314cda384debea133295a6a4668d3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 11:41:35 +0200 Subject: [PATCH 219/780] FIX #13751 --- htdocs/modulebuilder/template/.editorconfig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/modulebuilder/template/.editorconfig b/htdocs/modulebuilder/template/.editorconfig index 3c4bd7d679d..d25f38c8b44 100644 --- a/htdocs/modulebuilder/template/.editorconfig +++ b/htdocs/modulebuilder/template/.editorconfig @@ -2,6 +2,7 @@ # top-most EditorConfig file root = true + # Unix-style newlines with a newline ending every file [*] charset = utf-8 @@ -11,9 +12,10 @@ insert_final_newline = true # PHP PSR-2 Coding Standards # http://www.php-fig.org/psr/psr-2/ [*.php] -indent_style = space +indent_style = tab indent_size = 4 trim_trailing_whitespace = true +insert_final_newline = true [*.js] indent_style = tab [*.css] From ed632877971d1de2d5f1b8790d17b4a2b9e34d6f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 14:02:18 +0200 Subject: [PATCH 220/780] Fix font --- htdocs/langs/es_AR/main.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/es_AR/main.lang b/htdocs/langs/es_AR/main.lang index 1451ea1c508..a48f7399746 100644 --- a/htdocs/langs/es_AR/main.lang +++ b/htdocs/langs/es_AR/main.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr -FONTFORPDF=helvética +FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, From fdc0543b4d396287b4f35fe3c1f90cec9b54a221 Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Mon, 27 Apr 2020 12:16:24 +0000 Subject: [PATCH 221/780] Fixing style errors. --- htdocs/contact/consumption.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/contact/consumption.php b/htdocs/contact/consumption.php index 3f95d6acd14..ad4b5ca08f5 100644 --- a/htdocs/contact/consumption.php +++ b/htdocs/contact/consumption.php @@ -150,8 +150,8 @@ if ($object->thirdparty->fournisseur) if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire) $elementTypeArray['supplier_invoice'] = $langs->transnoentitiesnoconv('SuppliersInvoices'); if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) && $user->rights->fournisseur->commande->lire) $elementTypeArray['supplier_order']= $langs->transnoentitiesnoconv('SuppliersOrders'); - // There no contact type for supplier proposals - // if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $user->rights->supplier_proposal->lire) $elementTypeArray['supplier_proposal']=$langs->transnoentitiesnoconv('SupplierProposals'); + // There no contact type for supplier proposals + // if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $user->rights->supplier_proposal->lire) $elementTypeArray['supplier_proposal']=$langs->transnoentitiesnoconv('SupplierProposals'); } print '</table>'; From 50d9f466d453c1e71bee17b8466340dd514d79ea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 14:38:45 +0200 Subject: [PATCH 222/780] FIX #13749 --- htdocs/api/class/api.class.php | 9 +++++++++ htdocs/product/class/api_products.class.php | 18 +++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php index 6b106efc450..5e051420748 100644 --- a/htdocs/api/class/api.class.php +++ b/htdocs/api/class/api.class.php @@ -137,6 +137,15 @@ class DolibarrApi unset($object->labelStatus); unset($object->labelStatusShort); + unset($object->stats_propale); + unset($object->stats_commande); + unset($object->stats_contrat); + unset($object->stats_facture); + unset($object->stats_commande_fournisseur); + unset($object->stats_reception); + unset($object->stats_mrptoconsume); + unset($object->stats_mrptoproduce); + unset($object->element); unset($object->fk_element); unset($object->table_element); diff --git a/htdocs/product/class/api_products.class.php b/htdocs/product/class/api_products.class.php index 315936d41eb..91162d727c3 100644 --- a/htdocs/product/class/api_products.class.php +++ b/htdocs/product/class/api_products.class.php @@ -734,8 +734,6 @@ class Products extends DolibarrApi } /** - * List purchase prices - * * Get a list of all purchase prices of products * * @param string $sortfield Sort field @@ -767,11 +765,11 @@ class Products extends DolibarrApi if ($supplier > 0) { $sql .= " AND s.fk_soc = ".$db->escape($supplier); } - $sql .= " AND s.fk_product = t.rowid "; + $sql .= " AND s.fk_product = t.rowid"; // Select products of given category if ($category > 0) { $sql .= " AND c.fk_categorie = ".$db->escape($category); - $sql .= " AND c.fk_product = t.rowid "; + $sql .= " AND c.fk_product = t.rowid"; } if ($mode == 1) { // Show only products @@ -804,10 +802,15 @@ class Products extends DolibarrApi while ($i < $min) { $obj = $db->fetch_object($result); - $product_static = new Product($db); - if ($product_static->fetch($obj->rowid)) { - $obj_ret[] = $this->_cleanObjectDatas($product_static); + + $product_fourn = new ProductFournisseur($this->db); + $product_fourn_list = $product_fourn->list_product_fournisseur_price($obj->rowid, '', '', 0, 0); + foreach($product_fourn_list as $tmpobj) { + $this->_cleanObjectDatas($tmpobj); } + //var_dump($product_fourn_list->db);exit; + $obj_ret[$obj->rowid] = $product_fourn_list; + $i++; } } @@ -1587,6 +1590,7 @@ class Products extends DolibarrApi unset($object->prices_by_qty_id); unset($object->libelle); unset($object->product_id_already_linked); + unset($object->reputations); unset($object->name); unset($object->firstname); From 581d4dbcd9ca421c64cedcb750298552b4d6f8ed Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 14:39:38 +0200 Subject: [PATCH 223/780] Look and feel v12 --- htdocs/expedition/card.php | 3 ++- htdocs/langs/es_AR/main.lang | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 7fd2948480e..605cc8316c9 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -960,8 +960,9 @@ if ($action == 'create') $langs->load("projects"); print '<tr>'; print '<td>'.$langs->trans("Project").'</td><td colspan="2">'; + print img_picto('', 'project'); $numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0); - print '   <a href="'.DOL_URL_ROOT.'/projet/card.php?socid='.$soc->id.'&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'"><span class="valignmiddle text-plus-circle">'.$langs->trans("AddProject").'</span><span class="fa fa-plus-circle valignmiddle"></span></a>'; + print ' <a class="paddingleft" href="'.DOL_URL_ROOT.'/projet/card.php?socid='.$soc->id.'&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'"><span class="fa fa-plus-circle valignmiddle"></span></a>'; print '</td>'; print '</tr>'; } diff --git a/htdocs/langs/es_AR/main.lang b/htdocs/langs/es_AR/main.lang index 1451ea1c508..a48f7399746 100644 --- a/htdocs/langs/es_AR/main.lang +++ b/htdocs/langs/es_AR/main.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr -FONTFORPDF=helvética +FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, From ed045b26736523cbbf82fc1f8c13081f671192f7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 14:38:45 +0200 Subject: [PATCH 224/780] FIX #13749 --- htdocs/api/class/api.class.php | 9 +++++++++ htdocs/product/class/api_products.class.php | 18 +++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php index 26f83f36fd6..46431cdb510 100644 --- a/htdocs/api/class/api.class.php +++ b/htdocs/api/class/api.class.php @@ -137,6 +137,15 @@ class DolibarrApi unset($object->labelStatus); unset($object->labelStatusShort); + unset($object->stats_propale); + unset($object->stats_commande); + unset($object->stats_contrat); + unset($object->stats_facture); + unset($object->stats_commande_fournisseur); + unset($object->stats_reception); + unset($object->stats_mrptoconsume); + unset($object->stats_mrptoproduce); + unset($object->element); unset($object->fk_element); unset($object->table_element); diff --git a/htdocs/product/class/api_products.class.php b/htdocs/product/class/api_products.class.php index 0cf6b344abf..b1fee0177d6 100644 --- a/htdocs/product/class/api_products.class.php +++ b/htdocs/product/class/api_products.class.php @@ -669,8 +669,6 @@ class Products extends DolibarrApi } /** - * List purchase prices - * * Get a list of all purchase prices of products * * @param string $sortfield Sort field @@ -702,11 +700,11 @@ class Products extends DolibarrApi if ($supplier > 0) { $sql .= " AND s.fk_soc = ".$db->escape($supplier); } - $sql .= " AND s.fk_product = t.rowid "; + $sql .= " AND s.fk_product = t.rowid"; // Select products of given category if ($category > 0) { $sql .= " AND c.fk_categorie = ".$db->escape($category); - $sql .= " AND c.fk_product = t.rowid "; + $sql .= " AND c.fk_product = t.rowid"; } if ($mode == 1) { // Show only products @@ -739,10 +737,15 @@ class Products extends DolibarrApi while ($i < $min) { $obj = $db->fetch_object($result); - $product_static = new Product($db); - if ($product_static->fetch($obj->rowid)) { - $obj_ret[] = $this->_cleanObjectDatas($product_static); + + $product_fourn = new ProductFournisseur($this->db); + $product_fourn_list = $product_fourn->list_product_fournisseur_price($obj->rowid, '', '', 0, 0); + foreach($product_fourn_list as $tmpobj) { + $this->_cleanObjectDatas($tmpobj); } + //var_dump($product_fourn_list->db);exit; + $obj_ret[$obj->rowid] = $product_fourn_list; + $i++; } } @@ -1527,6 +1530,7 @@ class Products extends DolibarrApi unset($object->prices_by_qty_id); unset($object->libelle); unset($object->product_id_already_linked); + unset($object->reputations); unset($object->name); unset($object->firstname); From 6b1a1e5e587c1bd2e7b2d4a8130d10952b3d8a3f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 15:09:27 +0200 Subject: [PATCH 225/780] FIX #13743 --- htdocs/commande/class/api_orders.class.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/commande/class/api_orders.class.php b/htdocs/commande/class/api_orders.class.php index 289bbea2c7e..ab0abb3d151 100644 --- a/htdocs/commande/class/api_orders.class.php +++ b/htdocs/commande/class/api_orders.class.php @@ -33,7 +33,8 @@ class Orders extends DolibarrApi * @var array $FIELDS Mandatory fields, checked when create and update object */ static $FIELDS = array( - 'socid' + 'socid', + 'date' ); /** @@ -233,7 +234,9 @@ class Orders extends DolibarrApi } /** - * Create order object + * Create a sale order + * + * Exemple: { "socid": 2, "date": 1595196000, "type": 0, "lines": [{ "fk_product": 2, "qty": 1 }] } * * @param array $request_data Request data * @return int ID of order From 635b9bb0fee53252f5cd5442045032614a8086ab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 15:27:03 +0200 Subject: [PATCH 226/780] FIX #13641 --- htdocs/core/tpl/extrafields_list_search_sql.tpl.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/tpl/extrafields_list_search_sql.tpl.php b/htdocs/core/tpl/extrafields_list_search_sql.tpl.php index 3a0bcf6375c..6b08baddb72 100644 --- a/htdocs/core/tpl/extrafields_list_search_sql.tpl.php +++ b/htdocs/core/tpl/extrafields_list_search_sql.tpl.php @@ -33,12 +33,12 @@ if (! empty($extrafieldsobjectkey) && ! empty($search_array_options) && is_array $sql.= ")"; } } - elseif ($crit != '' && (! in_array($typ, array('select','sellist')) || $crit != '0') && (! in_array($typ, array('link')) || $crit != '-1')) + 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 + if (in_array($typ, array('int', 'double', 'real', 'price'))) $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 (is_array($crit)) $crit = implode(' ', $crit); // natural_search() expects a string elseif ($typ === 'select' and is_string($crit) and strpos($crit, ' ') === false) { $sql .= ' AND (' . $extrafieldsobjectprefix.$tmpkey . ' = "' . $db->escape($crit) . '")'; From fe6fb12d189825fdec451cb9dfe4ca69be0f7d13 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 17:13:23 +0200 Subject: [PATCH 227/780] Fix missing link --- htdocs/core/class/notify.class.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index 7a3508c7d2f..c0258bdec90 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -314,6 +314,7 @@ class Notify global $user, $conf, $langs, $mysoc; global $hookmanager; global $dolibarr_main_url_root; + global $action; if (!in_array($notifcode, $this->arrayofnotifsupported)) return 0; @@ -526,6 +527,8 @@ class Notify if ($link) $message .= "\n".$urlwithroot.$link; $parameters = array('notifcode'=>$notifcode, 'sendto'=>$sendto, 'replyto'=>$replyto, 'file'=>$filename_list, 'mimefile'=>$mimetype_list, 'filename'=>$mimefilename_list); + if (!isset($action)) $action = ''; + $reshook = $hookmanager->executeHooks('formatNotificationMessage', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) { @@ -700,21 +703,25 @@ class Notify $mesg = $langs->transnoentitiesnoconv("EMailTextExpeditionValidated", $newref); break; case 'EXPENSE_REPORT_VALIDATE': + $link = '<a href="'.$urlwithroot.'/expensereport/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->expensereport->dir_output; $object_type = 'expensereport'; $mesg = $langs->transnoentitiesnoconv("EMailTextExpenseReportValidated", $newref); break; case 'EXPENSE_REPORT_APPROVE': + $link = '<a href="'.$urlwithroot.'/expensereport/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->expensereport->dir_output; $object_type = 'expensereport'; $mesg = $langs->transnoentitiesnoconv("EMailTextExpenseReportApproved", $newref); break; case 'HOLIDAY_VALIDATE': + $link = '<a href="'.$urlwithroot.'/holiday/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->holiday->dir_output; $object_type = 'holiday'; $mesg = $langs->transnoentitiesnoconv("EMailTextHolidayValidated", $newref); break; case 'HOLIDAY_APPROVE': + $link = '<a href="'.$urlwithroot.'/holiday/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->holiday->dir_output; $object_type = 'holiday'; $mesg = $langs->transnoentitiesnoconv("EMailTextHolidayApproved", $newref); From 0de8cb7096ba8242f4fec221dbe4f9d76c5859ad Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 18:38:11 +0200 Subject: [PATCH 228/780] Add property shortlang --- htdocs/core/class/translate.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 5ea1a321bb5..4f3930a4588 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -32,6 +32,7 @@ class Translate public $dir; // Directories that contains /langs subdirectory public $defaultlang; // Current language for current user + public $shortlang; // Short language for current user public $charset_output = 'UTF-8'; // Codage used by "trans" method outputs public $tab_translate = array(); // Array of all translations key=>value @@ -122,6 +123,7 @@ class Translate } $this->defaultlang = $srclang; + $this->shortlang = substr($srclang, 0, 2); //print 'this->defaultlang='.$this->defaultlang; } From 12e090eed6a0bd4834563636323aca4e00b1e3fc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 18:48:35 +0200 Subject: [PATCH 229/780] Fix search in correct language --- htdocs/core/lib/website.lib.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 76e910bdecd..ed535b6af6d 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -720,9 +720,10 @@ function getSocialNetworkSharingLinks() * @param int $max Max number of answers * @param string $sortfield Sort Fields * @param string $sortorder Sort order ('DESC' or 'ASC') + * @param string $langcode Language code ('' or 'en', 'fr', 'es', ...) * @return string HTML content */ -function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $sortfield = 'date_creation', $sortorder = 'DESC') +function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $sortfield = 'date_creation', $sortorder = 'DESC', $langcode = '') { global $conf, $db, $hookmanager, $langs, $mysoc, $user, $website, $websitepage, $weblangs; // Very important. Required to have var available when running inluded containers. @@ -764,6 +765,9 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so { $sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'website_page'; $sql .= " WHERE fk_website = ".$website->id; + if ($langcode) { + $sql .= " AND lang ='".$db->escape($langcode).'"'; + } if ($type) { $tmparrayoftype = explode(',', $type); $typestring = ''; From a8613661fc16a5d709dddab505614a07f78307f7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 19:03:04 +0200 Subject: [PATCH 230/780] Fix sql --- htdocs/core/lib/website.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index ed535b6af6d..5eac4469c4e 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -766,7 +766,7 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so $sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'website_page'; $sql .= " WHERE fk_website = ".$website->id; if ($langcode) { - $sql .= " AND lang ='".$db->escape($langcode).'"'; + $sql .= " AND lang ='".$db->escape($langcode)."'"; } if ($type) { $tmparrayoftype = explode(',', $type); From 9764c85ee3abda4680bedaa7ac0e46c584ccfd4a Mon Sep 17 00:00:00 2001 From: ptibogxiv <support@ptibogxiv.net> Date: Mon, 27 Apr 2020 19:15:17 +0200 Subject: [PATCH 231/780] FIX files download by API/entity TODO need more clean of this file with multicompany --- htdocs/core/lib/files.lib.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 9746c1047b8..288a28c111a 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -2419,7 +2419,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, $original_file = $conf->agenda->dir_output.'/'.$original_file; } // Wrapping for categories - elseif ($modulepart == 'category' && !empty($conf->categorie->dir_output)) + elseif ($modulepart == 'category' && !empty($conf->categorie->multidir_output[$entity])) { if (empty($entity) || empty($conf->categorie->multidir_output[$entity])) return array('accessallowed'=>0, 'error'=>'Value entity must be provided'); if ($fuser->rights->categorie->{$lire}) $accessallowed = 1; @@ -2489,7 +2489,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for third parties - elseif (($modulepart == 'company' || $modulepart == 'societe' || $modulepart == 'thirdparty') && !empty($conf->societe->dir_output)) + elseif (($modulepart == 'company' || $modulepart == 'societe' || $modulepart == 'thirdparty') && !empty($conf->societe->multidir_output[$entity])) { if (empty($entity) || empty($conf->societe->multidir_output[$entity])) return array('accessallowed'=>0, 'error'=>'Value entity must be provided'); if ($fuser->rights->societe->{$lire} || preg_match('/^specimen/i', $original_file)) @@ -2501,7 +2501,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for contact - elseif ($modulepart == 'contact' && !empty($conf->societe->dir_output)) + elseif ($modulepart == 'contact' && !empty($conf->societe->multidir_output[$entity])) { if (empty($entity) || empty($conf->societe->multidir_output[$entity])) return array('accessallowed'=>0, 'error'=>'Value entity must be provided'); if ($fuser->rights->societe->{$lire}) @@ -2519,7 +2519,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, $accessallowed = 1; } $original_file = $conf->facture->multidir_output[$entity].'/'.$original_file; - $sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."facture WHERE ref='".$db->escape($refname)."' AND entity=".$conf->entity; + $sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."facture WHERE ref='".$db->escape($refname)."' AND entity IN (".getEntity('invoice').")"; } // Wrapping for mass actions elseif ($modulepart == 'massfilesarea_proposals' && !empty($conf->propal->multidir_output[$entity])) @@ -2632,7 +2632,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, $accessallowed = 1; } $original_file = $conf->propal->multidir_output[$entity].'/'.$original_file; - $sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."propal WHERE ref='".$db->escape($refname)."' AND entity=".$conf->entity; + $sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."propal WHERE ref='".$db->escape($refname)."' AND entity IN (".getEntity('propal').")"; } // Wrapping pour les commandes @@ -2643,7 +2643,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, $accessallowed = 1; } $original_file = $conf->commande->multidir_output[$entity].'/'.$original_file; - $sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."commande WHERE ref='".$db->escape($refname)."' AND entity=".$conf->entity; + $sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."commande WHERE ref='".$db->escape($refname)."' AND entity IN (".getEntity('order').")"; } // Wrapping pour les projets From 52fc149faa851de95f9ba1298b1cf4dff4d47245 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 01:04:37 +0200 Subject: [PATCH 232/780] Fix permissions --- htdocs/index.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index 477168a0a59..7fed7d75bb3 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2020 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2017 Regis Houssin <regis.houssin@inodbox.com> * Copyright (C) 2011-2012 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> @@ -153,12 +153,12 @@ if (empty($user->socid) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTATS)) // Condition to be checked for each display line dashboard $conditions = array( 'users' => $user->rights->user->user->lire, - 'members' => !empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS), - 'customers' => !empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS), - 'prospects' => !empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS), - 'suppliers' => !empty($conf->societe->enabled) && $user->rights->societe->contact->lire, - 'contacts' => !empty($conf->adherent->enabled) && $user->rights->adherent->lire, - 'products' => !empty($conf->product->enabled) && $user->rights->produit->lire, + 'members' => !empty($conf->adherent->enabled) && $user->rights->adherent->lire, + 'customers' => !empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS), + 'prospects' => !empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS), + 'suppliers' => !empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS), + 'contacts' => !empty($conf->societe->enabled) && $user->rights->societe->contact->lire, + 'services' => !empty($conf->product->enabled) && $user->rights->produit->lire, 'services' => !empty($conf->service->enabled) && $user->rights->service->lire, 'proposals' => !empty($conf->propal->enabled) && $user->rights->propale->lire, 'orders' => !empty($conf->commande->enabled) && $user->rights->commande->lire, From fb8bdefbaa6fc3d75779c1ae3d13bcd120c76d62 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 02:10:26 +0200 Subject: [PATCH 233/780] Look and feel v12 --- htdocs/compta/facture/prelevement.php | 6 +- htdocs/compta/prelevement/bons.php | 22 ++--- .../class/bonprelevement.class.php | 3 + htdocs/compta/prelevement/list.php | 81 ++++++++++++------- htdocs/core/menus/standard/eldy.lib.php | 34 -------- .../install/mysql/migration/11.0.0-12.0.0.sql | 10 ++- .../mysql/tables/llx_prelevement_bons.sql | 6 +- .../mysql/tables/llx_prelevement_facture.sql | 3 +- .../llx_prelevement_facture_demande.sql | 3 +- htdocs/theme/eldy/global.inc.php | 2 +- 10 files changed, 88 insertions(+), 82 deletions(-) diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php index 337aea12033..74de1c640d4 100644 --- a/htdocs/compta/facture/prelevement.php +++ b/htdocs/compta/facture/prelevement.php @@ -24,7 +24,7 @@ /** * \file htdocs/compta/facture/prelevement.php * \ingroup facture - * \brief Gestion des prelevement d'une facture + * \brief Management of direct debit order of invoices */ require '../../main.inc.php'; @@ -32,9 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/invoice.lib.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php'; -if (!empty($conf->projet->enabled)) { - require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; -} +require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; if (!$user->rights->facture->lire) accessforbidden(); diff --git a/htdocs/compta/prelevement/bons.php b/htdocs/compta/prelevement/bons.php index 935b57e0faa..8c9203c8a58 100644 --- a/htdocs/compta/prelevement/bons.php +++ b/htdocs/compta/prelevement/bons.php @@ -31,12 +31,14 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // Load translation files required by the page $langs->loadLangs(array('banks', 'categories', 'widthdrawals')); +$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'myobjectlist'; // To manage different context of search + // Security check $socid = GETPOST('socid', 'int'); if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'prelevement', '', '', 'bons'); -$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); @@ -101,7 +103,10 @@ if ($result) $num = $db->num_rows($result); $i = 0; - $urladd = "&statut=".$statut; + $param = ''; + if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); + $param .= "&statut=".urlencode($statut); $selectedfields = ''; @@ -119,10 +124,9 @@ if ($result) print '<input type="hidden" name="action" value="list">'; print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; - print '<input type="hidden" name="page" value="'.$page.'">'; print '<input type="hidden" name="contextpage" value="'.$contextpage.'">'; - print_barre_liste($langs->trans("WithdrawalsReceipts"), $page, $_SERVER["PHP_SELF"], $urladd, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'generic', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("WithdrawalsReceipts"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'generic', 0, $newcardbutton, '', $limit, 0, 0, 1); $moreforfilter = ''; @@ -141,11 +145,11 @@ if ($result) print '</tr>'; print '<tr class="liste_titre">'; - print_liste_field_titre("WithdrawalsReceipts", $_SERVER["PHP_SELF"], "p.ref", '', '', 'class="liste_titre"', $sortfield, $sortorder); - print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "p.datec", "", "", 'class="liste_titre" align="center"', $sortfield, $sortorder); - print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "p.amount", "", "", 'class="right"', $sortfield, $sortorder); - print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "", "", "", 'class="right"', $sortfield, $sortorder); - print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], "", '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ')."\n"; + print_liste_field_titre("WithdrawalsReceipts", $_SERVER["PHP_SELF"], "p.ref", '', $param, '', $sortfield, $sortorder); + print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "p.datec", "", $param, '', $sortfield, $sortorder, 'center '); + print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "p.amount", "", $param, '', $sortfield, $sortorder, 'right '); + print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); + print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'maxwidthsearch center ')."\n"; print "</tr>\n"; $directdebitorder = new BonPrelevement($db); diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index df1ecf094ca..0a033e2df53 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -1229,6 +1229,9 @@ class BonPrelevement extends CommonObject $label = '<u>'.$langs->trans("ShowWithdraw").'</u>'; $label .= '<br>'; $label .= '<b>'.$langs->trans('Ref').':</b> '.$this->ref; + if (isset($this->statut)) { + $label .= '<br><b>'.$langs->trans("Status").":</b> ".$this->getLibStatut(5); + } $url = DOL_URL_ROOT.'/compta/prelevement/card.php?id='.$this->id; diff --git a/htdocs/compta/prelevement/list.php b/htdocs/compta/prelevement/list.php index bbac6c6232e..5598168a436 100644 --- a/htdocs/compta/prelevement/list.php +++ b/htdocs/compta/prelevement/list.php @@ -32,12 +32,21 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // Load translation files required by the page $langs->loadLangs(array('banks', 'withdrawals', 'companies', 'categories')); +$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') : 'myobjectlist'; // 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') + // Security check $socid = GETPOST('socid', 'int'); if ($user->socid) $socid=$user->socid; $result = restrictedArea($user, 'prelevement', '', '', 'bons'); - $limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); @@ -57,7 +66,7 @@ $statut = GETPOST('statut', 'int'); $bon = new BonPrelevement($db, ""); $ligne = new LignePrelevement($db, $user); - +$company = new Societe($db); /* * Actions @@ -81,9 +90,9 @@ $form = new Form($db); llxHeader('', $langs->trans("WithdrawalsLines")); -$sql = "SELECT p.rowid, p.ref, p.statut, p.datec"; -$sql .= " ,f.rowid as facid, f.ref, f.total_ttc"; -$sql .= " , s.rowid as socid, s.nom as name, s.code_client"; +$sql = "SELECT p.rowid, p.ref, p.statut as status, p.datec"; +$sql .= " ,f.rowid as facid, f.ref as invoiceref, f.total_ttc"; +$sql .= " , s.rowid as socid, s.nom as name, s.code_client, s.email"; $sql .= " , pl.amount, pl.statut as statut_ligne, pl.rowid as rowid_ligne"; $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; $sql .= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl"; @@ -124,14 +133,21 @@ if ($result) $num = $db->num_rows($result); $i = 0; - $urladd = "&statut=".$statut; - $urladd .= "&search_bon=".$search_bon; - if ($limit > 0 && $limit != $conf->liste_limit) $urladd .= '&limit='.urlencode($limit); + $param = "&statut=".urlencode($statut); + $param .= "&search_bon=".urlencode($search_bon); + if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); print"\n<!-- debut table -->\n"; - print '<form action="'.$_SERVER["PHP_SELF"].'" method="GET">'; + print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">'."\n"; + if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; + print '<input type="hidden" name="token" value="'.newToken().'">'; + print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">'; + print '<input type="hidden" name="action" value="list">'; + print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; + print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; + print '<input type="hidden" name="contextpage" value="'.$contextpage.'">'; - print_barre_liste($langs->trans("WithdrawalsLines"), $page, $_SERVER["PHP_SELF"], $urladd, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'generic', 0, '', '', $limit); + print_barre_liste($langs->trans("WithdrawalsLines"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'generic', 0, '', '', $limit, 0, 0, 1); $moreforfilter = ''; @@ -153,13 +169,13 @@ if ($result) print '</tr>'; print '<tr class="liste_titre">'; - print_liste_field_titre("Line", $_SERVER["PHP_SELF"]); - print_liste_field_titre("WithdrawalsReceipts", $_SERVER["PHP_SELF"], "p.ref"); - print_liste_field_titre("Bill", $_SERVER["PHP_SELF"], "f.ref", '', $urladd); - print_liste_field_titre("Company", $_SERVER["PHP_SELF"], "s.nom"); - print_liste_field_titre("CustomerCode", $_SERVER["PHP_SELF"], "s.code_client", '', '', 'align="center"'); - print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "p.datec", "", "", 'align="center"'); - print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "pl.amount", "", "", 'class="right"'); + print_liste_field_titre("Line", $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder); + print_liste_field_titre("WithdrawalsReceipts", $_SERVER["PHP_SELF"], "p.ref", '', $param, '', $sortfield, $sortorder); + print_liste_field_titre("Bill", $_SERVER["PHP_SELF"], "f.ref", '', $param, '', $sortfield, $sortorder); + print_liste_field_titre("Company", $_SERVER["PHP_SELF"], "s.nom", '', $param, '', $sortfield, $sortorder); + print_liste_field_titre("CustomerCode", $_SERVER["PHP_SELF"], "s.code_client", '', $param, '', $sortfield, $sortorder, 'center '); + print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "p.datec", "", $param, '', $sortfield, $sortorder, 'center '); + print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "pl.amount", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre(''); print "</tr>\n"; @@ -167,28 +183,37 @@ if ($result) { $obj = $db->fetch_object($result); - print '<tr class="oddeven"><td>'; + $bon->ref = $obj->ref; + $bon->statut = $obj->status; + $company->id = $obj->socid; + $company->name = $obj->name; + $company->email = $obj->email; + $company->code_client = $obj->code_client; + + print '<tr class="oddeven">'; + + print '<td>'; print $ligne->LibStatut($obj->statut_ligne, 2); print " "; - print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/line.php?id='.$obj->rowid_ligne.'">'; print substr('000000'.$obj->rowid_ligne, -6); print '</a></td>'; print '<td>'; + print $bon->getNomUrl(1); + print "</td>\n"; - print $bon->LibStatut($obj->statut, 2); - print " "; - - print '<a href="card.php?id='.$obj->rowid.'">'.$obj->ref."</a></td>\n"; - - print '<td><a href="'.DOL_URL_ROOT.'/compta/facture/card.php?facid='.$obj->facid.'">'; + print '<td>'; + print '<a href="'.DOL_URL_ROOT.'/compta/facture/card.php?facid='.$obj->facid.'">'; print img_object($langs->trans("ShowBill"), "bill"); - print ' <a href="'.DOL_URL_ROOT.'/compta/facture/card.php?facid='.$obj->facid.'">'.$obj->ref."</a></td>\n"; - print '</a></td>'; + print ' <a href="'.DOL_URL_ROOT.'/compta/facture/card.php?facid='.$obj->facid.'">'.$obj->invoiceref."</a></td>\n"; + print '</a>'; + print '</td>'; - print '<td><a href="card.php?id='.$obj->rowid.'">'.$obj->name."</a></td>\n"; + print '<td>'; + print $company->getNomUrl(1); + print "</td>\n"; print '<td align="center"><a href="card.php?id='.$obj->rowid.'">'.$obj->code_client."</a></td>\n"; diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 01b361aa6b3..8566575e5ca 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1905,40 +1905,6 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM $newmenu = $menuArbo->menuLeftCharger($newmenu, $mainmenu, $leftmenu, (empty($user->socid) ? 0 : 1), 'eldy', $tabMenu); //var_dump($newmenu->liste); // - // We update newmenu for special dynamic menus - if (!empty($user->rights->banque->lire) && $mainmenu == 'bank') // Entry for each bank account - { - require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; - - $sql = "SELECT rowid, label, courant, rappro"; - $sql .= " FROM ".MAIN_DB_PREFIX."bank_account"; - $sql .= " WHERE entity = ".$conf->entity; - $sql .= " AND clos = 0"; - $sql .= " ORDER BY label"; - - $resql = $db->query($sql); - if ($resql) - { - $numr = $db->num_rows($resql); - $i = 0; - - if ($numr > 0) $newmenu->add('/compta/bank/list.php', $langs->trans("BankAccounts"), 0, $user->rights->banque->lire); - - while ($i < $numr) - { - $objp = $db->fetch_object($resql); - $newmenu->add('/compta/bank/card.php?id='.$objp->rowid, $objp->label, 1, $user->rights->banque->lire); - if ($objp->rappro && $objp->courant != Account::TYPE_CASH && empty($objp->clos)) // If not cash account and not closed and can be reconciliate - { - $newmenu->add('/compta/bank/bankentries_list.php?action=reconcile&contextpage=banktransactionlist-'.$objp->rowid.'&account='.$objp->rowid.'&id='.$objp->rowid.'&search_conciliated=0', $langs->trans("Conciliate"), 2, $user->rights->banque->consolidate); - } - $i++; - } - } - else dol_print_error($db); - $db->free($resql); - } - if (!empty($conf->ftp->enabled) && $mainmenu == 'ftp') // Entry for FTP { $MAXFTP = 20; diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 4b87b4b9ce3..4f6a5b7c4e6 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -261,4 +261,12 @@ ALTER TABLE llx_categorie ADD COLUMN fk_user_modif integer; ALTER TABLE llx_commandedet ADD CONSTRAINT fk_commandedet_fk_commandefourndet FOREIGN KEY (fk_commandefourndet) REFERENCES llx_commande_fournisseurdet (rowid); ---Dictionary of package type because filename in V11 was incomplete + +-- VMYSQL4.3 ALTER TABLE llx_prelevement_facture_demande MODIFY COLUMN fk_facture INTEGER NULL; +-- VPGSQL8.2 ALTER TABLE llx_prelevement_facture_demande ALTER COLUMN fk_facture DROP NOT NULL; +ALTER TABLE llx_prelevement_facture_demande ADD COLUMN fk_facture_fourn INTEGER NULL; + +-- VMYSQL4.3 ALTER TABLE llx_prelevement_facture MODIFY COLUMN fk_facture INTEGER NULL; +-- VPGSQL8.2 ALTER TABLE llx_prelevement_facture ALTER COLUMN fk_facture DROP NOT NULL; +ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; + diff --git a/htdocs/install/mysql/tables/llx_prelevement_bons.sql b/htdocs/install/mysql/tables/llx_prelevement_bons.sql index 2a8fd114440..e7e0b9a89f1 100644 --- a/htdocs/install/mysql/tables/llx_prelevement_bons.sql +++ b/htdocs/install/mysql/tables/llx_prelevement_bons.sql @@ -18,10 +18,10 @@ -- =================================================================== -- --- Bons de prelevement +-- Direct debit or credit orders -- --- statut 1 : transmis a la banque --- statut 2 : credite +-- statut 1 : sent to the bank +-- statut 2 : paid -- create table llx_prelevement_bons ( diff --git a/htdocs/install/mysql/tables/llx_prelevement_facture.sql b/htdocs/install/mysql/tables/llx_prelevement_facture.sql index 2524f854a9c..dbe2cb85f84 100644 --- a/htdocs/install/mysql/tables/llx_prelevement_facture.sql +++ b/htdocs/install/mysql/tables/llx_prelevement_facture.sql @@ -19,7 +19,8 @@ create table llx_prelevement_facture ( rowid integer AUTO_INCREMENT PRIMARY KEY, - fk_facture integer NOT NULL, + fk_facture integer NULL, + fk_facture_foun integer NULL, fk_prelevement_lignes integer NOT NULL )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_prelevement_facture_demande.sql b/htdocs/install/mysql/tables/llx_prelevement_facture_demande.sql index b1f625de872..4e1f37c6d3f 100644 --- a/htdocs/install/mysql/tables/llx_prelevement_facture_demande.sql +++ b/htdocs/install/mysql/tables/llx_prelevement_facture_demande.sql @@ -21,7 +21,8 @@ create table llx_prelevement_facture_demande ( rowid integer AUTO_INCREMENT PRIMARY KEY, entity integer DEFAULT 1 NOT NULL, - fk_facture integer NOT NULL, + fk_facture integer NULL, + fk_facture_fourn integer NULL, sourcetype varchar(32), amount double(24,8) NOT NULL, date_demande datetime NOT NULL, diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index e495a3bb4bc..9a152fdb91f 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -149,7 +149,7 @@ input[name=duration_value] { margin-right: 4px; } -input[type=submit] { +input[type=submit], input[type=submit]:hover { margin-left: 5px; } input, input.flat, form.flat select, select, select.flat, .dataTables_length label select { From a40c2fdbfc9a27759969e090398f7fc6c08efc5d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 02:58:33 +0200 Subject: [PATCH 234/780] Debug v12 --- htdocs/core/menus/init_menu_auguria.sql | 25 +++++++++++----- htdocs/core/menus/standard/auguria.lib.php | 30 ++++++++++++------- htdocs/core/menus/standard/auguria_menu.php | 2 +- htdocs/core/menus/standard/eldy_menu.php | 2 -- .../install/mysql/migration/11.0.0-12.0.0.sql | 1 + htdocs/install/mysql/tables/llx_menu.sql | 2 +- 6 files changed, 40 insertions(+), 22 deletions(-) diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 19ef1f59d02..ede2a9f94d3 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -9,15 +9,16 @@ delete from llx_menu where menu_handler=__HANDLER__ and entity=__ENTITY__; -- table llx_menu -- insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '1', 1__+MAX_llx_menu__, __HANDLER__, 'top', 'home', '', 0, '/index.php?mainmenu=home&leftmenu=', 'Home', -1, '', '', '', 2, 10, __ENTITY__); -insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('societe|fournisseur|supplier_order|supplier_invoice', '( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', 2__+MAX_llx_menu__, __HANDLER__, 'top', 'companies', '', 0, '/societe/index.php?mainmenu=companies&leftmenu=', 'ThirdParties', -1, 'companies', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 20, __ENTITY__); +insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('societe|fournisseur|supplier_order|supplier_invoice', '($conf->societe->enabled && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) || $conf->fournisseur->enabled || $conf->supplier_order->enabled || $conf->supplier_invoice->enabled))', 2__+MAX_llx_menu__, __HANDLER__, 'top', 'companies', '', 0, '/societe/index.php?mainmenu=companies&leftmenu=', 'ThirdParties', -1, 'companies', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 20, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('product|service', '$conf->product->enabled || $conf->service->enabled', 3__+MAX_llx_menu__, __HANDLER__, 'top', 'products', '', 0, '/product/index.php?mainmenu=products&leftmenu=', 'ProductsPipeServices', -1, 'products', '$user->rights->produit->lire||$user->rights->service->lire', '', 0, 30, __ENTITY__); +insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('bom|mrp', '$conf->bom->enabled || $conf->mrp->enabled', 16__+MAX_llx_menu__, __HANDLER__, 'top', 'mrp', '', 0, '/mrp/index.php?mainmenu=mrp&leftmenu=', 'MRP', -1, 'mrp', '$user->rights->bom->read||$user->rights->mrp->read', '', 0, 31, __ENTITY__); +insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('projet', '$conf->projet->enabled', 7__+MAX_llx_menu__, __HANDLER__, 'top', 'project', '', 0, '/projet/index.php?mainmenu=project&leftmenu=', 'Projects', -1, 'projects', '$user->rights->projet->lire', '', 2, 32, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('propal|commande|fournisseur|supplier_order|supplier_invoice|contrat|ficheinter', '$conf->propal->enabled || $conf->commande->enabled || $conf->supplier_order->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled', 5__+MAX_llx_menu__, __HANDLER__, 'top', 'commercial', '', 0, '/comm/index.php?mainmenu=commercial&leftmenu=', 'Commercial', -1, 'commercial', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 40, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('facture|don|tax|salaries|loan|banque', '$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->supplier_invoice->enabled || $conf->loan->enabled || $conf->banque->enabled', 6__+MAX_llx_menu__, __HANDLER__, 'top', 'billing', '', 0, '/compta/index.php?mainmenu=billing&leftmenu=', 'MenuFinancial', -1, 'compta', '$user->rights->facture->lire|| $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $user->rights->loan->read || $user->rights->banque->lire', '', 2, 50, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('banque|prelevement', '$conf->banque->enabled || $conf->prelevement->enabled', 14__+MAX_llx_menu__, __HANDLER__, 'top', 'bank', '', 0, '/compta/bank/list.php?mainmenu=bank&leftmenu=bank', 'MenuBankCash', -1, 'banks', '$user->rights->banque->lire || $user->rights->prelevement->bons->lire', '', 0, 52, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('comptabilite|accounting|asset', '$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->asset->enabled', 9__+MAX_llx_menu__, __HANDLER__, 'top', 'accountancy', '', 0, '/compta/index.php?mainmenu=accountancy&leftmenu=accountancy', 'MenuAccountancy', -1, 'main', '$user->rights->compta->resultat->lire || $user->rights->accounting->mouvements->lire || $user->rights->asset->read', '', 2, 54, __ENTITY__); -insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('projet', '$conf->projet->enabled', 7__+MAX_llx_menu__, __HANDLER__, 'top', 'project', '', 0, '/projet/index.php?mainmenu=project&leftmenu=', 'Projects', -1, 'projects', '$user->rights->projet->lire', '', 2, 70, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '', 8__+MAX_llx_menu__, __HANDLER__, 'top', 'tools', '', 0, '/core/tools.php?mainmenu=tools&leftmenu=', 'Tools', -1, 'other', '', '', 2, 90, __ENTITY__); -insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('adherent', '$conf->adherent->enabled', 13__+MAX_llx_menu__, __HANDLER__, 'top', 'members', '', 0, '/adherents/index.php?mainmenu=members&leftmenu=', 'Members', -1, 'members', '$user->rights->adherent->lire', '', 2, 110, __ENTITY__); +insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('adherent', '$conf->adherent->enabled', 13__+MAX_llx_menu__, __HANDLER__, 'top', 'members', '', 0, '/adherents/index.php?mainmenu=members&leftmenu=', 'Members', -1, 'members', '$user->rights->adherent->lire', '', 2, 19, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('hrm|holiday|deplacement|expensereport', '$conf->hrm->enabled || $conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled', 15__+MAX_llx_menu__, __HANDLER__, 'top', 'hrm', '', 0, '/hrm/index.php?mainmenu=hrm&leftmenu=', 'HRM', -1, 'holiday', '$user->rights->hrm->employee->read || $user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire', '', 0, 80, __ENTITY__); -- Home - Dashboard @@ -159,10 +160,10 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->commande->enabled && $leftmenu=="orders"', __HANDLER__, 'left', 1208__+MAX_llx_menu__, 'commercial', '', 1202__+MAX_llx_menu__, '/commande/list.php?mainmenu=commercial&leftmenu=orders&search_status=-1', 'StatusOrderCanceledShort', 1, 'orders', '$user->rights->commande->lire', '', 2, 7, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->commande->enabled', __HANDLER__, 'left', 1209__+MAX_llx_menu__, 'commercial', '', 1200__+MAX_llx_menu__, '/commande/stats/index.php?mainmenu=commercial&leftmenu=orders', 'Statistics', 1, 'orders', '$user->rights->commande->lire', '', 2, 4, __ENTITY__); -- Commercial - Supplier's proposals -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->supplier_proposal->enabled', __HANDLER__, 'left', 1600__+MAX_llx_menu__, 'commercial', 'propals_supplier', 3__+MAX_llx_menu__, '/supplier_proposal/index.php?leftmenu=propals_supplier', 'SupplierProposalsShort', 0, 'supplier_proposal', '$user->rights->supplier_proposal->lire', '', 2, 4, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->supplier_proposal->enabled', __HANDLER__, 'left', 1601__+MAX_llx_menu__, 'commercial', '', 1600__+MAX_llx_menu__, '/supplier_proposal/card.php?action=create&leftmenu=supplier_proposals', 'SupplierProposalNew', 1, 'supplier_proposal', '$user->rights->supplier_proposal->creer', '', 2, 0, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->supplier_proposal->enabled', __HANDLER__, 'left', 1602__+MAX_llx_menu__, 'commercial', '', 1600__+MAX_llx_menu__, '/supplier_proposal/list.php?leftmenu=supplier_proposals', 'List', 1, 'supplier_proposal', '$user->rights->supplier_proposal->lire', '', 2, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->supplier_proposal->enabled', __HANDLER__, 'left', 1610__+MAX_llx_menu__, 'commercial', '', 1600__+MAX_llx_menu__, '/comm/propal/stats/index.php?leftmenu=supplier_proposals&mode=supplier', 'Statistics', 1, 'supplier_proposal', '$user->rights->supplier_proposal->lire', '', 2, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->supplier_proposal->enabled', __HANDLER__, 'left', 1650__+MAX_llx_menu__, 'commercial', 'propals_supplier', 3__+MAX_llx_menu__, '/supplier_proposal/index.php?leftmenu=propals_supplier', 'SupplierProposalsShort', 0, 'supplier_proposal', '$user->rights->supplier_proposal->lire', '', 2, 4, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->supplier_proposal->enabled', __HANDLER__, 'left', 1651__+MAX_llx_menu__, 'commercial', '', 1650__+MAX_llx_menu__, '/supplier_proposal/card.php?action=create&leftmenu=supplier_proposals', 'SupplierProposalNew', 1, 'supplier_proposal', '$user->rights->supplier_proposal->creer', '', 2, 0, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->supplier_proposal->enabled', __HANDLER__, 'left', 1652__+MAX_llx_menu__, 'commercial', '', 1650__+MAX_llx_menu__, '/supplier_proposal/list.php?leftmenu=supplier_proposals', 'List', 1, 'supplier_proposal', '$user->rights->supplier_proposal->lire', '', 2, 1, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->supplier_proposal->enabled', __HANDLER__, 'left', 1653__+MAX_llx_menu__, 'commercial', '', 1650__+MAX_llx_menu__, '/comm/propal/stats/index.php?leftmenu=supplier_proposals&mode=supplier', 'Statistics', 1, 'supplier_proposal', '$user->rights->supplier_proposal->lire', '', 2, 2, __ENTITY__); -- Commercial - Supplier's orders insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->supplier_order->enabled', __HANDLER__, 'left', 5100__+MAX_llx_menu__, 'commercial', 'orders_suppliers', 5__+MAX_llx_menu__, '/fourn/commande/index.php?mainmenu=commercial&leftmenu=orders_suppliers', 'SuppliersOrders', 0, 'orders', '$user->rights->fournisseur->commande->lire', '', 2, 6, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->supplier_order->enabled', __HANDLER__, 'left', 5101__+MAX_llx_menu__, 'commercial', '', 5100__+MAX_llx_menu__, '/fourn/commande/card.php?mainmenu=commercial&action=create&leftmenu=orders_suppliers', 'NewOrder', 1, 'orders', '$user->rights->fournisseur->commande->creer', '', 2, 0, __ENTITY__); @@ -347,6 +348,16 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled && !$conf->global->PROJECT_HIDE_TASKS', __HANDLER__, 'left', 3400__+MAX_llx_menu__, 'project', '', 7__+MAX_llx_menu__, '/projet/activity/perweek.php?mainmenu=project&leftmenu=projects', 'NewTimeSpent', 0, 'projects', '$user->rights->projet->lire', '', 2, 3, __ENTITY__); +-- BOM +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->bom->enabled', __HANDLER__, 'left', 5400__+MAX_llx_menu__, 'mrp', 'bom', 16__+MAX_llx_menu__, '/bom/bom_list.php?mainmenu=mrp&leftmenu=bom', 'MenuBOM', 1, 'mrp', '$user->rights->bom->read', '', 0, 20, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->bom->enabled', __HANDLER__, 'left', 5401__+MAX_llx_menu__, 'mrp', '', 5400__+MAX_llx_menu__, '/bom/bom_card.php?mainmenu=mrp&leftmenu=bom&action=create', 'NewBOM', 2, 'mrp', '$user->rights->bom->write', '', 0, 21, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->bom->enabled', __HANDLER__, 'left', 5403__+MAX_llx_menu__, 'mrp', '', 5400__+MAX_llx_menu__, '/bom/bom_list.php?mainmenu=mrp&leftmenu=bom', 'List', 2, 'mrp', '$user->rights->bom->read', '', 0, 22, __ENTITY__); +-- MRP +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->bom->enabled', __HANDLER__, 'left', 5450__+MAX_llx_menu__, 'mrp', 'mrp', 16__+MAX_llx_menu__, '/mrp/mo_list.php?mainmenu=mrp&leftmenu=mrp', 'MenuMRP', 1, 'mrp', '$user->rights->mrp->read', '', 0, 20, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->bom->enabled', __HANDLER__, 'left', 5451__+MAX_llx_menu__, 'mrp', '', 5450__+MAX_llx_menu__, '/mrp/mo_card.php?mainmenu=mrp&leftmenu=mrp&action=create', 'NewMO', 2, 'mrp', '$user->rights->mrp->write', '', 0, 21, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->bom->enabled', __HANDLER__, 'left', 5453__+MAX_llx_menu__, 'mrp', '', 5450__+MAX_llx_menu__, '/mrp/mo_list.php?mainmenu=mrp&leftmenu=mrp', 'List', 2, 'mrp', '$user->rights->mrp->read', '', 0, 22, __ENTITY__); + + -- Project - Categories insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->categorie->enabled', __HANDLER__, 'left', 3804__+MAX_llx_menu__, 'project', 'cat', 7__+MAX_llx_menu__, '/categories/index.php?mainmenu=project&leftmenu=cat&type=6', 'Categories', 0, 'categories', '$user->rights->categorie->lire', '', 2, 4, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->categorie->enabled', __HANDLER__, 'left', 3805__+MAX_llx_menu__, 'project', '', 3804__+MAX_llx_menu__, '/categories/card.php?mainmenu=project&action=create&type=6', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index 8a014ac3283..97bb28a7c52 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -29,11 +29,11 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php'; * Core function to output top menu auguria * * @param DoliDB $db Database handler - * @param string $atarget Target + * @param string $atarget Target (Example: '' or '_top') * @param int $type_user 0=Menu for backoffice, 1=Menu for front office * @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty) * @param Menu $menu Object Menu to return back list of menu entries - * @param int $noout Disable output (Initialise &$menu only). + * @param int $noout 1=Disable output (Initialise &$menu only). * @param string $mode 'top', 'topnb', 'left', 'jmobile' * @return int 0 */ @@ -131,27 +131,38 @@ function print_auguria_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout { //$mysoc->logo_mini=(empty($conf->global->MAIN_INFO_SOCIETE_LOGO_MINI)?'':$conf->global->MAIN_INFO_SOCIETE_LOGO_MINI); $mysoc->logo_squarred_mini = (empty($conf->global->MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI) ? '' : $conf->global->MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI); + + $logoContainerAdditionalClass = 'backgroundforcompanylogo'; + if (!empty($conf->global->MAIN_INFO_SOCIETE_LOGO_NO_BACKGROUND)) { + $logoContainerAdditionalClass = ''; + } + if (!empty($mysoc->logo_squarred_mini) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_squarred_mini)) { $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_mini); } + /*elseif (! empty($mysoc->logo_mini) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini)) + { + $urllogo=DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_mini); + }*/ else { $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo_squarred_alpha.png'; + $logoContainerAdditionalClass = ''; } + $title = $langs->trans("GoIntoSetupToChangeLogo"); print "\n".'<!-- Show logo on menu -->'."\n"; - print_start_menu_entry_auguria('companylogo', 'class="tmenu tmenucompanylogo"', 1); + print_start_menu_entry_auguria('companylogo', 'class="tmenu tmenucompanylogo nohover"', 1); - print '<div class="center backgroundforcompanylogo"><img class="mycompany" title="'.dol_escape_htmltag($title).'" alt="" src="'.$urllogo.'" style="max-width: 100px"></div>'."\n"; + print '<div class="center '.$logoContainerAdditionalClass.' menulogocontainer"><img class="mycompany" title="'.dol_escape_htmltag($title).'" alt="" src="'.$urllogo.'" style="max-width: 100px"></div>'."\n"; print_end_menu_entry_auguria(4); } if (empty($noout)) { - foreach ($menu->liste as $menuval) - { + foreach ($menu->liste as $menuval) { print_start_menu_entry_auguria($menuval['idsel'], $menuval['classname'], $menuval['enabled']); print_text_menu_entry_auguria($menuval['titre'], $menuval['enabled'], ($menuval['url'] != '#' ?DOL_URL_ROOT:'').$menuval['url'], $menuval['id'], $menuval['idsel'], $menuval['classname'], ($menuval['target'] ? $menuval['target'] : $atarget)); print_end_menu_entry_auguria($menuval['enabled']); @@ -216,8 +227,7 @@ function print_text_menu_entry_auguria($text, $showmode, $url, $id, $idsel, $cla { global $langs; - if ($showmode == 1) - { + if ($showmode == 1) { print '<a class="tmenuimage" tabindex="-1" href="'.$url.'"'.($atarget ? ' target="'.$atarget.'"' : '').' title="'.dol_escape_htmltag($text).'">'; print '<div class="'.$id.' '.$idsel.' topmenuimage"><span class="'.$id.' tmenuimage" id="mainmenuspan_'.$idsel.'"></span></div>'; print '</a>'; @@ -226,9 +236,7 @@ function print_text_menu_entry_auguria($text, $showmode, $url, $id, $idsel, $cla print $text; print '</span>'; print '</a>'; - } - elseif ($showmode == 2) - { + } elseif ($showmode == 2) { print '<div class="'.$id.' '.$idsel.' topmenuimage tmenudisabled"><span class="'.$id.'" id="mainmenuspan_'.$idsel.'"></span></div>'; print '<a class="tmenudisabled" id="mainmenua_'.$idsel.'" href="#" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'">'; print '<span class="mainmenuaspan">'; diff --git a/htdocs/core/menus/standard/auguria_menu.php b/htdocs/core/menus/standard/auguria_menu.php index 0b08dce9beb..2a67d43c1e3 100644 --- a/htdocs/core/menus/standard/auguria_menu.php +++ b/htdocs/core/menus/standard/auguria_menu.php @@ -119,7 +119,7 @@ class MenuManager /** - * Show menu + * Show menu. * Menu 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) diff --git a/htdocs/core/menus/standard/eldy_menu.php b/htdocs/core/menus/standard/eldy_menu.php index 96c334a1de7..5276a509ae5 100644 --- a/htdocs/core/menus/standard/eldy_menu.php +++ b/htdocs/core/menus/standard/eldy_menu.php @@ -308,8 +308,6 @@ class MenuManager $lastlevel2[$val2['level']] = 'greyed'; } } - //var_dump($val2['level']); - //var_dump($lastlevel2); print $val2['titre']; if ($relurl2) { diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 4f6a5b7c4e6..98d64622cb8 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -270,3 +270,4 @@ ALTER TABLE llx_prelevement_facture_demande ADD COLUMN fk_facture_fourn INTEGER -- VPGSQL8.2 ALTER TABLE llx_prelevement_facture ALTER COLUMN fk_facture DROP NOT NULL; ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; +ALTER TABLE llx_menu MODIFY COLUMN module varchar(255); diff --git a/htdocs/install/mysql/tables/llx_menu.sql b/htdocs/install/mysql/tables/llx_menu.sql index 59bb96297d7..cb279cb5c56 100644 --- a/htdocs/install/mysql/tables/llx_menu.sql +++ b/htdocs/install/mysql/tables/llx_menu.sql @@ -25,7 +25,7 @@ CREATE TABLE llx_menu rowid integer AUTO_INCREMENT NOT NULL PRIMARY KEY, menu_handler varchar(16) NOT NULL, -- Menu handler name entity integer DEFAULT 1 NOT NULL, -- Multi company id - module varchar(64), -- Module name if record is added by a module + module varchar(255), -- Module name if record is added by a module type varchar(4) NOT NULL, -- Menu top or left mainmenu varchar(100) NOT NULL, -- Name family/module for top menu (home, companies, ...) leftmenu varchar(100) NULL, -- Name family/module for left menu (setup, info, ...) From 31583c9b6380d0ccf3a03eba6244f847d3bc4ae6 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO <aspangaro.dolibarr@gmail.com> Date: Tue, 28 Apr 2020 04:45:06 +0200 Subject: [PATCH 235/780] NEW: Accountancy add column thirdparty on binding page --- htdocs/accountancy/supplier/lines.php | 31 ++++++++++++++++++++++++--- htdocs/accountancy/supplier/list.php | 30 +++++++++++++++++++++++--- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index 8d3f3937823..e81da78bf55 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com> - * Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@open-dsi.fr> + * Copyright (C) 2013-2020 Alexandre Spangaro <aspangaro@open-dsi.fr> * Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com> * Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> @@ -27,12 +27,13 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -44,6 +45,7 @@ $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' $account_parent = GETPOST('account_parent'); $changeaccount = GETPOST('changeaccount'); // Search Getpost +$search_societe = GETPOST('search_societe', 'alpha'); $search_lineid = GETPOST('search_lineid', 'int'); $search_ref = GETPOST('search_ref', 'alpha'); $search_invoice = GETPOST('search_invoice', 'alpha'); @@ -91,6 +93,7 @@ $formaccounting = new FormAccounting($db); // 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_societe = ''; $search_lineid = ''; $search_ref = ''; $search_invoice = ''; @@ -177,7 +180,7 @@ $sql .= " l.rowid, l.fk_product, l.product_type as line_type, l.description, l.t $sql .= " aa.label, aa.account_number, "; $sql .= " p.rowid as product_id, p.fk_product_type as product_type, p.ref as product_ref, p.label as product_label, p.fk_product_type as type,"; $sql .= " co.code as country_code, co.label as country,"; -$sql .= " s.tva_intra"; +$sql .= " s.rowid as socid, s.nom as name, s.tva_intra, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur"; $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; @@ -188,6 +191,10 @@ $sql .= " INNER JOIN ".MAIN_DB_PREFIX."facture_fourn as f ON f.rowid = l.fk_fact $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as co ON co.rowid = s.fk_pays "; $sql .= " WHERE f.rowid = l.fk_facture_fourn and f.fk_statut >= 1 AND l.fk_code_ventilation <> 0 "; +// Add search filter like +if ($search_societe) { + $sql .= natural_search('s.nom', $search_societe); +} if ($search_lineid) { $sql .= natural_search("l.rowid", $search_lineid, 1); } @@ -264,6 +271,7 @@ if ($result) { $param = ''; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); + if ($search_societe) $param .= "&search_societe=" . urlencode($search_societe); if ($search_invoice) $param .= "&search_invoice=".urlencode($search_invoice); if ($search_ref) $param .= "&search_ref=".urlencode($search_ref); if ($search_label) $param .= "&search_label=".urlencode($search_label); @@ -300,6 +308,7 @@ if ($result) { // We add search filter print '<tr class="liste_titre_filter">'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'""></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>'; @@ -325,6 +334,7 @@ if ($result) { print "</tr>\n"; print '<tr class="liste_titre">'; + print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "l.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("InvoiceLabel", $_SERVER["PHP_SELF"], "f.libelle", "", $param, '', $sortfield, $sortorder); @@ -341,6 +351,7 @@ if ($result) { print_liste_field_titre($checkpicto, '', '', '', '', '', '', '', 'center '); print "</tr>\n"; + $thirdpartystatic = new Societe($db); $facturefournisseur_static = new FactureFournisseur($db); $product_static = new ProductFournisseur($db); @@ -352,6 +363,17 @@ if ($result) { $facturefournisseur_static->ref = $objp->ref; $facturefournisseur_static->id = $objp->facid; + $thirdpartystatic->id = $objp->socid; + $thirdpartystatic->name = $objp->name; + $thirdpartystatic->client = $objp->client; + $thirdpartystatic->fournisseur = $objp->fournisseur; + $thirdpartystatic->code_client = $objp->code_client; + $thirdpartystatic->code_compta_client = $objp->code_compta_client; + $thirdpartystatic->code_fournisseur = $objp->code_fournisseur; + $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur; + $thirdpartystatic->email = $objp->email; + $thirdpartystatic->country_code = $objp->country_code; + $product_static->ref = $objp->product_ref; $product_static->id = $objp->product_id; $product_static->label = $objp->product_label; @@ -359,6 +381,9 @@ if ($result) { print '<tr class="oddeven">'; + // Thirdparty + print '<td>' . $thirdpartystatic->getNomUrl(1, 'supplier') . '</td>'; + // Line id print '<td>'.$objp->rowid.'</td>'; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index ce354c789f3..9788de4bb5f 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -27,12 +27,13 @@ */ require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -49,6 +50,7 @@ $toselect = GETPOST('toselect', 'array'); $mesCasesCochees = GETPOST('toselect', 'array'); // Search Getpost +$search_societe = GETPOST('search_societe', 'alpha'); $search_lineid = GETPOST('search_lineid', 'int'); $search_invoice = GETPOST('search_invoice', 'alpha'); $search_ref = GETPOST('search_ref', 'alpha'); @@ -116,6 +118,7 @@ if (empty($reshook)) // Purge search criteria if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All test are required to be compatible with all browsers { + $search_societe=''; $search_lineid = ''; $search_ref = ''; $search_invoice = ''; @@ -216,7 +219,7 @@ $sql .= " p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as co $sql .= " p.tosell as status, p.tobuy as status_buy,"; $sql .= " aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export,"; $sql .= " co.code as country_code, co.label as country_label,"; -$sql .= " s.tva_intra"; +$sql .= " s.rowid as socid, s.nom as name, s.tva_intra, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur"; $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; @@ -231,6 +234,9 @@ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON p.accountancy $sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0"; $sql .= " AND l.product_type <= 2"; // Add search filter like +if ($search_societe) { + $sql .= natural_search('s.nom', $search_societe); +} if ($search_lineid) { $sql .= natural_search("l.rowid", $search_lineid, 1); } @@ -314,6 +320,7 @@ if ($result) { $param = ''; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); + if ($search_societe) $param.='&search_societe='.urlencode($search_societe); if ($search_lineid) $param .= '&search_lineid='.urlencode($search_lineid); if ($search_day) $param .= '&search_day='.urlencode($search_day); if ($search_month) $param .= '&search_month='.urlencode($search_month); @@ -364,6 +371,7 @@ if ($result) { // We add search filter print '<tr class="liste_titre_filter">'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'""></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>'; @@ -390,6 +398,7 @@ if ($result) { print "</tr>\n"; print '<tr class="liste_titre">'; + print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "l.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("InvoiceLabel", $_SERVER["PHP_SELF"], "f.libelle", "", $param, '', $sortfield, $sortorder); @@ -408,6 +417,7 @@ if ($result) { print_liste_field_titre($checkpicto, '', '', '', '', '', '', '', 'center '); print "</tr>\n"; + $thirdpartystatic=new Societe($db); $facturefourn_static = new FactureFournisseur($db); $product_static = new Product($db); @@ -424,6 +434,17 @@ if ($result) { $objp->code_buy_l = ''; $objp->code_buy_p = ''; + $thirdpartystatic->id = $objp->socid; + $thirdpartystatic->name = $objp->name; + $thirdpartystatic->client = $objp->client; + $thirdpartystatic->fournisseur = $objp->fournisseur; + $thirdpartystatic->code_client = $objp->code_client; + $thirdpartystatic->code_compta_client = $objp->code_compta_client; + $thirdpartystatic->code_fournisseur = $objp->code_fournisseur; + $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur; + $thirdpartystatic->email = $objp->email; + $thirdpartystatic->country_code = $objp->country_code; + $product_static->ref = $objp->product_ref; $product_static->id = $objp->product_id; $product_static->type = $objp->type; @@ -506,6 +527,9 @@ if ($result) { print '<tr class="oddeven">'; + // Thirdparty + print '<td>' . $thirdpartystatic->getNomUrl(1, 'supplier') . '</td>'; + // Line id print '<td>'.$objp->rowid.'</td>'; From 1f6c959b723e04db550b215f9e05d41f2fdafae9 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO <aspangaro.dolibarr@gmail.com> Date: Tue, 28 Apr 2020 04:55:54 +0200 Subject: [PATCH 236/780] NEW: Accountancy add column thirdparty on binding page --- htdocs/accountancy/customer/lines.php | 33 ++++++++++++++++++++++---- htdocs/accountancy/customer/list.php | 34 +++++++++++++++++++++++---- htdocs/accountancy/supplier/lines.php | 2 +- htdocs/accountancy/supplier/list.php | 2 +- 4 files changed, 60 insertions(+), 11 deletions(-) diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 7e51160195b..94835b429c8 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com> - * Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro@open-dsi.fr> + * Copyright (C) 2013-2020 Alexandre Spangaro <aspangaro@open-dsi.fr> * Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com> * Copyright (C) 2014-2016 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> @@ -27,10 +27,11 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -42,6 +43,7 @@ $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' $account_parent = GETPOST('account_parent'); $changeaccount = GETPOST('changeaccount'); // Search Getpost +$search_societe = GETPOST('search_societe', 'alpha'); $search_lineid = GETPOST('search_lineid', 'int'); $search_ref = GETPOST('search_ref', 'alpha'); $search_invoice = GETPOST('search_invoice', 'alpha'); @@ -89,6 +91,7 @@ $formaccounting = new FormAccounting($db); // 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_societe=''; $search_lineid = ''; $search_ref = ''; $search_invoice = ''; @@ -175,7 +178,7 @@ $sql .= " s.rowid as socid, s.nom as name, s.code_compta, s.code_client,"; $sql .= " p.rowid as product_id, p.fk_product_type as product_type, p.ref as product_ref, p.label as product_label, p.accountancy_code_sell, aa.rowid as fk_compte, aa.account_number, aa.label as label_compte,"; $sql .= " fd.situation_percent,"; $sql .= " co.code as country_code, co.label as country,"; -$sql .= " s.tva_intra"; +$sql .= " s.rowid as socid, s.nom as name, s.tva_intra, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur"; $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; @@ -193,6 +196,10 @@ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { } else { $sql .= " AND f.type IN (".Facture::TYPE_STANDARD.",".Facture::TYPE_STANDARD.",".Facture::TYPE_CREDIT_NOTE.",".Facture::TYPE_DEPOSIT.",".Facture::TYPE_SITUATION.")"; } +// Add search filter like +if ($search_societe) { + $sql .= natural_search('s.nom', $search_societe); +} if ($search_lineid) { $sql .= natural_search("fd.rowid", $search_lineid, 1); } @@ -262,6 +269,7 @@ if ($result) { $param = ''; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); + if ($search_societe) $param .= "&search_societe=".urlencode($search_societe); if ($search_invoice) $param .= "&search_invoice=".urlencode($search_invoice); if ($search_ref) $param .= "&search_ref=".urlencode($search_ref); if ($search_label) $param .= "&search_label=".urlencode($search_label); @@ -296,7 +304,8 @@ if ($result) { print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n"; print '<tr class="liste_titre_filter">'; - print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'""></td>'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="'.dol_escape_htmltag($search_societe).'"></td>'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>'; print '<td class="liste_titre center nowraponall">'; if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) { @@ -322,6 +331,7 @@ if ($result) { print "</td></tr>\n"; print '<tr class="liste_titre">'; + print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "fd.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "f.datef, f.ref, fd.rowid", "", $param, '', $sortfield, $sortorder, 'center '); @@ -337,6 +347,7 @@ if ($result) { print_liste_field_titre($clickpicto, '', '', '', '', '', '', '', 'center '); print "</tr>\n"; + $thirdpartystatic=new Societe($db); $facture_static = new Facture($db); $product_static = new Product($db); @@ -347,6 +358,17 @@ if ($result) { $facture_static->id = $objp->facid; $facture_static->type = $objp->ftype; + $thirdpartystatic->id = $objp->socid; + $thirdpartystatic->name = $objp->name; + $thirdpartystatic->client = $objp->client; + $thirdpartystatic->fournisseur = $objp->fournisseur; + $thirdpartystatic->code_client = $objp->code_client; + $thirdpartystatic->code_compta_client = $objp->code_compta_client; + $thirdpartystatic->code_fournisseur = $objp->code_fournisseur; + $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur; + $thirdpartystatic->email = $objp->email; + $thirdpartystatic->country_code = $objp->country_code; + $product_static->ref = $objp->product_ref; $product_static->id = $objp->product_id; $product_static->label = $objp->product_label; @@ -354,6 +376,9 @@ if ($result) { print '<tr class="oddeven">'; + // Thirdparty + print '<td>' . $thirdpartystatic->getNomUrl(1, 'customer') . '</td>'; + // Line id print '<td>'.$objp->rowid.'</td>'; diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 8d09587ca5a..a623628a3d4 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> - * Copyright (C) 2013-2019 Alexandre Spangaro <aspangaro@open-dsi.fr> + * Copyright (C) 2013-2020 Alexandre Spangaro <aspangaro@open-dsi.fr> * Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com> * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> @@ -27,12 +27,13 @@ */ require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -49,6 +50,7 @@ $toselect = GETPOST('toselect', 'array'); $mesCasesCochees = GETPOST('toselect', 'array'); // Search Getpost +$search_societe = GETPOST('search_societe', 'alpha'); $search_lineid = GETPOST('search_lineid', 'int'); $search_ref = GETPOST('search_ref', 'alpha'); $search_invoice = GETPOST('search_invoice', 'alpha'); @@ -112,6 +114,7 @@ if (empty($reshook)) // Purge search criteria if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All test are required to be compatible with all browsers { + $search_societe=''; $search_lineid = ''; $search_ref = ''; $search_invoice = ''; @@ -212,7 +215,7 @@ $sql .= " p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as co $sql .= " p.tosell as status, p.tobuy as status_buy,"; $sql .= " aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export,"; $sql .= " co.code as country_code, co.label as country_label,"; -$sql .= " s.tva_intra"; +$sql .= " s.rowid as socid, s.nom as name, s.tva_intra, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur"; $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; @@ -227,6 +230,9 @@ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON p.accountancy $sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0"; $sql .= " AND l.product_type <= 2"; // Add search filter like +if ($search_societe) { + $sql .= natural_search('s.nom', $search_societe); +} if ($search_lineid) { $sql .= natural_search("l.rowid", $search_lineid, 1); } @@ -314,6 +320,7 @@ if ($result) { $param = ''; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); + if ($search_societe) $param .= '&search_societe='.urlencode($search_societe); if ($search_lineid) $param .= '&search_lineid='.urlencode($search_lineid); if ($search_day) $param .= '&search_day='.urlencode($search_day); if ($search_month) $param .= '&search_month='.urlencode($search_month); @@ -363,7 +370,8 @@ if ($result) { // We add search filter print '<tr class="liste_titre_filter">'; - print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'""></td>'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>'; print '<td class="liste_titre center nowraponall minwidth100imp">'; if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) { @@ -391,6 +399,7 @@ if ($result) { print '</tr>'; print '<tr class="liste_titre">'; + print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "l.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "f.datef, f.ref, l.rowid", "", $param, '', $sortfield, $sortorder, 'center '); @@ -408,6 +417,7 @@ if ($result) { print_liste_field_titre($checkpicto, '', '', '', '', '', '', '', 'center '); print "</tr>\n"; + $thirdpartystatic = new Societe($db); $facture_static = new Facture($db); $product_static = new Product($db); @@ -421,6 +431,17 @@ if ($result) { $objp->code_sell_l = ''; $objp->code_sell_p = ''; + $thirdpartystatic->id = $objp->socid; + $thirdpartystatic->name = $objp->name; + $thirdpartystatic->client = $objp->client; + $thirdpartystatic->fournisseur = $objp->fournisseur; + $thirdpartystatic->code_client = $objp->code_client; + $thirdpartystatic->code_compta_client = $objp->code_compta_client; + $thirdpartystatic->code_fournisseur = $objp->code_fournisseur; + $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur; + $thirdpartystatic->email = $objp->email; + $thirdpartystatic->country_code = $objp->country_code; + $product_static->ref = $objp->product_ref; $product_static->id = $objp->product_id; $product_static->type = $objp->type; @@ -525,6 +546,9 @@ if ($result) { print '<tr class="oddeven">'; + // Thirdparty + print '<td>' . $thirdpartystatic->getNomUrl(1, 'customer') . '</td>'; + // Line id print '<td>'.$objp->rowid.'</td>'; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index cd553849414..2e4059bcaba 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -309,7 +309,7 @@ if ($result) { // We add search filter print '<tr class="liste_titre_filter">'; print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'""></td>'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>'; print '<td class="liste_titre center nowraponall">'; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index 4996faa9260..f9bac6682a8 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -372,7 +372,7 @@ if ($result) { // We add search filter print '<tr class="liste_titre_filter">'; print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; - print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'""></td>'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>'; print '<td class="liste_titre center nowraponall minwidth100imp">'; From 740b2c92285aaf60c69fe3849306a6798fc01b74 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" <maxime@indelog.fr> Date: Tue, 28 Apr 2020 08:59:27 +0200 Subject: [PATCH 237/780] NEW possibilty to group payments by mode and show their subtotal This add two params (PAYMENTS_REPORT_GROUP_BY_MOD and PAYMENTS_FOURN_REPORT_GROUP_BY_MOD) for payments and supplier payments to group them by mode and get subtotals for each mode. Add the corresponding configuration options on admin page fore each payments and supplier payments. --- htdocs/admin/payment.php | 14 +++- htdocs/admin/supplier_payment.php | 56 ++++++++++++++ htdocs/compta/paiement/rapport.php | 5 +- .../modules/rapport/pdf_paiement.class.php | 74 +++++++++++++++++-- htdocs/fourn/facture/rapport.php | 5 +- htdocs/langs/en_US/bills.lang | 1 + htdocs/langs/fr_FR/bills.lang | 1 + 7 files changed, 145 insertions(+), 11 deletions(-) diff --git a/htdocs/admin/payment.php b/htdocs/admin/payment.php index e740150e1d5..a5b494b62e2 100644 --- a/htdocs/admin/payment.php +++ b/htdocs/admin/payment.php @@ -1,5 +1,6 @@ <?php /* Copyright (C) 2015 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * * 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 @@ -70,11 +71,12 @@ if ($action == 'setmod') if ($action == 'setparams') { $freetext = GETPOST('FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS', 'none'); // No alpha here, we want exact string - $res = dolibarr_set_const($db, "FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS", $freetext, 'chaine', 0, '', $conf->entity); - if (!$res > 0) $error++; + $res = dolibarr_set_const($db, "PAYMENTS_REPORT_GROUP_BY_MOD", GETPOST('PAYMENTS_REPORT_GROUP_BY_MOD', 'int'), 'chaine', 0, '', $conf->entity); + if (!$res > 0) $error++; + if ($error) { setEventMessages($langs->trans("Error"), null, 'errors'); @@ -253,6 +255,14 @@ print $form->selectyesno("FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS", $co print '</td><td class="right">'; print "</td></tr>\n"; +// Allow to group payments by mod in rapports +print '<tr class="oddeven"><td>'; +print $langs->trans("GroupPaymentsByModOnReports"); +print '</td><td width="60" align="center">'; +print $form->selectyesno("PAYMENTS_REPORT_GROUP_BY_MOD", $conf->global->PAYMENTS_REPORT_GROUP_BY_MOD, 1); +print '</td><td class="right">'; +print "</td></tr>\n"; + print '</table>'; print '</div>'; diff --git a/htdocs/admin/supplier_payment.php b/htdocs/admin/supplier_payment.php index d533ba0d8eb..e2fc6dce4a7 100644 --- a/htdocs/admin/supplier_payment.php +++ b/htdocs/admin/supplier_payment.php @@ -1,6 +1,7 @@ <?php /* Copyright (C) 2015 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * * 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 @@ -144,6 +145,23 @@ elseif ($action == 'specimen') } } + + +elseif ($action == 'setparams') +{ + $res = dolibarr_set_const($db, "PAYMENTS_FOURN_REPORT_GROUP_BY_MOD", GETPOST('PAYMENTS_FOURN_REPORT_GROUP_BY_MOD', 'int'), 'chaine', 0, '', $conf->entity); + if (!$res > 0) $error++; + + if ($error) + { + setEventMessages($langs->trans("Error"), null, 'errors'); + } + if (!$error) + { + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); + } +} + /* * View */ @@ -428,8 +446,46 @@ foreach ($dirmodels as $reldir) print '</table>'; +/* + * Other Options + */ + +print "<br>"; + +print load_fiche_titre($langs->trans("OtherOptions"), '', ''); + +print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">'; +print '<input type="hidden" name="token" value="'.newToken().'" />'; +print '<input type="hidden" name="action" value="setparams" />'; + +print '<div class="div-table-responsive-no-min">'; +print '<table class="noborder centpercent">'; +print '<tr class="liste_titre">'; +print '<td>'.$langs->trans("Parameter").'</td>'; +print '<td align="center" width="60">'.$langs->trans("Value").'</td>'; +print '<td width="80"> </td>'; +print "</tr>\n"; + +// Allow to group payments by mod in rapports +print '<tr class="oddeven"><td>'; +print $langs->trans("GroupPaymentsByModOnReports"); +print '</td><td width="60" align="center">'; +print $form->selectyesno("PAYMENTS_FOURN_REPORT_GROUP_BY_MOD", $conf->global->PAYMENTS_FOURN_REPORT_GROUP_BY_MOD, 1); +print '</td><td class="right">'; +print "</td></tr>\n"; + +print '</table>'; + dol_fiche_end(); +print '<br>'; +print '<div class="center">'; +print '<input type="submit" class="button" value="'.$langs->trans("Modify").'" />'; +print '</div>'; +print '<br>'; + +print '</form>'; + // End of page llxFooter(); $db->close(); diff --git a/htdocs/compta/paiement/rapport.php b/htdocs/compta/paiement/rapport.php index 80013d3d865..76a1ce72d76 100644 --- a/htdocs/compta/paiement/rapport.php +++ b/htdocs/compta/paiement/rapport.php @@ -2,6 +2,7 @@ /* Copyright (C) 2003-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * * 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 @@ -26,6 +27,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/rapport/pdf_paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; // Security check @@ -84,6 +86,7 @@ if ($action == 'builddoc') */ $formother = new FormOther($db); +$formfile = new FormFile($db); llxHeader(); @@ -155,7 +158,7 @@ if ($year) $tfile = $dir.'/'.$year.'/'.$file; $relativepath = $year.'/'.$file; print '<tr class="oddeven">'; - print '<td><a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart=facture_paiement&file='.urlencode($relativepath).'">'.img_pdf().' '.$file.'</a></td>'; + print '<td><a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart=facture_paiement&file='.urlencode($relativepath).'">'.img_pdf().' '.$file.'</a>'.$formfile->showPreview($file, 'facture_paiement', $relativepath, 0).'</td>'; print '<td class="right">'.dol_print_size(dol_filesize($tfile)).'</td>'; print '<td class="right">'.dol_print_date(dol_filemtime($tfile), "dayhour").'</td>'; print '</tr>'; diff --git a/htdocs/core/modules/rapport/pdf_paiement.class.php b/htdocs/core/modules/rapport/pdf_paiement.class.php index 2377e537606..58b5de4d7d8 100644 --- a/htdocs/core/modules/rapport/pdf_paiement.class.php +++ b/htdocs/core/modules/rapport/pdf_paiement.class.php @@ -2,6 +2,7 @@ /* Copyright (C) 2003-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2006-2014 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2015-2018 Charlene BENKE <charlie@patas-monkey.com> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * * 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 @@ -207,7 +208,11 @@ class pdf_paiement $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; } if (!empty($socid)) $sql .= " AND s.rowid = ".$socid; - $sql .= " ORDER BY p.datep ASC, pf.fk_paiement ASC"; + // If global param PAYMENTS_REPORT_GROUP_BY_MOD is set, payement are ordered by paiement_code + if (!empty($conf->global->PAYMENTS_REPORT_GROUP_BY_MOD)) + $sql .= " ORDER BY paiement_code ASC, p.datep ASC, pf.fk_paiement ASC"; + else + $sql .= " ORDER BY p.datep ASC, pf.fk_paiement ASC"; break; case "fourn": $sql = "SELECT p.datep as dp, f.ref as ref"; @@ -237,7 +242,11 @@ class pdf_paiement $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; } if (!empty($socid)) $sql .= " AND s.rowid = ".$socid; - $sql .= " ORDER BY p.datep ASC, pf.fk_paiementfourn ASC"; + // If global param PAYMENTS_FOURN_REPORT_GROUP_BY_MOD is set, payement fourn are ordered by paiement_code + if (!empty($conf->global->PAYMENTS_FOURN_REPORT_GROUP_BY_MOD)) + $sql .= " ORDER BY paiement_code ASC, p.datep ASC, pf.fk_paiementfourn ASC"; + else + $sql .= " ORDER BY p.datep ASC, pf.fk_paiementfourn ASC"; break; } @@ -425,7 +434,7 @@ class pdf_paiement public function Body(&$pdf, $page, $lines, $outputlangs) { // phpcs:enable - global $langs; + global $langs, $conf; $default_font_size = pdf_getPDFFontSize($outputlangs); $pdf->SetFont('', '', $default_font_size - 1); @@ -435,6 +444,11 @@ class pdf_paiement $pdf->SetFillColor(220, 220, 220); $yp = 0; $numlines = count($lines); + if (($this->doc_type == 'client' && !empty($conf->global->PAYMENTS_REPORT_GROUP_BY_MOD)) || ($this->doc_type == 'fourn' && !empty($conf->global->PAYMENTS_FOURN_REPORT_GROUP_BY_MOD))) + { + $mod = $lines[0][2]; + $total_mod = 0; + } for ($j = 0; $j < $numlines; $j++) { $i = $j; @@ -450,8 +464,17 @@ class pdf_paiement { if ($yp > $this->tab_height - 15) { - $pdf->SetXY($this->posxpaymentamount, $this->tab_top + 10 + $yp); - $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount, $this->line_height, $langs->transnoentities('SubTotal')." : ".price($total_page), 0, 'R', 0); + $pdf->SetFillColor(255, 255, 255); + $pdf->Rect($this->marge_gauche +1, $this->tab_top + 10 + $yp, $this->posxpaymentamount - $this->marge_droite -3, $this->line_height, 'F', array(), array()); + $pdf->line($this->marge_gauche, $this->tab_top + 10 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 10 + $yp, array('dash'=>1)); + $pdf->line($this->marge_gauche, $this->tab_top + 15 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 15 + $yp); + $pdf->SetFont('', 'B', $default_font_size - 1); + $pdf->SetXY($this->posxdate -1, $this->tab_top + 10 + $yp); + $pdf->MultiCell($this->posxpaymentamount - 2 - $this->marge_droite, $this->line_height, $langs->transnoentities('SubTotal')." : ", 0, 'R', 1); + $pdf->SetXY($this->posxpaymentamount -1, $this->tab_top + 10 + $yp); + $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount +1, $this->line_height, price($total_page), 0, 'R', 1); + $pdf->SetFont('', '', $default_font_size - 1); + $pdf->SetFillColor(220, 220, 220); $page++; $pdf->AddPage(); $this->_pagehead($pdf, $page, 0, $outputlangs); @@ -474,6 +497,7 @@ class pdf_paiement $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount, $this->line_height, $lines[$j][4], 0, 'R', 1); $yp = $yp + 5; $total_page += $lines[$j][9]; + if (($this->doc_type == 'client' && !empty($conf->global->PAYMENTS_REPORT_GROUP_BY_MOD)) || ($this->doc_type == 'fourn' && !empty($conf->global->PAYMENTS_FOURN_REPORT_GROUP_BY_MOD))) $total_mod += $lines[$j][9]; } // Invoice number @@ -497,9 +521,45 @@ class pdf_paiement { $oldprowid = $lines[$j][7]; } + + // Add line to add total by payment mode if mode reglement for nex line change + if ((($this->doc_type == 'client' && !empty($conf->global->PAYMENTS_REPORT_GROUP_BY_MOD)) || ($this->doc_type == 'fourn' && !empty($conf->global->PAYMENTS_FOURN_REPORT_GROUP_BY_MOD))) && ($mod != $lines[$j+1][2])) + { + $pdf->SetFillColor(245, 245, 245); + $pdf->Rect($this->marge_gauche +1, $this->tab_top + 10 + $yp, $this->posxpaymentamount - $this->marge_droite -3, $this->line_height, 'F', array(), array()); + $pdf->line($this->marge_gauche, $this->tab_top + 10 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 10 + $yp, array('dash'=>1)); + $pdf->line($this->marge_gauche, $this->tab_top + 15 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 15 + $yp); + $pdf->SetXY($this->posxdate -1, $this->tab_top + 10 + $yp); + $pdf->SetFont('', 'I', $default_font_size - 1); + $pdf->MultiCell($this->posxpaymentamount - 2 - $this->marge_droite, $this->line_height, $langs->transnoentities('Total').' '.$mod." : ", 0, 'R', 1); + $pdf->SetXY($this->posxpaymentamount -1, $this->tab_top + 10 + $yp); + $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount +1, $this->line_height, price($total_mod), 0, 'R', 1); + $pdf->SetFont('', '', $default_font_size - 1); + $mod = $lines[$j+1][2]; + $total_mod = 0; + $yp = $yp + 5; + if ($yp > $this->tab_height - 5) + { + $page++; + $pdf->AddPage(); + $this->_pagehead($pdf, $page, 0, $outputlangs); + $pdf->SetFont('', '', $default_font_size - 1); + $yp = 0; + } + $pdf->SetFillColor(220, 220, 220); + } + } $total += $total_page; - $pdf->SetXY($this->posxpaymentamount, $this->tab_top + 10 + $yp); - $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount, $this->line_height, $langs->transnoentities('Total')." : ".price($total), 0, 'R', 0); + $pdf->SetFillColor(255, 255, 255); + $pdf->Rect($this->marge_gauche +1, $this->tab_top + 10 + $yp, $this->posxpaymentamount - $this->marge_droite -3, $this->line_height, 'F', array(), array()); + $pdf->line($this->marge_gauche, $this->tab_top + 10 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 10 + $yp, array('dash'=>1)); + $pdf->line($this->marge_gauche, $this->tab_top + 15 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 15 + $yp); + $pdf->SetXY($this->posxdate -1, $this->tab_top + 10 + $yp); + $pdf->SetFont('', 'B'); + $pdf->MultiCell($this->posxpaymentamount - 2 - $this->marge_droite, $this->line_height, $langs->transnoentities('Total')." : ", 0, 'R', 1); + $pdf->SetXY($this->posxpaymentamount -1, $this->tab_top + 10 + $yp); + $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount +1, $this->line_height, price($total), 0, 'R', 1); + $pdf->SetFillColor(220, 220, 220); } } diff --git a/htdocs/fourn/facture/rapport.php b/htdocs/fourn/facture/rapport.php index f0bf2d85dd1..9f38c4c4f9e 100644 --- a/htdocs/fourn/facture/rapport.php +++ b/htdocs/fourn/facture/rapport.php @@ -1,5 +1,6 @@ <?php /* Copyright (C) 2017 ATM-Consulting <support@atm-consulting.fr> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * * 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 @@ -24,6 +25,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/rapport/pdf_paiement_fourn.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; $langs->loadLangs(array('bills')); @@ -86,6 +88,7 @@ if ($action == 'builddoc') */ $formother = new FormOther($db); +$formfile = new FormFile($db); $titre = ($year ? $langs->trans("PaymentsReportsForYear", $year) : $langs->trans("PaymentsReports")); @@ -157,7 +160,7 @@ if ($year) { $tfile = $dir.'/'.$year.'/'.$file; $relativepath = $year.'/'.$file; - print '<tr class="oddeven"><td><a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart=facture_fournisseur&file=payments/'.urlencode($relativepath).'">'.img_pdf().' '.$file.'</a></td>'; + print '<tr class="oddeven"><td><a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart=facture_fournisseur&file=payments/'.urlencode($relativepath).'">'.img_pdf().' '.$file.'</a>'.$formfile->showPreview($file, 'facture_fournisseur', 'payments/'.$relativepath, 0).'</td>'; print '<td class="right">'.dol_print_size(dol_filesize($tfile)).'</td>'; print '<td class="right">'.dol_print_date(dol_filemtime($tfile), "dayhour").'</td></tr>'; } diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 55de1591689..9f11d8ecf87 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -385,6 +385,7 @@ GeneratedFromTemplate=Generated from template invoice %s WarningInvoiceDateInFuture=Warning, the invoice date is higher than current date WarningInvoiceDateTooFarInFuture=Warning, the invoice date is too far from current date ViewAvailableGlobalDiscounts=View available discounts +GroupPaymentsByModOnReports=Group payments by mode on reports # PaymentConditions Statut=Status PaymentConditionShortRECEP=Due Upon Receipt diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index 6ad3faba02d..92a0da802d1 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -393,6 +393,7 @@ GeneratedFromTemplate=Généré à partir du modèle de facture %s WarningInvoiceDateInFuture=Attention, la date de facturation est antérieur à la date actuelle WarningInvoiceDateTooFarInFuture=Attention, la date de facturation est trop éloignée de la date actuelle ViewAvailableGlobalDiscounts=Voir les remises disponibles +GroupPaymentsByModOnReports=Grouper les paiements par mode sur les rapports # PaymentConditions Statut=État PaymentConditionShortRECEP=A réception From 2cf5f12a62a949f602ac601ac6965977c991af80 Mon Sep 17 00:00:00 2001 From: stickler-ci <support@stickler-ci.com> Date: Tue, 28 Apr 2020 07:18:45 +0000 Subject: [PATCH 238/780] Fixing style errors. --- htdocs/admin/supplier_payment.php | 12 ++++++------ htdocs/core/modules/rapport/pdf_paiement.class.php | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/htdocs/admin/supplier_payment.php b/htdocs/admin/supplier_payment.php index e2fc6dce4a7..5d7a0d0b8d5 100644 --- a/htdocs/admin/supplier_payment.php +++ b/htdocs/admin/supplier_payment.php @@ -152,14 +152,14 @@ elseif ($action == 'setparams') $res = dolibarr_set_const($db, "PAYMENTS_FOURN_REPORT_GROUP_BY_MOD", GETPOST('PAYMENTS_FOURN_REPORT_GROUP_BY_MOD', 'int'), 'chaine', 0, '', $conf->entity); if (!$res > 0) $error++; - if ($error) + if ($error) { - setEventMessages($langs->trans("Error"), null, 'errors'); - } - if (!$error) + setEventMessages($langs->trans("Error"), null, 'errors'); + } + if (!$error) { - setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); + } } /* diff --git a/htdocs/core/modules/rapport/pdf_paiement.class.php b/htdocs/core/modules/rapport/pdf_paiement.class.php index 58b5de4d7d8..024310abb09 100644 --- a/htdocs/core/modules/rapport/pdf_paiement.class.php +++ b/htdocs/core/modules/rapport/pdf_paiement.class.php @@ -548,7 +548,6 @@ class pdf_paiement } $pdf->SetFillColor(220, 220, 220); } - } $total += $total_page; $pdf->SetFillColor(255, 255, 255); From 72c8397e36c668c982dc86c46503b682d6ab0bf1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 11:24:13 +0200 Subject: [PATCH 239/780] css --- htdocs/projet/tasks/time.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index ea74482b4a1..377d34e61d5 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -270,7 +270,7 @@ if (($action == 'updateline' || $action == 'updatesplitline') && !$_POST["cancel $object->timespent_note = $_POST["timespent_note_line"]; $object->timespent_old_duration = $_POST["old_duration"]; $object->timespent_duration = $_POST["new_durationhour"] * 60 * 60; // We store duration in seconds - $object->timespent_duration += $_POST["new_durationmin"] * 60; // We store duration in seconds + $object->timespent_duration += ($_POST["new_durationmin"] ? $_POST["new_durationmin"] : 0) * 60; // We store duration in seconds if (GETPOST("timelinehour") != '' && GETPOST("timelinehour") >= 0) // If hour was entered { $object->timespent_date = dol_mktime(GETPOST("timelinehour"), GETPOST("timelinemin"), 0, GETPOST("timelinemonth"), GETPOST("timelineday"), GETPOST("timelineyear")); @@ -1377,10 +1377,10 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) } } - // User + // By User if (!empty($arrayfields['author']['checked'])) { - print '<td>'; + print '<td class="nowrap">'; if ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { if (empty($object->id)) $object->fetch($id); @@ -1390,7 +1390,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) } if (count($contactsoftask) > 0) { print img_object('', 'user', 'class="hideonsmartphone"'); - print $form->select_dolusers($task_time->fk_user, 'userid_line', 0, '', 0, '', $contactsoftask); + print $form->select_dolusers($task_time->fk_user, 'userid_line', 0, '', 0, '', $contactsoftask, '0', 0, 0, '', 0, '', 'maxwidth200'); } else { print img_error($langs->trans('FirstAddRessourceToAllocateTime')).$langs->trans('FirstAddRessourceToAllocateTime'); } @@ -1452,7 +1452,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) // Value spent if (!empty($arrayfields['value']['checked'])) { - print '<td class="right">'; + print '<td class="nowraponall right">'; $value = price2num($task_time->thm * $task_time->task_duration / 3600); print price($value, 1, $langs, 1, -1, -1, $conf->currency); print '</td>'; From 4a8173f498b4a95366263fcc4751ccad1778d96d Mon Sep 17 00:00:00 2001 From: Tim Otte <otte@meuser.it> Date: Tue, 28 Apr 2020 12:40:10 +0200 Subject: [PATCH 240/780] Fixed search_projectstatus to allow default values --- htdocs/projet/tasks/list.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index 67131c29ef4..ccd3d28ba31 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -45,12 +45,14 @@ $id = GETPOST('id', 'int'); $search_all = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml')); $search_categ = GETPOST("search_categ", 'alpha'); $search_project = GETPOST('search_project'); -if (!isset($_GET['search_projectstatus']) && !isset($_POST['search_projectstatus'])) + +$search_projectstatus = GETPOST('search_projectstatus'); +if (!isset($search_projectstatus) || $search_projectstatus == '') { if ($search_all != '') $search_projectstatus = -1; else $search_projectstatus = 1; } -else $search_projectstatus = GETPOST('search_projectstatus'); + $search_project_ref = GETPOST('search_project_ref'); $search_project_title = GETPOST('search_project_title'); $search_task_ref = GETPOST('search_task_ref'); From 947609fc122f9bb89eea7cb6ceff0e532a97835b Mon Sep 17 00:00:00 2001 From: Tim Otte <otte@meuser.it> Date: Tue, 28 Apr 2020 12:59:15 +0200 Subject: [PATCH 241/780] Minor fix --- htdocs/projet/tasks/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index 5b60e1ef3bc..113f02670f0 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -47,7 +47,7 @@ $search_categ = GETPOST("search_categ", 'alpha'); $search_project = GETPOST('search_project'); $search_projectstatus = GETPOST('search_projectstatus'); -if (!isset($search_projectstatus) || $search_projectstatus == '') +if (!isset($search_projectstatus) || $search_projectstatus === '') { if ($search_all != '') $search_projectstatus = -1; else $search_projectstatus = 1; From 7a73915e9203f120333220806a2e68d8873c9bef Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 14:22:13 +0200 Subject: [PATCH 242/780] FIX Can switch from double to price type for extrafields --- htdocs/core/tpl/admin_extrafields_edit.tpl.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php index d0eaaec25f2..80a7cac7de3 100644 --- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php @@ -194,6 +194,8 @@ elseif (($type == 'sellist') || ($type == 'chkbxlst') || ($type == 'link') || ($ // Define list of possible type transition $typewecanchangeinto = array( 'varchar'=>array('varchar', 'phone', 'mail', 'url', 'select', 'password', 'text', 'html'), + 'double'=>array('double', 'price'), + 'price'=>array('double', 'price'), 'text'=>array('text', 'html'), 'html'=>array('text', 'html'), 'password'=>array('password', 'varchar'), @@ -202,6 +204,7 @@ $typewecanchangeinto = array( 'phone'=>array('varchar', 'phone', 'mail', 'url', 'select'), 'select'=>array('varchar', 'phone', 'mail', 'url', 'select') ); + if (in_array($type, array_keys($typewecanchangeinto))) { $newarray = array(); From 2b00ae9e927b6d08b78d70af3e221da97c4c2cfa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 14:22:52 +0200 Subject: [PATCH 243/780] FIX Extrafields of type price must be '' and not '0' if not defined --- htdocs/core/class/extrafields.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index a5c6e74733c..18dd686367b 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1671,7 +1671,8 @@ class ExtraFields } elseif ($type == 'price') { - $value = price($value, 0, $langs, 0, 0, -1, $conf->currency); + //$value = price($value, 0, $langs, 0, 0, -1, $conf->currency); + if ($value || $value == '0') $value = price($value, 0, $langs, 0, 0, -1); } elseif ($type == 'select') { From dd3a5949c031048f340c5644141ae5b78b1f3ee9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 14:25:07 +0200 Subject: [PATCH 244/780] FIX Avoid infinite loop when a fetch is inside a compute field. --- htdocs/core/class/commonobject.class.php | 26 ++++++++++++++++++++++-- htdocs/core/class/conf.class.php | 2 ++ htdocs/langs/en_US/admin.lang | 2 +- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 102f9da411a..adb6d21a828 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5243,6 +5243,25 @@ abstract class CommonObject /* Functions for extrafields */ + /** + * Function to make a fetch but set environment to avoid to load computed values before. + * + * @param int $id ID of object + * @return int >0 if OK, 0 if not found, <0 if KO + */ + public function fetchNoCompute($id) + { + global $conf; + + $savDisableCompute = $conf->disable_compute; + $conf->disable_compute = 1; + + $ret = $this->fetch($id); + + $conf->disable_compute = $savDisableCompute; + + return $ret; + } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** @@ -5257,7 +5276,7 @@ abstract class CommonObject public function fetch_optionals($rowid = null, $optionsArray = null) { // phpcs:enable - global $extrafields; + global $conf, $extrafields; if (empty($rowid)) $rowid = $this->id; if (empty($rowid)) $rowid = $this->rowid; @@ -5341,7 +5360,10 @@ abstract class CommonObject foreach ($tab as $key => $value) { if (!empty($extrafields) && !empty($extrafields->attributes[$this->table_element]['computed'][$key])) { - $this->array_options["options_".$key] = dol_eval($extrafields->attributes[$this->table_element]['computed'][$key], 1, 0); + //var_dump($conf->disable_compute); + if (empty($conf->disable_compute)) { + $this->array_options["options_".$key] = dol_eval($extrafields->attributes[$this->table_element]['computed'][$key], 1, 0); + } } } } diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 7a0c46a39c4..0a52301e608 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -48,6 +48,8 @@ class Conf //! To store if javascript/ajax is enabked public $use_javascript_ajax; + //! To store if javascript/ajax is enabked + public $disable_compute; //! Used to store current currency (ISO code like 'USD', 'EUR', ...) public $currency; //! Used to store current css (from theme) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 58e5cecf39d..96bb77a5064 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -427,7 +427,7 @@ ExtrafieldCheckBox=Checkboxes ExtrafieldCheckBoxFromList=Checkboxes from table ExtrafieldLink=Link to an object ComputedFormula=Computed field -ComputedFormulaDesc=You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: <strong>$db, $conf, $langs, $mysoc, $user, $object</strong>.<br><strong>WARNING</strong>: Only some properties of $object may be available. If you need a properties not loaded, just fetch yourself the object into your formula like in the second example.<br>Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.<br><br>Example of formula:<br>$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)<br><br>Example to reload object<br>(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'<br><br>Other example of formula to force load of object and its parent object:<br>(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' +ComputedFormulaDesc=You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: <strong>$db, $conf, $langs, $mysoc, $user, $object</strong>.<br><strong>WARNING</strong>: Only some properties of $object may be available. If you need a properties not loaded, just fetch yourself the object into your formula like in the second example.<br>Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.<br><br>Example of formula:<br>$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)<br><br>Example to reload object<br>(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'<br><br>Other example of formula to force load of object and its parent object:<br>(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! ExtrafieldParamHelpPassword=Leaving this field blank means this value will be stored without encryption (field must be only hidden with star on screen).<br>Set 'auto' to use the default encryption rule to save password into database (then value read will be the hash only, no way to retrieve original value) From 91523b4b6425b201f2c8c4e1580b49d9364e8334 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 14:22:13 +0200 Subject: [PATCH 245/780] FIX Can switch from double to price type for extrafields Conflicts: htdocs/core/tpl/admin_extrafields_edit.tpl.php --- htdocs/core/tpl/admin_extrafields_edit.tpl.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php index 4063111a6fb..b9035f546dd 100644 --- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php @@ -193,14 +193,17 @@ elseif (($type== 'sellist') || ($type == 'chkbxlst') || ($type == 'link') || ($t // Define list of possible type transition $typewecanchangeinto=array( 'varchar'=>array('varchar', 'phone', 'mail', 'url', 'select', 'password', 'text', 'html'), - 'text'=>array('text','html'), - 'html'=>array('text','html'), + 'double'=>array('double', 'price'), + 'price'=>array('double', 'price'), + 'text'=>array('text', 'html'), + 'html'=>array('text', 'html'), 'password'=>array('password', 'varchar'), 'mail'=>array('varchar', 'phone', 'mail', 'url', 'select'), 'url'=>array('varchar', 'phone', 'mail', 'url', 'select'), 'phone'=>array('varchar', 'phone', 'mail', 'url', 'select'), 'select'=>array('varchar', 'phone', 'mail', 'url', 'select') ); + if (in_array($type, array_keys($typewecanchangeinto))) { $newarray=array(); From a8740352af918429cdd766aaf8ca106a0daeec72 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 14:22:52 +0200 Subject: [PATCH 246/780] FIX Extrafields of type price must be '' and not '0' if not defined --- htdocs/core/class/extrafields.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 0938da39dcd..ac388b1ef83 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1681,7 +1681,8 @@ class ExtraFields } elseif ($type == 'price') { - $value = price($value, 0, $langs, 0, 0, -1, $conf->currency); + //$value = price($value, 0, $langs, 0, 0, -1, $conf->currency); + if ($value || $value == '0') $value = price($value, 0, $langs, 0, 0, -1); } elseif ($type == 'select') { From c22e13b138d28bbb902881c6cdd061ca555b8b60 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 14:25:07 +0200 Subject: [PATCH 247/780] FIX Avoid infinite loop when a fetch is inside a compute field. --- htdocs/core/class/commonobject.class.php | 26 ++++++++++++++++++++++-- htdocs/core/class/conf.class.php | 2 ++ htdocs/langs/en_US/admin.lang | 2 +- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index f7202040fe5..10e04896314 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5012,6 +5012,25 @@ abstract class CommonObject /* Functions for extrafields */ + /** + * Function to make a fetch but set environment to avoid to load computed values before. + * + * @param int $id ID of object + * @return int >0 if OK, 0 if not found, <0 if KO + */ + public function fetchNoCompute($id) + { + global $conf; + + $savDisableCompute = $conf->disable_compute; + $conf->disable_compute = 1; + + $ret = $this->fetch($id); + + $conf->disable_compute = $savDisableCompute; + + return $ret; + } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** @@ -5025,7 +5044,7 @@ abstract class CommonObject public function fetch_optionals($rowid = null, $optionsArray = null) { // phpcs:enable - global $extrafields; + global $conf, $extrafields; if (empty($rowid)) $rowid = $this->id; @@ -5109,7 +5128,10 @@ abstract class CommonObject foreach ($tab as $key => $value) { if (!empty($extrafields) && !empty($extrafields->attributes[$this->table_element]['computed'][$key])) { - $this->array_options["options_".$key] = dol_eval($extrafields->attributes[$this->table_element]['computed'][$key], 1, 0); + //var_dump($conf->disable_compute); + if (empty($conf->disable_compute)) { + $this->array_options["options_".$key] = dol_eval($extrafields->attributes[$this->table_element]['computed'][$key], 1, 0); + } } } } diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 4136cef1be5..00556f40480 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -48,6 +48,8 @@ class Conf //! To store if javascript/ajax is enabked public $use_javascript_ajax; + //! To store if javascript/ajax is enabked + public $disable_compute; //! Used to store current currency (ISO code like 'USD', 'EUR', ...) public $currency; //! Used to store current css (from theme) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index e2c03545124..00e6279349b 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -427,7 +427,7 @@ ExtrafieldCheckBox=Checkboxes ExtrafieldCheckBoxFromList=Checkboxes from table ExtrafieldLink=Link to an object ComputedFormula=Computed field -ComputedFormulaDesc=You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: <strong>$db, $conf, $langs, $mysoc, $user, $object</strong>.<br><strong>WARNING</strong>: Only some properties of $object may be available. If you need a properties not loaded, just fetch yourself the object into your formula like in the second example.<br>Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.<br><br>Example of formula:<br>$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)<br><br>Example to reload object<br>(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'<br><br>Other example of formula to force load of object and its parent object:<br>(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' +ComputedFormulaDesc=You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: <strong>$db, $conf, $langs, $mysoc, $user, $object</strong>.<br><strong>WARNING</strong>: Only some properties of $object may be available. If you need a properties not loaded, just fetch yourself the object into your formula like in the second example.<br>Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.<br><br>Example of formula:<br>$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)<br><br>Example to reload object<br>(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'<br><br>Other example of formula to force load of object and its parent object:<br>(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! ExtrafieldParamHelpPassword=Leaving this field blank means this value will be stored without encryption (field must be only hidden with star on screen).<br>Set 'auto' to use the default encryption rule to save password into database (then value read will be the hash only, no way to retrieve original value) From aa9ee060d56ae1f60bb0e826746a060787f43f5d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 17:34:11 +0200 Subject: [PATCH 248/780] Look and feel v12 --- htdocs/core/lib/ajax.lib.php | 1 + htdocs/projet/admin/project.php | 24 +++--------------------- 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 329d177a33d..64f442633de 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -488,6 +488,7 @@ function ajax_constantonoff($code, $input = array(), $entity = null, $revertonof global $conf, $langs, $user; $entity = ((isset($entity) && is_numeric($entity) && $entity >= 0) ? $entity : $conf->entity); + if (! isset($input)) $input = array(); if (empty($conf->use_javascript_ajax)) { diff --git a/htdocs/projet/admin/project.php b/htdocs/projet/admin/project.php index 19b68ddd9ea..cfd10d2c1fa 100644 --- a/htdocs/projet/admin/project.php +++ b/htdocs/projet/admin/project.php @@ -51,17 +51,7 @@ $type = 'project'; include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php'; -if ($action == 'setmainoptions') -{ - if (GETPOST('PROJECT_USE_OPPORTUNITIES')) dolibarr_set_const($db, "PROJECT_USE_OPPORTUNITIES", GETPOST('PROJECT_USE_OPPORTUNITIES'), 'chaine', 0, '', $conf->entity); - else dolibarr_del_const($db, "PROJECT_USE_OPPORTUNITIES", $conf->entity); - - // Warning, the constant saved and used in code is PROJECT_HIDE_TASKS - if (GETPOST('PROJECT_USE_TASKS')) dolibarr_del_const($db, "PROJECT_HIDE_TASKS", $conf->entity); - else dolibarr_set_const($db, "PROJECT_HIDE_TASKS", 1, 'chaine', 0, '', $conf->entity); -} - -elseif ($action == 'updateMask') +if ($action == 'updateMask') { $maskconstproject = GETPOST('maskconstproject', 'alpha'); $maskproject = GETPOST('maskproject', 'alpha'); @@ -315,12 +305,8 @@ print '<td width="80"> </td></tr>'."\n"; print '<tr class="oddeven">'; print '<td width="80%">'.$langs->trans("ManageOpportunitiesStatus").'</td>'; print '<td width="60" class="right">'; -$arrval = array('0'=>$langs->trans("No"), - '1'=>$langs->trans("Yes"), -); -print $form->selectyesno('PROJECT_USE_OPPORTUNITIES', $conf->global->PROJECT_USE_OPPORTUNITIES, 1); +print ajax_constantonoff("PROJECT_USE_OPPORTUNITIES"); print '</td><td class="right">'; -print '<input type="submit" class="button" name="modifyPROJECT_USE_OPPORTUNITIES" value="'.$langs->trans("Modify").'">'; print "</td>"; print '</tr>'; @@ -328,12 +314,8 @@ print '</tr>'; print '<tr class="oddeven">'; print '<td width="80%">'.$langs->trans("ManageTasks").'</td>'; print '<td width="60" class="right">'; -$arrval = array('0'=>$langs->trans("No"), - '1'=>$langs->trans("Yes"), -); -print $form->selectyesno('PROJECT_USE_TASKS', empty($conf->global->PROJECT_HIDE_TASKS) ? 1 : 0, 1); +print ajax_constantonoff("PROJECT_HIDE_TASKS", array(), null, 1); print '</td><td class="right">'; -print '<input type="submit" class="button" name="modifyPROJECT_USE_TASKS" value="'.$langs->trans("Modify").'">'; print "</td>"; print '</tr>'; From 483935493c8c2a36b15578b1ab271c0c5beb90a8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 18:08:26 +0200 Subject: [PATCH 249/780] Fix look and feel --- htdocs/accountancy/customer/lines.php | 4 ++-- htdocs/accountancy/supplier/lines.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 7e51160195b..22813024328 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -311,7 +311,7 @@ if ($result) { print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>'; print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" placeholder="%" name="search_vat" size="1" value="'.dol_escape_htmltag($search_vat).'"></td>'; print '<td class="liste_titre">'; - print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth200', 'code2', 1, 0, 1); + print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth150', 'code2', 1, 0, 1); //print '<input type="text" class="flat maxwidth50" name="search_country" value="' . dol_escape_htmltag($search_country) . '">'; print '</td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_tvaintra" value="'.dol_escape_htmltag($search_tvaintra).'"></td>'; @@ -367,7 +367,7 @@ if ($result) { print '<td>'; if ($product_static->id > 0) print $product_static->getNomUrl(1); if ($product_static->id > 0 && $objp->product_label) print '<br>'; - if ($objp->product_label) print $objp->product_label; + if ($objp->product_label) print '<span class="opacitymedium">'.$objp->product_label.'</span>'; print '</td>'; print '<td class="tdoverflowonsmartphone">'; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index 6d1a0ccd610..0c062b95057 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -313,7 +313,7 @@ if ($result) { print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>'; print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_vat" placeholder="%" size="1" value="'.dol_escape_htmltag($search_vat).'"></td>'; print '<td class="liste_titre">'; - print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth200', 'code2', 1, 0, 1); + print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth150', 'code2', 1, 0, 1); // print '<input type="text" class="flat maxwidth50" name="search_country" value="' . dol_escape_htmltag($search_country) . '">'; print '</td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_tvaintra" value="'.dol_escape_htmltag($search_tvaintra).'"></td>'; @@ -376,7 +376,7 @@ if ($result) { print '<td class="tdoverflowmax100">'; if ($product_static->id > 0) print $product_static->getNomUrl(1); if ($product_static->id > 0 && $objp->product_label) print '<br>'; - if ($objp->product_label) print $objp->product_label; + if ($objp->product_label) print '<span class="opacitymedium">'.$objp->product_label.'</span>'; print '</td>'; // Description @@ -400,7 +400,7 @@ if ($result) { print '<td>'.$objp->tva_intra.'</td>'; print '<td>'; - print $codecompta.' <a href="./card.php?id='.$objp->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].($param ? '?'.$param : '')).'">'; + print $codecompta.' <a class="editfielda" href="./card.php?id='.$objp->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].($param ? '?'.$param : '')).'">'; print img_edit(); print '</a></td>'; print '<td class="center"><input type="checkbox" class="checkforaction" name="changeaccount[]" value="'.$objp->rowid.'"/></td>'; From 66b33573ef725fc8a5e61e298e717b315f7dfb6d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 18:30:38 +0200 Subject: [PATCH 250/780] Fix menu --- htdocs/core/menus/standard/auguria.lib.php | 38 +++------------------- htdocs/core/modules/modAsset.class.php | 2 +- 2 files changed, 5 insertions(+), 35 deletions(-) diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index 97bb28a7c52..4b4a4c54151 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -131,12 +131,12 @@ function print_auguria_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout { //$mysoc->logo_mini=(empty($conf->global->MAIN_INFO_SOCIETE_LOGO_MINI)?'':$conf->global->MAIN_INFO_SOCIETE_LOGO_MINI); $mysoc->logo_squarred_mini = (empty($conf->global->MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI) ? '' : $conf->global->MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI); - + $logoContainerAdditionalClass = 'backgroundforcompanylogo'; if (!empty($conf->global->MAIN_INFO_SOCIETE_LOGO_NO_BACKGROUND)) { $logoContainerAdditionalClass = ''; } - + if (!empty($mysoc->logo_squarred_mini) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_squarred_mini)) { $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_mini); @@ -150,7 +150,7 @@ function print_auguria_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo_squarred_alpha.png'; $logoContainerAdditionalClass = ''; } - + $title = $langs->trans("GoIntoSetupToChangeLogo"); print "\n".'<!-- Show logo on menu -->'."\n"; @@ -364,7 +364,7 @@ function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$t if (!empty($conf->accounting->enabled) && !empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy') // Entry in accountancy journal for each bank account { - $newmenu->add('', $langs->trans("RegistrationInAccounting"), 1, $user->rights->accounting->comptarapport->lire, '', 'accountancy', 'accountancy'); + $newmenu->add('', $langs->trans("RegistrationInAccounting"), 1, $user->rights->accounting->comptarapport->lire, '', 'accountancy', 'accountancy', 10); // Multi journal $sql = "SELECT rowid, code, label, nature"; @@ -419,36 +419,6 @@ function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$t } else dol_print_error($db); $db->free($resql); - - /* - $sql = "SELECT rowid, label, accountancy_journal"; - $sql.= " FROM ".MAIN_DB_PREFIX."bank_account"; - $sql.= " WHERE entity = ".$conf->entity; - $sql.= " AND clos = 0"; - $sql.= " ORDER BY label"; - - $resql = $db->query($sql); - if ($resql) - { - $numr = $db->num_rows($resql); - $i = 0; - - if ($numr > 0) - while ($i < $numr) - { - $objp = $db->fetch_object($resql); - $newmenu->add('/accountancy/journal/bankjournal.php?id_account='.$objp->rowid, $langs->trans("Journal").' - '.$objp->label, 1, $user->rights->accounting->comptarapport->lire,'','accountancy','accountancy_journal'); - $i++; - } - } - else dol_print_error($db); - $db->free($resql); - - // Add other journal - $newmenu->add("/accountancy/journal/sellsjournal.php?leftmenu=journal",$langs->trans("SellsJournal"),1,$user->rights->accounting->comptarapport->lire,'','accountancy','accountancy_journal'); - $newmenu->add("/accountancy/journal/purchasesjournal.php?leftmenu=journal",$langs->trans("PurchasesJournal"),1,$user->rights->accounting->comptarapport->lire,'','accountancy','accountancy_journal'); - $newmenu->add("/accountancy/journal/expensereportsjournal.php?leftmenu=journal",$langs->trans("ExpenseReportsJournal"),1,$user->rights->accounting->comptarapport->lire,'','accountancy','accountancy_journal'); - */ } if (!empty($conf->ftp->enabled) && $mainmenu == 'ftp') // Entry for FTP diff --git a/htdocs/core/modules/modAsset.class.php b/htdocs/core/modules/modAsset.class.php index 4feb38536ce..c11cf34d257 100644 --- a/htdocs/core/modules/modAsset.class.php +++ b/htdocs/core/modules/modAsset.class.php @@ -103,7 +103,7 @@ class modAsset extends DolibarrModules // 1=>array('ASSETS_MYNEWCONST2','chaine','myvalue','This is another constant to add',0, 'current', 1) // ); $this->const = array( - 1=>array('ASSET_MYCONSTANT', 'chaine', 'avalue', 'This is a constant to add', 1, 'allentities', 1) + //1=>array('ASSET_MYCONSTANT', 'chaine', 'avalue', 'This is a constant to add', 1, 'allentities', 1) ); From a0c013d87bfc61db04b84ae33990d6b14112724e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 27 Apr 2020 17:13:23 +0200 Subject: [PATCH 251/780] Fix missing link Conflicts: htdocs/core/class/notify.class.php --- htdocs/core/class/notify.class.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index 59d523b6b44..99910e82ecc 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -314,6 +314,7 @@ class Notify global $user,$conf,$langs,$mysoc; global $hookmanager; global $dolibarr_main_url_root; + global $action; if (! in_array($notifcode, $this->arrayofnotifsupported)) return 0; @@ -524,8 +525,10 @@ class Notify $message.= $mesg; if ($link) $message.= "\n" . $urlwithroot . $link; - $parameters=array('notifcode'=>$notifcode, 'sendto'=>$sendto, 'replyto'=>$replyto, 'file'=>$filename_list, 'mimefile'=>$mimetype_list, 'filename'=>$mimefilename_list); - $reshook=$hookmanager->executeHooks('formatNotificationMessage', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks + $parameters = array('notifcode'=>$notifcode, 'sendto'=>$sendto, 'replyto'=>$replyto, 'file'=>$filename_list, 'mimefile'=>$mimetype_list, 'filename'=>$mimefilename_list); + if (!isset($action)) $action = ''; + + $reshook = $hookmanager->executeHooks('formatNotificationMessage', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) { if (! empty($hookmanager->resArray['subject'])) $subject.=$hookmanager->resArray['subject']; @@ -694,21 +697,25 @@ class Notify $mesg = $langs->transnoentitiesnoconv("EMailTextExpeditionValidated", $newref); break; case 'EXPENSE_REPORT_VALIDATE': + $link = '<a href="'.$urlwithroot.'/expensereport/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->expensereport->dir_output; $object_type = 'expensereport'; $mesg = $langs->transnoentitiesnoconv("EMailTextExpenseReportValidated", $newref); break; case 'EXPENSE_REPORT_APPROVE': + $link = '<a href="'.$urlwithroot.'/expensereport/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->expensereport->dir_output; $object_type = 'expensereport'; $mesg = $langs->transnoentitiesnoconv("EMailTextExpenseReportApproved", $newref); break; case 'HOLIDAY_VALIDATE': + $link = '<a href="'.$urlwithroot.'/holiday/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->holiday->dir_output; $object_type = 'holiday'; $mesg = $langs->transnoentitiesnoconv("EMailTextHolidayValidated", $newref); break; case 'HOLIDAY_APPROVE': + $link = '<a href="'.$urlwithroot.'/holiday/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->holiday->dir_output; $object_type = 'holiday'; $mesg = $langs->transnoentitiesnoconv("EMailTextHolidayApproved", $newref); From 4d22baabfe3bbc4a5e59fd036cb9237a3a7bf531 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 19:40:25 +0200 Subject: [PATCH 252/780] CSS --- htdocs/public/payment/newpayment.php | 6 +++--- htdocs/theme/eldy/global.inc.php | 5 ++++- htdocs/theme/md/style.css.php | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index 8b1e8a42574..5beab4fcc3b 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -1719,7 +1719,7 @@ if ($action != 'dopayment') if ((empty($paymentmethod) || $paymentmethod == 'paybox') && !empty($conf->paybox->enabled)) { - print '<br><div class="button buttonpayment" id="div_dopayment_paybox"><span class="fa fa-credit-card"></span> <input class="" type="submit" id="dopayment_paybox" name="dopayment_paybox" value="'.$langs->trans("PayBoxDoPayment").'">'; + print '<div class="button buttonpayment" id="div_dopayment_paybox"><span class="fa fa-credit-card"></span> <input class="" type="submit" id="dopayment_paybox" name="dopayment_paybox" value="'.$langs->trans("PayBoxDoPayment").'">'; print '<br>'; print '<span class="buttonpaymentsmall">'.$langs->trans("CreditOrDebitCard").'</span>'; print '</div>'; @@ -1739,7 +1739,7 @@ if ($action != 'dopayment') if ((empty($paymentmethod) || $paymentmethod == 'stripe') && !empty($conf->stripe->enabled)) { - print '<br><div class="button buttonpayment" id="div_dopayment_stripe"><span class="fa fa-credit-card"></span> <input class="" type="submit" id="dopayment_stripe" name="dopayment_stripe" value="'.$langs->trans("StripeDoPayment").'">'; + print '<div class="button buttonpayment" id="div_dopayment_stripe"><span class="fa fa-credit-card"></span> <input class="" type="submit" id="dopayment_stripe" name="dopayment_stripe" value="'.$langs->trans("StripeDoPayment").'">'; print '<input type="hidden" name="noidempotency" value="'.GETPOST('noidempotency', 'int').'">'; print '<br>'; print '<span class="buttonpaymentsmall">'.$langs->trans("CreditOrDebitCard").'</span>'; @@ -1763,7 +1763,7 @@ if ($action != 'dopayment') { if (empty($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY)) $conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY = 'integral'; - print '<br><div class="button buttonpayment" id="div_dopayment_paypal"><span class="fa fa-paypal"></span> <input class="" type="submit" id="dopayment_paypal" name="dopayment_paypal" value="'.$langs->trans("PaypalDoPayment").'">'; + print '<div class="button buttonpayment" id="div_dopayment_paypal"><span class="fa fa-paypal"></span> <input class="" type="submit" id="dopayment_paypal" name="dopayment_paypal" value="'.$langs->trans("PaypalDoPayment").'">'; if ($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY == 'integral') { print '<br>'; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 9a152fdb91f..c45f2ad1e77 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -240,6 +240,7 @@ input.buttongen { input.buttonpayment, button.buttonpayment, div.buttonpayment { min-width: 290px; margin-bottom: 15px; + margin-top: 15px; background-image: none; line-height: 24px; padding: 8px; @@ -251,6 +252,8 @@ input.buttonpayment, button.buttonpayment, div.buttonpayment { box-shadow: 1px 1px 4px #bbb; color: #fff; border-radius: 4px; + cursor: pointer; + max-width: 350px; } div.buttonpayment input:focus { color: #008; @@ -411,7 +414,7 @@ div#moretabsList, div#moretabsListaction { hr { border: 0; border-top: 1px solid #ccc; } .tabBar hr { margin-top: 20px; margin-bottom: 17px; } -.button:not(.bordertransp), .buttonDelete:not(.bordertransp) { +.button:not(.bordertransp):not(.buttonpayment), .buttonDelete:not(.bordertransp):not(.buttonpayment) { margin-bottom: 0; margin-top: 0; margin-left: 5px; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index dcc9ce34886..dfcc413986f 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -393,7 +393,7 @@ input.buttongen { input.buttonpayment, button.buttonpayment, div.buttonpayment { min-width: 290px; margin-bottom: 15px; - margin-top: 0; + margin-top: 15px; margin-left: 5px; margin-right: 5px; background-image: none; @@ -566,7 +566,7 @@ div#moretabsList, div#moretabsListaction { hr { border: 0; border-top: 1px solid #ccc; } -.button:not(.bordertransp), .buttonDelete:not(.bordertransp) { +.button:not(.bordertransp):not(.buttonpayment), .buttonDelete:not(.bordertransp):not(.buttonpayment) { border-color: #c5c5c5; border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); display: inline-block; From e68f51c4cd1ccb5938e0c3887669fd851ed1cdfb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 19:42:39 +0200 Subject: [PATCH 253/780] csss --- htdocs/theme/eldy/global.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index c45f2ad1e77..c559fcec9ad 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -241,6 +241,7 @@ input.buttonpayment, button.buttonpayment, div.buttonpayment { min-width: 290px; margin-bottom: 15px; margin-top: 15px; + height: 60px; background-image: none; line-height: 24px; padding: 8px; From a7815e0aac59ccde98283833614d48b37072d7c2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 19:44:32 +0200 Subject: [PATCH 254/780] css --- htdocs/public/payment/newpayment.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index 5beab4fcc3b..dd670928a5c 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -1763,7 +1763,11 @@ if ($action != 'dopayment') { if (empty($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY)) $conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY = 'integral'; - print '<div class="button buttonpayment" id="div_dopayment_paypal"><span class="fa fa-paypal"></span> <input class="" type="submit" id="dopayment_paypal" name="dopayment_paypal" value="'.$langs->trans("PaypalDoPayment").'">'; + print '<div class="button buttonpayment" id="div_dopayment_paypal">'; + if ($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY != 'integral') { + print '<br>'; + } + print '<span class="fa fa-paypal"></span> <input class="" type="submit" id="dopayment_paypal" name="dopayment_paypal" value="'.$langs->trans("PaypalDoPayment").'">'; if ($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY == 'integral') { print '<br>'; From 293034dd89b26c57d1f0b1e5c9aed81524cd73f8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 19:47:31 +0200 Subject: [PATCH 255/780] css --- htdocs/public/payment/newpayment.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index dd670928a5c..ddd1943329e 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -1765,7 +1765,7 @@ if ($action != 'dopayment') print '<div class="button buttonpayment" id="div_dopayment_paypal">'; if ($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY != 'integral') { - print '<br>'; + print '<div style="line-height: 1em"> </div>'; } print '<span class="fa fa-paypal"></span> <input class="" type="submit" id="dopayment_paypal" name="dopayment_paypal" value="'.$langs->trans("PaypalDoPayment").'">'; if ($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY == 'integral') From f8dfe886ac67aff9e088c6b0c03e6c219a6f2162 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Apr 2020 20:52:24 +0200 Subject: [PATCH 256/780] Fix css --- htdocs/compta/bank/bankentries_list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index 7b531d31bc0..7d059734126 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -1519,7 +1519,7 @@ if ($resql) // Transaction reconciliated or edit link if ($objp->conciliated && $bankaccount->canBeConciliated() > 0) // If line not conciliated and account can be conciliated { - print '<a href="'.DOL_URL_ROOT.'/compta/bank/line.php?save_lastsearch_values=1&rowid='.$objp->rowid.'&account='.$objp->bankid.'&page='.$page.'">'; + print '<a class="editfielda" href="'.DOL_URL_ROOT.'/compta/bank/line.php?save_lastsearch_values=1&rowid='.$objp->rowid.'&account='.$objp->bankid.'&page='.$page.'">'; print img_edit(); print '</a>'; } From 40f1bed8d0dfaaabb4712f445f1fc9561d84111d Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" <maxime@indelog.fr> Date: Wed, 29 Apr 2020 09:15:27 +0200 Subject: [PATCH 257/780] Add possibility to filter stats by ThirdParty type and categorie --- .../comm/propal/class/propalestats.class.php | 24 +++++++++++++- htdocs/comm/propal/stats/index.php | 33 ++++++++++++++++--- htdocs/commande/class/commandestats.class.php | 24 +++++++++++++- htdocs/commande/stats/index.php | 30 ++++++++++++++++- .../facture/class/facturestats.class.php | 26 ++++++++++++++- htdocs/compta/facture/stats/index.php | 32 ++++++++++++++++-- 6 files changed, 159 insertions(+), 10 deletions(-) diff --git a/htdocs/comm/propal/class/propalestats.class.php b/htdocs/comm/propal/class/propalestats.class.php index d5c48006430..655ccda2a80 100644 --- a/htdocs/comm/propal/class/propalestats.class.php +++ b/htdocs/comm/propal/class/propalestats.class.php @@ -3,6 +3,7 @@ * Copyright (c) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com> * Copyright (c) 2011 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * * 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 @@ -46,6 +47,7 @@ class PropaleStats extends Stats public $from; public $field; public $where; + public $join; /** @@ -56,13 +58,14 @@ class PropaleStats extends Stats * @param int $userid Id user for filter (creation user) * @param string $mode Option ('customer', 'supplier') */ - public function __construct($db, $socid = 0, $userid = 0, $mode = 'customer') + public function __construct($db, $socid = 0, $userid = 0, $mode = 'customer', $typentid = 0, $categid = 0) { global $user, $conf; $this->db = $db; $this->socid = ($socid > 0 ? $socid : 0); $this->userid = $userid; + $this->join = ''; if ($mode == 'customer') { @@ -96,6 +99,19 @@ class PropaleStats extends Stats $this->where .= " AND p.fk_soc = ".$this->socid; } if ($this->userid > 0) $this->where .= ' AND fk_user_author = '.$this->userid; + + if ($typentid) + { + $this->join .= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON s.rowid = p.fk_soc'; + $this->where .= ' AND s.fk_typent = '.$typentid; + } + + if ($categid) + { + $this->join .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_societe as cs ON cs.fk_soc = p.fk_soc'; + $this->join .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie as c ON c.rowid = cs.fk_categorie'; + $this->where .= ' AND c.rowid = '.$categid; + } } @@ -113,6 +129,7 @@ class PropaleStats extends Stats $sql = "SELECT date_format(".$this->field_date.",'%m') as dm, COUNT(*) as nb"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->field_date." BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; @@ -135,6 +152,7 @@ class PropaleStats extends Stats $sql = "SELECT date_format(".$this->field_date.",'%Y') as dm, COUNT(*) as nb, SUM(c.".$this->field.")"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->where; $sql .= " GROUP BY dm"; $sql .= $this->db->order('dm', 'DESC'); @@ -156,6 +174,7 @@ class PropaleStats extends Stats $sql = "SELECT date_format(".$this->field_date.",'%m') as dm, SUM(p.".$this->field.")"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->field_date." BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; @@ -178,6 +197,7 @@ class PropaleStats extends Stats $sql = "SELECT date_format(".$this->field_date.",'%m') as dm, AVG(p.".$this->field.")"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->field_date." BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; @@ -198,6 +218,7 @@ class PropaleStats extends Stats $sql = "SELECT date_format(".$this->field_date.",'%Y') as year, COUNT(*) as nb, SUM(".$this->field.") as total, AVG(".$this->field.") as avg"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->where; $sql .= " GROUP BY year"; $sql .= $this->db->order('year', 'DESC'); @@ -221,6 +242,7 @@ class PropaleStats extends Stats $sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg"; $sql .= " FROM ".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product"; if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->where; $sql .= " AND p.rowid = tl.fk_propal AND tl.fk_product = product.rowid"; $sql .= " AND ".$this->field_date." BETWEEN '".$this->db->idate(dol_get_first_day($year, 1, false))."' AND '".$this->db->idate(dol_get_last_day($year, 12, false))."'"; diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php index 3fee370c89b..78fbf725929 100644 --- a/htdocs/comm/propal/stats/index.php +++ b/htdocs/comm/propal/stats/index.php @@ -4,6 +4,7 @@ * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com> * Copyright (C) 2012 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * * 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 @@ -28,7 +29,10 @@ require '../../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propalestats.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formpropal.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; $WIDTH = DolGraph::getDefaultGraphSizeForStats('width'); $HEIGHT = DolGraph::getDefaultGraphSizeForStats('height'); @@ -38,6 +42,8 @@ if ($mode == 'customer' && !$user->rights->propale->lire) accessforbidden(); if ($mode == 'supplier' && !$user->rights->supplier_proposal->lire) accessforbidden(); $object_status = GETPOST('object_status'); +$typent_id = GETPOST('typent_id', 'int'); +$categ_id = GETPOST('categ_id', 'categ_id'); $userid = GETPOST('userid', 'int'); $socid = GETPOST('socid', 'int'); @@ -64,17 +70,26 @@ $langs->loadLangs(array('orders', 'companies', 'other', 'suppliers', 'supplier_p $form = new Form($db); $formpropal = new FormPropal($db); +$formcompany = new FormCompany($db); +$formother = new FormOther($db); $langs->loadLangs(array('propal', 'other', 'companies')); -$picto = 'propal'; -$title = $langs->trans("ProposalsStatistics"); -$dir = $conf->propale->dir_temp; +if ($mode == 'customer') +{ + $picto = 'propal'; + $title = $langs->trans("ProposalsStatistics"); + $dir = $conf->propale->dir_temp; + $cat_type = Categorie::TYPE_CUSTOMER; + $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); +} if ($mode == 'supplier') { $picto = 'supplier_proposal'; $title = $langs->trans("ProposalsStatisticsSuppliers").' ('.$langs->trans("SentToSuppliers").")"; $dir = $conf->supplier_proposal->dir_temp; + $cat_type = Categorie::TYPE_SUPPLIER; + $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); } llxHeader('', $title); @@ -85,7 +100,7 @@ print load_fiche_titre($title, '', $picto); dol_mkdir($dir); -$stats = new PropaleStats($db, $socid, ($userid > 0 ? $userid : 0), $mode); +$stats = new PropaleStats($db, $socid, ($userid > 0 ? $userid : 0), $mode, ($typent_id > 0 ? $typent_id : 0), ($categ_id > 0 ? $categ_id : 0)); if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND p.fk_statut IN ('.$db->escape($object_status).')'; // Build graphic number of object @@ -251,6 +266,16 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; $filter = 's.client IN (1,2,3)'; print $form->select_company($socid, 'socid', $filter, 1, 0, 0, array(), 0, '', 'style="width: 95%"'); print '</td></tr>'; + // ThirdParty Type + print '<tr><td>'.$langs->trans("ThirdPartyType").'</td><td>'; + $sortparam_typent = (empty($conf->global->SOCIETE_SORT_ON_TYPEENT) ? 'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT); // NONE means we keep sort of original array, so we sort on position. ASC, means next function will sort on label. + print $form->selectarray("typent_id", $formcompany->typent_array(0), $typent_id, 0, 0, 0, '', 0, 0, 0, $sortparam_typent); + if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); + print '</td></tr>'; + // Category + print '<tr><td>'.$cat_label.'</td><td>'; + print $formother->select_categories($cat_type, $categ_id, 'categ_id', true); + print '</td></tr>'; // User print '<tr><td class="left">'.$langs->trans("CreatedBy").'</td><td class="left">'; print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); diff --git a/htdocs/commande/class/commandestats.class.php b/htdocs/commande/class/commandestats.class.php index 8b6dc4db6ec..e040a1b1ce1 100644 --- a/htdocs/commande/class/commandestats.class.php +++ b/htdocs/commande/class/commandestats.class.php @@ -3,6 +3,7 @@ * Copyright (c) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com> * Copyright (C) 2012 Marcos García <marcosgdf@gmail.com> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.com> * * 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 @@ -45,6 +46,7 @@ class CommandeStats extends Stats public $from; public $field; public $where; + public $join; /** @@ -55,7 +57,7 @@ class CommandeStats extends Stats * @param string $mode Option ('customer', 'supplier') * @param int $userid Id user for filter (creation user) */ - public function __construct($db, $socid, $mode, $userid = 0) + public function __construct($db, $socid, $mode, $userid = 0, $typentid = 0, $categid = 0) { global $user, $conf; @@ -64,6 +66,7 @@ class CommandeStats extends Stats $this->socid = ($socid > 0 ? $socid : 0); $this->userid = $userid; $this->cachefilesuffix = $mode; + $this->join = ''; if ($mode == 'customer') { @@ -92,6 +95,19 @@ class CommandeStats extends Stats $this->where .= " AND c.fk_soc = ".$this->socid; } if ($this->userid > 0) $this->where .= ' AND c.fk_user_author = '.$this->userid; + + if ($typentid) + { + $this->join .= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON s.rowid = c.fk_soc'; + $this->where .= ' AND s.fk_typent = '.$typentid; + } + + if ($categid) + { + $this->join .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_societe as cats ON cats.fk_soc = c.fk_soc'; + $this->join .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie as cat ON cat.rowid = cats.fk_categorie'; + $this->where .= ' AND cat.rowid = '.$categid; + } } /** @@ -108,6 +124,7 @@ class CommandeStats extends Stats $sql = "SELECT date_format(c.date_commande,'%m') as dm, COUNT(*) as nb"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE c.date_commande BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; @@ -130,6 +147,7 @@ class CommandeStats extends Stats $sql = "SELECT date_format(c.date_commande,'%Y') as dm, COUNT(*) as nb, SUM(c.".$this->field.")"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->where; $sql .= " GROUP BY dm"; $sql .= $this->db->order('dm', 'DESC'); @@ -151,6 +169,7 @@ class CommandeStats extends Stats $sql = "SELECT date_format(c.date_commande,'%m') as dm, SUM(c.".$this->field.")"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE c.date_commande BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; @@ -173,6 +192,7 @@ class CommandeStats extends Stats $sql = "SELECT date_format(c.date_commande,'%m') as dm, AVG(c.".$this->field.")"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE c.date_commande BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; @@ -193,6 +213,7 @@ class CommandeStats extends Stats $sql = "SELECT date_format(c.date_commande,'%Y') as year, COUNT(*) as nb, SUM(c.".$this->field.") as total, AVG(".$this->field.") as avg"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->where; $sql .= " GROUP BY year"; $sql .= $this->db->order('year', 'DESC'); @@ -214,6 +235,7 @@ class CommandeStats extends Stats $sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg"; $sql .= " FROM ".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product"; if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->where; $sql .= " AND c.rowid = tl.fk_commande AND tl.fk_product = product.rowid"; $sql .= " AND c.date_commande BETWEEN '".$this->db->idate(dol_get_first_day($year, 1, false))."' AND '".$this->db->idate(dol_get_last_day($year, 12, false))."'"; diff --git a/htdocs/commande/stats/index.php b/htdocs/commande/stats/index.php index 16cef93d228..d009621dc82 100644 --- a/htdocs/commande/stats/index.php +++ b/htdocs/commande/stats/index.php @@ -4,6 +4,7 @@ * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com> * Copyright (C) 2012 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * * 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 @@ -28,7 +29,10 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; require_once DOL_DOCUMENT_ROOT.'/commande/class/commandestats.class.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formorder.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; $WIDTH = DolGraph::getDefaultGraphSizeForStats('width'); @@ -39,6 +43,8 @@ if ($mode == 'customer' && !$user->rights->commande->lire) accessforbidden(); if ($mode == 'supplier' && !$user->rights->fournisseur->commande->lire) accessforbidden(); $object_status = GETPOST('object_status'); +$typent_id = GETPOST('typent_id', 'int'); +$categ_id = GETPOST('categ_id', 'categ_id'); $userid = GETPOST('userid', 'int'); $socid = GETPOST('socid', 'int'); @@ -65,6 +71,8 @@ $langs->loadLangs(array('orders', 'companies', 'other', 'suppliers')); $form = new Form($db); $formorder = new FormOrder($db); +$formcompany = new FormCompany($db); +$formother = new FormOther($db); $picto = 'order'; $title = $langs->trans("OrdersStatistics"); @@ -83,7 +91,7 @@ print load_fiche_titre($title, '', $picto); dol_mkdir($dir); -$stats = new CommandeStats($db, $socid, $mode, ($userid > 0 ? $userid : 0)); +$stats = new CommandeStats($db, $socid, $mode, ($userid > 0 ? $userid : 0), ($typent_id > 0 ? $typent_id : 0), ($categ_id > 0 ? $categ_id : 0)); if ($mode == 'customer') { if ($object_status != '' && $object_status >= -1) $stats->where .= ' AND c.fk_statut IN ('.$db->escape($object_status).')'; @@ -266,6 +274,26 @@ if ($mode == 'customer') $filter = 's.client IN (1,2,3)'; if ($mode == 'supplier') $filter = 's.fournisseur = 1'; print $form->select_company($socid, 'socid', $filter, 1, 0, 0, array(), 0, '', 'style="width: 95%"'); print '</td></tr>'; +// ThirdParty Type +print '<tr><td>'.$langs->trans("ThirdPartyType").'</td><td>'; +$sortparam_typent = (empty($conf->global->SOCIETE_SORT_ON_TYPEENT) ? 'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT); // NONE means we keep sort of original array, so we sort on position. ASC, means next function will sort on label. +print $form->selectarray("typent_id", $formcompany->typent_array(0), $typent_id, 0, 0, 0, '', 0, 0, 0, $sortparam_typent); +if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); +print '</td></tr>'; +// Category +if ($mode == 'customer') +{ + $cat_type = Categorie::TYPE_CUSTOMER; + $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); +} +if ($mode == 'supplier') +{ + $cat_type = Categorie::TYPE_SUPPLIER; + $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); +} +print '<tr><td>'.$cat_label.'</td><td>'; +print $formother->select_categories($cat_type, $categ_id, 'categ_id', true); +print '</td></tr>'; // User print '<tr><td class="left">'.$langs->trans("CreatedBy").'</td><td class="left">'; print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); diff --git a/htdocs/compta/facture/class/facturestats.class.php b/htdocs/compta/facture/class/facturestats.class.php index ea0b17bc59a..d280b7745e2 100644 --- a/htdocs/compta/facture/class/facturestats.class.php +++ b/htdocs/compta/facture/class/facturestats.class.php @@ -2,6 +2,7 @@ /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (c) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * * 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 @@ -43,6 +44,7 @@ class FactureStats extends Stats public $from; public $field; public $where; + public $join; /** @@ -52,8 +54,9 @@ class FactureStats extends Stats * @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user. * @param string $mode Option ('customer', 'supplier') * @param int $userid Id user for filter (creation user) + * @param int $ Id user for filter (creation user) */ - public function __construct($db, $socid, $mode, $userid = 0) + public function __construct($db, $socid, $mode, $userid = 0, $typentid = 0, $categid = 0) { global $user, $conf; @@ -61,6 +64,7 @@ class FactureStats extends Stats $this->socid = ($socid > 0 ? $socid : 0); $this->userid = $userid; $this->cachefilesuffix = $mode; + $this->join = ''; if ($mode == 'customer') { @@ -79,6 +83,7 @@ class FactureStats extends Stats $this->field_line = 'total_ht'; } + $this->where = " f.fk_statut >= 0"; $this->where .= " AND f.entity IN (".getEntity('invoice').")"; if (!$user->rights->societe->client->voir && !$this->socid) $this->where .= " AND f.fk_soc = sc.fk_soc AND sc.fk_user = ".$user->id; @@ -90,6 +95,19 @@ class FactureStats extends Stats if ($this->userid > 0) $this->where .= ' AND f.fk_user_author = '.$this->userid; if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $this->where .= " AND f.type IN (0,1,2,5)"; else $this->where .= " AND f.type IN (0,1,2,3,5)"; + + if ($typentid) + { + $this->join .= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON s.rowid = f.fk_soc'; + $this->where .= ' AND s.fk_typent = '.$typentid; + } + + if ($categid) + { + $this->join .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_societe as cs ON cs.fk_soc = f.fk_soc'; + $this->join .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie as c ON c.rowid = cs.fk_categorie'; + $this->where .= ' AND c.rowid = '.$categid; + } } @@ -107,6 +125,7 @@ class FactureStats extends Stats $sql = "SELECT date_format(f.datef,'%m') as dm, COUNT(*) as nb"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; @@ -130,6 +149,7 @@ class FactureStats extends Stats $sql = "SELECT date_format(f.datef,'%Y') as dm, COUNT(*), SUM(c.".$this->field.")"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->where; $sql .= " GROUP BY dm"; $sql .= $this->db->order('dm', 'DESC'); @@ -152,6 +172,7 @@ class FactureStats extends Stats $sql = "SELECT date_format(datef,'%m') as dm, SUM(f.".$this->field.")"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; @@ -175,6 +196,7 @@ class FactureStats extends Stats $sql = "SELECT date_format(datef,'%m') as dm, AVG(f.".$this->field.")"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; @@ -195,6 +217,7 @@ class FactureStats extends Stats $sql = "SELECT date_format(datef,'%Y') as year, COUNT(*) as nb, SUM(f.".$this->field.") as total, AVG(f.".$this->field.") as avg"; $sql .= " FROM ".$this->from; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->where; $sql .= " GROUP BY year"; $sql .= $this->db->order('year', 'DESC'); @@ -216,6 +239,7 @@ class FactureStats extends Stats $sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg"; $sql .= " FROM ".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product"; if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= $this->join; $sql .= " WHERE ".$this->where; $sql .= " AND f.rowid = tl.fk_facture AND tl.fk_product = product.rowid"; $sql .= " AND f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year, 1, false))."' AND '".$this->db->idate(dol_get_last_day($year, 12, false))."'"; diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 36dfab5a3c4..b1af8064d9f 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -4,6 +4,7 @@ * Copyright (C) 2012 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * * 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 @@ -27,6 +28,9 @@ require '../../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facturestats.class.php'; $WIDTH = DolGraph::getDefaultGraphSizeForStats('width'); @@ -40,6 +44,8 @@ if ($mode == 'customer' && !$user->rights->facture->lire) accessforbidden(); if ($mode == 'supplier' && !$user->rights->fournisseur->facture->lire) accessforbidden(); $object_status = GETPOST('object_status'); +$typent_id = GETPOST('typent_id', 'int'); +$categ_id = GETPOST('categ_id', 'categ_id'); $userid = GETPOST('userid', 'int'); $socid = GETPOST('socid', 'int'); @@ -62,6 +68,8 @@ $endyear = $year; */ $form = new Form($db); +$formcompany = new FormCompany($db); +$formother = new FormOther($db); llxHeader(); @@ -81,7 +89,7 @@ print load_fiche_titre($title, '', $picto); dol_mkdir($dir); -$stats = new FactureStats($db, $socid, $mode, ($userid > 0 ? $userid : 0)); +$stats = new FactureStats($db, $socid, $mode, ($userid > 0 ? $userid : 0), ($typent_id > 0 ? $typent_id : 0), ($categ_id > 0 ? $categ_id : 0)); if ($mode == 'customer') { if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND f.fk_statut IN ('.$db->escape($object_status).')'; @@ -248,6 +256,26 @@ if ($mode == 'customer') $filter = 's.client in (1,2,3)'; if ($mode == 'supplier') $filter = 's.fournisseur = 1'; print $form->selectarray('socid', $companies, $socid, 1, 0, 0, 'style="width: 95%"', 0, 0, 0, '', '', 1); print '</td></tr>'; +// ThirdParty Type +print '<tr><td>'.$langs->trans("ThirdPartyType").'</td><td>'; +$sortparam_typent = (empty($conf->global->SOCIETE_SORT_ON_TYPEENT) ? 'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT); // NONE means we keep sort of original array, so we sort on position. ASC, means next function will sort on label. +print $form->selectarray("typent_id", $formcompany->typent_array(0), $typent_id, 0, 0, 0, '', 0, 0, 0, $sortparam_typent); +if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); +print '</td></tr>'; +// Category +print '<tr><td>'.$cat_label.'</td><td>'; +if ($mode == 'customer') +{ + $cat_type = Categorie::TYPE_CUSTOMER; + $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); +} +if ($mode == 'supplier') +{ + $cat_type = Categorie::TYPE_SUPPLIER; + $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); +} +print $formother->select_categories($cat_type, $categ_id, 'categ_id', true); +print '</td></tr>'; // User print '<tr><td>'.$langs->trans("CreatedBy").'</td><td>'; print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); @@ -256,7 +284,7 @@ print '</td></tr>'; print '<tr><td class="left">'.$langs->trans("Status").'</td><td class="left">'; if ($mode == 'customer') { - $liststatus = array('0'=>$langs->trans("BillStatusDraft"), '1'=>$langs->trans("BillStatusNotPaid"), '2'=>$langs->trans("BillStatusPaid"), '3'=>$langs->trans("BillStatusCanceled")); + $liststatus = array('0'=>$langs->trans("BillStatusDraft"), '1'=>$langs->trans("BillStatusNotPaid"), '2'=>$langs->trans("BillStatusPaid"), '1,2'=>$langs->trans("BillStatusNotPaid").' / '.$langs->trans("BillStatusPaid"), '3'=>$langs->trans("BillStatusCanceled")); print $form->selectarray('object_status', $liststatus, $object_status, 1); } if ($mode == 'supplier') From 1bd93720222243a017cd50822843849622149fd8 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" <maxime@indelog.fr> Date: Wed, 29 Apr 2020 10:00:29 +0200 Subject: [PATCH 258/780] Forgot comments to document news params for the modified methods --- htdocs/comm/propal/class/propalestats.class.php | 10 ++++++---- htdocs/commande/class/commandestats.class.php | 10 ++++++---- htdocs/compta/facture/class/facturestats.class.php | 3 ++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/htdocs/comm/propal/class/propalestats.class.php b/htdocs/comm/propal/class/propalestats.class.php index 655ccda2a80..747bb75433c 100644 --- a/htdocs/comm/propal/class/propalestats.class.php +++ b/htdocs/comm/propal/class/propalestats.class.php @@ -53,10 +53,12 @@ class PropaleStats extends Stats /** * Constructor * - * @param DoliDB $db Database handler - * @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user. - * @param int $userid Id user for filter (creation user) - * @param string $mode Option ('customer', 'supplier') + * @param DoliDB $db Database handler + * @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user. + * @param int $userid Id user for filter (creation user) + * @param string $mode Option ('customer', 'supplier') + * @param int $typentid Id typent of thirdpary for filter + * @param int $categid Id category of thirdpary for filter */ public function __construct($db, $socid = 0, $userid = 0, $mode = 'customer', $typentid = 0, $categid = 0) { diff --git a/htdocs/commande/class/commandestats.class.php b/htdocs/commande/class/commandestats.class.php index e040a1b1ce1..cbb93b940de 100644 --- a/htdocs/commande/class/commandestats.class.php +++ b/htdocs/commande/class/commandestats.class.php @@ -52,10 +52,12 @@ class CommandeStats extends Stats /** * Constructor * - * @param DoliDB $db Database handler - * @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user. - * @param string $mode Option ('customer', 'supplier') - * @param int $userid Id user for filter (creation user) + * @param DoliDB $db Database handler + * @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user. + * @param string $mode Option ('customer', 'supplier') + * @param int $userid Id user for filter (creation user) + * @param int $typentid Id typent of thirdpary for filter + * @param int $categid Id category of thirdpary for filter */ public function __construct($db, $socid, $mode, $userid = 0, $typentid = 0, $categid = 0) { diff --git a/htdocs/compta/facture/class/facturestats.class.php b/htdocs/compta/facture/class/facturestats.class.php index d280b7745e2..6b95c939e2a 100644 --- a/htdocs/compta/facture/class/facturestats.class.php +++ b/htdocs/compta/facture/class/facturestats.class.php @@ -54,7 +54,8 @@ class FactureStats extends Stats * @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user. * @param string $mode Option ('customer', 'supplier') * @param int $userid Id user for filter (creation user) - * @param int $ Id user for filter (creation user) + * @param int $typentid Id typent of thirdpary for filter + * @param int $categid Id category of thirdpary for filter */ public function __construct($db, $socid, $mode, $userid = 0, $typentid = 0, $categid = 0) { From 56dee72b66a6300cd2ac2b12598bfe0334b73297 Mon Sep 17 00:00:00 2001 From: Tobias Sekan <tobias.sekan@startmail.com> Date: Wed, 29 Apr 2020 13:30:14 +0200 Subject: [PATCH 259/780] add tooltip for unit_type and scale (admin) --- htdocs/admin/dict.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 3c19121d424..15cfd9ed9db 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -503,7 +503,7 @@ $tabhelp[33] = array('code'=>$langs->trans("EnterAnyCode")); $tabhelp[34] = array('code'=>$langs->trans("EnterAnyCode")); $tabhelp[35] = array(); $tabhelp[36] = array('range_ik'=>$langs->trans('PrevRangeToThisRange')); -$tabhelp[37] = array('code'=>$langs->trans("EnterAnyCode")); +$tabhelp[37] = array('code'=>$langs->trans("EnterAnyCode"), 'unit_type' => $langs->trans('MeasuringUnitTypeDesc'), 'scale' => $langs->trans('MeasuringScaleDesc')); $tabhelp[38] = array('code'=>$langs->trans("EnterAnyCode"), 'url' => $langs->trans('UrlSocialNetworksDesc'), 'icon' => $langs->trans('FafaIconSocialNetworksDesc')); // List of check for fields (NOT USED YET) From 9e7c0c14d95ef8764a29d8755f9235a1733b05a7 Mon Sep 17 00:00:00 2001 From: Tobias Sekan <tobias.sekan@startmail.com> Date: Wed, 29 Apr 2020 13:30:58 +0200 Subject: [PATCH 260/780] Add two new lang entries (admin) --- htdocs/langs/en_US/admin.lang | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 96bb77a5064..d19d928cdbd 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1995,3 +1995,5 @@ PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard JumpToBoxes=Jump to Setup -> Widgets +MeasuringUnitTypeDesc=For the product units like weight, length, area and volume use "size", "surface", "volume" or "weight" as Unit_type +MeasuringScaleDesc=The scale for the Unit_types "size", "surface", "volume" and "weight" can only we have values from -127 up to 128. From 398b0234ea95309a3d85245c1844bf3e51502527 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" <maxime@indelog.fr> Date: Wed, 29 Apr 2020 14:08:31 +0200 Subject: [PATCH 261/780] Correct label for select thirdparty categorie in invoice stats --- htdocs/compta/facture/stats/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index b1af8064d9f..513e1d6a0a2 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -263,7 +263,6 @@ print $form->selectarray("typent_id", $formcompany->typent_array(0), $typent_id, if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td></tr>'; // Category -print '<tr><td>'.$cat_label.'</td><td>'; if ($mode == 'customer') { $cat_type = Categorie::TYPE_CUSTOMER; @@ -274,6 +273,7 @@ if ($mode == 'supplier') $cat_type = Categorie::TYPE_SUPPLIER; $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); } +print '<tr><td>'.$cat_label.'</td><td>'; print $formother->select_categories($cat_type, $categ_id, 'categ_id', true); print '</td></tr>'; // User From 790cffb7ae4e0b461b226044023fa360fea17809 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" <maxime@indelog.fr> Date: Wed, 29 Apr 2020 15:24:13 +0200 Subject: [PATCH 262/780] Correct select label for categories in stats pages --- htdocs/comm/propal/stats/index.php | 2 +- htdocs/commande/stats/index.php | 2 +- htdocs/compta/facture/stats/index.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php index 78fbf725929..add31f13f08 100644 --- a/htdocs/comm/propal/stats/index.php +++ b/htdocs/comm/propal/stats/index.php @@ -89,7 +89,7 @@ if ($mode == 'supplier') $title = $langs->trans("ProposalsStatisticsSuppliers").' ('.$langs->trans("SentToSuppliers").")"; $dir = $conf->supplier_proposal->dir_temp; $cat_type = Categorie::TYPE_SUPPLIER; - $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); + $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Supplier")); } llxHeader('', $title); diff --git a/htdocs/commande/stats/index.php b/htdocs/commande/stats/index.php index d009621dc82..4e7ed481882 100644 --- a/htdocs/commande/stats/index.php +++ b/htdocs/commande/stats/index.php @@ -289,7 +289,7 @@ if ($mode == 'customer') if ($mode == 'supplier') { $cat_type = Categorie::TYPE_SUPPLIER; - $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); + $cat_label = $langs->trans("Supplier").' '.lcfirst($langs->trans("Customer")); } print '<tr><td>'.$cat_label.'</td><td>'; print $formother->select_categories($cat_type, $categ_id, 'categ_id', true); diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 513e1d6a0a2..f5472196cc2 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -271,7 +271,7 @@ if ($mode == 'customer') if ($mode == 'supplier') { $cat_type = Categorie::TYPE_SUPPLIER; - $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); + $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Supplier")); } print '<tr><td>'.$cat_label.'</td><td>'; print $formother->select_categories($cat_type, $categ_id, 'categ_id', true); From 84bca036c9eb20c073b1a6549d090deed4a808a6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 29 Apr 2020 18:03:28 +0200 Subject: [PATCH 263/780] FIX Link missing into email of some notification --- htdocs/core/class/notify.class.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index 99910e82ecc..db0e490a6c6 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -482,26 +482,31 @@ class Notify $mesg.= "\n\n".$outputlangs->transnoentitiesnoconv("Sincerely").".\n\n"; break; case 'SHIPPING_VALIDATE': + $link = '<a href="'.$urlwithroot.'/expedition/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->expedition->dir_output.'/sending/'; - $object_type = 'order_supplier'; + $object_type = 'expedition'; $mesg = $outputlangs->transnoentitiesnoconv("EMailTextExpeditionValidated", $newref); break; case 'EXPENSE_REPORT_VALIDATE': + $link = '<a href="'.$urlwithroot.'/expensereport/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->expensereport->dir_output; $object_type = 'expensereport'; $mesg = $outputlangs->transnoentitiesnoconv("EMailTextExpenseReportValidated", $newref); break; case 'EXPENSE_REPORT_APPROVE': + $link = '<a href="'.$urlwithroot.'/expensereport/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->expensereport->dir_output; $object_type = 'expensereport'; $mesg = $outputlangs->transnoentitiesnoconv("EMailTextExpenseReportApproved", $newref); break; case 'HOLIDAY_VALIDATE': + $link = '<a href="'.$urlwithroot.'/holiday/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->holiday->dir_output; $object_type = 'holiday'; $mesg = $outputlangs->transnoentitiesnoconv("EMailTextHolidayValidated", $newref); break; case 'HOLIDAY_APPROVE': + $link = '<a href="'.$urlwithroot.'/holiday/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->holiday->dir_output; $object_type = 'holiday'; $mesg = $outputlangs->transnoentitiesnoconv("EMailTextHolidayApproved", $newref); @@ -692,6 +697,7 @@ class Notify $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; break; case 'SHIPPING_VALIDATE': + $link = '<a href="'.$urlwithroot.'/expedition/card.php?id='.$object->id.'">'.$newref.'</a>'; $dir_output = $conf->expedition->dir_output.'/sending/'; $object_type = 'order_supplier'; $mesg = $langs->transnoentitiesnoconv("EMailTextExpeditionValidated", $newref); From 6ec6a4465ad95fb16a660f87653a8e397596d1a0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 29 Apr 2020 20:21:17 +0200 Subject: [PATCH 264/780] FIX Setup of thirdparty or contact for external users --- htdocs/core/class/html.form.class.php | 8 +++---- htdocs/user/card.php | 30 +++++++++++++++++++++------ 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 25ed9f86625..b2c677ed29d 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1298,11 +1298,11 @@ class Form // Construct $out and $outarray $out .= '<select id="'.$htmlname.'" class="flat'.($morecss ? ' '.$morecss : '').'"'.($moreparam ? ' '.$moreparam : '').' name="'.$htmlname.($multiple ? '[]' : '').'" '.($multiple ? 'multiple' : '').'>'."\n"; - $textifempty = ''; - // Do not use textifempty = ' ' or ' ' here, or search on key will search on ' key'. - //if (! empty($conf->use_javascript_ajax) || $forcecombo) $textifempty=''; + $textifempty = (($showempty && !is_numeric($showempty)) ? $langs->trans($showempty) : ''); if (!empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT)) { + // Do not use textifempty = ' ' or ' ' here, or search on key will search on ' key'. + //if (! empty($conf->use_javascript_ajax) || $forcecombo) $textifempty=''; if ($showempty && !is_numeric($showempty)) $textifempty = $langs->trans($showempty); else $textifempty .= $langs->trans("All"); } @@ -1554,7 +1554,7 @@ class Form if ($htmlname != 'none' && !$options_only) $out .= '<select class="flat'.($moreclass ? ' '.$moreclass : '').'" id="'.$htmlid.'" name="'.$htmlname.($multiple ? '[]' : '').'" '.($multiple ? 'multiple' : '').' '.(!empty($moreparam) ? $moreparam : '').'>'; if (($showempty == 1 || ($showempty == 3 && $num > 1)) && !$multiple) $out .= '<option value="0"'.(in_array(0, $selected) ? ' selected' : '').'> </option>'; - if ($showempty == 2) $out .= '<option value="0"'.(in_array(0, $selected) ? ' selected' : '').'>'.$langs->trans("Internal").'</option>'; + if ($showempty == 2) $out .= '<option value="0"'.(in_array(0, $selected) ? ' selected' : '').'>-- '.$langs->trans("Internal").' --</option>'; $num = $this->db->num_rows($resql); $i = 0; diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 22b591dd53f..cd115dbe292 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -481,17 +481,22 @@ if (empty($reshook)) { if (!$error && GETPOSTISSET('contactid')) { $contactid = GETPOST('contactid', 'int'); + $socid = GETPOST('socid', 'int'); - if ($contactid > 0) { + if ($contactid > 0) { // The 'contactid' is used inpriority over the 'socid' $contact = new Contact($db); $contact->fetch($contactid); $sql = "UPDATE ".MAIN_DB_PREFIX."user"; - $sql .= " SET fk_socpeople=".$db->escape($contactid); + $sql .= " SET fk_socpeople=".((int) $contactid); if (!empty($contact->socid)) { - $sql .= ", fk_soc=".$db->escape($contact->socid); + $sql .= ", fk_soc=".((int) $contact->socid); } $sql .= " WHERE rowid=".$object->id; + } elseif ($socid > 0) { + $sql = "UPDATE ".MAIN_DB_PREFIX."user"; + $sql .= " SET fk_socpeople=NULL, fk_soc=".((int) $socid); + $sql .= " WHERE rowid=".$object->id; } else { $sql = "UPDATE ".MAIN_DB_PREFIX."user"; $sql .= " SET fk_socpeople=NULL, fk_soc=NULL"; @@ -1831,7 +1836,7 @@ else $contact->fetch($object->contactid); if ($object->socid > 0) print ' / '; else print '<br>'; - print '<a href="'.DOL_URL_ROOT.'/contact/card.php?id='.$object->contactid.'">'.img_object($langs->trans("ShowContact"), 'contact').' '.dol_trunc($contact->getFullName($langs), 32).'</a>'; + print $contact->getNomUrl(1, ''); } print '</td>'; print '</tr>'."\n"; @@ -2287,6 +2292,7 @@ else print '<td>'; if ($user->id == $object->id || !$user->admin) { + // Read mode $type = $langs->trans("Internal"); if ($object->socid) $type = $langs->trans("External"); print $form->textwithpicto($type, $langs->trans("InternalExternalDesc")); @@ -2294,10 +2300,22 @@ else } else { + // Select mode $type = 0; if ($object->contactid) $type = $object->contactid; - print $form->selectcontacts(0, $type, 'contactid', 2, '', '', 1, '', false, 1); - if ($object->ldap_sid) print ' ('.$langs->trans("DomainUser").')'; + + if ($object->socid > 0 && ! ($object->contactid > 0)) { // external user but no link to a contact + print img_picto('', 'company').$form->select_company($object->socid, 'socid', '', ' '); + print img_picto('', 'contact').$form->selectcontacts(0, 0, 'contactid', 1, '', '', 1, '', false, 1); + if ($object->ldap_sid) print ' ('.$langs->trans("DomainUser").')'; + } elseif ($object->socid > 0 && $object->contactid > 0) { // external user with a link to a contact + print img_picto('', 'company').$form->select_company(0, 'socid', '', ' '); // We keep thirdparty empty, contact is already set + print img_picto('', 'contact').$form->selectcontacts(0, $object->contactid, 'contactid', 1, '', '', 1, '', false, 1); + if ($object->ldap_sid) print ' ('.$langs->trans("DomainUser").')'; + } else { // $object->socid is not > 0 here + print img_picto('', 'company').$form->select_company(0, 'socid', '', ' '); // We keep thirdparty empty, contact is already set + print img_picto('', 'contact').$form->selectcontacts(0, 0, 'contactid', 1, '', '', 1, '', false, 1); + } } print '</td></tr>'; From 6d79eed8c1776cd48d47ff4675b46634ca089c88 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 29 Apr 2020 20:36:14 +0200 Subject: [PATCH 265/780] Fix colspan alignement --- htdocs/societe/card.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 8800bd887a1..b5400db04b3 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1354,10 +1354,10 @@ else // Phone / Fax print '<tr><td>'.$form->editfieldkey('Phone', 'phone', '', $object, 0).'</td>'; - print '<td>'.img_picto('', 'object_phoning').' <input type="text" name="phone" id="phone" class="maxwidth200" value="'.(GETPOSTISSET('phone') ?GETPOST('phone', 'alpha') : $object->phone).'"></td>'; + print '<td'.($conf->browser->layout == 'phone' ? ' colspan="3"': '').'>'.img_picto('', 'object_phoning').' <input type="text" name="phone" id="phone" class="maxwidth200" value="'.(GETPOSTISSET('phone') ?GETPOST('phone', 'alpha') : $object->phone).'"></td>'; if ($conf->browser->layout == 'phone') print '</tr><tr>'; print '<td>'.$form->editfieldkey('Fax', 'fax', '', $object, 0).'</td>'; - print '<td>'.img_picto('', 'object_phoning_fax').' <input type="text" name="fax" id="fax" class="maxwidth200" value="'.(GETPOSTISSET('fax') ?GETPOST('fax', 'alpha') : $object->fax).'"></td></tr>'; + print '<td'.($conf->browser->layout == 'phone' ? ' colspan="3"': '').'>'.img_picto('', 'object_phoning_fax').' <input type="text" name="fax" id="fax" class="maxwidth200" value="'.(GETPOSTISSET('fax') ?GETPOST('fax', 'alpha') : $object->fax).'"></td></tr>'; // Email / Web print '<tr><td>'.$form->editfieldkey('EMail', 'email', '', $object, 0, 'string', '', $conf->global->SOCIETE_EMAIL_MANDATORY).'</td>'; @@ -1501,13 +1501,13 @@ else } // Type - Size - print '<tr><td>'.$form->editfieldkey('ThirdPartyType', 'typent_id', '', $object, 0).'</td><td class="maxwidthonsmartphone">'."\n"; + print '<tr><td>'.$form->editfieldkey('ThirdPartyType', 'typent_id', '', $object, 0).'</td><td class="maxwidthonsmartphone"'.($conf->browser->layout == 'phone' ? ' colspan="3"': '').'>'."\n"; $sortparam = (empty($conf->global->SOCIETE_SORT_ON_TYPEENT) ? 'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT); // NONE means we keep sort of original array, so we sort on position. ASC, means next function will sort on label. print $form->selectarray("typent_id", $formcompany->typent_array(0), $object->typent_id, 0, 0, 0, '', 0, 0, 0, $sortparam); if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td>'; if ($conf->browser->layout == 'phone') print '</tr><tr>'; - print '<td>'.$form->editfieldkey('Staff', 'effectif_id', '', $object, 0).'</td><td class="maxwidthonsmartphone">'; + print '<td>'.$form->editfieldkey('Staff', 'effectif_id', '', $object, 0).'</td><td class="maxwidthonsmartphone"'.($conf->browser->layout == 'phone' ? ' colspan="3"': '').'>'; print $form->selectarray("effectif_id", $formcompany->effectif_array(0), $object->effectif_id); if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '</td></tr>'; From 4dbd16077e4de7228e436573904ced5f8f9bcfa6 Mon Sep 17 00:00:00 2001 From: "jove@bisquerra.com" <jove@bisquerra.com> Date: Thu, 30 Apr 2020 01:10:12 +0200 Subject: [PATCH 266/780] Finish send receipt by email from TakePOS --- htdocs/takepos/admin/setup.php | 2 +- htdocs/takepos/invoice.php | 4 +- htdocs/takepos/receipt.php | 2 +- htdocs/takepos/send.php | 141 +++++++++++---------------------- 4 files changed, 50 insertions(+), 99 deletions(-) diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index bf5c4671b13..3e12fdce5c9 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -362,7 +362,7 @@ if (is_array($formmail->lines_model)) { if (!empty($arrayofmessagename[$modelmail->label])) { $moreonlabel = ' <span class="opacitymedium">('.$langs->trans("SeveralLangugeVariatFound").')</span>'; } - $arrayofmessagename[$modelmail->label] = $langs->trans(preg_replace('/\(|\)/', '', $modelmail->label)).$moreonlabel; + $arrayofmessagename[$modelmail->id] = $langs->trans(preg_replace('/\(|\)/', '', $modelmail->topic)).$moreonlabel; } } //var_dump($arraydefaultmessage); diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index adbf403491e..fa5ca2f83be 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -597,7 +597,7 @@ if ($action == "valid" || $action == "history") } else { $sectionwithinvoicelink .= ' <button id="buttonprint" type="button" onclick="Print('.$placeid.');">'.$langs->trans('PrintTicket').'</button>'; } - if ($conf->global->MAIN_FEATURES_LEVEL >= 2) + if ($conf->global->TAKEPOS_EMAIL_TEMPLATE_INVOICE > 0) { $sectionwithinvoicelink .= ' <button id="buttonsend" type="button" onclick="SendTicket('.$placeid.');">'.$langs->trans('SendTicket').'</button>'; } @@ -690,7 +690,7 @@ if ($action == "search") { function SendTicket(id) { console.log("Open box to select the Print/Send form"); - $.colorbox({href:"send.php?facid="+id, width:"90%", height:"50%", transition:"none", iframe:"true", title:"<?php echo $langs->trans("SendTicket"); ?>"}); + $.colorbox({href:"send.php?facid="+id, width:"70%", height:"30%", transition:"none", iframe:"true", title:"<?php echo $langs->trans("SendTicket"); ?>"}); } function Print(id){ diff --git a/htdocs/takepos/receipt.php b/htdocs/takepos/receipt.php index c025f504d73..90b3a5c1fee 100644 --- a/htdocs/takepos/receipt.php +++ b/htdocs/takepos/receipt.php @@ -25,7 +25,7 @@ * \brief Page to show a receipt. */ -require '../main.inc.php'; // Load $user and permissions +if (!isset($action)) require '../main.inc.php'; // If this file is called from send.php avoid load again include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; $langs->loadLangs(array("main", "cashdesk", "companies")); diff --git a/htdocs/takepos/send.php b/htdocs/takepos/send.php index 5774c9bbaf1..720cd4e271c 100644 --- a/htdocs/takepos/send.php +++ b/htdocs/takepos/send.php @@ -1,5 +1,6 @@ <?php -/* Copyright (C) 2019 Thibault FOUCART <support@ptibogxiv.net> +/* Copyright (C) 2019 Thibault FOUCART <support@ptibogxiv.net> + * Copyright (C) 2020 Andreu Bisquerra Gaya <jove@bisquerra.com> * * 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 @@ -35,123 +36,73 @@ require '../main.inc.php'; // Load $user and permissions require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; -$invoiceid = GETPOST('facid', 'int'); +$facid = GETPOST('facid', 'int'); +$action = GETPOST('action', 'alpha'); +$email = GETPOST('email', 'alpha'); if (empty($user->rights->takepos->run)) { accessforbidden(); } - -/* - * View - */ - -$invoice = new Facture($db); -if ($invoiceid > 0) -{ - $invoice->fetch($invoiceid); -} -else -{ - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."facture where ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")'"; - $resql = $db->query($sql); - $obj = $db->fetch_object($resql); - if ($obj) - { - $invoiceid = $obj->rowid; - } - if (!$invoiceid) - { - $invoiceid = 0; // Invoice does not exist yet - } - else - { - $invoice->fetch($invoiceid); - } -} - $langs->loadLangs(array("main", "bills", "cashdesk")); +$invoice = new Facture($db); +$invoice->fetch($facid); +$customer = new Societe($db); +$customer->fetch($invoice->socid); + +if ($action=="send") +{ + include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; + include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; + $formmail = new FormMail($db); + $outputlangs = new Translate('', $conf); + $model_id = $conf->global->TAKEPOS_EMAIL_TEMPLATE_INVOICE; + $arraydefaultmessage = $formmail->getEMailTemplate($db, 'facture_send', $user, $outputlangs, $model_id); + $subject = $arraydefaultmessage->topic; + ob_start(); // turn on output receipt + include('receipt.php'); + $receipt = ob_get_contents(); // get the contents of the output buffer + ob_end_clean(); + $msg="<html>".$arraydefaultmessage->content."<br>".$receipt."</html>"; + $sendto=$email; + $from=$mysoc->email; + $mail = new CMailFile($subject, $sendto, $from, $msg, array(), array(), array(), '', '', 0, 1); + if ($mail->error || $mail->errors) { + setEventMessages($mail->error, $mail->errors, 'errors'); + } else { + $result = $mail->sendfile(); + } + exit; +} +$arrayofcss = array('/takepos/css/pos.css.php'); +$arrayofjs = array(); +top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); ?> -<link rel="stylesheet" href="css/pos.css.php"> </head> <body class="center"> <script> -<?php -$remaintopay = 0; -$invoice->fetch_thirdparty($invoice->socid); -if ($invoice->id > 0) -{ - $remaintopay = $invoice->getRemainToPay(); -} -$alreadypayed = (is_object($invoice) ? ($invoice->total_ttc - $remaintopay) : 0); - -if ($conf->global->TAKEPOS_NUMPAD == 0) print "var received='';"; -else print "var received=0;"; - -?> - var alreadypayed = <?php echo $alreadypayed ?>; - - function addreceived(price) - { - <?php - if (empty($conf->global->TAKEPOS_NUMPAD)) print 'received+=String(price);'."\n"; - else print 'received+=parseFloat(price);'."\n"; - ?> - $('.change1').html(pricejs(parseFloat(received), 'MT')); - $('.change1').val(parseFloat(received)); - alreadypaydplusreceived=price2numjs(alreadypayed + parseFloat(received)); - //console.log("already+received = "+alreadypaydplusreceived); - //console.log("total_ttc = "+<?php echo $invoice->total_ttc; ?>); - if (alreadypaydplusreceived > <?php echo $invoice->total_ttc; ?>) - { - var change=parseFloat(alreadypayed + parseFloat(received) - <?php echo $invoice->total_ttc; ?>); - $('.change2').html(pricejs(change, 'MT')); - $('.change2').val(change); - $('.change1').removeClass('colorred'); - $('.change1').addClass('colorgreen'); - $('.change2').removeClass('colorwhite'); - $('.change2').addClass('colorred'); - } - else - { - $('.change2').html(pricejs(0, 'MT')); - $('.change2').val(0); - if (alreadypaydplusreceived == <?php echo $invoice->total_ttc; ?>) - { - $('.change1').removeClass('colorred'); - $('.change1').addClass('colorgreen'); - $('.change2').removeClass('colorred'); - $('.change2').addClass('colorwhite'); - } - else - { - $('.change1').removeClass('colorgreen'); - $('.change1').addClass('colorred'); - $('.change2').removeClass('colorred'); - $('.change2').addClass('colorwhite'); - } - } - } - -function Print(id){ - $.colorbox.close(); - $.colorbox({href:"receipt.php?facid="+id, width:"40%", height:"90%", transition:"none", iframe:"true", title:"<?php - echo $langs->trans("PrintTicket"); ?>"}); +function SendMail() { + $.ajax({ + type: "GET", + url: "<?php print dol_buildpath('/takepos/send.php', 1).'?action=send&facid='.$facid.'&email='; ?>" + $("#email"). val(), + }); + parent.$.colorbox.close(); } </script> <div class="center"> <center> -<center><input type="email" id="email" name="email" style="width:60%;font-size: 200%;" value="<?php echo $invoice->thirdparty->email; ?>"></center> +<center> +<input type="email" id="email" name="email" style="width:60%;font-size: 200%;" value="<?php echo $customer->email; ?>"></center> </center> </div> <br> <div class="center"> -<button type="button" class="calcbutton" onclick="addreceived();"><?php print $langs->trans("SendInvoice"); ?></button> +<button type="button" class="calcbutton" onclick="SendMail()"><?php print $langs->trans("SendTicket"); ?></button> </div> From 281a97404a84c740fa4b7906ecc3126ca055f22d Mon Sep 17 00:00:00 2001 From: andreubisquerra <jove@bisquerra.com> Date: Thu, 30 Apr 2020 01:27:55 +0200 Subject: [PATCH 267/780] Fix travis --- htdocs/takepos/send.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/takepos/send.php b/htdocs/takepos/send.php index 720cd4e271c..3f59d4069b5 100644 --- a/htdocs/takepos/send.php +++ b/htdocs/takepos/send.php @@ -61,9 +61,9 @@ if ($action=="send") $arraydefaultmessage = $formmail->getEMailTemplate($db, 'facture_send', $user, $outputlangs, $model_id); $subject = $arraydefaultmessage->topic; ob_start(); // turn on output receipt - include('receipt.php'); + include 'receipt.php'; $receipt = ob_get_contents(); // get the contents of the output buffer - ob_end_clean(); + ob_end_clean(); $msg="<html>".$arraydefaultmessage->content."<br>".$receipt."</html>"; $sendto=$email; $from=$mysoc->email; From 82ace4b4ef6f8fd63ec4f6d73df641fb7362c129 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 3 Sep 2019 22:39:24 +0200 Subject: [PATCH 268/780] FIX Several pb in export of documents FIX Must escape shell FIX Must exclude logs and some dirs for compressed backup FIX gzip and bzip2 must use option -f --- htdocs/admin/tools/dolibarr_export.php | 74 ++-- htdocs/admin/tools/export_files.php | 49 +- htdocs/core/class/utils.class.php | 178 +++++--- htdocs/core/lib/files.lib.php | 591 +++++++++++++++---------- 4 files changed, 520 insertions(+), 372 deletions(-) diff --git a/htdocs/admin/tools/dolibarr_export.php b/htdocs/admin/tools/dolibarr_export.php index d04840e2d71..0bef19dde56 100644 --- a/htdocs/admin/tools/dolibarr_export.php +++ b/htdocs/admin/tools/dolibarr_export.php @@ -29,15 +29,15 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; $langs->load("admin"); -$action=GETPOST('action','alpha'); +$action=GETPOST('action', 'alpha'); -$sortfield = GETPOST('sortfield','alpha'); -$sortorder = GETPOST('sortorder','alpha'); -$page = GETPOST('page','int'); +$sortfield = GETPOST('sortfield', 'alpha'); +$sortorder = GETPOST('sortorder', 'alpha'); +$page = GETPOST('page', 'int'); if (! $sortorder) $sortorder="DESC"; if (! $sortfield) $sortfield="date"; if (empty($page) || $page == -1) { $page = 0; } -$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit; +$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit; $offset = $limit * $page; if (! $user->admin) @@ -50,10 +50,20 @@ if (! $user->admin) if ($action == 'delete') { - $file=$conf->admin->dir_output.'/backup/'.basename(GETPOST('urlfile', 'alpha')); - $ret=dol_delete_file($file, 1); - if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); - else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); + if (preg_match('/^backup\//', GETPOST('urlfile', 'alpha'))) + { + $file=$conf->admin->dir_output.'/backup/'.basename(GETPOST('urlfile', 'alpha')); + $ret=dol_delete_file($file, 1); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); + } + else + { + $file=$conf->admin->dir_output.'/documents/'.basename(GETPOST('urlfile', 'alpha')); + $ret=dol_delete_file($file, 1); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); + } $action=''; } @@ -70,7 +80,7 @@ $type=$db->type; //var_dump($db); $help_url='EN:Backups|FR:Sauvegardes|ES:Copias_de_seguridad'; -llxHeader('','',$help_url); +llxHeader('', '', $help_url); ?> <script type="text/javascript"> @@ -110,11 +120,11 @@ jQuery(document).ready(function() { </script> <?php -print load_fiche_titre($langs->trans("Backup"),'','title_setup'); +print load_fiche_titre($langs->trans("Backup"), '', 'title_setup'); //print_barre_liste($langs->trans("Backup"), '', '', '', '', '', $langs->trans("BackupDesc",DOL_DATA_ROOT), 0, 0, 'title_setup'); -print '<div class="center">'; -print $langs->trans("BackupDesc",DOL_DATA_ROOT); +print '<div class="center opacitymedium">'; +print $langs->trans("BackupDesc", DOL_DATA_ROOT); print '</div>'; print '<br>'; @@ -128,7 +138,7 @@ print '<br>'; <fieldset id="fieldsetexport"><legend class="legendforfieldsetstep" style="font-size: 3em">1</legend> <?php -print $langs->trans("BackupDesc3",$dolibarr_main_db_name).'<br>'; +print $langs->trans("BackupDesc3", $dolibarr_main_db_name).'<br>'; //print $langs->trans("BackupDescY").'<br>'; print '<br>'; ?> @@ -166,7 +176,7 @@ print '<tr '.$bc[false].'><td style="padding-left: 8px">'; </div> <?php } - else if (in_array($type, array('pgsql'))) + elseif (in_array($type, array('pgsql'))) { ?> <div class="formelementrow"><input type="radio" name="what" value="postgresql" id="radio_dump_postgresql" /> @@ -211,6 +221,7 @@ print '<tr '.$bc[false].'><td style="padding-left: 8px">'; <div class="formelementrow"><input type="checkbox" name="use_transaction" value="yes" id="checkbox_use_transaction" /> <label for="checkbox_use_transaction"> <?php echo $langs->trans("UseTransactionnalMode"); ?></label> + </div> <?php if (! empty($conf->global->MYSQL_OLD_OPTION_DISABLE_FK)) { ?> @@ -233,14 +244,6 @@ print '<tr '.$bc[false].'><td style="padding-left: 8px">'; <option value="ORACLE">ORACLE</option> <option value="POSTGRESQL">POSTGRESQL</option> </select> <br> - <input type="checkbox" name="use_mysql_quick_param" value="yes" id="checkbox_use_quick" /> - <label for="checkbox_use_quick"> - <?php echo $form->textwithpicto( - $langs->trans('ExportUseMySQLQuickParameter'), - $langs->trans('ExportUseMySQLQuickParameterHelp') - ); ?> - </label> - <br/> <!-- <input type="checkbox" name="drop_database" value="yes" id="checkbox_drop_database" /> <label for="checkbox_drop_database"><?php echo $langs->trans("AddDropDatabase"); ?></label> --> @@ -453,8 +456,10 @@ print "\n"; <br> -<div align="center"><input type="submit" class="button" - value="<?php echo $langs->trans("GenerateBackup") ?>" id="buttonGo" /><br> +<div class="center"> + <input type="submit" class="button reposition" value="<?php echo $langs->trans("GenerateBackup") ?>" id="buttonGo"> + <input type="hidden" name="page_y" value="<?php echo GETPOST('page_y', 'int'); ?>"> + <br> <br> <?php @@ -466,7 +471,7 @@ if (! empty($_SESSION["commandbackuplastdone"])) //print $paramclear; - // Now run command and show result + // Now show result print '<b>'.$langs->trans("BackupResult").':</b> '; print $_SESSION["commandbackupresult"]; @@ -476,7 +481,7 @@ if (! empty($_SESSION["commandbackuplastdone"])) } if (! empty($_SESSION["commandbackuptorun"])) { - print '<br><font class="warning">'.$langs->trans("YouMustRunCommandFromCommandLineAfterLoginToUser",$dolibarr_main_db_user,$dolibarr_main_db_user).':</font><br>'."\n"; + print '<br><font class="warning">'.$langs->trans("YouMustRunCommandFromCommandLineAfterLoginToUser", $dolibarr_main_db_user, $dolibarr_main_db_user).':</font><br>'."\n"; print '<textarea id="commandbackuptoruntext" rows="'.ROWS_2.'" class="centpercent">'.$_SESSION["commandbackuptorun"].'</textarea><br>'."\n"; print ajax_autoselect("commandbackuptoruntext", 0); print '<br>'; @@ -505,8 +510,8 @@ print '</table>'; <div class="ficheaddleft"> <?php -$filearray=dol_dir_list($conf->admin->dir_output.'/backup','files',0,'','',$sortfield,(strtolower($sortorder)=='asc'?SORT_ASC:SORT_DESC),1); -$result=$formfile->list_of_documents($filearray,null,'systemtools','',1,'backup/',1,0,$langs->trans("NoBackupFileAvailable"),0,$langs->trans("PreviousDumpFiles")); +$filearray=dol_dir_list($conf->admin->dir_output.'/backup', 'files', 0, '', '', $sortfield, (strtolower($sortorder)=='asc'?SORT_ASC:SORT_DESC), 1); +$result=$formfile->list_of_documents($filearray, null, 'systemtools', '', 1, 'backup/', 1, 0, $langs->trans("NoBackupFileAvailable"), 0, $langs->trans("PreviousDumpFiles")); print '<br>'; ?> @@ -526,7 +531,7 @@ print '<br>'; <fieldset><legend class="legendforfieldsetstep" style="font-size: 3em">2</legend> <?php -print $langs->trans("BackupDesc2",DOL_DATA_ROOT).'<br>'; +print $langs->trans("BackupDesc2", DOL_DATA_ROOT).'<br>'; print $langs->trans("BackupDescX").'<br><br>'; ?> @@ -582,7 +587,7 @@ print "\n"; ?> <br> -<div align="center"><input type="submit" class="button" +<div class="center"><input type="submit" class="button reposition" value="<?php echo $langs->trans("GenerateBackup") ?>" id="buttonGo" /><br> <br> </div> @@ -593,8 +598,8 @@ print "\n"; <div class="ficheaddleft"> <?php -$filearray=dol_dir_list($conf->admin->dir_output.'/documents','files',0,'','',$sortfield,(strtolower($sortorder)=='asc'?SORT_ASC:SORT_DESC),1); -$result=$formfile->list_of_documents($filearray,null,'systemtools','',1,'documents/',1,0,$langs->trans("NoBackupFileAvailable"),0,$langs->trans("PreviousDumpFiles")); +$filearray=dol_dir_list($conf->admin->dir_output.'/documents', 'files', 0, '', '', $sortfield, (strtolower($sortorder)=='asc'?SORT_ASC:SORT_DESC), 1); +$result=$formfile->list_of_documents($filearray, null, 'systemtools', '', 1, 'documents/', 1, 0, $langs->trans("NoBackupFileAvailable"), 0, $langs->trans("PreviousDumpFiles")); print '<br>'; ?> @@ -605,9 +610,6 @@ print '<br>'; </fieldset> </form> - - - <?php // End of page diff --git a/htdocs/admin/tools/export_files.php b/htdocs/admin/tools/export_files.php index 4a19fd0e9a6..4f9e8b933d2 100644 --- a/htdocs/admin/tools/export_files.php +++ b/htdocs/admin/tools/export_files.php @@ -30,22 +30,22 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; $langs->load("admin"); -$action=GETPOST('action','alpha'); -$what=GETPOST('what','alpha'); -$export_type=GETPOST('export_type','alpha'); -$file=GETPOST('zipfilename_template','alpha'); +$action=GETPOST('action', 'alpha'); +$what=GETPOST('what', 'alpha'); +$export_type=GETPOST('export_type', 'alpha'); +$file=GETPOST('zipfilename_template', 'alpha'); $compression = GETPOST('compression'); $file = dol_sanitizeFileName($file); -$sortfield = GETPOST('sortfield','alpha'); -$sortorder = GETPOST('sortorder','alpha'); -$page = GETPOST("page",'int'); +$sortfield = GETPOST('sortfield', 'alpha'); +$sortorder = GETPOST('sortorder', 'alpha'); +$page = GETPOST("page", 'int'); if (! $sortorder) $sortorder="DESC"; if (! $sortfield) $sortfield="date"; if ($page < 0) { $page = 0; } elseif (empty($page)) $page = 0; -$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit; +$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit; $offset = $limit * $page; if (! $user->admin) accessforbidden(); @@ -112,21 +112,27 @@ $utils = new Utils($db); if ($compression == 'zip') { - $ret = dol_compress_dir(DOL_DATA_ROOT, $outputdir."/".$file, $compression); + $ret = dol_compress_dir(DOL_DATA_ROOT, $outputdir."/".$file, $compression, '/(\.log|\/temp\/|documents\/admin\/documents\/)/'); if ($ret < 0) { - $errormsg = $langs->trans("ErrorFailedToWriteInDir",$outputfile); + $errormsg = $langs->trans("ErrorFailedToWriteInDir", $outputdir); } } elseif (in_array($compression, array('gz', 'bz'))) { - $file = substr($file, 0, strrpos($file, '.')); - $file .= '.tar'; - $cmd = 'tar -cf '.$outputdir."/".$file." --exclude=documents/admin/documents -C ".DOL_DATA_ROOT." ".DOL_DATA_ROOT."/../documents/"; - exec($cmd, $out, $retval); - //var_dump($cmd, DOL_DATA_ROOT);exit; + $userlogin = ($user->login ? $user->login : 'unknown'); - if ($retval != 0) + $outputfile = $conf->admin->dir_temp.'/export_files.'.$userlogin.'.out'; // File used with popen method + + $file = substr($file, 0, strrpos($file, '.')); + $file .= '.tar'; + // We also exclude '/temp/' dir and 'documents/admin/documents' + $cmd = "tar -cf ".$outputdir."/".$file." --exclude-vcs --exclude 'temp' --exclude 'dolibarr.log' --exclude='documents/admin/documents' -C ".dirname(DOL_DATA_ROOT)." ".basename(DOL_DATA_ROOT); + + $result = $utils->executeCLI($cmd, $outputfile); + + $retval = $result['error']; + if ($result['result'] || ! empty($retval)) { $langs->load("errors"); dol_syslog("Documents tar retval after exec=".$retval, LOG_ERR); @@ -136,15 +142,17 @@ elseif (in_array($compression, array('gz', 'bz'))) { if ($compression == 'gz') { - $cmd = "gzip " . $outputdir."/".$file; + $cmd = "gzip -f " . $outputdir."/".$file; } if ($compression == 'bz') { - $cmd = "bzip2 " . $outputdir."/".$file; + $cmd = "bzip2 -f " . $outputdir."/".$file; } - exec($cmd, $out, $retval); - if ($retval != 0) + $result = $utils->executeCLI($cmd, $outputfile); + + $retval = $result['error']; + if ($result['result'] || ! empty($retval)) { $errormsg = 'Error '.$compression.' generation return '.$retval; unlink($outputdir."/".$file); @@ -166,4 +174,3 @@ header("Location: dolibarr_export.php"); $time_end = time(); $db->close(); - diff --git a/htdocs/core/class/utils.class.php b/htdocs/core/class/utils.class.php index 5007e642300..86eff6613c1 100644 --- a/htdocs/core/class/utils.class.php +++ b/htdocs/core/class/utils.class.php @@ -32,15 +32,15 @@ class Utils */ public $db; - var $output; // Used by Cron method to return message - var $result; // Used by Cron method to return data + public $output; // Used by Cron method to return message + public $result; // Used by Cron method to return data /** * Constructor * * @param DoliDB $db Database handler */ - function __construct($db) + public function __construct($db) { $this->db = $db; } @@ -54,7 +54,7 @@ class Utils * @param int $nbsecondsold Nb of seconds old to accept deletion of a directory if $choice is 'tempfilesold' * @return int 0 if OK, < 0 if KO (this function is used also by cron so only 0 is OK) */ - function purgeFiles($choice = 'tempfilesold', $nbsecondsold = 86400) + public function purgeFiles($choice = 'tempfilesold', $nbsecondsold = 86400) { global $conf, $langs, $dolibarr_main_data_root; @@ -106,7 +106,7 @@ class Utils if (! empty($conf->syslog->enabled)) { $filelog=$conf->global->SYSLOG_FILE; - $filelog=preg_replace('/DOL_DATA_ROOT/i',DOL_DATA_ROOT,$filelog); + $filelog=preg_replace('/DOL_DATA_ROOT/i', DOL_DATA_ROOT, $filelog); $alreadyincluded=false; foreach ($filesarray as $tmpcursor) @@ -193,7 +193,7 @@ class Utils * @param int $execmethod 0=Use default method (that is 1 by default), 1=Use the PHP 'exec', 2=Use the 'popen' method * @return int 0 if OK, < 0 if KO (this function is used also by cron so only 0 is OK) */ - function dumpDatabase($compression='none', $type='auto', $usedefault=1, $file='auto', $keeplastnfiles=0, $execmethod=0) + public function dumpDatabase($compression = 'none', $type = 'auto', $usedefault = 1, $file = 'auto', $keeplastnfiles = 0, $execmethod = 0) { global $db, $conf, $langs, $dolibarr_main_data_root; global $dolibarr_main_db_name, $dolibarr_main_db_host, $dolibarr_main_db_user, $dolibarr_main_db_port, $dolibarr_main_db_pass; @@ -251,8 +251,8 @@ class Utils // Parameteres execution $command = $cmddump; - $command = preg_replace('/(\$|%)/', '', $command); // We removed chars that can be used to inject vars that contains space inside path of command without seeing there is a space to bypass the escapeshellarg. - if (preg_match("/\s/",$command)) $command=escapeshellarg($command); // If there is spaces, we add quotes on command to be sure $command is only a program and not a program+parameters + $command = preg_replace('/(\$|%)/', '', $command); // We removed chars that can be used to inject vars that contains space inside path of command without seeing there is a space to bypass the escapeshellarg. + if (preg_match("/\s/", $command)) $command=escapeshellarg($command); // If there is spaces, we add quotes on command to be sure $command is only a program and not a program+parameters //$param=escapeshellarg($dolibarr_main_db_name)." -h ".escapeshellarg($dolibarr_main_db_host)." -u ".escapeshellarg($dolibarr_main_db_user)." -p".escapeshellarg($dolibarr_main_db_pass); $param=$dolibarr_main_db_name." -h ".$dolibarr_main_db_host; @@ -262,7 +262,6 @@ class Utils if (GETPOST("disable_fk", "alpha") || $usedefault) $param.=" -K"; if (GETPOST("sql_compat", "alpha") && GETPOST("sql_compat", "alpha") != 'NONE') $param.=" --compatible=".escapeshellarg(GETPOST("sql_compat", "alpha")); if (GETPOST("drop_database", "alpha")) $param.=" --add-drop-database"; - if (GETPOST("use_mysql_quick_param", "alpha"))$param.=" --quick"; if (GETPOST("sql_structure", "alpha") || $usedefault) { if (GETPOST("drop", "alpha") || $usedefault) $param.=" --add-drop-table=TRUE"; @@ -292,8 +291,8 @@ class Utils $paramclear=$param; if (! empty($dolibarr_main_db_pass)) { - $paramcrypted.=' -p"'.preg_replace('/./i','*',$dolibarr_main_db_pass).'"'; - $paramclear.=' -p"'.str_replace(array('"','`'),array('\"','\`'),$dolibarr_main_db_pass).'"'; + $paramcrypted.=' -p"'.preg_replace('/./i', '*', $dolibarr_main_db_pass).'"'; + $paramclear.=' -p"'.str_replace(array('"','`'), array('\"','\`'), $dolibarr_main_db_pass).'"'; } $errormsg=''; @@ -317,27 +316,29 @@ class Utils // TODO Replace with executeCLI function if ($execmethod == 1) { - exec($fullcommandclear, $readt, $retval); - $result = $retval; + $output_arr = array(); $retval = null; + exec($fullcommandclear, $output_arr, $retval); if ($retval != 0) { $langs->load("errors"); dol_syslog("Datadump retval after exec=".$retval, LOG_ERR); - $error = 'Error '.$retval; + $errormsg = 'Error '.$retval; $ok=0; } else { $i=0; - if (!empty($readt)) - foreach($readt as $key=>$read) + if (!empty($output_arr)) { - $i++; // output line number - if ($i == 1 && preg_match('/Warning.*Using a password/i', $read)) continue; - fwrite($handle, $read.($execmethod == 2 ? '' : "\n")); - if (preg_match('/'.preg_quote('-- Dump completed').'/i',$read)) $ok=1; - elseif (preg_match('/'.preg_quote('SET SQL_NOTES=@OLD_SQL_NOTES').'/i',$read)) $ok=1; + foreach($output_arr as $key => $read) + { + $i++; // output line number + if ($i == 1 && preg_match('/Warning.*Using a password/i', $read)) continue; + fwrite($handle, $read.($execmethod == 2 ? '' : "\n")); + if (preg_match('/'.preg_quote('-- Dump completed').'/i', $read)) $ok=1; + elseif (preg_match('/'.preg_quote('SET SQL_NOTES=@OLD_SQL_NOTES').'/i', $read)) $ok=1; + } } } } @@ -351,9 +352,9 @@ class Utils $read = fgets($handlein); // Exclude warning line we don't want if ($i == 1 && preg_match('/Warning.*Using a password/i', $read)) continue; - fwrite($handle,$read); - if (preg_match('/'.preg_quote('-- Dump completed').'/i',$read)) $ok=1; - elseif (preg_match('/'.preg_quote('SET SQL_NOTES=@OLD_SQL_NOTES').'/i',$read)) $ok=1; + fwrite($handle, $read); + if (preg_match('/'.preg_quote('-- Dump completed').'/i', $read)) $ok=1; + elseif (preg_match('/'.preg_quote('SET SQL_NOTES=@OLD_SQL_NOTES').'/i', $read)) $ok=1; } pclose($handlein); } @@ -369,7 +370,7 @@ class Utils else { $langs->load("errors"); - dol_syslog("Failed to open file ".$outputfile,LOG_ERR); + dol_syslog("Failed to open file ".$outputfile, LOG_ERR); $errormsg=$langs->trans("ErrorFailedToWriteInDir"); } @@ -380,18 +381,18 @@ class Utils if ($handle) { // Get 2048 first chars of error message. - $errormsg = fgets($handle,2048); + $errormsg = fgets($handle, 2048); // Close file if ($compression == 'none') fclose($handle); if ($compression == 'gz') gzclose($handle); if ($compression == 'bz') bzclose($handle); - if ($ok && preg_match('/^-- MySql/i',$errormsg)) $errormsg=''; // Pas erreur + if ($ok && preg_match('/^-- MySql/i', $errormsg)) $errormsg=''; // Pas erreur else { // Renommer fichier sortie en fichier erreur //print "$outputfile -> $outputerror"; @dol_delete_file($outputerror, 1, 0, 0, null, false, 0); - @rename($outputfile,$outputerror); + @rename($outputfile, $outputerror); // Si safe_mode on et command hors du parametre exec, on a un fichier out vide donc errormsg vide if (! $errormsg) { @@ -450,8 +451,8 @@ class Utils // Parameteres execution $command = $cmddump; - $command = preg_replace('/(\$|%)/', '', $command); // We removed chars that can be used to inject vars that contains space inside path of command without seeing there is a space to bypass the escapeshellarg. - if (preg_match("/\s/",$command)) $command=escapeshellarg($command); // If there is spaces, we add quotes on command to be sure $command is only a program and not a program+parameters + $command = preg_replace('/(\$|%)/', '', $command); // We removed chars that can be used to inject vars that contains space inside path of command without seeing there is a space to bypass the escapeshellarg. + if (preg_match("/\s/", $command)) $command=escapeshellarg($command); // If there is spaces, we add quotes on command to be sure $command is only a program and not a program+parameters //$param=escapeshellarg($dolibarr_main_db_name)." -h ".escapeshellarg($dolibarr_main_db_host)." -u ".escapeshellarg($dolibarr_main_db_user)." -p".escapeshellarg($dolibarr_main_db_pass); //$param="-F c"; @@ -515,7 +516,7 @@ class Utils * @param int $execmethod 0=Use default method (that is 1 by default), 1=Use the PHP 'exec', 2=Use the 'popen' method * @return array array('result'=>...,'output'=>...,'error'=>...). result = 0 means OK. */ - function executeCLI($command, $outputfile, $execmethod=0) + public function executeCLI($command, $outputfile, $execmethod = 0) { global $conf, $langs; @@ -535,6 +536,7 @@ class Utils if ($execmethod == 1) { + $retval = null; exec($command, $output_arr, $retval); $result = $retval; if ($retval != 0) @@ -546,7 +548,6 @@ class Utils } if ($execmethod == 2) // With this method, there is no way to get the return code, only output { - $ok=0; $handle = fopen($outputfile, 'w+b'); if ($handle) { @@ -555,7 +556,7 @@ class Utils while (!feof($handlein)) { $read = fgets($handlein); - fwrite($handle,$read); + fwrite($handle, $read); $output_arr[]=$read; } pclose($handlein); @@ -584,14 +585,15 @@ class Utils * @param string $module Module name * @return int <0 if KO, >0 if OK */ - function generateDoc($module) + public function generateDoc($module) { - global $conf, $langs; + global $conf, $langs, $user, $mysoc; global $dirins; $error = 0; $modulelowercase=strtolower($module); + $now=dol_now(); // Dir for module $dir = $dirins.'/'.$modulelowercase; @@ -621,11 +623,12 @@ class Utils exit; } - $arrayversion=explode('.',$moduleobj->version,3); + $arrayversion=explode('.', $moduleobj->version, 3); if (count($arrayversion)) { $FILENAMEASCII=strtolower($module).'.asciidoc'; - $FILENAMEDOC=strtolower($module).'.html'; // TODO Use/text PDF + $FILENAMEDOC=strtolower($module).'.html'; + $FILENAMEDOCPDF=strtolower($module).'.pdf'; $dirofmodule = dol_buildpath(strtolower($module), 0); $dirofmoduledoc = dol_buildpath(strtolower($module), 0).'/doc'; @@ -641,13 +644,25 @@ class Utils return -1; } - $conf->global->MODULEBUILDER_ASCIIDOCTOR='asciidoctor'; - if (empty($conf->global->MODULEBUILDER_ASCIIDOCTOR)) + if (empty($conf->global->MODULEBUILDER_ASCIIDOCTOR) && empty($conf->global->MODULEBUILDER_ASCIIDOCTORPDF)) { $this->error = 'Setup of module ModuleBuilder not complete'; return -1; } + // Copy some files into temp directory, so instruction include::ChangeLog.md[] will works inside the asciidoc file. + dol_copy($dirofmodule.'/README.md', $dirofmoduletmp.'/README.md', 0, 1); + dol_copy($dirofmodule.'/ChangeLog.md', $dirofmoduletmp.'/ChangeLog.md', 0, 1); + + // Replace into README.md and ChangeLog.md (in case they are included into documentation with tag __README__ or __CHANGELOG__) + $arrayreplacement=array(); + $arrayreplacement['/^#\s.*/m']=''; // Remove first level of title into .md files + $arrayreplacement['/^#/m']='##'; // Add on # to increase level + + dolReplaceInFile($dirofmoduletmp.'/README.md', $arrayreplacement, '', 0, 0, 1); + dolReplaceInFile($dirofmoduletmp.'/ChangeLog.md', $arrayreplacement, '', 0, 0, 1); + + $destfile=$dirofmoduletmp.'/'.$FILENAMEASCII; $fhandle = fopen($destfile, 'w+'); @@ -680,35 +695,48 @@ class Utils $i++; } - fwrite($fhandle, "\n\n\n== DATA SPECIFICATIONS...\n\n"); - - // TODO - fwrite($fhandle, "TODO..."); - - - fwrite($fhandle, "\n\n\n== CHANGELOG...\n\n"); - - // TODO - fwrite($fhandle, "TODO..."); - - - fclose($fhandle); - } - // Copy some files into temp directory - dol_copy($dirofmodule.'/README.md', $dirofmoduletmp.'/README.md', 0, 1); - dol_copy($dirofmodule.'/ChangeLog.md', $dirofmoduletmp.'/ChangeLog.md', 0, 1); + $contentreadme=file_get_contents($dirofmoduletmp.'/README.md'); + $contentchangelog=file_get_contents($dirofmoduletmp.'/ChangeLog.md'); + + include DOL_DOCUMENT_ROOT.'/core/lib/parsemd.lib.php'; + + //var_dump($phpfileval['fullname']); + $arrayreplacement=array( + 'mymodule'=>strtolower($module), + 'MyModule'=>$module, + 'MYMODULE'=>strtoupper($module), + 'My module'=>$module, + 'my module'=>$module, + 'Mon module'=>$module, + 'mon module'=>$module, + 'htdocs/modulebuilder/template'=>strtolower($module), + '__MYCOMPANY_NAME__'=>$mysoc->name, + '__KEYWORDS__'=>$module, + '__USER_FULLNAME__'=>$user->getFullName($langs), + '__USER_EMAIL__'=>$user->email, + '__YYYY-MM-DD__'=>dol_print_date($now, 'dayrfc'), + '---Put here your own copyright and developer email---'=>dol_print_date($now, 'dayrfc').' '.$user->getFullName($langs).($user->email?' <'.$user->email.'>':''), + '__DATA_SPECIFICATION__'=>'Not yet available', + '__README__'=>dolMd2Asciidoc($contentreadme), + '__CHANGELOG__'=>dolMd2Asciidoc($contentchangelog), + ); + + dolReplaceInFile($destfile, $arrayreplacement); + } // Launch doc generation $currentdir = getcwd(); chdir($dirofmodule); + require_once DOL_DOCUMENT_ROOT.'/core/class/utils.class.php'; + $utils = new Utils($db); + + // Build HTML doc $command=$conf->global->MODULEBUILDER_ASCIIDOCTOR.' '.$destfile.' -n -o '.$dirofmoduledoc.'/'.$FILENAMEDOC; $outfile=$dirofmoduletmp.'/out.tmp'; - require_once DOL_DOCUMENT_ROOT.'/core/class/utils.class.php'; - $utils = new Utils($this->db); $resarray = $utils->executeCLI($command, $outfile); if ($resarray['result'] != '0') { @@ -716,6 +744,16 @@ class Utils } $result = ($resarray['result'] == 0) ? 1 : 0; + // Build PDF doc + $command=$conf->global->MODULEBUILDER_ASCIIDOCTORPDF.' '.$destfile.' -n -o '.$dirofmoduledoc.'/'.$FILENAMEDOCPDF; + $outfile=$dirofmoduletmp.'/outpdf.tmp'; + $resarray = $utils->executeCLI($command, $outfile); + if ($resarray['result'] != '0') + { + $this->error = $resarray['error'].' '.$resarray['output']; + } + $result = ($resarray['result'] == 0) ? 1 : 0; + chdir($currentdir); } else @@ -751,7 +789,7 @@ class Utils * * @return int 0 if OK, < 0 if KO */ - function compressSyslogs() + public function compressSyslogs() { global $conf; @@ -857,7 +895,7 @@ class Utils $this->output = 'Archive log files (keeping last SYSLOG_FILE_SAVES='.$nbSaves.' files) done.'; return 0; - } + } /** Backup the db OR just a table without mysqldump binary, with PHP only (does not require any exec permission) * Author: David Walsh (http://davidwalsh.name/backup-mysql-database-php) @@ -869,7 +907,7 @@ class Utils * @param string $tables Table name or '*' for all * @return int <0 if KO, >0 if OK */ - function backupTables($outputfile, $tables='*') + public function backupTables($outputfile, $tables = '*') { global $db, $langs; global $errormsg; @@ -896,7 +934,7 @@ class Utils } else { - $tables = is_array($tables) ? $tables : explode(',',$tables); + $tables = is_array($tables) ? $tables : explode(',', $tables); } //cycle through @@ -904,7 +942,7 @@ class Utils if (fwrite($handle, '') === false) { $langs->load("errors"); - dol_syslog("Failed to open file ".$outputfile,LOG_ERR); + dol_syslog("Failed to open file ".$outputfile, LOG_ERR); $errormsg=$langs->trans("ErrorFailedToWriteInDir"); return -1; } @@ -947,9 +985,9 @@ class Utils // Saving the table structure fwrite($handle, "\n--\n-- Table structure for table `".$table."`\n--\n"); - if (GETPOST("nobin_drop")) fwrite($handle,"DROP TABLE IF EXISTS `".$table."`;\n"); // Dropping table if exists prior to re create it - fwrite($handle,"/*!40101 SET @saved_cs_client = @@character_set_client */;\n"); - fwrite($handle,"/*!40101 SET character_set_client = utf8 */;\n"); + if (GETPOST("nobin_drop")) fwrite($handle, "DROP TABLE IF EXISTS `".$table."`;\n"); // Dropping table if exists prior to re create it + fwrite($handle, "/*!40101 SET @saved_cs_client = @@character_set_client */;\n"); + fwrite($handle, "/*!40101 SET character_set_client = utf8 */;\n"); $resqldrop=$db->query('SHOW CREATE TABLE '.$table); $row2 = $db->fetch_row($resqldrop); if (empty($row2[1])) @@ -958,7 +996,7 @@ class Utils } else { - fwrite($handle,$row2[1].";\n"); + fwrite($handle, $row2[1].";\n"); //fwrite($handle,"/*!40101 SET character_set_client = @saved_cs_client */;\n\n"); // Dumping the data (locking the table and disabling the keys check while doing the process) @@ -972,7 +1010,7 @@ class Utils while($row = $db->fetch_row($result)) { // For each row of data we print a line of INSERT - fwrite($handle,'INSERT '.$delayed.$ignore.'INTO `'.$table.'` VALUES ('); + fwrite($handle, 'INSERT '.$delayed.$ignore.'INTO `'.$table.'` VALUES ('); $columns = count($row); for($j=0; $j<$columns; $j++) { // Processing each columns of the row to ensure that we correctly save the value (eg: add quotes for string - in fact we add quotes for everything, it's easier) @@ -991,11 +1029,11 @@ class Utils $row[$j] = "'".$row[$j]."'"; } } - fwrite($handle,implode(',', $row).");\n"); + fwrite($handle, implode(',', $row).");\n"); } if (GETPOST("nobin_disable_fk")) fwrite($handle, "ALTER TABLE `".$table."` ENABLE KEYS;\n"); // Enabling back the keys/index checking if (!GETPOST("nobin_nolocks")) fwrite($handle, "UNLOCK TABLES;\n"); // Unlocking the table - fwrite($handle,"\n\n\n"); + fwrite($handle, "\n\n\n"); } } diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 295bda85d53..d2aee3e6a30 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -4,6 +4,7 @@ * Copyright (C) 2012-2016 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> + * Copyright (C) 2019 Frédéric France <frederic.france@netlogic.fr> * * 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 @@ -34,7 +35,7 @@ */ function dol_basename($pathfile) { - return preg_replace('/^.*\/([^\/]+)$/','$1',rtrim($pathfile,'/')); + return preg_replace('/^.*\/([^\/]+)$/', '$1', rtrim($pathfile, '/')); } /** @@ -54,9 +55,9 @@ function dol_basename($pathfile) * @param string $relativename For recursive purpose only. Must be "" at first call. * @param string $donotfollowsymlinks Do not follow symbolic links * @return array Array of array('name'=>'xxx','fullname'=>'/abc/xxx','date'=>'yyy','size'=>99,'type'=>'dir|file',...) - * @see dol_dir_list_indatabase + * @see dol_dir_list_in_database() */ -function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0) +function dol_dir_list($path, $types = "all", $recursive = 0, $filter = "", $excludefilter = null, $sortcriteria = "name", $sortorder = SORT_ASC, $mode = 0, $nohook = 0, $relativename = "", $donotfollowsymlinks = 0) { global $db, $hookmanager; global $object; @@ -68,7 +69,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil $loadsize=($mode==1||$mode==3)?true:false; // Clean parameters - $path=preg_replace('/([\\/]+)$/i','',$path); + $path=preg_replace('/([\\/]+)$/i', '', $path); $newpath=dol_osencode($path); $reshook = 0; @@ -116,9 +117,9 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil $excludefilterarray=array('^\.'); if (is_array($excludefilter)) { - $excludefilterarray=array_merge($excludefilterarray,$excludefilter); + $excludefilterarray=array_merge($excludefilterarray, $excludefilter); } - else if ($excludefilter) $excludefilterarray[]=$excludefilter; + elseif ($excludefilter) $excludefilterarray[]=$excludefilter; // Check if file is qualified foreach($excludefilterarray as $filt) { @@ -140,9 +141,9 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil if ($loaddate || $sortcriteria == 'date') $filedate=dol_filemtime($path."/".$file); if ($loadsize || $sortcriteria == 'size') $filesize=dol_filesize($path."/".$file); - if (! $filter || preg_match('/'.$filter.'/i',$file)) // We do not search key $filter into all $path, only into $file part + if (! $filter || preg_match('/'.$filter.'/i', $file)) // We do not search key $filter into all $path, only into $file part { - preg_match('/([^\/]+)\/[^\/]+$/',$path.'/'.$file,$reg); + preg_match('/([^\/]+)\/[^\/]+$/', $path.'/'.$file, $reg); $level1name=(isset($reg[1])?$reg[1]:''); $file_list[] = array( "name" => $file, @@ -167,15 +168,15 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil } } } - else if (! $isdir && (($types == "files") || ($types == "all"))) + elseif (! $isdir && (($types == "files") || ($types == "all"))) { // Add file into file_list array if ($loaddate || $sortcriteria == 'date') $filedate=dol_filemtime($path."/".$file); if ($loadsize || $sortcriteria == 'size') $filesize=dol_filesize($path."/".$file); - if (! $filter || preg_match('/'.$filter.'/i',$file)) // We do not search key $filter into $path, only into $file + if (! $filter || preg_match('/'.$filter.'/i', $file)) // We do not search key $filter into $path, only into $file { - preg_match('/([^\/]+)\/[^\/]+$/',$path.'/'.$file,$reg); + preg_match('/([^\/]+)\/[^\/]+$/', $path.'/'.$file, $reg); $level1name=(isset($reg[1])?$reg[1]:''); $file_list[] = array( "name" => $file, @@ -194,15 +195,9 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil closedir($dir); // Obtain a list of columns - if (! empty($sortcriteria)) + if (! empty($sortcriteria) && $sortorder) { - $myarray=array(); - foreach ($file_list as $key => $row) - { - $myarray[$key] = (isset($row[$sortcriteria])?$row[$sortcriteria]:''); - } - // Sort the data - if ($sortorder) array_multisort($myarray, $sortorder, $file_list); + $file_list = dol_sort_array($file_list, $sortcriteria, ($sortorder == SORT_ASC ? 'asc' : 'desc')); } } } @@ -224,9 +219,9 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil * @param string $sortorder Sort order (SORT_ASC, SORT_DESC) * @param int $mode 0=Return array minimum keys loaded (faster), 1=Force all keys like description * @return array Array of array('name'=>'xxx','fullname'=>'/abc/xxx','type'=>'dir|file',...) - * @see dol_dir_list + * @see dol_dir_list() */ -function dol_dir_list_in_database($path, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0) +function dol_dir_list_in_database($path, $filter = "", $excludefilter = null, $sortcriteria = "name", $sortorder = SORT_ASC, $mode = 0) { global $conf, $db; @@ -248,7 +243,7 @@ function dol_dir_list_in_database($path, $filter="", $excludefilter=null, $sortc $obj = $db->fetch_object($resql); if ($obj) { - preg_match('/([^\/]+)\/[^\/]+$/',DOL_DATA_ROOT.'/'.$obj->filepath.'/'.$obj->filename,$reg); + preg_match('/([^\/]+)\/[^\/]+$/', DOL_DATA_ROOT.'/'.$obj->filepath.'/'.$obj->filename, $reg); $level1name=(isset($reg[1])?$reg[1]:''); $file_list[] = array( "rowid" => $obj->rowid, @@ -313,11 +308,11 @@ function completeFileArrayWithDatabaseInfo(&$filearray, $relativedir) global $object; if (! empty($object->id)) { - if (! empty($conf->product->enabled)) $upload_dirold = $conf->product->multidir_output[$object->entity].'/'.substr(substr("000".$object->id, -2),1,1).'/'.substr(substr("000".$object->id, -2),0,1).'/'.$object->id."/photos"; - else $upload_dirold = $conf->service->multidir_output[$object->entity].'/'.substr(substr("000".$object->id, -2),1,1).'/'.substr(substr("000".$object->id, -2),0,1).'/'.$object->id."/photos"; + if (! empty($conf->product->enabled)) $upload_dirold = $conf->product->multidir_output[$object->entity].'/'.substr(substr("000".$object->id, -2), 1, 1).'/'.substr(substr("000".$object->id, -2), 0, 1).'/'.$object->id."/photos"; + else $upload_dirold = $conf->service->multidir_output[$object->entity].'/'.substr(substr("000".$object->id, -2), 1, 1).'/'.substr(substr("000".$object->id, -2), 0, 1).'/'.$object->id."/photos"; - $relativedirold = preg_replace('/^'.preg_quote(DOL_DATA_ROOT,'/').'/', '', $upload_dirold); - $relativedirold = preg_replace('/^[\\/]/','',$relativedirold); + $relativedirold = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $upload_dirold); + $relativedirold = preg_replace('/^[\\/]/', '', $relativedirold); $filearrayindatabase = array_merge($filearrayindatabase, dol_dir_list_in_database($relativedirold, '', null, 'name', SORT_ASC)); } @@ -353,7 +348,7 @@ function completeFileArrayWithDatabaseInfo(&$filearray, $relativedir) $filearray[$key]['cover']=0; $filearray[$key]['acl']=''; - $rel_filename = preg_replace('/^'.preg_quote(DOL_DATA_ROOT,'/').'/', '', $filearray[$key]['fullname']); + $rel_filename = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $filearray[$key]['fullname']); if (! preg_match('/([\\/]temp[\\/]|[\\/]thumbs|\.meta$)/', $rel_filetorenameafter)) // If not a tmp file { dol_syslog("list_of_documents We found a file called '".$filearray[$key]['name']."' not indexed into database. We add it"); @@ -442,6 +437,18 @@ function dol_is_dir($folder) else return false; } +/** + * Return if path is empty + * + * @param string $dir Path of Directory + * @return boolean True or false + */ +function dol_is_dir_empty($dir) +{ + if (!is_readable($dir)) return false; + return (count(scandir($dir)) == 2); +} + /** * Return if path is a file * @@ -477,7 +484,7 @@ function dol_is_url($url) $tmpprot=array('file','http','https','ftp','zlib','data','ssh','ssh2','ogg','expect'); foreach($tmpprot as $prot) { - if (preg_match('/^'.$prot.':/i',$url)) return true; + if (preg_match('/^'.$prot.':/i', $url)) return true; } return false; } @@ -515,7 +522,7 @@ function dol_dir_is_emtpy($folder) * * @param string $file Filename * @return int <0 if KO, Number of lines in files if OK - * @see dol_nboflines + * @see dol_nboflines() */ function dol_count_nb_of_line($file) { @@ -523,7 +530,7 @@ function dol_count_nb_of_line($file) $newfile=dol_osencode($file); //print 'x'.$file; - $fp=fopen($newfile,'r'); + $fp=fopen($newfile, 'r'); if ($fp) { while (!feof($fp)) @@ -570,19 +577,20 @@ function dol_filemtime($pathoffile) /** * Make replacement of strings into a file. * - * @param string $srcfile Source file (can't be a directory) - * @param array $arrayreplacement Array with strings to replace. Example: array('valuebefore'=>'valueafter', ...) - * @param string $destfile Destination file (can't be a directory). If empty, will be same than source file. - * @param int $newmask Mask for new file (0 by default means $conf->global->MAIN_UMASK). Example: '0666' - * @param int $indexdatabase 1=index new file into database. - * @return int <0 if error, 0 if nothing done (dest file already exists), >0 if OK - * @see dol_copy dolReplaceRegExInFile + * @param string $srcfile Source file (can't be a directory) + * @param array $arrayreplacement Array with strings to replace. Example: array('valuebefore'=>'valueafter', ...) + * @param string $destfile Destination file (can't be a directory). If empty, will be same than source file. + * @param int $newmask Mask for new file (0 by default means $conf->global->MAIN_UMASK). Example: '0666' + * @param int $indexdatabase 1=index new file into database. + * @param int $arrayreplacementisregex 1=Array of replacement is regex + * @return int <0 if error, 0 if nothing done (dest file already exists), >0 if OK + * @see dol_copy() */ -function dolReplaceInFile($srcfile, $arrayreplacement, $destfile='', $newmask=0, $indexdatabase=0) +function dolReplaceInFile($srcfile, $arrayreplacement, $destfile = '', $newmask = 0, $indexdatabase = 0, $arrayreplacementisregex = 0) { global $conf; - dol_syslog("files.lib.php::dolReplaceInFile srcfile=".$srcfile." destfile=".$destfile." newmask=".$newmask." indexdatabase=".$indexdatabase); + dol_syslog("files.lib.php::dolReplaceInFile srcfile=".$srcfile." destfile=".$destfile." newmask=".$newmask." indexdatabase=".$indexdatabase." arrayreplacementisregex=".$arrayreplacementisregex); if (empty($srcfile)) return -1; if (empty($destfile)) $destfile=$srcfile; @@ -613,7 +621,17 @@ function dolReplaceInFile($srcfile, $arrayreplacement, $destfile='', $newmask=0, // Create $newpathoftmpdestfile from $newpathofsrcfile $content = file_get_contents($newpathofsrcfile, 'r'); - $content = make_substitutions($content, $arrayreplacement, null); + if (empty($arrayreplacementisregex)) + { + $content = make_substitutions($content, $arrayreplacement, null); + } + else + { + foreach ($arrayreplacement as $key => $value) + { + $content = preg_replace($key, $value, $content); + } + } file_put_contents($newpathoftmpdestfile, $content); @chmod($newpathoftmpdestfile, octdec($newmask)); @@ -637,21 +655,6 @@ function dolReplaceInFile($srcfile, $arrayreplacement, $destfile='', $newmask=0, return 1; } -/** - * Make replacement of strings into a file. - * - * @param string $srcfile Source file (can't be a directory) - * @param array $arrayreplacement Array with strings to replace. Example: array('valuebefore'=>'valueafter', ...) - * @param string $destfile Destination file (can't be a directory). If empty, will be same than source file. - * @param int $newmask Mask for new file (0 by default means $conf->global->MAIN_UMASK). Example: '0666' - * @param int $indexdatabase Index new file into database. - * @return int <0 if error, 0 if nothing done (dest file already exists), >0 if OK - * @see dol_copy dolReplaceInFile - */ -function dolReplaceRegExInFile($srcfile, $arrayreplacement, $destfile='', $newmask=0, $indexdatabase=0) -{ - // TODO -} /** * Copy a file to another file. @@ -661,9 +664,9 @@ function dolReplaceRegExInFile($srcfile, $arrayreplacement, $destfile='', $newma * @param int $newmask Mask for new file (0 by default means $conf->global->MAIN_UMASK). Example: '0666' * @param int $overwriteifexists Overwrite file if exists (1 by default) * @return int <0 if error, 0 if nothing done (dest file already exists and overwriteifexists=0), >0 if OK - * @see dol_delete_file + * @see dol_delete_file() dolCopyDir() */ -function dol_copy($srcfile, $destfile, $newmask=0, $overwriteifexists=1) +function dol_copy($srcfile, $destfile, $newmask = 0, $overwriteifexists = 1) { global $conf; @@ -717,9 +720,9 @@ function dol_copy($srcfile, $destfile, $newmask=0, $overwriteifexists=1) * @param int $overwriteifexists Overwrite file if exists (1 by default) * @param array $arrayreplacement Array to use to replace filenames with another one during the copy (works only on file names, not on directory names). * @return int <0 if error, 0 if nothing done (all files already exists and overwriteifexists=0), >0 if OK - * @see dol_copy + * @see dol_copy() */ -function dolCopyDir($srcfile, $destfile, $newmask, $overwriteifexists, $arrayreplacement=null) +function dolCopyDir($srcfile, $destfile, $newmask, $overwriteifexists, $arrayreplacement = null) { global $conf; @@ -809,9 +812,9 @@ function dolCopyDir($srcfile, $destfile, $newmask, $overwriteifexists, $arrayrep * @param int $testvirus Do an antivirus test. Move is canceled if a virus is found. * @param int $indexdatabase Index new file into database. * @return boolean True if OK, false if KO - * @see dol_move_uploaded_file + * @see dol_move_uploaded_file() */ -function dol_move($srcfile, $destfile, $newmask=0, $overwriteifexists=1, $testvirus=0, $indexdatabase=1) +function dol_move($srcfile, $destfile, $newmask = 0, $overwriteifexists = 1, $testvirus = 0, $indexdatabase = 1) { global $user, $db, $conf; $result=false; @@ -860,8 +863,8 @@ function dol_move($srcfile, $destfile, $newmask=0, $overwriteifexists=1, $testvi if ($result && $indexdatabase) { // Rename entry into ecm database - $rel_filetorenamebefore = preg_replace('/^'.preg_quote(DOL_DATA_ROOT,'/').'/', '', $srcfile); - $rel_filetorenameafter = preg_replace('/^'.preg_quote(DOL_DATA_ROOT,'/').'/', '', $destfile); + $rel_filetorenamebefore = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $srcfile); + $rel_filetorenameafter = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $destfile); if (! preg_match('/([\\/]temp[\\/]|[\\/]thumbs|\.meta$)/', $rel_filetorenameafter)) // If not a tmp file { $rel_filetorenamebefore = preg_replace('/^[\\/]/', '', $rel_filetorenamebefore); @@ -956,18 +959,18 @@ function dol_unescapefile($filename) */ function dolCheckVirus($src_file) { - global $conf, $db; + global $conf; if (! empty($conf->global->MAIN_ANTIVIRUS_COMMAND)) { if (! class_exists('AntiVir')) { require_once DOL_DOCUMENT_ROOT.'/core/class/antivir.class.php'; } - $antivir = new AntiVir($db); + $antivir=new AntiVir($db); $result = $antivir->dol_avscan_file($src_file); if ($result < 0) // If virus or error, we stop here { - $reterrors = $antivir->errors; + $reterrors=$antivir->errors; return $reterrors; } } @@ -982,6 +985,7 @@ function dolCheckVirus($src_file) * - This function can be used only into a HTML page context. Use dol_move if you are outside. * - Test on antivirus is always done (if antivirus set). * - Database of files is NOT updated (this is done by dol_add_file_process() that calls this function). + * - Extension .noexe may be added if file is executable and MAIN_DOCUMENT_IS_OUTSIDE_WEBROOT_SO_NOEXE_NOT_REQUIRED is not set. * * @param string $src_file Source full path filename ($_FILES['field']['tmp_name']) * @param string $dest_file Target full path filename ($_FILES['field']['name']) @@ -990,10 +994,10 @@ function dolCheckVirus($src_file) * @param integer $uploaderrorcode Value of PHP upload error code ($_FILES['field']['error']) * @param int $nohook Disable all hooks * @param string $varfiles _FILES var name - * @return int|string >0 if OK, <0 or string if KO - * @see dol_move + * @return int >0 if OK, <0 or string if KO + * @see dol_move() */ -function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disablevirusscan=0, $uploaderrorcode=0, $nohook=0, $varfiles='addedfile') +function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disablevirusscan = 0, $uploaderrorcode = 0, $nohook = 0, $varfiles = 'addedfile') { global $conf, $db, $user, $langs; global $object, $hookmanager; @@ -1045,8 +1049,8 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable $checkvirusarray=dolCheckVirus($src_file); if (count($checkvirusarray)) { - dol_syslog('Files.lib::dol_move_uploaded_file File "'.$src_file.'" (target name "'.$dest_file.'") KO with antivirus: result='.$result.' errors='.join(',',$checkvirusarray), LOG_WARNING); - return 'ErrorFileIsInfectedWithAVirus: '.join(',',$checkvirusarray); + dol_syslog('Files.lib::dol_move_uploaded_file File "'.$src_file.'" (target name "'.$dest_file.'") KO with antivirus: errors='.join(',', $checkvirusarray), LOG_WARNING); + return 'ErrorFileIsInfectedWithAVirus: '.join(',', $checkvirusarray); } } @@ -1060,15 +1064,15 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable // Security: // We refuse cache files/dirs, upload using .. and pipes into filenames. - if (preg_match('/^\./',$src_file) || preg_match('/\.\./',$src_file) || preg_match('/[<>|]/',$src_file)) + if (preg_match('/^\./', basename($src_file)) || preg_match('/\.\./', $src_file) || preg_match('/[<>|]/', $src_file)) { dol_syslog("Refused to deliver file ".$src_file, LOG_WARNING); return -1; } // Security: - // On interdit fichiers caches, remontees de repertoire ainsi que les pipe dans les noms de fichiers. - if (preg_match('/^\./',$dest_file) || preg_match('/\.\./',$dest_file) || preg_match('/[<>|]/',$dest_file)) + // We refuse cache files/dirs, upload using .. and pipes into filenames. + if (preg_match('/^\./', basename($dest_file)) || preg_match('/\.\./', $dest_file) || preg_match('/[<>|]/', $dest_file)) { dol_syslog("Refused to deliver file ".$dest_file, LOG_WARNING); return -2; @@ -1134,9 +1138,9 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable * @param boolean $allowdotdot Allow to delete file path with .. inside. Never use this, it is reserved for migration purpose. * @param int $indexdatabase Try to remove also index entries. * @return boolean True if no error (file is deleted or if glob is used and there's nothing to delete), False if error - * @see dol_delete_dir + * @see dol_delete_dir() */ -function dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $object=null, $allowdotdot=false, $indexdatabase=1) +function dol_delete_file($file, $disableglob = 0, $nophperrors = 0, $nohook = 0, $object = null, $allowdotdot = false, $indexdatabase = 1) { global $db, $conf, $user, $langs; global $hookmanager; @@ -1148,7 +1152,7 @@ function dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $obje // Security: // We refuse transversal using .. and pipes into filenames. - if ((! $allowdotdot && preg_match('/\.\./',$file)) || preg_match('/[<>|]/',$file)) + if ((! $allowdotdot && preg_match('/\.\./', $file)) || preg_match('/[<>|]/', $file)) { dol_syslog("Refused to delete file ".$file, LOG_WARNING); return false; @@ -1181,8 +1185,8 @@ function dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $obje if (empty($disableglob) && ! empty($file_osencoded)) { $ok=true; - $globencoded=str_replace('[','\[',$file_osencoded); - $globencoded=str_replace(']','\]',$globencoded); + $globencoded=str_replace('[', '\[', $file_osencoded); + $globencoded=str_replace(']', '\]', $globencoded); $listofdir=glob($globencoded); if (! empty($listofdir) && is_array($listofdir)) { @@ -1195,7 +1199,7 @@ function dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $obje dol_syslog("Removed file ".$filename, LOG_DEBUG); // Delete entry into ecm database - $rel_filetodelete = preg_replace('/^'.preg_quote(DOL_DATA_ROOT,'/').'/', '', $filename); + $rel_filetodelete = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $filename); if (! preg_match('/(\/temp\/|\/thumbs\/|\.meta$)/', $rel_filetodelete)) // If not a tmp file { $rel_filetodelete = preg_replace('/^[\\/]/', '', $rel_filetodelete); @@ -1217,9 +1221,12 @@ function dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $obje } } } - else dol_syslog("Failed to remove file ".$filename, LOG_WARNING); - // TODO Failure to remove can be because file was already removed or because of permission - // If error because it does not exists, we should return true, and we should return false if this is a permission problem + else + { + dol_syslog("Failed to remove file ".$filename, LOG_WARNING); + // TODO Failure to remove can be because file was already removed or because of permission + // If error because it does not exists, we should return true, and we should return false if this is a permission problem + } } } else dol_syslog("No files to delete found", LOG_DEBUG); @@ -1244,13 +1251,13 @@ function dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $obje * @param string $dir Directory to delete * @param int $nophperrors Disable all PHP output errors * @return boolean True if success, false if error - * @see dol_delete_file dol_copy + * @see dol_delete_file() dolCopyDir() */ -function dol_delete_dir($dir,$nophperrors=0) +function dol_delete_dir($dir, $nophperrors = 0) { // Security: // We refuse transversal using .. and pipes into filenames. - if (preg_match('/\.\./',$dir) || preg_match('/[<>|]/',$dir)) + if (preg_match('/\.\./', $dir) || preg_match('/[<>|]/', $dir)) { dol_syslog("Refused to delete dir ".$dir, LOG_WARNING); return false; @@ -1270,9 +1277,9 @@ function dol_delete_dir($dir,$nophperrors=0) * @param int $countdeleted Counter to count nb of elements found really deleted * @return int Number of files and directory we try to remove. NB really removed is returned into var by reference $countdeleted. */ -function dol_delete_dir_recursive($dir, $count=0, $nophperrors=0, $onlysub=0, &$countdeleted=0) +function dol_delete_dir_recursive($dir, $count = 0, $nophperrors = 0, $onlysub = 0, &$countdeleted = 0) { - dol_syslog("functions.lib:dol_delete_dir_recursive ".$dir,LOG_DEBUG); + dol_syslog("functions.lib:dol_delete_dir_recursive ".$dir, LOG_DEBUG); if (dol_is_dir($dir)) { $dir_osencoded=dol_osencode($dir); @@ -1319,7 +1326,7 @@ function dol_delete_dir_recursive($dir, $count=0, $nophperrors=0, $onlysub=0, &$ * * @param object $object Object to clean * @return int 0 if error, 1 if OK - * @see dol_convert_file + * @see dol_convert_file() */ function dol_delete_preview($object) { @@ -1347,26 +1354,26 @@ function dol_delete_preview($object) // For new preview files if (file_exists($filepreviewnew) && is_writable($filepreviewnew)) { - if (! dol_delete_file($filepreviewnew,1)) + if (! dol_delete_file($filepreviewnew, 1)) { - $object->error=$langs->trans("ErrorFailedToDeleteFile",$filepreviewnew); + $object->error=$langs->trans("ErrorFailedToDeleteFile", $filepreviewnew); return 0; } } if (file_exists($filepreviewnewbis) && is_writable($filepreviewnewbis)) { - if (! dol_delete_file($filepreviewnewbis,1)) + if (! dol_delete_file($filepreviewnewbis, 1)) { - $object->error=$langs->trans("ErrorFailedToDeleteFile",$filepreviewnewbis); + $object->error=$langs->trans("ErrorFailedToDeleteFile", $filepreviewnewbis); return 0; } } // For old preview files if (file_exists($filepreviewold) && is_writable($filepreviewold)) { - if (! dol_delete_file($filepreviewold,1)) + if (! dol_delete_file($filepreviewold, 1)) { - $object->error=$langs->trans("ErrorFailedToDeleteFile",$filepreviewold); + $object->error=$langs->trans("ErrorFailedToDeleteFile", $filepreviewold); return 0; } } @@ -1379,9 +1386,9 @@ function dol_delete_preview($object) if (file_exists($preview) && is_writable($preview)) { - if ( ! dol_delete_file($preview,1) ) + if ( ! dol_delete_file($preview, 1) ) { - $object->error=$langs->trans("ErrorFailedToOpenFile",$preview); + $object->error=$langs->trans("ErrorFailedToOpenFile", $preview); return 0; } } @@ -1435,7 +1442,7 @@ function dol_meta_create($object) $nblignes = count($object->lines); $client = $object->thirdparty->name . " " . $object->thirdparty->address . " " . $object->thirdparty->zip . " " . $object->thirdparty->town; $meta = "REFERENCE=\"" . $object->ref . "\" - DATE=\"" . dol_print_date($object->date,'') . "\" + DATE=\"" . dol_print_date($object->date, '') . "\" NB_ITEMS=\"" . $nblignes . "\" CLIENT=\"" . $client . "\" AMOUNT_EXCL_TAX=\"" . $object->total_ht . "\" @@ -1447,13 +1454,13 @@ function dol_meta_create($object) $meta .= "ITEM_" . $i . "_QUANTITY=\"" . $object->lines[$i]->qty . "\" ITEM_" . $i . "_AMOUNT_WO_TAX=\"" . $object->lines[$i]->total_ht . "\" ITEM_" . $i . "_VAT=\"" .$object->lines[$i]->tva_tx . "\" - ITEM_" . $i . "_DESCRIPTION=\"" . str_replace("\r\n","",nl2br($object->lines[$i]->desc)) . "\" + ITEM_" . $i . "_DESCRIPTION=\"" . str_replace("\r\n", "", nl2br($object->lines[$i]->desc)) . "\" "; } } - $fp = fopen($file,"w"); - fputs($fp,$meta); + $fp = fopen($file, "w"); + fputs($fp, $meta); fclose($fp); if (! empty($conf->global->MAIN_UMASK)) @chmod($file, octdec($conf->global->MAIN_UMASK)); @@ -1478,7 +1485,7 @@ function dol_meta_create($object) * @param string $trackid Track id (used to prefix name of session vars to avoid conflict) * @return void */ -function dol_init_file_process($pathtoscan='', $trackid='') +function dol_init_file_process($pathtoscan = '', $trackid = '') { $listofpaths=array(); $listofnames=array(); @@ -1486,7 +1493,7 @@ function dol_init_file_process($pathtoscan='', $trackid='') if ($pathtoscan) { - $listoffiles=dol_dir_list($pathtoscan,'files'); + $listoffiles=dol_dir_list($pathtoscan, 'files'); foreach($listoffiles as $key => $val) { $listofpaths[]=$val['fullname']; @@ -1495,9 +1502,9 @@ function dol_init_file_process($pathtoscan='', $trackid='') } } $keytoavoidconflict = empty($trackid)?'':'-'.$trackid; - $_SESSION["listofpaths".$keytoavoidconflict]=join(';',$listofpaths); - $_SESSION["listofnames".$keytoavoidconflict]=join(';',$listofnames); - $_SESSION["listofmimes".$keytoavoidconflict]=join(';',$listofmimes); + $_SESSION["listofpaths".$keytoavoidconflict]=join(';', $listofpaths); + $_SESSION["listofnames".$keytoavoidconflict]=join(';', $listofnames); + $_SESSION["listofmimes".$keytoavoidconflict]=join(';', $listofmimes); } @@ -1516,7 +1523,7 @@ function dol_init_file_process($pathtoscan='', $trackid='') * @param int $generatethumbs 1=Generate also thumbs for uploaded image files * @return int <=0 if KO, >0 if OK */ -function dol_add_file_process($upload_dir, $allowoverwrite=0, $donotupdatesession=0, $varfiles='addedfile', $savingdocmask='', $link=null, $trackid='', $generatethumbs=1) +function dol_add_file_process($upload_dir, $allowoverwrite = 0, $donotupdatesession = 0, $varfiles = 'addedfile', $savingdocmask = '', $link = null, $trackid = '', $generatethumbs = 1) { global $db,$user,$conf,$langs; @@ -1546,8 +1553,8 @@ function dol_add_file_process($upload_dir, $allowoverwrite=0, $donotupdatesessio if ($savingdocmask) { - $destfull=$upload_dir . "/" . preg_replace('/__file__/',$TFile['name'][$i],$savingdocmask); - $destfile=preg_replace('/__file__/',$TFile['name'][$i],$savingdocmask); + $destfull=$upload_dir . "/" . preg_replace('/__file__/', $TFile['name'][$i], $savingdocmask); + $destfile=preg_replace('/__file__/', $TFile['name'][$i], $savingdocmask); } // dol_sanitizeFileName the file name and lowercase extension @@ -1614,7 +1621,7 @@ function dol_add_file_process($upload_dir, $allowoverwrite=0, $donotupdatesessio { setEventMessages($langs->trans("ErrorFileNotUploaded"), null, 'errors'); } - else if (preg_match('/ErrorFileIsInfectedWithAVirus/',$resupload)) // Files infected by a virus + elseif (preg_match('/ErrorFileIsInfectedWithAVirus/', $resupload)) // Files infected by a virus { setEventMessages($langs->trans("ErrorFileIsInfectedWithAVirus"), null, 'errors'); } @@ -1666,7 +1673,7 @@ function dol_add_file_process($upload_dir, $allowoverwrite=0, $donotupdatesessio * @param string $trackid Track id (used to prefix name of session vars to avoid conflict) * @return void */ -function dol_remove_file_process($filenb,$donotupdatesession=0,$donotdeletefile=1,$trackid='') +function dol_remove_file_process($filenb, $donotupdatesession = 0, $donotdeletefile = 1, $trackid = '') { global $db,$user,$conf,$langs,$_FILES; @@ -1677,22 +1684,22 @@ function dol_remove_file_process($filenb,$donotupdatesession=0,$donotdeletefile= $listofnames=array(); $listofmimes=array(); $keytoavoidconflict = empty($trackid)?'':'-'.$trackid; - if (! empty($_SESSION["listofpaths".$keytoavoidconflict])) $listofpaths=explode(';',$_SESSION["listofpaths".$keytoavoidconflict]); - if (! empty($_SESSION["listofnames".$keytoavoidconflict])) $listofnames=explode(';',$_SESSION["listofnames".$keytoavoidconflict]); - if (! empty($_SESSION["listofmimes".$keytoavoidconflict])) $listofmimes=explode(';',$_SESSION["listofmimes".$keytoavoidconflict]); + if (! empty($_SESSION["listofpaths".$keytoavoidconflict])) $listofpaths=explode(';', $_SESSION["listofpaths".$keytoavoidconflict]); + if (! empty($_SESSION["listofnames".$keytoavoidconflict])) $listofnames=explode(';', $_SESSION["listofnames".$keytoavoidconflict]); + if (! empty($_SESSION["listofmimes".$keytoavoidconflict])) $listofmimes=explode(';', $_SESSION["listofmimes".$keytoavoidconflict]); if ($keytodelete >= 0) { $pathtodelete=$listofpaths[$keytodelete]; $filetodelete=$listofnames[$keytodelete]; - if (empty($donotdeletefile)) $result = dol_delete_file($pathtodelete,1); // The delete of ecm database is inside the function dol_delete_file + if (empty($donotdeletefile)) $result = dol_delete_file($pathtodelete, 1); // The delete of ecm database is inside the function dol_delete_file else $result=0; if ($result >= 0) { if (empty($donotdeletefile)) { $langs->load("other"); - setEventMessages($langs->trans("FileWasRemoved",$filetodelete), null, 'mesgs'); + setEventMessages($langs->trans("FileWasRemoved", $filetodelete), null, 'mesgs'); } if (empty($donotupdatesession)) { @@ -1718,13 +1725,13 @@ function dol_remove_file_process($filenb,$donotupdatesession=0,$donotdeletefile= * @param int $setsharekey Set also the share key * @return int <0 if KO, 0 if nothing done, >0 if OK */ -function addFileIntoDatabaseIndex($dir, $file, $fullpathorig='', $mode='uploaded', $setsharekey=0) +function addFileIntoDatabaseIndex($dir, $file, $fullpathorig = '', $mode = 'uploaded', $setsharekey = 0) { global $db, $user; $result = 0; - $rel_dir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT,'/').'/', '', $dir); + $rel_dir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $dir); if (! preg_match('/[\\/]temp[\\/]|[\\/]thumbs|\.meta$/', $rel_dir)) // If not a tmp dir { @@ -1766,7 +1773,7 @@ function addFileIntoDatabaseIndex($dir, $file, $fullpathorig='', $mode='uploaded * @param string $mode How file was created ('uploaded', 'generated', ...) * @return int <0 if KO, 0 if nothing done, >0 if OK */ -function deleteFilesIntoDatabaseIndex($dir, $file, $mode='uploaded') +function deleteFilesIntoDatabaseIndex($dir, $file, $mode = 'uploaded') { global $conf, $db, $user; @@ -1780,7 +1787,7 @@ function deleteFilesIntoDatabaseIndex($dir, $file, $mode='uploaded') $db->begin(); - $rel_dir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT,'/').'/', '', $dir); + $rel_dir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $dir); $filename = basename($file); $rel_dir = preg_replace('/[\\/]$/', '', $rel_dir); @@ -1820,38 +1827,36 @@ function deleteFilesIntoDatabaseIndex($dir, $file, $mode='uploaded') * @param string $fileinput Input file name * @param string $ext Format of target file (It is also extension added to file if fileoutput is not provided). * @param string $fileoutput Output filename + * @param string $page Page number if we convert a PDF into png * @return int <0 if KO, 0=Nothing done, >0 if OK */ -function dol_convert_file($fileinput, $ext='png', $fileoutput='') +function dol_convert_file($fileinput, $ext = 'png', $fileoutput = '', $page = '') { global $langs; - if (class_exists('Imagick')) { - $image=new Imagick(); + $image=new Imagick(); try { - $ret = $image->readImage($fileinput); + $filetoconvert=$fileinput.(($page != '')?'['.$page.']':''); + //var_dump($filetoconvert); + $ret = $image->readImage($filetoconvert); } catch(Exception $e) { - dol_syslog("Failed to read image using Imagick. Try to install package 'apt-get install ghostscript'.", LOG_WARNING); + $ext = pathinfo($fileinput, PATHINFO_EXTENSION); + dol_syslog("Failed to read image using Imagick (Try to install package 'apt-get install php-imagick ghostscript' and check there is no policy to disable ".$ext." convertion in /etc/ImageMagick*/policy.xml): ".$e->getMessage(), LOG_WARNING); return 0; } if ($ret) { - $ret = $image->setImageFormat($ext); + $ret = $image->setImageFormat($ext); if ($ret) { if (empty($fileoutput)) $fileoutput=$fileinput.".".$ext; $count = $image->getNumberImages(); + if (! dol_is_file($fileoutput) || is_writeable($fileoutput)) { - try { - $ret = $image->writeImages($fileoutput, true); - } - catch(Exception $e) - { - dol_syslog($e->getMessage(), LOG_WARNING); - } + $ret = $image->writeImages($fileoutput, true); } else { @@ -1885,26 +1890,89 @@ function dol_convert_file($fileinput, $ext='png', $fileoutput='') * @param string $mode 'gz' or 'bz' or 'zip' * @return int <0 if KO, >0 if OK */ -function dol_compress_file($inputfile, $outputfile, $mode="gz") +function dol_compress_file($inputfile, $outputfile, $mode = "gz") { + global $conf; + $foundhandler=0; try { + dol_syslog("dol_compress_file mode=".$mode." inputfile=".$inputfile." outputfile=".$outputfile); + $data = implode("", file(dol_osencode($inputfile))); if ($mode == 'gz') { $foundhandler=1; $compressdata = gzencode($data, 9); } elseif ($mode == 'bz') { $foundhandler=1; $compressdata = bzcompress($data, 9); } elseif ($mode == 'zip') { + if (class_exists('ZipArchive') && ! empty($conf->global->MAIN_USE_ZIPARCHIVE_FOR_ZIP_COMPRESS)) + { + $foundhandler=1; + + $rootPath = realpath($inputfile); + + dol_syslog("Class ZipArchive is set so we zip using ZipArchive to zip into ".$outputfile.' rootPath='.$rootPath); + $zip = new ZipArchive; + + if ($zip->open($outputfile, ZipArchive::CREATE) !== true) { + $errormsg="Failed to open file ".$outputfile."\n"; + dol_syslog("dol_compress_file failure - ".$errormsg, LOG_ERR); + return -6; + } + + // Create recursive directory iterator + /** @var SplFileInfo[] $files */ + $files = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($rootPath), + RecursiveIteratorIterator::LEAVES_ONLY + ); + + foreach ($files as $name => $file) + { + // Skip directories (they would be added automatically) + if (!$file->isDir()) + { + // Get real and relative path for current file + $filePath = $file->getRealPath(); + $relativePath = substr($filePath, strlen($rootPath) + 1); + + // Add current file to archive + $zip->addFile($filePath, $relativePath); + } + } + + // Zip archive will be created only after closing object + $zip->close(); + + dol_syslog("dol_compress_file success - ".count($zip->numFiles)." files"); + return 1; + } + if (defined('ODTPHP_PATHTOPCLZIP')) { $foundhandler=1; include_once ODTPHP_PATHTOPCLZIP.'/pclzip.lib.php'; $archive = new PclZip($outputfile); - $archive->add($inputfile, PCLZIP_OPT_REMOVE_PATH, dirname($inputfile)); - //$archive->add($inputfile); - return 1; + $result = $archive->add($inputfile, PCLZIP_OPT_REMOVE_PATH, dirname($inputfile)); + + if ($result === 0) + { + global $errormsg; + $errormsg=$archive->errorInfo(true); + dol_syslog("dol_compress_file failure - ".$errormsg, LOG_ERR); + if ($archive->errorCode() == PCLZIP_ERR_WRITE_OPEN_FAIL) + { + dol_syslog("dol_compress_file error PCLZIP_ERR_WRITE_OPEN_FAIL", LOG_ERR); + return -4; + } + return -3; + } + else + { + dol_syslog("dol_compress_file success - ".count($result)." files"); + return 1; + } } } @@ -1917,7 +1985,7 @@ function dol_compress_file($inputfile, $outputfile, $mode="gz") } else { - dol_syslog("Try to zip with format ".$mode." with no handler for this format",LOG_ERR); + dol_syslog("Try to zip with format ".$mode." with no handler for this format", LOG_ERR); return -2; } } @@ -1925,7 +1993,7 @@ function dol_compress_file($inputfile, $outputfile, $mode="gz") { global $langs, $errormsg; $langs->load("errors"); - dol_syslog("Failed to open file ".$outputfile,LOG_ERR); + dol_syslog("Failed to open file ".$outputfile, LOG_ERR); $errormsg=$langs->trans("ErrorFailedToWriteInDir"); return -1; } @@ -1938,11 +2006,11 @@ function dol_compress_file($inputfile, $outputfile, $mode="gz") * @param string $outputdir Target dir name * @return array array('error'=>'Error code') or array() if no error */ -function dol_uncompress($inputfile,$outputdir) +function dol_uncompress($inputfile, $outputdir) { - global $langs; + global $conf, $langs; - if (defined('ODTPHP_PATHTOPCLZIP')) + if (defined('ODTPHP_PATHTOPCLZIP') && empty($conf->global->MAIN_USE_ZIPARCHIVE_FOR_ZIP_UNCOMPRESS)) { dol_syslog("Constant ODTPHP_PATHTOPCLZIP for pclzip library is set to ".ODTPHP_PATHTOPCLZIP.", so we use Pclzip to unzip into ".$outputdir); include_once ODTPHP_PATHTOPCLZIP.'/pclzip.lib.php'; @@ -1997,9 +2065,10 @@ function dol_uncompress($inputfile,$outputdir) * @param string $inputdir Source dir name * @param string $outputfile Target file name (output directory must exists and be writable) * @param string $mode 'zip' + * @param string $excludefiles A regex pattern. For example: '/\.log$|\/temp\//' * @return int <0 if KO, >0 if OK */ -function dol_compress_dir($inputdir, $outputfile, $mode="zip") +function dol_compress_dir($inputdir, $outputfile, $mode = "zip", $excludefiles = '') { $foundhandler=0; @@ -2009,7 +2078,7 @@ function dol_compress_dir($inputdir, $outputfile, $mode="zip") { global $langs, $errormsg; $langs->load("errors"); - $errormsg=$langs->trans("ErrorFailedToWriteInDir",$outputfile); + $errormsg=$langs->trans("ErrorFailedToWriteInDir", $outputfile); return -3; } @@ -2030,6 +2099,7 @@ function dol_compress_dir($inputdir, $outputfile, $mode="zip") return 1; } else*/ + //if (class_exists('ZipArchive') && ! empty($conf->global->MAIN_USE_ZIPARCHIVE_FOR_ZIP_COMPRESS)) if (class_exists('ZipArchive')) { $foundhandler=1; @@ -2037,6 +2107,13 @@ function dol_compress_dir($inputdir, $outputfile, $mode="zip") // Initialize archive object $zip = new ZipArchive(); $result = $zip->open($outputfile, ZipArchive::CREATE | ZipArchive::OVERWRITE); + if (! $result) + { + global $langs, $errormsg; + $langs->load("errors"); + $errormsg=$langs->trans("ErrorFailedToWriteInFile", $outputfile); + return -4; + } // Create recursive directory iterator /** @var SplFileInfo[] $files */ @@ -2053,9 +2130,11 @@ function dol_compress_dir($inputdir, $outputfile, $mode="zip") // Get real and relative path for current file $filePath = $file->getRealPath(); $relativePath = substr($filePath, strlen($inputdir) + 1); - - // Add current file to archive - $zip->addFile($filePath, $relativePath); + if (empty($excludefiles) || ! preg_match($excludefiles, $filePath)) + { + // Add current file to archive + $zip->addFile($filePath, $relativePath); + } } } @@ -2068,7 +2147,7 @@ function dol_compress_dir($inputdir, $outputfile, $mode="zip") if (! $foundhandler) { - dol_syslog("Try to zip with format ".$mode." with no handler for this format",LOG_ERR); + dol_syslog("Try to zip with format ".$mode." with no handler for this format", LOG_ERR); return -2; } else @@ -2082,7 +2161,7 @@ function dol_compress_dir($inputdir, $outputfile, $mode="zip") $langs->load("errors"); dol_syslog("Failed to open file ".$outputfile, LOG_ERR); dol_syslog($e->getMessage(), LOG_ERR); - $errormsg=$langs->trans("ErrorFailedToWriteInDir",$outputfile); + $errormsg=$langs->trans("ErrorFailedToWriteInDir", $outputfile); return -1; } } @@ -2099,9 +2178,9 @@ function dol_compress_dir($inputdir, $outputfile, $mode="zip") * @param int $mode 0=Return array minimum keys loaded (faster), 1=Force all keys like date and size to be loaded (slower), 2=Force load of date only, 3=Force load of size only * @return string Full path to most recent file */ -function dol_most_recent_file($dir,$regexfilter='',$excludefilter=array('(\.meta|_preview.*\.png)$','^\.'),$nohook=false,$mode='') +function dol_most_recent_file($dir, $regexfilter = '', $excludefilter = array('(\.meta|_preview.*\.png)$','^\.'), $nohook = false, $mode = '') { - $tmparray=dol_dir_list($dir,'files',0,$regexfilter,$excludefilter,'date',SORT_DESC,$mode,$nohook); + $tmparray=dol_dir_list($dir, 'files', 0, $regexfilter, $excludefilter, 'date', SORT_DESC, $mode, $nohook); return $tmparray[0]; } @@ -2115,9 +2194,9 @@ function dol_most_recent_file($dir,$regexfilter='',$excludefilter=array('(\.meta * @param string $refname Ref of object to check permission for external users (autodetect if not provided) * @param string $mode Check permission for 'read' or 'write' * @return mixed Array with access information : 'accessallowed' & 'sqlprotectagainstexternals' & 'original_file' (as a full path name) - * @see restrictedArea + * @see restrictedArea() */ -function dol_check_secure_access_document($modulepart, $original_file, $entity, $fuser='', $refname='', $mode='read') +function dol_check_secure_access_document($modulepart, $original_file, $entity, $fuser = '', $refname = '', $mode = 'read') { global $conf, $db, $user; global $dolibarr_main_data_root, $dolibarr_main_document_root_alt; @@ -2134,6 +2213,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, if ($modulepart == 'users') $modulepart='user'; dol_syslog('modulepart='.$modulepart.' original_file='.$original_file.' entity='.$entity); + // We define $accessallowed and $sqlprotectagainstexternals $accessallowed=0; $sqlprotectagainstexternals=''; @@ -2142,8 +2222,6 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, // Find the subdirectory name as the reference. For exemple original_file='10/myfile.pdf' -> refname='10' if (empty($refname)) $refname=basename(dirname($original_file)."/"); - $relative_original_file = $original_file; - // Define possible keys to use for permission check $lire='lire'; $read='read'; $download='download'; if ($mode == 'write') @@ -2293,7 +2371,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, $original_file=$conf->adherent->dir_temp.'/'.$original_file; } // Wrapping pour les images des stats produits - elseif (preg_match('/^productstats_/i',$modulepart) && !empty($conf->product->dir_temp)) + elseif (preg_match('/^productstats_/i', $modulepart) && !empty($conf->product->dir_temp)) { if ($fuser->rights->produit->{$lire} || $fuser->rights->service->{$lire}) $accessallowed=1; $original_file=(!empty($conf->product->multidir_temp[$entity])?$conf->product->multidir_temp[$entity]:$conf->service->multidir_temp[$entity]).'/'.$original_file; @@ -2320,7 +2398,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, // Wrapping pour les prelevements elseif ($modulepart == 'prelevement' && !empty($conf->prelevement->dir_output)) { - if ($fuser->rights->prelevement->bons->{$lire} || preg_match('/^specimen/i',$original_file)) $accessallowed=1; + if ($fuser->rights->prelevement->bons->{$lire} || preg_match('/^specimen/i', $original_file)) $accessallowed=1; $original_file=$conf->prelevement->dir_output.'/'.$original_file; } // Wrapping pour les graph energie @@ -2369,11 +2447,11 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for users - else if ($modulepart == 'user' && !empty($conf->user->dir_output)) + elseif ($modulepart == 'user' && !empty($conf->user->dir_output)) { $canreaduser=(! empty($fuser->admin) || $fuser->rights->user->user->{$lire}); if ($fuser->id == (int) $refname) { $canreaduser=1; } // A user can always read its own card - if ($canreaduser || preg_match('/^specimen/i',$original_file)) + if ($canreaduser || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2381,10 +2459,10 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for third parties - else if (($modulepart == 'company' || $modulepart == 'societe') && !empty($conf->societe->dir_output)) + elseif (($modulepart == 'company' || $modulepart == 'societe' || $modulepart == 'thirdparty') && !empty($conf->societe->dir_output)) { if (empty($entity) || empty($conf->societe->multidir_output[$entity])) return array('accessallowed'=>0, 'error'=>'Value entity must be provided'); - if ($fuser->rights->societe->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->societe->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2393,7 +2471,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for contact - else if ($modulepart == 'contact' && !empty($conf->societe->dir_output)) + elseif ($modulepart == 'contact' && !empty($conf->societe->dir_output)) { if (empty($entity) || empty($conf->societe->multidir_output[$entity])) return array('accessallowed'=>0, 'error'=>'Value entity must be provided'); if ($fuser->rights->societe->{$lire}) @@ -2404,9 +2482,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for invoices - else if (($modulepart == 'facture' || $modulepart == 'invoice') && !empty($conf->facture->dir_output)) + elseif (($modulepart == 'facture' || $modulepart == 'invoice') && !empty($conf->facture->dir_output)) { - if ($fuser->rights->facture->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->facture->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2414,73 +2492,73 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, $sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."facture WHERE ref='".$db->escape($refname)."' AND entity=".$conf->entity; } // Wrapping for mass actions - else if ($modulepart == 'massfilesarea_proposals' && !empty($conf->propal->multidir_output[$entity])) + elseif ($modulepart == 'massfilesarea_proposals' && !empty($conf->propal->multidir_output[$entity])) { - if ($fuser->rights->propal->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->propal->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->propal->multidir_output[$entity].'/temp/massgeneration/'.$user->id.'/'.$original_file; } - else if ($modulepart == 'massfilesarea_orders') + elseif ($modulepart == 'massfilesarea_orders') { - if ($fuser->rights->commande->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->commande->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->commande->dir_output.'/temp/massgeneration/'.$user->id.'/'.$original_file; } - else if ($modulepart == 'massfilesarea_invoices') + elseif ($modulepart == 'massfilesarea_invoices') { - if ($fuser->rights->facture->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->facture->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->facture->dir_output.'/temp/massgeneration/'.$user->id.'/'.$original_file; } - else if ($modulepart == 'massfilesarea_expensereport') + elseif ($modulepart == 'massfilesarea_expensereport') { - if ($fuser->rights->facture->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->facture->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->expensereport->dir_output.'/temp/massgeneration/'.$user->id.'/'.$original_file; } - else if ($modulepart == 'massfilesarea_interventions') + elseif ($modulepart == 'massfilesarea_interventions') { - if ($fuser->rights->ficheinter->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->ficheinter->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->ficheinter->dir_output.'/temp/massgeneration/'.$user->id.'/'.$original_file; } - else if ($modulepart == 'massfilesarea_supplier_proposal' && !empty($conf->supplier_proposal->dir_output)) + elseif ($modulepart == 'massfilesarea_supplier_proposal' && !empty($conf->supplier_proposal->dir_output)) { - if ($fuser->rights->supplier_proposal->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->supplier_proposal->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->supplier_proposal->dir_output.'/temp/massgeneration/'.$user->id.'/'.$original_file; } - else if ($modulepart == 'massfilesarea_supplier_order') + elseif ($modulepart == 'massfilesarea_supplier_order') { - if ($fuser->rights->fournisseur->commande->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->fournisseur->commande->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->fournisseur->commande->dir_output.'/temp/massgeneration/'.$user->id.'/'.$original_file; } - else if ($modulepart == 'massfilesarea_supplier_invoice') + elseif ($modulepart == 'massfilesarea_supplier_invoice') { - if ($fuser->rights->fournisseur->facture->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->fournisseur->facture->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->fournisseur->facture->dir_output.'/temp/massgeneration/'.$user->id.'/'.$original_file; } - else if ($modulepart == 'massfilesarea_contract' && !empty($conf->contrat->dir_output)) + elseif ($modulepart == 'massfilesarea_contract' && !empty($conf->contrat->dir_output)) { - if ($fuser->rights->contrat->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->contrat->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2488,9 +2566,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for interventions - else if (($modulepart == 'fichinter' || $modulepart == 'ficheinter') && !empty($conf->ficheinter->dir_output)) + elseif (($modulepart == 'fichinter' || $modulepart == 'ficheinter') && !empty($conf->ficheinter->dir_output)) { - if ($fuser->rights->ficheinter->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->ficheinter->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2499,9 +2577,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les deplacements et notes de frais - else if ($modulepart == 'deplacement' && !empty($conf->deplacement->dir_output)) + elseif ($modulepart == 'deplacement' && !empty($conf->deplacement->dir_output)) { - if ($fuser->rights->deplacement->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->deplacement->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2509,9 +2587,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, //$sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."fichinter WHERE ref='".$db->escape($refname)."' AND entity=".$conf->entity; } // Wrapping pour les propales - else if (($modulepart == 'propal' || $modulepart == 'propale') && !empty($conf->propal->multidir_output[$entity])) + elseif (($modulepart == 'propal' || $modulepart == 'propale') && !empty($conf->propal->multidir_output[$entity])) { - if ($fuser->rights->propale->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->propale->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2520,9 +2598,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les commandes - else if (($modulepart == 'commande' || $modulepart == 'order') && !empty($conf->commande->dir_output)) + elseif (($modulepart == 'commande' || $modulepart == 'order') && !empty($conf->commande->dir_output)) { - if ($fuser->rights->commande->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->commande->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2531,18 +2609,18 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les projets - else if ($modulepart == 'project' && !empty($conf->projet->dir_output)) + elseif ($modulepart == 'project' && !empty($conf->projet->dir_output)) { - if ($fuser->rights->projet->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->projet->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->projet->dir_output.'/'.$original_file; $sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."projet WHERE ref='".$db->escape($refname)."' AND entity IN (".getEntity('project').")"; } - else if ($modulepart == 'project_task' && !empty($conf->projet->dir_output)) + elseif ($modulepart == 'project_task' && !empty($conf->projet->dir_output)) { - if ($fuser->rights->projet->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->projet->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2551,9 +2629,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les commandes fournisseurs - else if (($modulepart == 'commande_fournisseur' || $modulepart == 'order_supplier') && !empty($conf->fournisseur->commande->dir_output)) + elseif (($modulepart == 'commande_fournisseur' || $modulepart == 'order_supplier') && !empty($conf->fournisseur->commande->dir_output)) { - if ($fuser->rights->fournisseur->commande->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->fournisseur->commande->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2562,19 +2640,19 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les factures fournisseurs - else if (($modulepart == 'facture_fournisseur' || $modulepart == 'invoice_supplier') && !empty($conf->fournisseur->facture->dir_output)) + elseif (($modulepart == 'facture_fournisseur' || $modulepart == 'invoice_supplier') && !empty($conf->fournisseur->facture->dir_output)) { - if ($fuser->rights->fournisseur->facture->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->fournisseur->facture->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->fournisseur->facture->dir_output.'/'.$original_file; - $sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."facture_fourn WHERE facnumber='".$db->escape($refname)."' AND entity=".$conf->entity; + $sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."facture_fourn WHERE ref='".$db->escape($refname)."' AND entity=".$conf->entity; } // Wrapping pour les rapport de paiements - else if ($modulepart == 'supplier_payment') + elseif ($modulepart == 'supplier_payment') { - if ($fuser->rights->fournisseur->facture->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->fournisseur->facture->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2583,9 +2661,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les rapport de paiements - else if ($modulepart == 'facture_paiement' && !empty($conf->facture->dir_output)) + elseif ($modulepart == 'facture_paiement' && !empty($conf->facture->dir_output)) { - if ($fuser->rights->facture->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->facture->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2594,9 +2672,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for accounting exports - else if ($modulepart == 'export_compta' && !empty($conf->accounting->dir_output)) + elseif ($modulepart == 'export_compta' && !empty($conf->accounting->dir_output)) { - if ($fuser->rights->accounting->bind->write || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->accounting->bind->write || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2604,18 +2682,18 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les expedition - else if ($modulepart == 'expedition' && !empty($conf->expedition->dir_output)) + elseif ($modulepart == 'expedition' && !empty($conf->expedition->dir_output)) { - if ($fuser->rights->expedition->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->expedition->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } $original_file=$conf->expedition->dir_output."/sending/".$original_file; } // Wrapping pour les bons de livraison - else if ($modulepart == 'livraison' && !empty($conf->expedition->dir_output)) + elseif ($modulepart == 'livraison' && !empty($conf->expedition->dir_output)) { - if ($fuser->rights->expedition->livraison->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->expedition->livraison->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2623,9 +2701,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les actions - else if ($modulepart == 'actions' && !empty($conf->agenda->dir_output)) + elseif ($modulepart == 'actions' && !empty($conf->agenda->dir_output)) { - if ($fuser->rights->agenda->myactions->{$read} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->agenda->myactions->{$read} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2633,9 +2711,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les actions - else if ($modulepart == 'actionsreport' && !empty($conf->agenda->dir_temp)) + elseif ($modulepart == 'actionsreport' && !empty($conf->agenda->dir_temp)) { - if ($fuser->rights->agenda->allactions->{$read} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->agenda->allactions->{$read} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2643,10 +2721,10 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les produits et services - else if ($modulepart == 'product' || $modulepart == 'produit' || $modulepart == 'service' || $modulepart == 'produit|service') + elseif ($modulepart == 'product' || $modulepart == 'produit' || $modulepart == 'service' || $modulepart == 'produit|service') { if (empty($entity) || (empty($conf->product->multidir_output[$entity]) && empty($conf->service->multidir_output[$entity]))) return array('accessallowed'=>0, 'error'=>'Value entity must be provided'); - if (($fuser->rights->produit->{$lire} || $fuser->rights->service->{$lire}) || preg_match('/^specimen/i',$original_file)) + if (($fuser->rights->produit->{$lire} || $fuser->rights->service->{$lire}) || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2655,20 +2733,31 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les lots produits - else if ($modulepart == 'product_batch' || $modulepart == 'produitlot') + elseif ($modulepart == 'product_batch' || $modulepart == 'produitlot') { if (empty($entity) || (empty($conf->productbatch->multidir_output[$entity]))) return array('accessallowed'=>0, 'error'=>'Value entity must be provided'); - if (($fuser->rights->produit->{$lire} ) || preg_match('/^specimen/i',$original_file)) + if (($fuser->rights->produit->{$lire} ) || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } if (! empty($conf->productbatch->enabled)) $original_file=$conf->productbatch->multidir_output[$entity].'/'.$original_file; } - // Wrapping pour les contrats - else if ($modulepart == 'contract' && !empty($conf->contrat->dir_output)) + // Wrapping for stock movements + elseif ($modulepart == 'movement' || $modulepart == 'mouvement') { - if ($fuser->rights->contrat->{$lire} || preg_match('/^specimen/i',$original_file)) + if (empty($entity) || empty($conf->stock->multidir_output[$entity])) return array('accessallowed'=>0, 'error'=>'Value entity must be provided'); + if (($fuser->rights->stock->{$lire} || $fuser->rights->stock->movement->{$lire} || $fuser->rights->stock->mouvement->{$lire}) || preg_match('/^specimen/i', $original_file)) + { + $accessallowed=1; + } + if (! empty($conf->stock->enabled)) $original_file=$conf->stock->multidir_output[$entity].'/movement/'.$original_file; + } + + // Wrapping pour les contrats + elseif ($modulepart == 'contract' && !empty($conf->contrat->dir_output)) + { + if ($fuser->rights->contrat->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2677,9 +2766,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les dons - else if ($modulepart == 'donation' && !empty($conf->don->dir_output)) + elseif ($modulepart == 'donation' && !empty($conf->don->dir_output)) { - if ($fuser->rights->don->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->don->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2687,9 +2776,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les dons - else if ($modulepart == 'dolresource' && !empty($conf->resource->dir_output)) + elseif ($modulepart == 'dolresource' && !empty($conf->resource->dir_output)) { - if ($fuser->rights->resource->{$read} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->resource->{$read} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2697,9 +2786,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour les remises de cheques - else if ($modulepart == 'remisecheque' && !empty($conf->banque->dir_output)) + elseif ($modulepart == 'remisecheque' && !empty($conf->bank->dir_output)) { - if ($fuser->rights->banque->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->banque->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2708,7 +2797,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for bank - else if ($modulepart == 'bank' && !empty($conf->bank->dir_output)) + elseif (($modulepart == 'banque' || $modulepart == 'bank') && !empty($conf->bank->dir_output)) { if ($fuser->rights->banque->{$lire}) { @@ -2718,7 +2807,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for export module - else if ($modulepart == 'export' && !empty($conf->export->dir_temp)) + elseif ($modulepart == 'export' && !empty($conf->export->dir_temp)) { // Aucun test necessaire car on force le rep de download sur // le rep export qui est propre a l'utilisateur @@ -2727,35 +2816,35 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for import module - else if ($modulepart == 'import' && !empty($conf->import->dir_temp)) + elseif ($modulepart == 'import' && !empty($conf->import->dir_temp)) { $accessallowed=1; $original_file=$conf->import->dir_temp.'/'.$original_file; } // Wrapping pour l'editeur wysiwyg - else if ($modulepart == 'editor' && !empty($conf->fckeditor->dir_output)) + elseif ($modulepart == 'editor' && !empty($conf->fckeditor->dir_output)) { $accessallowed=1; $original_file=$conf->fckeditor->dir_output.'/'.$original_file; } // Wrapping for backups - else if ($modulepart == 'systemtools' && !empty($conf->admin->dir_output)) + elseif ($modulepart == 'systemtools' && !empty($conf->admin->dir_output)) { if ($fuser->admin) $accessallowed=1; $original_file=$conf->admin->dir_output.'/'.$original_file; } // Wrapping for upload file test - else if ($modulepart == 'admin_temp' && !empty($conf->admin->dir_temp)) + elseif ($modulepart == 'admin_temp' && !empty($conf->admin->dir_temp)) { if ($fuser->admin) $accessallowed=1; $original_file=$conf->admin->dir_temp.'/'.$original_file; } // Wrapping pour BitTorrent - else if ($modulepart == 'bittorrent' && !empty($conf->bittorrent->dir_output)) + elseif ($modulepart == 'bittorrent' && !empty($conf->bittorrent->dir_output)) { $accessallowed=1; $dir='files'; @@ -2764,9 +2853,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping pour Foundation module - else if ($modulepart == 'member' && !empty($conf->adherent->dir_output)) + elseif ($modulepart == 'member' && !empty($conf->adherent->dir_output)) { - if ($fuser->rights->adherent->{$lire} || preg_match('/^specimen/i',$original_file)) + if ($fuser->rights->adherent->{$lire} || preg_match('/^specimen/i', $original_file)) { $accessallowed=1; } @@ -2774,7 +2863,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for Scanner - else if ($modulepart == 'scanner_user_temp' && !empty($conf->scanner->dir_temp)) + elseif ($modulepart == 'scanner_user_temp' && !empty($conf->scanner->dir_temp)) { $accessallowed=1; $original_file=$conf->scanner->dir_temp.'/'.$fuser->id.'/'.$original_file; @@ -2787,45 +2876,58 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, // If modulepart=module Allows any module to open a file if file is in directory called DOL_DATA_ROOT/modulepart else { - if (preg_match('/^specimen/i',$original_file)) $accessallowed=1; // If link to a file called specimen. Test must be done before changing $original_file int full path. + if (preg_match('/^specimen/i', $original_file)) $accessallowed=1; // If link to a file called specimen. Test must be done before changing $original_file int full path. if ($fuser->admin) $accessallowed=1; // If user is admin // Define $accessallowed - if (preg_match('/^([a-z]+)_user_temp$/i',$modulepart,$reg)) + if (preg_match('/^([a-z]+)_user_temp$/i', $modulepart, $reg)) { if (empty($conf->{$reg[1]}->dir_temp)) // modulepart not supported { - dol_print_error('','Error call dol_check_secure_access_document with not supported value for modulepart parameter ('.$modulepart.')'); + dol_print_error('', 'Error call dol_check_secure_access_document with not supported value for modulepart parameter ('.$modulepart.')'); exit; } if ($fuser->rights->{$reg[1]}->{$lire} || $fuser->rights->{$reg[1]}->{$read} || ($fuser->rights->{$reg[1]}->{$download})) $accessallowed=1; $original_file=$conf->{$reg[1]}->dir_temp.'/'.$fuser->id.'/'.$original_file; } - else if (preg_match('/^([a-z]+)_temp$/i',$modulepart,$reg)) + elseif (preg_match('/^([a-z]+)_temp$/i', $modulepart, $reg)) { if (empty($conf->{$reg[1]}->dir_temp)) // modulepart not supported { - dol_print_error('','Error call dol_check_secure_access_document with not supported value for modulepart parameter ('.$modulepart.')'); + dol_print_error('', 'Error call dol_check_secure_access_document with not supported value for modulepart parameter ('.$modulepart.')'); exit; } if ($fuser->rights->{$reg[1]}->{$lire} || $fuser->rights->{$reg[1]}->{$read} || ($fuser->rights->{$reg[1]}->{$download})) $accessallowed=1; $original_file=$conf->{$reg[1]}->dir_temp.'/'.$original_file; } - else if (preg_match('/^([a-z]+)_user$/i',$modulepart,$reg)) + elseif (preg_match('/^([a-z]+)_user$/i', $modulepart, $reg)) { if (empty($conf->{$reg[1]}->dir_output)) // modulepart not supported { - dol_print_error('','Error call dol_check_secure_access_document with not supported value for modulepart parameter ('.$modulepart.')'); + dol_print_error('', 'Error call dol_check_secure_access_document with not supported value for modulepart parameter ('.$modulepart.')'); exit; } if ($fuser->rights->{$reg[1]}->{$lire} || $fuser->rights->{$reg[1]}->{$read} || ($fuser->rights->{$reg[1]}->{$download})) $accessallowed=1; $original_file=$conf->{$reg[1]}->dir_output.'/'.$fuser->id.'/'.$original_file; } + elseif (preg_match('/^massfilesarea_([a-z]+)$/i', $modulepart, $reg)) + { + if (empty($conf->{$reg[1]}->dir_output)) // modulepart not supported + { + dol_print_error('', 'Error call dol_check_secure_access_document with not supported value for modulepart parameter ('.$modulepart.')'); + exit; + } + if ($fuser->rights->{$reg[1]}->{$lire} || preg_match('/^specimen/i', $original_file)) + { + $accessallowed=1; + } + $original_file=$conf->{$reg[1]}->dir_output.'/temp/massgeneration/'.$user->id.'/'.$original_file; + } else { if (empty($conf->$modulepart->dir_output)) // modulepart not supported { - dol_print_error('','Error call dol_check_secure_access_document with not supported value for modulepart parameter ('.$modulepart.')'); + dol_print_error('', 'Error call dol_check_secure_access_document with not supported value for modulepart parameter ('.$modulepart.')'); exit; } @@ -2971,4 +3073,3 @@ function getFilesUpdated(&$file_list, SimpleXMLElement $dir, $path = '', $pathre return $file_list; } - From 5948d385a36b149cc3555d6c9a235dd4819c5a98 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 30 Apr 2020 14:46:49 +0200 Subject: [PATCH 269/780] Look and feel v12 --- htdocs/core/lib/functions.lib.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 94a32ceacaf..3bf1be1d772 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3145,13 +3145,14 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'cash-register', 'check', 'close_title', 'company', 'contact', 'contract', 'cubes', 'delete', 'dolly', 'dollyrevert', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'globe', 'globe-americas', 'grip', 'grip_title', 'help', - 'intervention', 'language', 'list', 'listlight', 'lot', + 'intervention', 'label', 'language', 'list', 'listlight', 'lot', 'map-marker-alt', 'money-bill-alt', 'mrp', 'note', 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bill', 'object_billa', 'object_billd', 'object_bom', 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_donation', 'object_dynamicprice', - 'object_holiday', 'object_hrm', 'object_intervention', 'object_margin', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', + 'object_holiday', 'object_hrm', 'object_intervention', 'object_label', + 'object_margin', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', 'object_lot', 'object_mrp', 'object_payment', 'object_product', 'object_propal', 'object_other', 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', 'object_supplier_invoice', 'object_supplier_order', 'object_supplier_proposal', 'object_service', 'object_stock', @@ -3188,7 +3189,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'hrm'=>'umbrella-beach', 'margin'=>'calculator', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode', 'email'=>'at', 'edit'=>'pencil-alt', 'grip_title'=>'arrows-alt', 'grip'=>'arrows-alt', 'help'=>'info-circle', - 'generic'=>'file', 'holiday'=>'umbrella-beach', 'member'=>'users', 'mrp'=>'cubes', 'trip'=>'wallet', 'group'=>'users', + 'generic'=>'file', 'holiday'=>'umbrella-beach', 'label'=>'layer-group', + 'member'=>'users', 'mrp'=>'cubes', 'trip'=>'wallet', 'group'=>'users', 'sign-out'=>'sign-out-alt', 'switch_off'=>'toggle-off', 'switch_on'=>'toggle-on', 'check'=>'check', 'bookmark'=>'star', 'bookmark'=>'star', 'bank'=>'university', 'close_title'=>'window-close', 'delete'=>'trash', 'edit'=>'pencil-alt', 'filter'=>'filter', From 14a3aa2165ad75986d4960b3ab881bdbd12e26a6 Mon Sep 17 00:00:00 2001 From: Maxime Lecoq <maxime.lecoq.a@wanadoo.fr> Date: Thu, 30 Apr 2020 18:21:25 +0200 Subject: [PATCH 270/780] FIX: add auto incrementation to llx_c_typent.sql --- htdocs/install/mysql/tables/llx_c_typent.sql | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_c_typent.sql b/htdocs/install/mysql/tables/llx_c_typent.sql index 0b15e70b15b..130e9d8784f 100644 --- a/htdocs/install/mysql/tables/llx_c_typent.sql +++ b/htdocs/install/mysql/tables/llx_c_typent.sql @@ -19,11 +19,11 @@ create table llx_c_typent ( - id integer PRIMARY KEY, - code varchar(12) NOT NULL, - libelle varchar(64), - fk_country integer NULL, -- Defined only to have specific list for countries that can't use generic list (like argentina that need type A or B) - active tinyint DEFAULT 1 NOT NULL, - module varchar(32) NULL, - position integer NOT NULL DEFAULT 0 + id integer AUTO_INCREMENT PRIMARY KEY, + code varchar(12) NOT NULL, + libelle varchar(64), + fk_country integer NULL, -- Defined only to have specific list for countries that can't use generic list (like argentina that need type A or B) + active tinyint DEFAULT 1 NOT NULL, + module varchar(32) NULL, + position integer NOT NULL DEFAULT 0 )ENGINE=innodb; From b1495e12ce4cec42eaca686bc30f12b5be70a869 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 30 Apr 2020 18:45:00 +0200 Subject: [PATCH 271/780] FIX A variable was erased by a temporary variable --- 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 934916fa31e..9fa696c69b3 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -4202,7 +4202,7 @@ elseif ($id > 0 || ! empty($ref)) $current_situation_counter = array(); foreach ($object->tab_previous_situation_invoice as $prev_invoice) { - $totalpaye = $prev_invoice->getSommePaiement(); + $tmptotalpaidforthisinvoice = $prev_invoice->getSommePaiement(); $total_prev_ht += $prev_invoice->total_ht; $total_prev_ttc += $prev_invoice->total_ttc; $current_situation_counter[] = (($prev_invoice->type == Facture::TYPE_CREDIT_NOTE)?-1:1) * $prev_invoice->situation_counter; @@ -4213,7 +4213,7 @@ elseif ($id > 0 || ! empty($ref)) if (! empty($conf->banque->enabled)) print '<td class="right"></td>'; print '<td class="right">' . price($prev_invoice->total_ht) . '</td>'; print '<td class="right">' . price($prev_invoice->total_ttc) . '</td>'; - print '<td class="right">' . $prev_invoice->getLibStatut(3, $totalpaye) . '</td>'; + print '<td class="right">' . $prev_invoice->getLibStatut(3, $tmptotalpaidforthisinvoice) . '</td>'; print '</tr>'; } } From e4edd143c5945c4581a11d1acbb03198af3400da Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 30 Apr 2020 19:41:46 +0200 Subject: [PATCH 272/780] Fix field name --- htdocs/accountancy/expensereport/list.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/htdocs/accountancy/expensereport/list.php b/htdocs/accountancy/expensereport/list.php index e03c717039f..148a1d8fe1f 100644 --- a/htdocs/accountancy/expensereport/list.php +++ b/htdocs/accountancy/expensereport/list.php @@ -42,6 +42,9 @@ $massaction = GETPOST('massaction', 'alpha'); $show_files = GETPOST('show_files', 'int'); $confirm = GETPOST('confirm', 'alpha'); $toselect = GETPOST('toselect', 'array'); +$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'myobjectlist'; // To manage different context of search +$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') + // Select Box $mesCasesCochees = GETPOST('toselect', 'array'); @@ -240,8 +243,8 @@ if ($result) { $arrayofselected = is_array($toselect) ? $toselect : array(); $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 ($search_lineid) $param .= '&search_lineid='.urlencode($search_lineid); if ($search_day) $param .= '&search_day='.urlencode($search_day); if ($search_month) $param .= '&search_month='.urlencode($search_month); @@ -308,7 +311,7 @@ if ($result) { print '<tr class="liste_titre">'; print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "erd.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("ExpenseReport", $_SERVER["PHP_SELF"], "er.ref", "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "erd.date, erd.rowid", "", $param, '', $sortfield, $sortorder, 'center '); + print_liste_field_titre("DateOfLine", $_SERVER["PHP_SELF"], "erd.date, erd.rowid", "", $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre("TypeFees", $_SERVER["PHP_SELF"], "f.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Description", $_SERVER["PHP_SELF"], "erd.comments", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "erd.total_ht", "", $param, '', $sortfield, $sortorder, 'right maxwidth50 '); From 625c7216a986d309f4abbe147e9f8a8eafe85d20 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 30 Apr 2020 19:51:24 +0200 Subject: [PATCH 273/780] Can show date of validation in list --- htdocs/accountancy/expensereport/lines.php | 13 ++++++++++++- htdocs/accountancy/expensereport/list.php | 15 +++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php index 8cc398a00bf..4cd51fb3a63 100644 --- a/htdocs/accountancy/expensereport/lines.php +++ b/htdocs/accountancy/expensereport/lines.php @@ -252,6 +252,9 @@ if ($result) { print '<tr class="liste_titre_filter">'; print '<td class="liste_titre"></td>'; print '<td><input type="text" class="flat maxwidth50" name="search_expensereport" value="'.dol_escape_htmltag($search_expensereport).'"></td>'; + if (! empty($conf->global->ACCOUNTANCY_USE_EXPENSE_REPORT_VALIDATION_DATE)) { + print '<td class="liste_titre"></td>'; + } print '<td class="liste_titre center">'; if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_day" value="'.$search_day.'">'; print '<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_month" value="'.$search_month.'">'; @@ -272,7 +275,10 @@ if ($result) { print '<tr class="liste_titre">'; print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "erd.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("ExpenseReport", $_SERVER["PHP_SELF"], "er.ref", "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "erd.date, erd.rowid", "", $param, '', $sortfield, $sortorder, 'center '); + if (! empty($conf->global->ACCOUNTANCY_USE_EXPENSE_REPORT_VALIDATION_DATE)) { + print_liste_field_titre("DateValidation", $_SERVER["PHP_SELF"], "er.date_valid", "", $param, '', $sortfield, $sortorder, 'center '); + } + print_liste_field_titre("DateOfLine", $_SERVER["PHP_SELF"], "erd.date, erd.rowid", "", $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre("TypeFees", $_SERVER["PHP_SELF"], "f.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Description", $_SERVER["PHP_SELF"], "erd.comments", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "erd.total_ht", "", $param, '', $sortfield, $sortorder, 'right '); @@ -299,6 +305,11 @@ if ($result) { // Ref Invoice print '<td>'.$expensereport_static->getNomUrl(1).'</td>'; + // Date validation + if (! empty($conf->global->ACCOUNTANCY_USE_EXPENSE_REPORT_VALIDATION_DATE)) { + print '<td class="center">'.dol_print_date($db->jdate($objp->date_valid), 'day').'</td>'; + } + print '<td class="center">'.dol_print_date($db->jdate($objp->date), 'day').'</td>'; print '<td class="tdoverflow">'.($langs->trans($objp->type_fees_code) == $objp->type_fees_code ? $objp->type_fees_label : $langs->trans(($objp->type_fees_code))).'</td>'; diff --git a/htdocs/accountancy/expensereport/list.php b/htdocs/accountancy/expensereport/list.php index 148a1d8fe1f..96eebd49b36 100644 --- a/htdocs/accountancy/expensereport/list.php +++ b/htdocs/accountancy/expensereport/list.php @@ -43,7 +43,7 @@ $show_files = GETPOST('show_files', 'int'); $confirm = GETPOST('confirm', 'alpha'); $toselect = GETPOST('toselect', 'array'); $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'myobjectlist'; // To manage different context of search -$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') +$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') // Select Box @@ -186,7 +186,7 @@ if (empty($chartaccountcode)) } // Expense report lines -$sql = "SELECT er.ref, er.rowid as erid, er.date_debut,"; +$sql = "SELECT er.ref, er.rowid as erid, er.date_debut, er.date_valid,"; $sql .= " erd.rowid, erd.fk_c_type_fees, erd.comments, erd.total_ht as price, erd.fk_code_ventilation, erd.tva_tx as tva_tx_line, erd.vat_src_code, erd.date,"; $sql .= " f.id as type_fees_id, f.code as type_fees_code, f.label as type_fees_label, f.accountancy_code as code_buy,"; $sql .= " aa.rowid as aarowid"; @@ -291,6 +291,9 @@ if ($result) { print '<tr class="liste_titre_filter">'; print '<td class="liste_titre"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_expensereport" value="'.dol_escape_htmltag($search_expensereport).'"></td>'; + if (! empty($conf->global->ACCOUNTANCY_USE_EXPENSE_REPORT_VALIDATION_DATE)) { + print '<td class="liste_titre"></td>'; + } print '<td class="liste_titre center nowraponall minwidth100imp">'; if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_day" value="'.$search_day.'">'; print '<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_month" value="'.$search_month.'">'; @@ -311,6 +314,9 @@ if ($result) { print '<tr class="liste_titre">'; print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "erd.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("ExpenseReport", $_SERVER["PHP_SELF"], "er.ref", "", $param, '', $sortfield, $sortorder); + if (! empty($conf->global->ACCOUNTANCY_USE_EXPENSE_REPORT_VALIDATION_DATE)) { + print_liste_field_titre("DateValidation", $_SERVER["PHP_SELF"], "er.date_valid", "", $param, '', $sortfield, $sortorder, 'center '); + } print_liste_field_titre("DateOfLine", $_SERVER["PHP_SELF"], "erd.date, erd.rowid", "", $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre("TypeFees", $_SERVER["PHP_SELF"], "f.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Description", $_SERVER["PHP_SELF"], "erd.comments", "", $param, '', $sortfield, $sortorder); @@ -344,6 +350,11 @@ if ($result) { // Ref Expense report print '<td>'.$expensereport_static->getNomUrl(1).'</td>'; + // Date validation + if (! empty($conf->global->ACCOUNTANCY_USE_EXPENSE_REPORT_VALIDATION_DATE)) { + print '<td class="center">'.dol_print_date($db->jdate($objp->date_valid), 'day').'</td>'; + } + // Date print '<td class="center">'.dol_print_date($db->jdate($objp->date), 'day').'</td>'; From fddbe7c9292bbe2d808104e55e89b1df92b6274b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic34@users.noreply.github.com> Date: Fri, 1 May 2020 07:50:46 +0200 Subject: [PATCH 274/780] $tmpplugin was defined after use --- htdocs/core/class/html.form.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index b2c677ed29d..5eaa7d5ede8 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6634,11 +6634,11 @@ class Form // Add code for jquery to use multiselect if (!empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')) { - $out .= "\n".'<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' --> - <script>'."\n"; if ($addjscombo == 1) { $tmpplugin = empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) ?constant('REQUIRE_JQUERY_MULTISELECT') : $conf->global->MAIN_USE_JQUERY_MULTISELECT; + $out .= "\n".'<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' -->'."\n"; + $out .= '<script>'."\n"; $out .= 'function formatResult(record) {'."\n"; if ($elemtype == 'category') { @@ -6676,6 +6676,8 @@ class Form // Add other js lib // TODO external lib multiselect/jquery.multi-select.js must have been loaded to use this multiselect plugin // ... + $out .= "\n".'<!-- JS CODE TO ENABLE external lib for id '.$htmlname.' -->'."\n"; + $out .= '<script>'."\n"; $out .= '$(document).ready(function () { $(\'#'.$htmlname.'\').multiSelect({ containerHTML: \'<div class="multi-select-container">\', From bc32b75fd2b3c567ad847086abe313227f299188 Mon Sep 17 00:00:00 2001 From: nervo <nervo@nervo.net> Date: Fri, 1 May 2020 08:13:03 +0200 Subject: [PATCH 275/780] PSR-2 Noncompliance --- .editorconfig | 2 -- htdocs/modulebuilder/template/.editorconfig | 2 -- 2 files changed, 4 deletions(-) diff --git a/.editorconfig b/.editorconfig index 3e3bd16bb34..7df89a90eb3 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,8 +9,6 @@ charset = utf-8 end_of_line = lf insert_final_newline = true -# PHP PSR-2 Coding Standards -# http://www.php-fig.org/psr/psr-2/ [*.php] indent_style = tab indent_size = 4 diff --git a/htdocs/modulebuilder/template/.editorconfig b/htdocs/modulebuilder/template/.editorconfig index d25f38c8b44..57184034691 100644 --- a/htdocs/modulebuilder/template/.editorconfig +++ b/htdocs/modulebuilder/template/.editorconfig @@ -9,8 +9,6 @@ charset = utf-8 end_of_line = lf insert_final_newline = true -# PHP PSR-2 Coding Standards -# http://www.php-fig.org/psr/psr-2/ [*.php] indent_style = tab indent_size = 4 From ba0ca3f7f7a6ebb9d5cce59c5946cf504d5b3c4c Mon Sep 17 00:00:00 2001 From: nervo <nervo@nervo.net> Date: Fri, 1 May 2020 08:40:55 +0200 Subject: [PATCH 276/780] Reindent module template --- .../template/class/actions_mymodule.class.php | 456 +++++----- .../template/class/api_mymodule.class.php | 590 ++++++------- .../template/class/myobject.class.php | 300 +++---- .../template/core/boxes/mymodulewidget1.php | 28 +- .../mailinglist_mymodule_myobject.modules.php | 306 +++---- .../core/modules/modMyModule.class.php | 782 +++++++++--------- .../doc/doc_generic_myobject_odt.modules.php | 68 +- .../mymodule/mod_myobject_advanced.php | 12 +- .../mymodule/mod_myobject_standard.php | 2 +- .../tpl/linkedobjectblock_myobject.tpl.php | 14 +- ..._99_modMyModule_MyModuleTriggers.class.php | 478 +++++------ .../template/css/mymodule.css.php | 6 +- .../modulebuilder/template/mymoduleindex.php | 34 +- .../template/myobject_agenda.php | 154 ++-- .../modulebuilder/template/myobject_card.php | 426 +++++----- .../template/myobject_document.php | 4 +- .../modulebuilder/template/myobject_list.php | 26 +- .../modulebuilder/template/myobject_note.php | 58 +- .../template/scripts/mymodule.php | 4 +- .../test/phpunit/MyModuleFunctionalTest.php | 52 +- 20 files changed, 1900 insertions(+), 1900 deletions(-) diff --git a/htdocs/modulebuilder/template/class/actions_mymodule.class.php b/htdocs/modulebuilder/template/class/actions_mymodule.class.php index 91dae82343b..10bca2e8b9a 100644 --- a/htdocs/modulebuilder/template/class/actions_mymodule.class.php +++ b/htdocs/modulebuilder/template/class/actions_mymodule.class.php @@ -28,284 +28,284 @@ */ class ActionsMyModule { - /** - * @var DoliDB Database handler. - */ - public $db; + /** + * @var DoliDB Database handler. + */ + public $db; - /** - * @var string Error code (or message) - */ - public $error = ''; + /** + * @var string Error code (or message) + */ + public $error = ''; - /** - * @var array Errors - */ - public $errors = array(); + /** + * @var array Errors + */ + public $errors = array(); - /** - * @var array Hook results. Propagated to $hookmanager->resArray for later reuse - */ - public $results = array(); + /** + * @var array Hook results. Propagated to $hookmanager->resArray for later reuse + */ + public $results = array(); - /** - * @var string String displayed by executeHook() immediately after return - */ - public $resprints; + /** + * @var string String displayed by executeHook() immediately after return + */ + public $resprints; - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - } + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct($db) + { + $this->db = $db; + } - /** - * Execute action - * - * @param array $parameters Array of parameters - * @param CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...) - * @param string $action 'add', 'update', 'view' - * @return int <0 if KO, - * =0 if OK but we want to process standard actions too, - * >0 if OK and we want to replace standard actions. - */ - public function getNomUrl($parameters, &$object, &$action) - { - global $db, $langs, $conf, $user; - $this->resprints = ''; - return 0; - } + /** + * Execute action + * + * @param array $parameters Array of parameters + * @param CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...) + * @param string $action 'add', 'update', 'view' + * @return int <0 if KO, + * =0 if OK but we want to process standard actions too, + * >0 if OK and we want to replace standard actions. + */ + public function getNomUrl($parameters, &$object, &$action) + { + global $db, $langs, $conf, $user; + $this->resprints = ''; + return 0; + } - /** - * Overloading the doActions function : replacing the parent's function with the one below - * - * @param array $parameters Hook metadatas (context, etc...) - * @param CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...) - * @param string $action Current action (if set). Generally create or edit or null - * @param HookManager $hookmanager Hook manager propagated to allow calling another hook - * @return int < 0 on error, 0 on success, 1 to replace standard code - */ - public function doActions($parameters, &$object, &$action, $hookmanager) - { - global $conf, $user, $langs; + /** + * Overloading the doActions function : replacing the parent's function with the one below + * + * @param array $parameters Hook metadatas (context, etc...) + * @param CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...) + * @param string $action Current action (if set). Generally create or edit or null + * @param HookManager $hookmanager Hook manager propagated to allow calling another hook + * @return int < 0 on error, 0 on success, 1 to replace standard code + */ + public function doActions($parameters, &$object, &$action, $hookmanager) + { + global $conf, $user, $langs; - $error = 0; // Error counter + $error = 0; // Error counter - /* print_r($parameters); print_r($object); echo "action: " . $action; */ - if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) // do something only for the context 'somecontext1' or 'somecontext2' - { - // Do what you want here... - // You can for example call global vars like $fieldstosearchall to overwrite them, or update database depending on $action and $_POST values. - } + /* print_r($parameters); print_r($object); echo "action: " . $action; */ + if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) // do something only for the context 'somecontext1' or 'somecontext2' + { + // Do what you want here... + // You can for example call global vars like $fieldstosearchall to overwrite them, or update database depending on $action and $_POST values. + } - if (!$error) { - $this->results = array('myreturn' => 999); - $this->resprints = 'A text to show'; - return 0; // or return 1 to replace standard code - } else { - $this->errors[] = 'Error message'; - return -1; - } - } + if (!$error) { + $this->results = array('myreturn' => 999); + $this->resprints = 'A text to show'; + return 0; // or return 1 to replace standard code + } else { + $this->errors[] = 'Error message'; + return -1; + } + } - /** - * Overloading the doMassActions function : replacing the parent's function with the one below - * - * @param array $parameters Hook metadatas (context, etc...) - * @param CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...) - * @param string $action Current action (if set). Generally create or edit or null - * @param HookManager $hookmanager Hook manager propagated to allow calling another hook - * @return int < 0 on error, 0 on success, 1 to replace standard code - */ - public function doMassActions($parameters, &$object, &$action, $hookmanager) - { - global $conf, $user, $langs; + /** + * Overloading the doMassActions function : replacing the parent's function with the one below + * + * @param array $parameters Hook metadatas (context, etc...) + * @param CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...) + * @param string $action Current action (if set). Generally create or edit or null + * @param HookManager $hookmanager Hook manager propagated to allow calling another hook + * @return int < 0 on error, 0 on success, 1 to replace standard code + */ + public function doMassActions($parameters, &$object, &$action, $hookmanager) + { + global $conf, $user, $langs; - $error = 0; // Error counter + $error = 0; // Error counter - /* print_r($parameters); print_r($object); echo "action: " . $action; */ - if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) // do something only for the context 'somecontext1' or 'somecontext2' - { - foreach ($parameters['toselect'] as $objectid) - { - // Do action on each object id - } - } + /* print_r($parameters); print_r($object); echo "action: " . $action; */ + if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) // do something only for the context 'somecontext1' or 'somecontext2' + { + foreach ($parameters['toselect'] as $objectid) + { + // Do action on each object id + } + } - if (!$error) { - $this->results = array('myreturn' => 999); - $this->resprints = 'A text to show'; - return 0; // or return 1 to replace standard code - } else { - $this->errors[] = 'Error message'; - return -1; - } - } + if (!$error) { + $this->results = array('myreturn' => 999); + $this->resprints = 'A text to show'; + return 0; // or return 1 to replace standard code + } else { + $this->errors[] = 'Error message'; + return -1; + } + } - /** - * Overloading the addMoreMassActions function : replacing the parent's function with the one below - * - * @param array $parameters Hook metadatas (context, etc...) - * @param CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...) - * @param string $action Current action (if set). Generally create or edit or null - * @param HookManager $hookmanager Hook manager propagated to allow calling another hook - * @return int < 0 on error, 0 on success, 1 to replace standard code - */ - public function addMoreMassActions($parameters, &$object, &$action, $hookmanager) - { - global $conf, $user, $langs; + /** + * Overloading the addMoreMassActions function : replacing the parent's function with the one below + * + * @param array $parameters Hook metadatas (context, etc...) + * @param CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...) + * @param string $action Current action (if set). Generally create or edit or null + * @param HookManager $hookmanager Hook manager propagated to allow calling another hook + * @return int < 0 on error, 0 on success, 1 to replace standard code + */ + public function addMoreMassActions($parameters, &$object, &$action, $hookmanager) + { + global $conf, $user, $langs; - $error = 0; // Error counter + $error = 0; // Error counter - /* print_r($parameters); print_r($object); echo "action: " . $action; */ - if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) // do something only for the context 'somecontext1' or 'somecontext2' - { - $this->resprints = '<option value="0"'.($disabled ? ' disabled="disabled"' : '').'>'.$langs->trans("MyModuleMassAction").'</option>'; - } + /* print_r($parameters); print_r($object); echo "action: " . $action; */ + if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) // do something only for the context 'somecontext1' or 'somecontext2' + { + $this->resprints = '<option value="0"'.($disabled ? ' disabled="disabled"' : '').'>'.$langs->trans("MyModuleMassAction").'</option>'; + } - if (!$error) { - return 0; // or return 1 to replace standard code - } else { - $this->errors[] = 'Error message'; - return -1; - } - } + if (!$error) { + return 0; // or return 1 to replace standard code + } else { + $this->errors[] = 'Error message'; + return -1; + } + } - /** - * Execute action - * - * @param array $parameters Array of parameters - * @param Object $object Object output on PDF - * @param string $action 'add', 'update', 'view' - * @return int <0 if KO, - * =0 if OK but we want to process standard actions too, - * >0 if OK and we want to replace standard actions. - */ - public function beforePDFCreation($parameters, &$object, &$action) - { - global $conf, $user, $langs; - global $hookmanager; + /** + * Execute action + * + * @param array $parameters Array of parameters + * @param Object $object Object output on PDF + * @param string $action 'add', 'update', 'view' + * @return int <0 if KO, + * =0 if OK but we want to process standard actions too, + * >0 if OK and we want to replace standard actions. + */ + public function beforePDFCreation($parameters, &$object, &$action) + { + global $conf, $user, $langs; + global $hookmanager; - $outputlangs = $langs; + $outputlangs = $langs; - $ret = 0; $deltemp = array(); - dol_syslog(get_class($this).'::executeHooks action='.$action); + $ret = 0; $deltemp = array(); + dol_syslog(get_class($this).'::executeHooks action='.$action); - /* print_r($parameters); print_r($object); echo "action: " . $action; */ - if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) // do something only for the context 'somecontext1' or 'somecontext2' - { - } + /* print_r($parameters); print_r($object); echo "action: " . $action; */ + if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) // do something only for the context 'somecontext1' or 'somecontext2' + { + } - return $ret; - } + return $ret; + } - /** - * Execute action - * - * @param array $parameters Array of parameters - * @param Object $pdfhandler PDF builder handler - * @param string $action 'add', 'update', 'view' - * @return int <0 if KO, - * =0 if OK but we want to process standard actions too, - * >0 if OK and we want to replace standard actions. - */ - public function afterPDFCreation($parameters, &$pdfhandler, &$action) - { - global $conf, $user, $langs; - global $hookmanager; + /** + * Execute action + * + * @param array $parameters Array of parameters + * @param Object $pdfhandler PDF builder handler + * @param string $action 'add', 'update', 'view' + * @return int <0 if KO, + * =0 if OK but we want to process standard actions too, + * >0 if OK and we want to replace standard actions. + */ + public function afterPDFCreation($parameters, &$pdfhandler, &$action) + { + global $conf, $user, $langs; + global $hookmanager; - $outputlangs = $langs; + $outputlangs = $langs; - $ret = 0; $deltemp = array(); - dol_syslog(get_class($this).'::executeHooks action='.$action); + $ret = 0; $deltemp = array(); + dol_syslog(get_class($this).'::executeHooks action='.$action); - /* print_r($parameters); print_r($object); echo "action: " . $action; */ - if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) // do something only for the context 'somecontext1' or 'somecontext2' - { - } + /* print_r($parameters); print_r($object); echo "action: " . $action; */ + if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) // do something only for the context 'somecontext1' or 'somecontext2' + { + } - return $ret; - } + return $ret; + } - /** - * Overloading the loadDataForCustomReports function : returns data to complete the customreport tool - * - * @param array $parameters Hook metadatas (context, etc...) - * @param string $action Current action (if set). Generally create or edit or null - * @param HookManager $hookmanager Hook manager propagated to allow calling another hook - * @return int < 0 on error, 0 on success, 1 to replace standard code - */ - public function loadDataForCustomReports($parameters, &$action, $hookmanager) - { - global $conf, $user, $langs; + /** + * Overloading the loadDataForCustomReports function : returns data to complete the customreport tool + * + * @param array $parameters Hook metadatas (context, etc...) + * @param string $action Current action (if set). Generally create or edit or null + * @param HookManager $hookmanager Hook manager propagated to allow calling another hook + * @return int < 0 on error, 0 on success, 1 to replace standard code + */ + public function loadDataForCustomReports($parameters, &$action, $hookmanager) + { + global $conf, $user, $langs; - $langs->load("mymodule@mymodule"); + $langs->load("mymodule@mymodule"); - $this->results = array(); + $this->results = array(); - $head = array(); - $h = 0; + $head = array(); + $h = 0; - if ($parameters['tabfamily'] == 'mymodule') { - $head[$h][0] = dol_buildpath('/module/index.php', 1); - $head[$h][1] = $langs->trans("Home"); - $head[$h][2] = 'home'; - $h++; + if ($parameters['tabfamily'] == 'mymodule') { + $head[$h][0] = dol_buildpath('/module/index.php', 1); + $head[$h][1] = $langs->trans("Home"); + $head[$h][2] = 'home'; + $h++; - $this->results['title'] = $langs->trans("MyModule"); - $this->results['picto'] = 'mymodule@mymodule'; - } + $this->results['title'] = $langs->trans("MyModule"); + $this->results['picto'] = 'mymodule@mymodule'; + } - $head[$h][0] = 'customreports.php?objecttype='.$parameters['objecttype'].(empty($parameters['tabfamily']) ? '' : '&tabfamily='.$parameters['tabfamily']); - $head[$h][1] = $langs->trans("CustomReports"); - $head[$h][2] = 'customreports'; + $head[$h][0] = 'customreports.php?objecttype='.$parameters['objecttype'].(empty($parameters['tabfamily']) ? '' : '&tabfamily='.$parameters['tabfamily']); + $head[$h][1] = $langs->trans("CustomReports"); + $head[$h][2] = 'customreports'; - $this->results['head'] = $head; + $this->results['head'] = $head; - return 1; - } + return 1; + } - /** - * Overloading the restrictedArea function : check permission on an object - * - * @param array $parameters Hook metadatas (context, etc...) - * @param string $action Current action (if set). Generally create or edit or null - * @param HookManager $hookmanager Hook manager propagated to allow calling another hook - * @return int <0 if KO, - * =0 if OK but we want to process standard actions too, - * >0 if OK and we want to replace standard actions. - */ - public function restrictedArea($parameters, &$action, $hookmanager) - { - global $user; + /** + * Overloading the restrictedArea function : check permission on an object + * + * @param array $parameters Hook metadatas (context, etc...) + * @param string $action Current action (if set). Generally create or edit or null + * @param HookManager $hookmanager Hook manager propagated to allow calling another hook + * @return int <0 if KO, + * =0 if OK but we want to process standard actions too, + * >0 if OK and we want to replace standard actions. + */ + public function restrictedArea($parameters, &$action, $hookmanager) + { + global $user; - if ($parameters['features'] == 'myobject') { - if ($user->rights->mymodule->myobject->read) { - $this->results['result'] = 1; - return 1; - } else { - $this->results['result'] = 0; - return 1; - } - } + if ($parameters['features'] == 'myobject') { + if ($user->rights->mymodule->myobject->read) { + $this->results['result'] = 1; + return 1; + } else { + $this->results['result'] = 0; + return 1; + } + } - return 0; - } + return 0; + } - /* Add here any other hooked methods... */ + /* Add here any other hooked methods... */ } diff --git a/htdocs/modulebuilder/template/class/api_mymodule.class.php b/htdocs/modulebuilder/template/class/api_mymodule.class.php index 8477e3efdf6..f84210b9198 100644 --- a/htdocs/modulebuilder/template/class/api_mymodule.class.php +++ b/htdocs/modulebuilder/template/class/api_mymodule.class.php @@ -36,338 +36,338 @@ dol_include_once('/mymodule/class/myobject.class.php'); */ class MyModuleApi extends DolibarrApi { - /** - * @var MyObject $myobject {@type MyObject} - */ - public $myobject; + /** + * @var MyObject $myobject {@type MyObject} + */ + public $myobject; - /** - * Constructor - * - * @url GET / - * - */ - public function __construct() - { - global $db, $conf; - $this->db = $db; - $this->myobject = new MyObject($this->db); - } + /** + * Constructor + * + * @url GET / + * + */ + public function __construct() + { + global $db, $conf; + $this->db = $db; + $this->myobject = new MyObject($this->db); + } - /** - * Get properties of a myobject object - * - * Return an array with myobject informations - * - * @param int $id ID of myobject - * @return array|mixed data without useless information - * - * @url GET myobjects/{id} - * - * @throws RestException - */ - public function get($id) - { - if (!DolibarrApiAccess::$user->rights->mymodule->read) { - throw new RestException(401); - } + /** + * Get properties of a myobject object + * + * Return an array with myobject informations + * + * @param int $id ID of myobject + * @return array|mixed data without useless information + * + * @url GET myobjects/{id} + * + * @throws RestException + */ + public function get($id) + { + if (!DolibarrApiAccess::$user->rights->mymodule->read) { + throw new RestException(401); + } - $result = $this->myobject->fetch($id); - if (!$result) { - throw new RestException(404, 'MyObject not found'); - } + $result = $this->myobject->fetch($id); + if (!$result) { + throw new RestException(404, 'MyObject not found'); + } - if (!DolibarrApi::_checkAccessToResource('myobject', $this->myobject->id, 'mymodule_myobject')) { - throw new RestException(401, 'Access to instance id='.$this->myobject->id.' of object not allowed for login '.DolibarrApiAccess::$user->login); - } + if (!DolibarrApi::_checkAccessToResource('myobject', $this->myobject->id, 'mymodule_myobject')) { + throw new RestException(401, 'Access to instance id='.$this->myobject->id.' of object not allowed for login '.DolibarrApiAccess::$user->login); + } - return $this->_cleanObjectDatas($this->myobject); - } + return $this->_cleanObjectDatas($this->myobject); + } - /** - * List myobjects - * - * Get a list of myobjects - * - * @param string $sortfield Sort field - * @param string $sortorder Sort order - * @param int $limit Limit for list - * @param int $page Page number - * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" - * @return array Array of order objects - * - * @throws RestException - * - * @url GET /myobjects/ - */ - public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '') - { - global $db, $conf; + /** + * List myobjects + * + * Get a list of myobjects + * + * @param string $sortfield Sort field + * @param string $sortorder Sort order + * @param int $limit Limit for list + * @param int $page Page number + * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" + * @return array Array of order objects + * + * @throws RestException + * + * @url GET /myobjects/ + */ + public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '') + { + global $db, $conf; - $obj_ret = array(); - $tmpobject = new MyObject($db); + $obj_ret = array(); + $tmpobject = new MyObject($db); - if (!DolibarrApiAccess::$user->rights->bbb->read) { - throw new RestException(401); - } + if (!DolibarrApiAccess::$user->rights->bbb->read) { + throw new RestException(401); + } - $socid = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : ''; + $socid = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : ''; - $restrictonsocid = 0; // Set to 1 if there is a field socid in table of object + $restrictonsocid = 0; // Set to 1 if there is a field socid in table of object - // If the internal user must only see his customers, force searching by him - $search_sale = 0; - if ($restrictonsocid && !DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) $search_sale = DolibarrApiAccess::$user->id; + // If the internal user must only see his customers, force searching by him + $search_sale = 0; + if ($restrictonsocid && !DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) $search_sale = DolibarrApiAccess::$user->id; - $sql = "SELECT t.rowid"; - if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) - $sql .= " FROM ".MAIN_DB_PREFIX.$tmpobject->table_element." as t"; + $sql = "SELECT t.rowid"; + if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) + $sql .= " FROM ".MAIN_DB_PREFIX.$tmpobject->table_element." as t"; - if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale - $sql .= " WHERE 1 = 1"; + if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale + $sql .= " WHERE 1 = 1"; - // Example of use $mode - //if ($mode == 1) $sql.= " AND s.client IN (1, 3)"; - //if ($mode == 2) $sql.= " AND s.client IN (2, 3)"; + // Example of use $mode + //if ($mode == 1) $sql.= " AND s.client IN (1, 3)"; + //if ($mode == 2) $sql.= " AND s.client IN (2, 3)"; - if ($tmpobject->ismultientitymanaged) $sql .= ' AND t.entity IN ('.getEntity('myobject').')'; - if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= " AND t.fk_soc = sc.fk_soc"; - if ($restrictonsocid && $socid) $sql .= " AND t.fk_soc = ".$socid; - if ($restrictonsocid && $search_sale > 0) $sql .= " AND t.rowid = sc.fk_soc"; // Join for the needed table to filter by sale - // Insert sale filter - if ($restrictonsocid && $search_sale > 0) { - $sql .= " AND sc.fk_user = ".$search_sale; - } - if ($sqlfilters) - { - if (!DolibarrApi::_checkFilters($sqlfilters)) { - throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); - } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; - } + if ($tmpobject->ismultientitymanaged) $sql .= ' AND t.entity IN ('.getEntity('myobject').')'; + if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= " AND t.fk_soc = sc.fk_soc"; + if ($restrictonsocid && $socid) $sql .= " AND t.fk_soc = ".$socid; + if ($restrictonsocid && $search_sale > 0) $sql .= " AND t.rowid = sc.fk_soc"; // Join for the needed table to filter by sale + // Insert sale filter + if ($restrictonsocid && $search_sale > 0) { + $sql .= " AND sc.fk_user = ".$search_sale; + } + if ($sqlfilters) + { + if (!DolibarrApi::_checkFilters($sqlfilters)) { + throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); + } + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; + $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; + } - $sql .= $db->order($sortfield, $sortorder); - if ($limit) { - if ($page < 0) { - $page = 0; - } - $offset = $limit * $page; + $sql .= $db->order($sortfield, $sortorder); + if ($limit) { + if ($page < 0) { + $page = 0; + } + $offset = $limit * $page; - $sql .= $db->plimit($limit + 1, $offset); - } + $sql .= $db->plimit($limit + 1, $offset); + } - $result = $db->query($sql); - if ($result) - { - $num = $db->num_rows($result); - while ($i < $num) - { - $obj = $db->fetch_object($result); - $myobject_static = new MyObject($db); - if ($myobject_static->fetch($obj->rowid)) { - $obj_ret[] = $this->_cleanObjectDatas($myobject_static); - } - $i++; - } - } - else { - throw new RestException(503, 'Error when retrieving myobject list: '.$db->lasterror()); - } - if (!count($obj_ret)) { - throw new RestException(404, 'No myobject found'); - } - return $obj_ret; - } + $result = $db->query($sql); + if ($result) + { + $num = $db->num_rows($result); + while ($i < $num) + { + $obj = $db->fetch_object($result); + $myobject_static = new MyObject($db); + if ($myobject_static->fetch($obj->rowid)) { + $obj_ret[] = $this->_cleanObjectDatas($myobject_static); + } + $i++; + } + } + else { + throw new RestException(503, 'Error when retrieving myobject list: '.$db->lasterror()); + } + if (!count($obj_ret)) { + throw new RestException(404, 'No myobject found'); + } + return $obj_ret; + } - /** - * Create myobject object - * - * @param array $request_data Request datas - * @return int ID of myobject - * - * @throws RestException - * - * @url POST myobjects/ - */ - public function post($request_data = null) - { - if (!DolibarrApiAccess::$user->rights->mymodule->write) { - throw new RestException(401); - } - // Check mandatory fields - $result = $this->_validate($request_data); + /** + * Create myobject object + * + * @param array $request_data Request datas + * @return int ID of myobject + * + * @throws RestException + * + * @url POST myobjects/ + */ + public function post($request_data = null) + { + if (!DolibarrApiAccess::$user->rights->mymodule->write) { + throw new RestException(401); + } + // Check mandatory fields + $result = $this->_validate($request_data); - foreach ($request_data as $field => $value) { - $this->myobject->$field = $value; - } - if (!$this->myobject->create(DolibarrApiAccess::$user)) { - throw new RestException(500, "Error creating MyObject", array_merge(array($this->myobject->error), $this->myobject->errors)); - } - return $this->myobject->id; - } + foreach ($request_data as $field => $value) { + $this->myobject->$field = $value; + } + if (!$this->myobject->create(DolibarrApiAccess::$user)) { + throw new RestException(500, "Error creating MyObject", array_merge(array($this->myobject->error), $this->myobject->errors)); + } + return $this->myobject->id; + } - /** - * Update myobject - * - * @param int $id Id of myobject to update - * @param array $request_data Datas - * @return int - * - * @throws RestException - * - * @url PUT myobjects/{id} - */ - public function put($id, $request_data = null) - { - if (!DolibarrApiAccess::$user->rights->mymodule->write) { - throw new RestException(401); - } + /** + * Update myobject + * + * @param int $id Id of myobject to update + * @param array $request_data Datas + * @return int + * + * @throws RestException + * + * @url PUT myobjects/{id} + */ + public function put($id, $request_data = null) + { + if (!DolibarrApiAccess::$user->rights->mymodule->write) { + throw new RestException(401); + } - $result = $this->myobject->fetch($id); - if (!$result) { - throw new RestException(404, 'MyObject not found'); - } + $result = $this->myobject->fetch($id); + if (!$result) { + throw new RestException(404, 'MyObject not found'); + } - if (!DolibarrApi::_checkAccessToResource('myobject', $this->myobject->id, 'mymodule_myobject')) { - throw new RestException(401, 'Access to instance id='.$this->myobject->id.' of object not allowed for login '.DolibarrApiAccess::$user->login); - } + if (!DolibarrApi::_checkAccessToResource('myobject', $this->myobject->id, 'mymodule_myobject')) { + throw new RestException(401, 'Access to instance id='.$this->myobject->id.' of object not allowed for login '.DolibarrApiAccess::$user->login); + } - foreach ($request_data as $field => $value) { - if ($field == 'id') continue; - $this->myobject->$field = $value; - } + foreach ($request_data as $field => $value) { + if ($field == 'id') continue; + $this->myobject->$field = $value; + } - if ($this->myobject->update($id, DolibarrApiAccess::$user) > 0) - { - return $this->get($id); - } - else - { - throw new RestException(500, $this->myobject->error); - } - } + if ($this->myobject->update($id, DolibarrApiAccess::$user) > 0) + { + return $this->get($id); + } + else + { + throw new RestException(500, $this->myobject->error); + } + } - /** - * Delete myobject - * - * @param int $id MyObject ID - * @return array - * - * @throws RestException - * - * @url DELETE myobjects/{id} - */ - public function delete($id) - { - if (!DolibarrApiAccess::$user->rights->mymodule->delete) { - throw new RestException(401); - } - $result = $this->myobject->fetch($id); - if (!$result) { - throw new RestException(404, 'MyObject not found'); - } + /** + * Delete myobject + * + * @param int $id MyObject ID + * @return array + * + * @throws RestException + * + * @url DELETE myobjects/{id} + */ + public function delete($id) + { + if (!DolibarrApiAccess::$user->rights->mymodule->delete) { + throw new RestException(401); + } + $result = $this->myobject->fetch($id); + if (!$result) { + throw new RestException(404, 'MyObject not found'); + } - if (!DolibarrApi::_checkAccessToResource('myobject', $this->myobject->id, 'mymodule_myobject')) { - throw new RestException(401, 'Access to instance id='.$this->myobject->id.' of object not allowed for login '.DolibarrApiAccess::$user->login); - } + if (!DolibarrApi::_checkAccessToResource('myobject', $this->myobject->id, 'mymodule_myobject')) { + throw new RestException(401, 'Access to instance id='.$this->myobject->id.' of object not allowed for login '.DolibarrApiAccess::$user->login); + } - if (!$this->myobject->delete(DolibarrApiAccess::$user)) - { - throw new RestException(500, 'Error when deleting MyObject : '.$this->myobject->error); - } + if (!$this->myobject->delete(DolibarrApiAccess::$user)) + { + throw new RestException(500, 'Error when deleting MyObject : '.$this->myobject->error); + } - return array( - 'success' => array( - 'code' => 200, - 'message' => 'MyObject deleted' - ) - ); - } + return array( + 'success' => array( + 'code' => 200, + 'message' => 'MyObject deleted' + ) + ); + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore - /** - * Clean sensible object datas - * - * @param object $object Object to clean - * @return array Array of cleaned object properties - */ - protected function _cleanObjectDatas($object) - { - // phpcs:enable - $object = parent::_cleanObjectDatas($object); + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore + /** + * Clean sensible object datas + * + * @param object $object Object to clean + * @return array Array of cleaned object properties + */ + protected function _cleanObjectDatas($object) + { + // phpcs:enable + $object = parent::_cleanObjectDatas($object); - unset($object->rowid); - unset($object->canvas); + unset($object->rowid); + unset($object->canvas); - /*unset($object->name); - unset($object->lastname); - unset($object->firstname); - unset($object->civility_id); - unset($object->statut); - unset($object->state); - unset($object->state_id); - unset($object->state_code); - unset($object->region); - unset($object->region_code); - unset($object->country); - unset($object->country_id); - unset($object->country_code); - unset($object->barcode_type); - unset($object->barcode_type_code); - unset($object->barcode_type_label); - unset($object->barcode_type_coder); - unset($object->total_ht); - unset($object->total_tva); - unset($object->total_localtax1); - unset($object->total_localtax2); - unset($object->total_ttc); - unset($object->fk_account); - unset($object->comments); - unset($object->note); - unset($object->mode_reglement_id); - unset($object->cond_reglement_id); - unset($object->cond_reglement); - unset($object->shipping_method_id); - unset($object->fk_incoterms); - unset($object->label_incoterms); - unset($object->location_incoterms); + /*unset($object->name); + unset($object->lastname); + unset($object->firstname); + unset($object->civility_id); + unset($object->statut); + unset($object->state); + unset($object->state_id); + unset($object->state_code); + unset($object->region); + unset($object->region_code); + unset($object->country); + unset($object->country_id); + unset($object->country_code); + unset($object->barcode_type); + unset($object->barcode_type_code); + unset($object->barcode_type_label); + unset($object->barcode_type_coder); + unset($object->total_ht); + unset($object->total_tva); + unset($object->total_localtax1); + unset($object->total_localtax2); + unset($object->total_ttc); + unset($object->fk_account); + unset($object->comments); + unset($object->note); + unset($object->mode_reglement_id); + unset($object->cond_reglement_id); + unset($object->cond_reglement); + unset($object->shipping_method_id); + unset($object->fk_incoterms); + unset($object->label_incoterms); + unset($object->location_incoterms); */ - // If object has lines, remove $db property - if (isset($object->lines) && is_array($object->lines) && count($object->lines) > 0) { - $nboflines = count($object->lines); - for ($i = 0; $i < $nboflines; $i++) - { - $this->_cleanObjectDatas($object->lines[$i]); + // If object has lines, remove $db property + if (isset($object->lines) && is_array($object->lines) && count($object->lines) > 0) { + $nboflines = count($object->lines); + for ($i = 0; $i < $nboflines; $i++) + { + $this->_cleanObjectDatas($object->lines[$i]); - unset($object->lines[$i]->lines); - unset($object->lines[$i]->note); - } - } + unset($object->lines[$i]->lines); + unset($object->lines[$i]->note); + } + } - return $object; - } + return $object; + } - /** - * Validate fields before create or update object - * - * @param array $data Array of data to validate - * @return array - * - * @throws RestException - */ - private function _validate($data) - { - $myobject = array(); - foreach ($this->myobject->fields as $field => $propfield) { - if (in_array($field, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat')) || $propfield['notnull'] != 1) continue; // Not a mandatory field - if (!isset($data[$field])) - throw new RestException(400, "$field field missing"); - $myobject[$field] = $data[$field]; - } - return $myobject; - } + /** + * Validate fields before create or update object + * + * @param array $data Array of data to validate + * @return array + * + * @throws RestException + */ + private function _validate($data) + { + $myobject = array(); + foreach ($this->myobject->fields as $field => $propfield) { + if (in_array($field, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat')) || $propfield['notnull'] != 1) continue; // Not a mandatory field + if (!isset($data[$field])) + throw new RestException(400, "$field field missing"); + $myobject[$field] = $data[$field]; + } + return $myobject; + } } diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 656483d8f18..af707c3c87d 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -90,16 +90,16 @@ class MyObject extends CommonObject // 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. - */ + * @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', 'enabled'=>1, 'visible'=>-2, 'noteditable'=>1, 'notnull'=> 1, 'index'=>1, 'position'=>1, 'comment'=>'Id'), + 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'noteditable'=>1, 'notnull'=> 1, 'index'=>1, 'position'=>1, 'comment'=>'Id'), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'noteditable'=>0, 'default'=>'', 'notnull'=> 1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'comment'=>'Reference of object'), - 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=> 1, 'default'=>1, 'index'=>1, 'position'=>20), - 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1, 'css'=>'minwidth200', 'help'=>'Help text', 'showoncombobox'=>1), - 'amount' => array('type'=>'price', 'label'=>'Amount', 'enabled'=>1, 'visible'=>1, 'default'=>'null', 'position'=>40, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for amount'), - 'qty' => array('type'=>'real', 'label'=>'Qty', 'enabled'=>1, 'visible'=>1, 'default'=>'0', 'position'=>45, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for quantity', 'css'=>'maxwidth75imp'), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'visible'=> 1, 'enabled'=>1, 'position'=>50, 'notnull'=>-1, 'index'=>1, 'help'=>'LinkToThirparty'), + 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=> 1, 'default'=>1, 'index'=>1, 'position'=>20), + 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1, 'css'=>'minwidth200', 'help'=>'Help text', 'showoncombobox'=>1), + 'amount' => array('type'=>'price', 'label'=>'Amount', 'enabled'=>1, 'visible'=>1, 'default'=>'null', 'position'=>40, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for amount'), + 'qty' => array('type'=>'real', 'label'=>'Qty', 'enabled'=>1, 'visible'=>1, 'default'=>'0', 'position'=>45, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for quantity', 'css'=>'maxwidth75imp'), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'visible'=> 1, 'enabled'=>1, 'position'=>50, 'notnull'=>-1, 'index'=>1, 'help'=>'LinkToThirparty'), 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'enabled'=>1, 'visible'=>-1, 'position'=>52, 'notnull'=>-1, 'index'=>1), 'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>3, 'position'=>60), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>61), @@ -112,7 +112,7 @@ class MyObject extends CommonObject //'fk_user_valid' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>512), 'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'index'=>0, 'position'=>1000), 'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'notnull'=>-1, 'position'=>1010), - 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'notnull'=> 1, 'default'=>0, 'index'=>1, 'position'=>1000, 'arrayofkeyval'=>array(0=>'Draft', 1=>'Validated', 9=>'Canceled')), + 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'notnull'=> 1, 'default'=>0, 'index'=>1, 'position'=>1000, 'arrayofkeyval'=>array(0=>'Draft', 1=>'Validated', 9=>'Canceled')), ); /** @@ -131,13 +131,13 @@ class MyObject extends CommonObject public $entity; /** - * @var string label - */ - public $label; + * @var string label + */ + public $label; - /** - * @var string amount - */ + /** + * @var string amount + */ public $amount; /** @@ -146,28 +146,28 @@ class MyObject extends CommonObject public $status; /** - * @var integer|string date_creation - */ + * @var integer|string date_creation + */ public $date_creation; /** - * @var integer tms - */ + * @var integer tms + */ public $tms; /** - * @var int ID - */ + * @var int ID + */ public $fk_user_creat; /** - * @var int ID - */ + * @var int ID + */ public $fk_user_modif; /** - * @var string import_key - */ + * @var string import_key + */ public $import_key; // END MODULEBUILDER PROPERTIES @@ -273,86 +273,86 @@ class MyObject extends CommonObject public function createFromClone(User $user, $fromid) { global $langs, $extrafields; - $error = 0; + $error = 0; - dol_syslog(__METHOD__, LOG_DEBUG); + dol_syslog(__METHOD__, LOG_DEBUG); - $object = new self($this->db); + $object = new self($this->db); - $this->db->begin(); + $this->db->begin(); - // Load source object - $result = $object->fetchCommon($fromid); - if ($result > 0 && !empty($object->table_element_line)) $object->fetchLines(); + // Load source object + $result = $object->fetchCommon($fromid); + if ($result > 0 && !empty($object->table_element_line)) $object->fetchLines(); - // get lines so they will be clone - //foreach($this->lines as $line) - // $line->fetch_optionals(); + // get lines so they will be clone + //foreach($this->lines as $line) + // $line->fetch_optionals(); - // Reset some properties - unset($object->id); - unset($object->fk_user_creat); - unset($object->import_key); + // Reset some properties + unset($object->id); + unset($object->fk_user_creat); + unset($object->import_key); - // Clear fields - $object->ref = empty($this->fields['ref']['default']) ? "copy_of_".$object->ref : $this->fields['ref']['default']; - $object->label = empty($this->fields['label']['default']) ? $langs->trans("CopyOf")." ".$object->label : $this->fields['label']['default']; - $object->status = self::STATUS_DRAFT; - // ... - // Clear extrafields that are unique - if (is_array($object->array_options) && count($object->array_options) > 0) - { - $extrafields->fetch_name_optionals_label($this->table_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]); - } - } - } + // Clear fields + $object->ref = empty($this->fields['ref']['default']) ? "copy_of_".$object->ref : $this->fields['ref']['default']; + $object->label = empty($this->fields['label']['default']) ? $langs->trans("CopyOf")." ".$object->label : $this->fields['label']['default']; + $object->status = self::STATUS_DRAFT; + // ... + // Clear extrafields that are unique + if (is_array($object->array_options) && count($object->array_options) > 0) + { + $extrafields->fetch_name_optionals_label($this->table_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 + // Create clone $object->context['createfromclone'] = 'createfromclone'; - $result = $object->createCommon($user); - if ($result < 0) { - $error++; - $this->error = $object->error; - $this->errors = $object->errors; - } + $result = $object->createCommon($user); + if ($result < 0) { + $error++; + $this->error = $object->error; + $this->errors = $object->errors; + } - if (!$error) - { - // copy internal contacts - if ($this->copy_linked_contact($object, 'internal') < 0) - { - $error++; - } - } + if (!$error) + { + // copy internal contacts + if ($this->copy_linked_contact($object, 'internal') < 0) + { + $error++; + } + } - if (!$error) - { - // copy external contacts if same company - if (property_exists($this, 'socid') && $this->socid == $object->socid) - { - if ($this->copy_linked_contact($object, 'external') < 0) - $error++; - } - } + if (!$error) + { + // copy external contacts if same company + if (property_exists($this, 'socid') && $this->socid == $object->socid) + { + if ($this->copy_linked_contact($object, 'external') < 0) + $error++; + } + } - unset($object->context['createfromclone']); + unset($object->context['createfromclone']); - // End - if (!$error) { - $this->db->commit(); - return $object; - } else { - $this->db->rollback(); - return -1; - } + // End + if (!$error) { + $this->db->commit(); + return $object; + } else { + $this->db->rollback(); + return -1; + } } /** @@ -439,10 +439,10 @@ class MyObject extends CommonObject $resql = $this->db->query($sql); if ($resql) { $num = $this->db->num_rows($resql); - $i = 0; + $i = 0; while ($i < min($limit, $num)) { - $obj = $this->db->fetch_object($resql); + $obj = $this->db->fetch_object($resql); $record = new self($this->db); $record->setVarsFromFetchObj($obj); @@ -714,53 +714,53 @@ class MyObject extends CommonObject return $this->setStatusCommon($user, self::STATUS_VALIDATED, $notrigger, 'MYOBJECT_REOPEN'); } - /** - * 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 - */ - public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1) - { - global $conf, $langs, $hookmanager; + /** + * 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 + */ + public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1) + { + global $conf, $langs, $hookmanager; - if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips + if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips - $result = ''; + $result = ''; - $label = '<u>'.$langs->trans("MyObject").'</u>'; - $label .= '<br>'; - $label .= '<b>'.$langs->trans('Ref').':</b> '.$this->ref; - if (isset($this->status)) { - $label .= '<br><b>'.$langs->trans("Status").":</b> ".$this->getLibStatut(5); - } + $label = '<u>'.$langs->trans("MyObject").'</u>'; + $label .= '<br>'; + $label .= '<b>'.$langs->trans('Ref').':</b> '.$this->ref; + if (isset($this->status)) { + $label .= '<br><b>'.$langs->trans("Status").":</b> ".$this->getLibStatut(5); + } - $url = dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.$this->id; + $url = dol_buildpath('/mymodule/myobject_card.php', 1).'?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'; - } + 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'; + } - $linkclose = ''; - if (empty($notooltip)) - { - if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) - { - $label = $langs->trans("ShowMyObject"); - $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; - } - $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; - $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + $linkclose = ''; + if (empty($notooltip)) + { + if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + { + $label = $langs->trans("ShowMyObject"); + $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; + } + $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; + $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; + } + else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = '<a href="'.$url.'"'; $linkstart .= $linkclose.'>'; @@ -810,7 +810,7 @@ class MyObject extends CommonObject else $result .= $hookmanager->resPrint; return $result; - } + } /** * Return label of the status @@ -823,7 +823,7 @@ class MyObject extends CommonObject return $this->LibStatut($this->status, $mode); } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return the status * @@ -924,22 +924,22 @@ class MyObject extends CommonObject */ public function getLinesArray() { - $this->lines = array(); + $this->lines = array(); - $objectline = new MyObjectLine($this->db); - $result = $objectline->fetchAll('ASC', 'position', 0, 0, array('customsql'=>'fk_myobject = '.$this->id)); + $objectline = new MyObjectLine($this->db); + $result = $objectline->fetchAll('ASC', 'position', 0, 0, array('customsql'=>'fk_myobject = '.$this->id)); - if (is_numeric($result)) - { - $this->error = $this->error; - $this->errors = $this->errors; - return $result; - } - else - { - $this->lines = $result; - return $this->lines; - } + if (is_numeric($result)) + { + $this->error = $this->error; + $this->errors = $this->errors; + return $result; + } + else + { + $this->lines = $result; + return $this->lines; + } } /** diff --git a/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php b/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php index dcdf94c8666..482455e103d 100644 --- a/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php +++ b/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php @@ -194,18 +194,18 @@ class mymodulewidget1 extends ModeleBoxes ); } - /** - * Method to show box. Called by Dolibarr eatch time it wants to display the box. - * - * @param array $head Array with properties of box title - * @param array $contents Array with properties of box lines - * @param int $nooutput No print, only return string - * @return void - */ - public function showBox($head = null, $contents = null, $nooutput = 0) - { - // You may make your own code here… - // … or use the parent's class function using the provided head and contents templates - parent::showBox($this->info_box_head, $this->info_box_contents); - } + /** + * Method to show box. Called by Dolibarr eatch time it wants to display the box. + * + * @param array $head Array with properties of box title + * @param array $contents Array with properties of box lines + * @param int $nooutput No print, only return string + * @return void + */ + public function showBox($head = null, $contents = null, $nooutput = 0) + { + // You may make your own code here… + // … or use the parent's class function using the provided head and contents templates + parent::showBox($this->info_box_head, $this->info_box_contents); + } } diff --git a/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php b/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php index b6aa0399447..39b325924fc 100644 --- a/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php +++ b/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php @@ -17,189 +17,189 @@ dol_include_once("/mymodule/class/myobject.class.php"); */ class mailing_mailinglist_mymodule_myobject extends MailingTargets { - // CHANGE THIS: Put here a name not already used - public $name = 'mailinglist_mymodule_myobject'; - // CHANGE THIS: Put here a description of your selector module - public $desc = 'My object emailing target selector'; - // CHANGE THIS: Set to 1 if selector is available for admin users only - public $require_admin = 0; + // CHANGE THIS: Put here a name not already used + public $name = 'mailinglist_mymodule_myobject'; + // CHANGE THIS: Put here a description of your selector module + public $desc = 'My object emailing target selector'; + // CHANGE THIS: Set to 1 if selector is available for admin users only + public $require_admin = 0; - public $enabled = 0; - public $require_module = array(); + public $enabled = 0; + public $require_module = array(); - /** - * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png - */ - public $picto = 'mymodule@mymodule'; + /** + * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png + */ + public $picto = 'mymodule@mymodule'; - /** - * @var DoliDB Database handler. - */ - public $db; + /** + * @var DoliDB Database handler. + */ + public $db; - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - global $conf; + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct($db) + { + global $conf; - $this->db = $db; - if (is_array($conf->modules)) - { - $this->enabled = in_array('mymodule', $conf->modules) ? 1 : 0; - } - } + $this->db = $db; + if (is_array($conf->modules)) + { + $this->enabled = in_array('mymodule', $conf->modules) ? 1 : 0; + } + } - /** - * Affiche formulaire de filtre qui apparait dans page de selection des destinataires de mailings - * - * @return string Retourne zone select - */ - public function formFilter() - { - global $langs; - $langs->load("members"); + /** + * Affiche formulaire de filtre qui apparait dans page de selection des destinataires de mailings + * + * @return string Retourne zone select + */ + public function formFilter() + { + global $langs; + $langs->load("members"); - $form = new Form($this->db); + $form = new Form($this->db); - $arraystatus = array(1=>'Option 1', 2=>'Option 2'); + $arraystatus = array(1=>'Option 1', 2=>'Option 2'); - $s = ''; - $s .= $langs->trans("Status").': '; - $s .= '<select name="filter" class="flat">'; - $s .= '<option value="none"> </option>'; - foreach ($arraystatus as $status) - { - $s .= '<option value="'.$status.'">'.$status.'</option>'; - } - $s .= '</select>'; - $s .= '<br>'; + $s = ''; + $s .= $langs->trans("Status").': '; + $s .= '<select name="filter" class="flat">'; + $s .= '<option value="none"> </option>'; + foreach ($arraystatus as $status) + { + $s .= '<option value="'.$status.'">'.$status.'</option>'; + } + $s .= '</select>'; + $s .= '<br>'; - return $s; - } + return $s; + } - /** - * Renvoie url lien vers fiche de la source du destinataire du mailing - * - * @param int $id ID - * @return string Url lien - */ - public function url($id) - { - return '<a href="'.dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.$id.'">'.img_object('', "generic").'</a>'; - } + /** + * Renvoie url lien vers fiche de la source du destinataire du mailing + * + * @param int $id ID + * @return string Url lien + */ + public function url($id) + { + return '<a href="'.dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.$id.'">'.img_object('', "generic").'</a>'; + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * This is the main function that returns the array of emails - * - * @param int $mailing_id Id of emailing - * @return int <0 if error, number of emails added if ok - */ - public function add_to_target($mailing_id) - { - // phpcs:enable - $target = array(); - $j = 0; + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * This is the main function that returns the array of emails + * + * @param int $mailing_id Id of emailing + * @return int <0 if error, number of emails added if ok + */ + public function add_to_target($mailing_id) + { + // phpcs:enable + $target = array(); + $j = 0; - $sql = " select rowid as id, email, firstname, lastname, plan, partner"; - $sql .= " from ".MAIN_DB_PREFIX."myobject"; - $sql .= " where email IS NOT NULL AND email != ''"; - if (GETPOSTISSET('filter') && GETPOST('filter', 'alphanohtml') != 'none') $sql .= " AND status = '".$this->db->escape(GETPOST('filter', 'alphanohtml'))."'"; - $sql .= " ORDER BY email"; + $sql = " select rowid as id, email, firstname, lastname, plan, partner"; + $sql .= " from ".MAIN_DB_PREFIX."myobject"; + $sql .= " where email IS NOT NULL AND email != ''"; + if (GETPOSTISSET('filter') && GETPOST('filter', 'alphanohtml') != 'none') $sql .= " AND status = '".$this->db->escape(GETPOST('filter', 'alphanohtml'))."'"; + $sql .= " ORDER BY email"; - // Stocke destinataires dans target - $result = $this->db->query($sql); - if ($result) - { - $num = $this->db->num_rows($result); - $i = 0; + // Stocke destinataires dans target + $result = $this->db->query($sql); + if ($result) + { + $num = $this->db->num_rows($result); + $i = 0; - dol_syslog("mailinglist_mymodule_myobject.modules.php: mailing ".$num." targets found"); + dol_syslog("mailinglist_mymodule_myobject.modules.php: mailing ".$num." targets found"); - $old = ''; - while ($i < $num) - { - $obj = $this->db->fetch_object($result); - if ($old <> $obj->email) - { - $target[$j] = array( - 'email' => $obj->email, - 'name' => $obj->lastname, - 'id' => $obj->id, - 'firstname' => $obj->firstname, - 'other' => $obj->plan.';'.$obj->partner, - 'source_url' => $this->url($obj->id), - 'source_id' => $obj->id, - 'source_type' => 'dolicloud' - ); - $old = $obj->email; - $j++; - } + $old = ''; + while ($i < $num) + { + $obj = $this->db->fetch_object($result); + if ($old <> $obj->email) + { + $target[$j] = array( + 'email' => $obj->email, + 'name' => $obj->lastname, + 'id' => $obj->id, + 'firstname' => $obj->firstname, + 'other' => $obj->plan.';'.$obj->partner, + 'source_url' => $this->url($obj->id), + 'source_id' => $obj->id, + 'source_type' => 'dolicloud' + ); + $old = $obj->email; + $j++; + } - $i++; - } - } - else - { - dol_syslog($this->db->error()); - $this->error = $this->db->error(); - return -1; - } + $i++; + } + } + else + { + dol_syslog($this->db->error()); + $this->error = $this->db->error(); + return -1; + } - // You must fill the $target array with record like this - // $target[0]=array('email'=>'email_0','name'=>'name_0','firstname'=>'firstname_0'); - // ... - // $target[n]=array('email'=>'email_n','name'=>'name_n','firstname'=>'firstname_n'); + // You must fill the $target array with record like this + // $target[0]=array('email'=>'email_0','name'=>'name_0','firstname'=>'firstname_0'); + // ... + // $target[n]=array('email'=>'email_n','name'=>'name_n','firstname'=>'firstname_n'); - // Example: $target[0]=array('email'=>'myemail@mydomain.com','name'=>'Doe','firstname'=>'John'); + // Example: $target[0]=array('email'=>'myemail@mydomain.com','name'=>'Doe','firstname'=>'John'); - // ----- Your code end here ----- + // ----- Your code end here ----- - return parent::addTargetsToDatabase($mailing_id, $target); - } + return parent::addTargetsToDatabase($mailing_id, $target); + } - /** - * On the main mailing area, there is a box with statistics. - * If you want to add a line in this report you must provide an - * array of SQL request that returns two field: - * One called "label", One called "nb". - * - * @return array - */ - public function getSqlArrayForStats() - { - // CHANGE THIS: Optionnal + /** + * On the main mailing area, there is a box with statistics. + * If you want to add a line in this report you must provide an + * array of SQL request that returns two field: + * One called "label", One called "nb". + * + * @return array + */ + public function getSqlArrayForStats() + { + // CHANGE THIS: Optionnal - //var $statssql=array(); - //$this->statssql[0]="SELECT field1 as label, count(distinct(email)) as nb FROM mytable WHERE email IS NOT NULL"; + //var $statssql=array(); + //$this->statssql[0]="SELECT field1 as label, count(distinct(email)) as nb FROM mytable WHERE email IS NOT NULL"; - return array(); - } + return array(); + } - /** - * Return here number of distinct emails returned by your selector. - * For example if this selector is used to extract 500 different - * emails from a text file, this function must return 500. - * - * @param string $filter Filter - * @param string $option Options - * @return int Nb of recipients or -1 if KO - */ - public function getNbOfRecipients($filter = 1, $option = '') - { - $a = parent::getNbOfRecipients("select count(distinct(email)) as nb from ".MAIN_DB_PREFIX."myobject as p where email IS NOT NULL AND email != ''"); + /** + * Return here number of distinct emails returned by your selector. + * For example if this selector is used to extract 500 different + * emails from a text file, this function must return 500. + * + * @param string $filter Filter + * @param string $option Options + * @return int Nb of recipients or -1 if KO + */ + public function getNbOfRecipients($filter = 1, $option = '') + { + $a = parent::getNbOfRecipients("select count(distinct(email)) as nb from ".MAIN_DB_PREFIX."myobject as p where email IS NOT NULL AND email != ''"); - if ($a < 0) return -1; - return $a; - } + if ($a < 0) return -1; + return $a; + } } diff --git a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php index ba956e46af9..21ede6bfd58 100644 --- a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php +++ b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php @@ -33,419 +33,419 @@ include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php'; */ class modMyModule extends DolibarrModules { - /** - * Constructor. Define names, constants, directories, boxes, permissions - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - global $langs, $conf; - $this->db = $db; + /** + * Constructor. Define names, constants, directories, boxes, permissions + * + * @param DoliDB $db Database handler + */ + public function __construct($db) + { + global $langs, $conf; + $this->db = $db; - // Id for module (must be unique). - // Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id). - $this->numero = 500000; // TODO Go on page https://wiki.dolibarr.org/index.php/List_of_modules_id to reserve an id number for your module - // Key text used to identify module (for permissions, menus, etc...) - $this->rights_class = 'mymodule'; - // Family can be 'base' (core modules),'crm','financial','hr','projects','products','ecm','technic' (transverse modules),'interface' (link with external tools),'other','...' - // It is used to group modules by family in module setup page - $this->family = "other"; - // Module position in the family on 2 digits ('01', '10', '20', ...) - $this->module_position = '90'; - // Gives the possibility for 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"))); - // Module label (no space allowed), used if translation string 'ModuleMyModuleName' not found (MyModule is name of module). - $this->name = preg_replace('/^mod/i', '', get_class($this)); - // Module description, used if translation string 'ModuleMyModuleDesc' not found (MyModule is name of module). - $this->description = "MyModuleDescription"; - // Used only if file README.md and README-LL.md not found. - $this->descriptionlong = "MyModule description (Long)"; - $this->editor_name = 'Editor name'; - $this->editor_url = 'https://www.example.com'; - // Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated' or a version string like 'x.y.z' - $this->version = '1.0'; - // Url to the file with your last numberversion of this module - //$this->url_last_version = 'http://www.example.com/versionmodule.txt'; + // Id for module (must be unique). + // Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id). + $this->numero = 500000; // TODO Go on page https://wiki.dolibarr.org/index.php/List_of_modules_id to reserve an id number for your module + // Key text used to identify module (for permissions, menus, etc...) + $this->rights_class = 'mymodule'; + // Family can be 'base' (core modules),'crm','financial','hr','projects','products','ecm','technic' (transverse modules),'interface' (link with external tools),'other','...' + // It is used to group modules by family in module setup page + $this->family = "other"; + // Module position in the family on 2 digits ('01', '10', '20', ...) + $this->module_position = '90'; + // Gives the possibility for 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"))); + // Module label (no space allowed), used if translation string 'ModuleMyModuleName' not found (MyModule is name of module). + $this->name = preg_replace('/^mod/i', '', get_class($this)); + // Module description, used if translation string 'ModuleMyModuleDesc' not found (MyModule is name of module). + $this->description = "MyModuleDescription"; + // Used only if file README.md and README-LL.md not found. + $this->descriptionlong = "MyModule description (Long)"; + $this->editor_name = 'Editor name'; + $this->editor_url = 'https://www.example.com'; + // Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated' or a version string like 'x.y.z' + $this->version = '1.0'; + // Url to the file with your last numberversion of this module + //$this->url_last_version = 'http://www.example.com/versionmodule.txt'; - // Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase) - $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); - // Name of image file used for this module. - // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' - // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' - $this->picto = 'generic'; - // Define some features supported by module (triggers, login, substitutions, menus, css, etc...) - $this->module_parts = array( - // Set this to 1 if module has its own trigger directory (core/triggers) - 'triggers' => 0, - // Set this to 1 if module has its own login method file (core/login) - 'login' => 0, - // Set this to 1 if module has its own substitution function file (core/substitutions) - 'substitutions' => 0, - // Set this to 1 if module has its own menus handler directory (core/menus) - 'menus' => 0, - // Set this to 1 if module overwrite template dir (core/tpl) - 'tpl' => 0, - // Set this to 1 if module has its own barcode directory (core/modules/barcode) - 'barcode' => 0, - // Set this to 1 if module has its own models directory (core/modules/xxx) - 'models' => 0, - // Set this to 1 if module has its own theme directory (theme) - 'theme' => 0, - // Set this to relative path of css file if module has its own css file - 'css' => array( - // '/mymodule/css/mymodule.css.php', - ), - // Set this to relative path of js file if module must load a js on all pages - 'js' => array( - // '/mymodule/js/mymodule.js.php', - ), - // Set here all hooks context managed by module. To find available hook context, make a "grep -r '>initHooks(' *" on source code. You can also set hook context to 'all' - 'hooks' => array( - // 'data' => array( - // 'hookcontext1', - // 'hookcontext2', - // ), - // 'entity' => '0', - ), - // Set this to 1 if features of module are opened to external users - 'moduleforexternal' => 0, - ); - // Data directories to create when module is enabled. - // Example: this->dirs = array("/mymodule/temp","/mymodule/subdir"); - $this->dirs = array("/mymodule/temp"); - // Config pages. Put here list of php page, stored into mymodule/admin directory, to use to setup module. - $this->config_page_url = array("setup.php@mymodule"); - // Dependencies - // A condition to hide module - $this->hidden = false; - // List of module class names as string that must be enabled if this module is enabled. Example: array('always1'=>'modModuleToEnable1','always2'=>'modModuleToEnable2', 'FR1'=>'modModuleToEnableFR'...) - $this->depends = array(); - $this->requiredby = array(); // List of module class names as string to disable if this one is disabled. Example: array('modModuleToDisable1', ...) - $this->conflictwith = array(); // List of module class names as string this module is in conflict with. Example: array('modModuleToDisable1', ...) - $this->langfiles = array("mymodule@mymodule"); - $this->phpmin = array(5, 5); // Minimum version of PHP required by module - $this->need_dolibarr_version = array(11, -3); // 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_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'=>'MyModuleWasAutomaticallyActivatedBecauseOfYourCountryChoice'); - //$this->always_enabled = true; // If true, can't be disabled + // Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase) + $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); + // Name of image file used for this module. + // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' + // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' + $this->picto = 'generic'; + // Define some features supported by module (triggers, login, substitutions, menus, css, etc...) + $this->module_parts = array( + // Set this to 1 if module has its own trigger directory (core/triggers) + 'triggers' => 0, + // Set this to 1 if module has its own login method file (core/login) + 'login' => 0, + // Set this to 1 if module has its own substitution function file (core/substitutions) + 'substitutions' => 0, + // Set this to 1 if module has its own menus handler directory (core/menus) + 'menus' => 0, + // Set this to 1 if module overwrite template dir (core/tpl) + 'tpl' => 0, + // Set this to 1 if module has its own barcode directory (core/modules/barcode) + 'barcode' => 0, + // Set this to 1 if module has its own models directory (core/modules/xxx) + 'models' => 0, + // Set this to 1 if module has its own theme directory (theme) + 'theme' => 0, + // Set this to relative path of css file if module has its own css file + 'css' => array( + // '/mymodule/css/mymodule.css.php', + ), + // Set this to relative path of js file if module must load a js on all pages + 'js' => array( + // '/mymodule/js/mymodule.js.php', + ), + // Set here all hooks context managed by module. To find available hook context, make a "grep -r '>initHooks(' *" on source code. You can also set hook context to 'all' + 'hooks' => array( + // 'data' => array( + // 'hookcontext1', + // 'hookcontext2', + // ), + // 'entity' => '0', + ), + // Set this to 1 if features of module are opened to external users + 'moduleforexternal' => 0, + ); + // Data directories to create when module is enabled. + // Example: this->dirs = array("/mymodule/temp","/mymodule/subdir"); + $this->dirs = array("/mymodule/temp"); + // Config pages. Put here list of php page, stored into mymodule/admin directory, to use to setup module. + $this->config_page_url = array("setup.php@mymodule"); + // Dependencies + // A condition to hide module + $this->hidden = false; + // List of module class names as string that must be enabled if this module is enabled. Example: array('always1'=>'modModuleToEnable1','always2'=>'modModuleToEnable2', 'FR1'=>'modModuleToEnableFR'...) + $this->depends = array(); + $this->requiredby = array(); // List of module class names as string to disable if this one is disabled. Example: array('modModuleToDisable1', ...) + $this->conflictwith = array(); // List of module class names as string this module is in conflict with. Example: array('modModuleToDisable1', ...) + $this->langfiles = array("mymodule@mymodule"); + $this->phpmin = array(5, 5); // Minimum version of PHP required by module + $this->need_dolibarr_version = array(11, -3); // 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_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'=>'MyModuleWasAutomaticallyActivatedBecauseOfYourCountryChoice'); + //$this->always_enabled = true; // If true, can't be disabled - // Constants - // List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive) - // Example: $this->const=array(1 => array('MYMODULE_MYNEWCONST1', 'chaine', 'myvalue', 'This is a constant to add', 1), - // 2 => array('MYMODULE_MYNEWCONST2', 'chaine', 'myvalue', 'This is another constant to add', 0, 'current', 1) - // ); - $this->const = array( - // 1 => array('MYMODULE_MYCONSTANT', 'chaine', 'avalue', 'This is a constant to add', 1, 'allentities', 1) - ); + // Constants + // List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive) + // Example: $this->const=array(1 => array('MYMODULE_MYNEWCONST1', 'chaine', 'myvalue', 'This is a constant to add', 1), + // 2 => array('MYMODULE_MYNEWCONST2', 'chaine', 'myvalue', 'This is another constant to add', 0, 'current', 1) + // ); + $this->const = array( + // 1 => array('MYMODULE_MYCONSTANT', 'chaine', 'avalue', 'This is a constant to add', 1, 'allentities', 1) + ); - // Some keys to add into the overwriting translation tables - /*$this->overwrite_translation = array( - 'en_US:ParentCompany'=>'Parent company or reseller', - 'fr_FR:ParentCompany'=>'Maison mère ou revendeur' - )*/ + // Some keys to add into the overwriting translation tables + /*$this->overwrite_translation = array( + 'en_US:ParentCompany'=>'Parent company or reseller', + 'fr_FR:ParentCompany'=>'Maison mère ou revendeur' + )*/ - if (!isset($conf->mymodule) || !isset($conf->mymodule->enabled)) { - $conf->mymodule = new stdClass(); - $conf->mymodule->enabled = 0; - } + if (!isset($conf->mymodule) || !isset($conf->mymodule->enabled)) { + $conf->mymodule = new stdClass(); + $conf->mymodule->enabled = 0; + } - // Array to add new pages in new tabs - $this->tabs = array(); - // Example: - // $this->tabs[] = array('data'=>'objecttype:+tabname1:Title1:mylangfile@mymodule:$user->rights->mymodule->read:/mymodule/mynewtab1.php?id=__ID__'); // To add a new tab identified by code tabname1 - // $this->tabs[] = array('data'=>'objecttype:+tabname2:SUBSTITUTION_Title2:mylangfile@mymodule:$user->rights->othermodule->read:/mymodule/mynewtab2.php?id=__ID__', // To add another new tab identified by code tabname2. Label will be result of calling all substitution functions on 'Title2' key. - // $this->tabs[] = array('data'=>'objecttype:-tabname:NU:conditiontoremove'); // To remove an existing tab identified by code tabname - // - // Where objecttype can be - // 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member) - // 'contact' to add a tab in contact view - // 'contract' to add a tab in contract view - // 'group' to add a tab in group view - // 'intervention' to add a tab in intervention view - // 'invoice' to add a tab in customer invoice view - // 'invoice_supplier' to add a tab in supplier invoice view - // 'member' to add a tab in fundation member view - // 'opensurveypoll' to add a tab in opensurvey poll view - // 'order' to add a tab in customer order view - // 'order_supplier' to add a tab in supplier order view - // 'payment' to add a tab in payment view - // 'payment_supplier' to add a tab in supplier payment view - // 'product' to add a tab in product view - // 'propal' to add a tab in propal view - // 'project' to add a tab in project view - // 'stock' to add a tab in stock view - // 'thirdparty' to add a tab in third party view - // 'user' to add a tab in user view + // Array to add new pages in new tabs + $this->tabs = array(); + // Example: + // $this->tabs[] = array('data'=>'objecttype:+tabname1:Title1:mylangfile@mymodule:$user->rights->mymodule->read:/mymodule/mynewtab1.php?id=__ID__'); // To add a new tab identified by code tabname1 + // $this->tabs[] = array('data'=>'objecttype:+tabname2:SUBSTITUTION_Title2:mylangfile@mymodule:$user->rights->othermodule->read:/mymodule/mynewtab2.php?id=__ID__', // To add another new tab identified by code tabname2. Label will be result of calling all substitution functions on 'Title2' key. + // $this->tabs[] = array('data'=>'objecttype:-tabname:NU:conditiontoremove'); // To remove an existing tab identified by code tabname + // + // Where objecttype can be + // 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member) + // 'contact' to add a tab in contact view + // 'contract' to add a tab in contract view + // 'group' to add a tab in group view + // 'intervention' to add a tab in intervention view + // 'invoice' to add a tab in customer invoice view + // 'invoice_supplier' to add a tab in supplier invoice view + // 'member' to add a tab in fundation member view + // 'opensurveypoll' to add a tab in opensurvey poll view + // 'order' to add a tab in customer order view + // 'order_supplier' to add a tab in supplier order view + // 'payment' to add a tab in payment view + // 'payment_supplier' to add a tab in supplier payment view + // 'product' to add a tab in product view + // 'propal' to add a tab in propal view + // 'project' to add a tab in project view + // 'stock' to add a tab in stock view + // 'thirdparty' to add a tab in third party view + // 'user' to add a tab in user view - // Dictionaries - $this->dictionaries = array(); - /* Example: - $this->dictionaries=array( - 'langs'=>'mymodule@mymodule', - // List of tables we want to see into dictonnary editor - 'tabname'=>array(MAIN_DB_PREFIX."table1", MAIN_DB_PREFIX."table2", MAIN_DB_PREFIX."table3"), - // Label of tables - 'tablib'=>array("Table1", "Table2", "Table3"), - // Request to select fields - 'tabsql'=>array('SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table1 as f', 'SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table2 as f', 'SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table3 as f'), - // Sort order - 'tabsqlsort'=>array("label ASC", "label ASC", "label ASC"), - // List of fields (result of select to show dictionary) - 'tabfield'=>array("code,label", "code,label", "code,label"), - // List of fields (list of fields to edit a record) - 'tabfieldvalue'=>array("code,label", "code,label", "code,label"), - // List of fields (list of fields for insert) - 'tabfieldinsert'=>array("code,label", "code,label", "code,label"), - // Name of columns with primary key (try to always name it 'rowid') - 'tabrowid'=>array("rowid", "rowid", "rowid"), - // Condition to show each dictionary - 'tabcond'=>array($conf->mymodule->enabled, $conf->mymodule->enabled, $conf->mymodule->enabled) - ); - */ + // Dictionaries + $this->dictionaries = array(); + /* Example: + $this->dictionaries=array( + 'langs'=>'mymodule@mymodule', + // List of tables we want to see into dictonnary editor + 'tabname'=>array(MAIN_DB_PREFIX."table1", MAIN_DB_PREFIX."table2", MAIN_DB_PREFIX."table3"), + // Label of tables + 'tablib'=>array("Table1", "Table2", "Table3"), + // Request to select fields + 'tabsql'=>array('SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table1 as f', 'SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table2 as f', 'SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table3 as f'), + // Sort order + 'tabsqlsort'=>array("label ASC", "label ASC", "label ASC"), + // List of fields (result of select to show dictionary) + 'tabfield'=>array("code,label", "code,label", "code,label"), + // List of fields (list of fields to edit a record) + 'tabfieldvalue'=>array("code,label", "code,label", "code,label"), + // List of fields (list of fields for insert) + 'tabfieldinsert'=>array("code,label", "code,label", "code,label"), + // Name of columns with primary key (try to always name it 'rowid') + 'tabrowid'=>array("rowid", "rowid", "rowid"), + // Condition to show each dictionary + 'tabcond'=>array($conf->mymodule->enabled, $conf->mymodule->enabled, $conf->mymodule->enabled) + ); + */ - // Boxes/Widgets - // Add here list of php file(s) stored in mymodule/core/boxes that contains a class to show a widget. - $this->boxes = array( - // 0 => array( - // 'file' => 'mymodulewidget1.php@mymodule', - // 'note' => 'Widget provided by MyModule', - // 'enabledbydefaulton' => 'Home', - // ), - // ... - ); + // Boxes/Widgets + // Add here list of php file(s) stored in mymodule/core/boxes that contains a class to show a widget. + $this->boxes = array( + // 0 => array( + // 'file' => 'mymodulewidget1.php@mymodule', + // 'note' => 'Widget provided by MyModule', + // 'enabledbydefaulton' => 'Home', + // ), + // ... + ); - // Cronjobs (List of cron jobs entries to add when module is enabled) - // unit_frequency must be 60 for minute, 3600 for hour, 86400 for day, 604800 for week - $this->cronjobs = array( - // 0 => array( - // 'label' => 'MyJob label', - // 'jobtype' => 'method', - // 'class' => '/mymodule/class/myobject.class.php', - // 'objectname' => 'MyObject', - // 'method' => 'doScheduledJob', - // 'parameters' => '', - // 'comment' => 'Comment', - // 'frequency' => 2, - // 'unitfrequency' => 3600, - // 'status' => 0, - // 'test' => '$conf->mymodule->enabled', - // 'priority' => 50, - // ), - ); - // Example: $this->cronjobs=array( - // 0=>array('label'=>'My label', 'jobtype'=>'method', 'class'=>'/dir/class/file.class.php', 'objectname'=>'MyClass', 'method'=>'myMethod', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>2, 'unitfrequency'=>3600, 'status'=>0, 'test'=>'$conf->mymodule->enabled', 'priority'=>50), - // 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24, 'status'=>0, 'test'=>'$conf->mymodule->enabled', 'priority'=>50) - // ); + // Cronjobs (List of cron jobs entries to add when module is enabled) + // unit_frequency must be 60 for minute, 3600 for hour, 86400 for day, 604800 for week + $this->cronjobs = array( + // 0 => array( + // 'label' => 'MyJob label', + // 'jobtype' => 'method', + // 'class' => '/mymodule/class/myobject.class.php', + // 'objectname' => 'MyObject', + // 'method' => 'doScheduledJob', + // 'parameters' => '', + // 'comment' => 'Comment', + // 'frequency' => 2, + // 'unitfrequency' => 3600, + // 'status' => 0, + // 'test' => '$conf->mymodule->enabled', + // 'priority' => 50, + // ), + ); + // Example: $this->cronjobs=array( + // 0=>array('label'=>'My label', 'jobtype'=>'method', 'class'=>'/dir/class/file.class.php', 'objectname'=>'MyClass', 'method'=>'myMethod', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>2, 'unitfrequency'=>3600, 'status'=>0, 'test'=>'$conf->mymodule->enabled', 'priority'=>50), + // 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24, 'status'=>0, 'test'=>'$conf->mymodule->enabled', 'priority'=>50) + // ); - // Permissions provided by this module - $this->rights = array(); - $r = 0; - // Add here entries to declare new permissions - /* BEGIN MODULEBUILDER PERMISSIONS */ - $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) - $this->rights[$r][1] = 'Read objects of MyModule'; // Permission label - $this->rights[$r][4] = 'myobject'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) - $this->rights[$r][5] = 'read'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) - $r++; - $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) - $this->rights[$r][1] = 'Create/Update objects of MyModule'; // Permission label - $this->rights[$r][4] = 'myobject'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) - $this->rights[$r][5] = 'write'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) - $r++; - $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) - $this->rights[$r][1] = 'Delete objects of MyModule'; // Permission label - $this->rights[$r][4] = 'myobject'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) - $this->rights[$r][5] = 'delete'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) - $r++; - /* END MODULEBUILDER PERMISSIONS */ + // Permissions provided by this module + $this->rights = array(); + $r = 0; + // Add here entries to declare new permissions + /* BEGIN MODULEBUILDER PERMISSIONS */ + $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) + $this->rights[$r][1] = 'Read objects of MyModule'; // Permission label + $this->rights[$r][4] = 'myobject'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) + $this->rights[$r][5] = 'read'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) + $r++; + $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) + $this->rights[$r][1] = 'Create/Update objects of MyModule'; // Permission label + $this->rights[$r][4] = 'myobject'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) + $this->rights[$r][5] = 'write'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) + $r++; + $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) + $this->rights[$r][1] = 'Delete objects of MyModule'; // Permission label + $this->rights[$r][4] = 'myobject'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) + $this->rights[$r][5] = 'delete'; // In php code, permission will be checked by test if ($user->rights->mymodule->level1->level2) + $r++; + /* END MODULEBUILDER PERMISSIONS */ - // Main menu entries to add - $this->menu = array(); - $r = 0; - // Add here entries to declare new menus - /* BEGIN MODULEBUILDER TOPMENU */ - $this->menu[$r++] = array( - 'fk_menu'=>'', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'type'=>'top', // This is a Top menu entry - 'titre'=>'MyModule', - 'mainmenu'=>'mymodule', - 'leftmenu'=>'', - 'url'=>'/mymodule/mymoduleindex.php', - 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position'=>1000 + $r, - 'enabled'=>'$conf->mymodule->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. - 'perms'=>'$user->rights->mymodule->myobject->read', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules - 'target'=>'', - 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both - ); - /* END MODULEBUILDER TOPMENU */ - /* BEGIN MODULEBUILDER LEFTMENU MYOBJECT - $this->menu[$r++]=array( - 'fk_menu'=>'fk_mainmenu=mymodule', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'type'=>'left', // This is a Top menu entry - 'titre'=>'MyObject', - 'mainmenu'=>'mymodule', - 'leftmenu'=>'myobject', - 'url'=>'/mymodule/mymoduleindex.php', - 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position'=>1000+$r, - 'enabled'=>'$conf->mymodule->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. - 'perms'=>'$user->rights->mymodule->myobject->read', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules - 'target'=>'', - 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both - ); - $this->menu[$r++]=array( - 'fk_menu'=>'fk_mainmenu=mymodule,fk_leftmenu=myobject', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'type'=>'left', // This is a Left menu entry - 'titre'=>'List MyObject', - 'mainmenu'=>'mymodule', - 'leftmenu'=>'mymodule_myobject_list', - 'url'=>'/mymodule/myobject_list.php', - 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position'=>1000+$r, - 'enabled'=>'$conf->mymodule->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. - 'perms'=>'$user->rights->mymodule->myobject->read', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules - 'target'=>'', - 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both - ); - $this->menu[$r++]=array( - 'fk_menu'=>'fk_mainmenu=mymodule,fk_leftmenu=myobject', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'type'=>'left', // This is a Left menu entry - 'titre'=>'New MyObject', - 'mainmenu'=>'mymodule', - 'leftmenu'=>'mymodule_myobject_new', - 'url'=>'/mymodule/myobject_page.php?action=create', - 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position'=>1000+$r, - 'enabled'=>'$conf->mymodule->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. - 'perms'=>'$user->rights->mymodule->myobject->write', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules - 'target'=>'', - 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both - ); - END MODULEBUILDER LEFTMENU MYOBJECT */ + // Main menu entries to add + $this->menu = array(); + $r = 0; + // Add here entries to declare new menus + /* BEGIN MODULEBUILDER TOPMENU */ + $this->menu[$r++] = array( + 'fk_menu'=>'', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode + 'type'=>'top', // This is a Top menu entry + 'titre'=>'MyModule', + 'mainmenu'=>'mymodule', + 'leftmenu'=>'', + 'url'=>'/mymodule/mymoduleindex.php', + 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. + 'position'=>1000 + $r, + 'enabled'=>'$conf->mymodule->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. + 'perms'=>'$user->rights->mymodule->myobject->read', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules + 'target'=>'', + 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both + ); + /* END MODULEBUILDER TOPMENU */ + /* BEGIN MODULEBUILDER LEFTMENU MYOBJECT + $this->menu[$r++]=array( + 'fk_menu'=>'fk_mainmenu=mymodule', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode + 'type'=>'left', // This is a Top menu entry + 'titre'=>'MyObject', + 'mainmenu'=>'mymodule', + 'leftmenu'=>'myobject', + 'url'=>'/mymodule/mymoduleindex.php', + 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. + 'position'=>1000+$r, + 'enabled'=>'$conf->mymodule->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. + 'perms'=>'$user->rights->mymodule->myobject->read', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules + 'target'=>'', + 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both + ); + $this->menu[$r++]=array( + 'fk_menu'=>'fk_mainmenu=mymodule,fk_leftmenu=myobject', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode + 'type'=>'left', // This is a Left menu entry + 'titre'=>'List MyObject', + 'mainmenu'=>'mymodule', + 'leftmenu'=>'mymodule_myobject_list', + 'url'=>'/mymodule/myobject_list.php', + 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. + 'position'=>1000+$r, + 'enabled'=>'$conf->mymodule->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. + 'perms'=>'$user->rights->mymodule->myobject->read', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules + 'target'=>'', + 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both + ); + $this->menu[$r++]=array( + 'fk_menu'=>'fk_mainmenu=mymodule,fk_leftmenu=myobject', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode + 'type'=>'left', // This is a Left menu entry + 'titre'=>'New MyObject', + 'mainmenu'=>'mymodule', + 'leftmenu'=>'mymodule_myobject_new', + 'url'=>'/mymodule/myobject_page.php?action=create', + 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. + 'position'=>1000+$r, + 'enabled'=>'$conf->mymodule->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. + 'perms'=>'$user->rights->mymodule->myobject->write', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules + 'target'=>'', + 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both + ); + END MODULEBUILDER LEFTMENU MYOBJECT */ - // Exports profiles provided by this module - $r = 1; - /* BEGIN MODULEBUILDER EXPORT MYOBJECT */ - /* - $langs->load("mymodule@mymodule"); - $this->export_code[$r]=$this->rights_class.'_'.$r; - $this->export_label[$r]='MyObjectLines'; // Translation key (used only if key ExportDataset_xxx_z not found) - $this->export_icon[$r]='myobject@mymodule'; - // Define $this->export_fields_array, $this->export_TypeFields_array and $this->export_entities_array - $keyforclass = 'MyObject'; $keyforclassfile='/mymobule/class/myobject.class.php'; $keyforelement='myobject@mymodule'; - include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php'; - //$this->export_fields_array[$r]['t.fieldtoadd']='FieldToAdd'; $this->export_TypeFields_array[$r]['t.fieldtoadd']='Text'; - //unset($this->export_fields_array[$r]['t.fieldtoremove']); - //$keyforclass = 'MyObjectLine'; $keyforclassfile='/mymodule/class/myobject.class.php'; $keyforelement='myobjectline@mymodule'; $keyforalias='tl'; + // Exports profiles provided by this module + $r = 1; + /* BEGIN MODULEBUILDER EXPORT MYOBJECT */ + /* + $langs->load("mymodule@mymodule"); + $this->export_code[$r]=$this->rights_class.'_'.$r; + $this->export_label[$r]='MyObjectLines'; // Translation key (used only if key ExportDataset_xxx_z not found) + $this->export_icon[$r]='myobject@mymodule'; + // Define $this->export_fields_array, $this->export_TypeFields_array and $this->export_entities_array + $keyforclass = 'MyObject'; $keyforclassfile='/mymobule/class/myobject.class.php'; $keyforelement='myobject@mymodule'; + include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php'; + //$this->export_fields_array[$r]['t.fieldtoadd']='FieldToAdd'; $this->export_TypeFields_array[$r]['t.fieldtoadd']='Text'; + //unset($this->export_fields_array[$r]['t.fieldtoremove']); + //$keyforclass = 'MyObjectLine'; $keyforclassfile='/mymodule/class/myobject.class.php'; $keyforelement='myobjectline@mymodule'; $keyforalias='tl'; //include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php'; - $keyforselect='myobject'; $keyforaliasextra='extra'; $keyforelement='myobject@mymodule'; - include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; - //$keyforselect='myobjectline'; $keyforaliasextra='extraline'; $keyforelement='myobjectline@mymodule'; - //include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; - //$this->export_dependencies_array[$r] = array('myobjectline'=>array('tl.rowid','tl.ref')); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields) - //$this->export_special_array[$r] = array('t.field'=>'...'); - //$this->export_examplevalues_array[$r] = array('t.field'=>'Example'); - //$this->export_help_array[$r] = array('t.field'=>'FieldDescHelp'); - $this->export_sql_start[$r]='SELECT DISTINCT '; - $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'myobject as t'; - //$this->export_sql_end[$r] =' LEFT JOIN '.MAIN_DB_PREFIX.'myobject_line as tl ON tl.fk_myobject = t.rowid'; - $this->export_sql_end[$r] .=' WHERE 1 = 1'; - $this->export_sql_end[$r] .=' AND t.entity IN ('.getEntity('myobject').')'; - $r++; */ - /* END MODULEBUILDER EXPORT MYOBJECT */ + $keyforselect='myobject'; $keyforaliasextra='extra'; $keyforelement='myobject@mymodule'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + //$keyforselect='myobjectline'; $keyforaliasextra='extraline'; $keyforelement='myobjectline@mymodule'; + //include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + //$this->export_dependencies_array[$r] = array('myobjectline'=>array('tl.rowid','tl.ref')); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields) + //$this->export_special_array[$r] = array('t.field'=>'...'); + //$this->export_examplevalues_array[$r] = array('t.field'=>'Example'); + //$this->export_help_array[$r] = array('t.field'=>'FieldDescHelp'); + $this->export_sql_start[$r]='SELECT DISTINCT '; + $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'myobject as t'; + //$this->export_sql_end[$r] =' LEFT JOIN '.MAIN_DB_PREFIX.'myobject_line as tl ON tl.fk_myobject = t.rowid'; + $this->export_sql_end[$r] .=' WHERE 1 = 1'; + $this->export_sql_end[$r] .=' AND t.entity IN ('.getEntity('myobject').')'; + $r++; */ + /* END MODULEBUILDER EXPORT MYOBJECT */ - // Imports profiles provided by this module - $r = 1; - /* BEGIN MODULEBUILDER IMPORT MYOBJECT */ - /* - $langs->load("mymodule@mymodule"); - $this->export_code[$r]=$this->rights_class.'_'.$r; - $this->export_label[$r]='MyObjectLines'; // Translation key (used only if key ExportDataset_xxx_z not found) - $this->export_icon[$r]='myobject@mymodule'; - $keyforclass = 'MyObject'; $keyforclassfile='/mymobule/class/myobject.class.php'; $keyforelement='myobject@mymodule'; - include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php'; - $keyforselect='myobject'; $keyforaliasextra='extra'; $keyforelement='myobject@mymodule'; - include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; - //$this->export_dependencies_array[$r]=array('mysubobject'=>'ts.rowid', 't.myfield'=>array('t.myfield2','t.myfield3')); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields) - $this->export_sql_start[$r]='SELECT DISTINCT '; - $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'myobject as t'; - $this->export_sql_end[$r] .=' WHERE 1 = 1'; - $this->export_sql_end[$r] .=' AND t.entity IN ('.getEntity('myobject').')'; - $r++; */ - /* END MODULEBUILDER IMPORT MYOBJECT */ - } + // Imports profiles provided by this module + $r = 1; + /* BEGIN MODULEBUILDER IMPORT MYOBJECT */ + /* + $langs->load("mymodule@mymodule"); + $this->export_code[$r]=$this->rights_class.'_'.$r; + $this->export_label[$r]='MyObjectLines'; // Translation key (used only if key ExportDataset_xxx_z not found) + $this->export_icon[$r]='myobject@mymodule'; + $keyforclass = 'MyObject'; $keyforclassfile='/mymobule/class/myobject.class.php'; $keyforelement='myobject@mymodule'; + include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php'; + $keyforselect='myobject'; $keyforaliasextra='extra'; $keyforelement='myobject@mymodule'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + //$this->export_dependencies_array[$r]=array('mysubobject'=>'ts.rowid', 't.myfield'=>array('t.myfield2','t.myfield3')); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields) + $this->export_sql_start[$r]='SELECT DISTINCT '; + $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'myobject as t'; + $this->export_sql_end[$r] .=' WHERE 1 = 1'; + $this->export_sql_end[$r] .=' AND t.entity IN ('.getEntity('myobject').')'; + $r++; */ + /* END MODULEBUILDER IMPORT MYOBJECT */ + } - /** - * Function called when module is enabled. - * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database. - * It also creates data directories - * - * @param string $options Options when enabling module ('', 'noboxes') - * @return int 1 if OK, 0 if KO - */ - public function init($options = '') - { - global $conf, $langs; + /** + * Function called when module is enabled. + * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database. + * It also creates data directories + * + * @param string $options Options when enabling module ('', 'noboxes') + * @return int 1 if OK, 0 if KO + */ + public function init($options = '') + { + global $conf, $langs; - $result = $this->_load_tables('/mymodule/sql/'); - if ($result < 0) return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default') + $result = $this->_load_tables('/mymodule/sql/'); + if ($result < 0) return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default') - // Create extrafields during init - //include_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; - //$extrafields = new ExtraFields($this->db); - //$result1=$extrafields->addExtraField('mymodule_myattr1', "New Attr 1 label", 'boolean', 1, 3, 'thirdparty', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result2=$extrafields->addExtraField('mymodule_myattr2', "New Attr 2 label", 'varchar', 1, 10, 'project', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result3=$extrafields->addExtraField('mymodule_myattr3', "New Attr 3 label", 'varchar', 1, 10, 'bank_account', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result4=$extrafields->addExtraField('mymodule_myattr4', "New Attr 4 label", 'select', 1, 3, 'thirdparty', 0, 1, '', array('options'=>array('code1'=>'Val1','code2'=>'Val2','code3'=>'Val3')), 1,'', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result5=$extrafields->addExtraField('mymodule_myattr5', "New Attr 5 label", 'text', 1, 10, 'user', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); + // Create extrafields during init + //include_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; + //$extrafields = new ExtraFields($this->db); + //$result1=$extrafields->addExtraField('mymodule_myattr1', "New Attr 1 label", 'boolean', 1, 3, 'thirdparty', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); + //$result2=$extrafields->addExtraField('mymodule_myattr2', "New Attr 2 label", 'varchar', 1, 10, 'project', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); + //$result3=$extrafields->addExtraField('mymodule_myattr3', "New Attr 3 label", 'varchar', 1, 10, 'bank_account', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); + //$result4=$extrafields->addExtraField('mymodule_myattr4', "New Attr 4 label", 'select', 1, 3, 'thirdparty', 0, 1, '', array('options'=>array('code1'=>'Val1','code2'=>'Val2','code3'=>'Val3')), 1,'', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); + //$result5=$extrafields->addExtraField('mymodule_myattr5', "New Attr 5 label", 'text', 1, 10, 'user', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - // Permissions - $this->remove($options); + // Permissions + $this->remove($options); - $sql = array(); + $sql = array(); - // ODT template - /* - $src=DOL_DOCUMENT_ROOT.'/install/doctemplates/mymodule/template_myobjects.odt'; - $dirodt=DOL_DATA_ROOT.'/doctemplates/mymodule'; - $dest=$dirodt.'/template_myobjects.odt'; + // ODT template + /* + $src=DOL_DOCUMENT_ROOT.'/install/doctemplates/mymodule/template_myobjects.odt'; + $dirodt=DOL_DATA_ROOT.'/doctemplates/mymodule'; + $dest=$dirodt.'/template_myobjects.odt'; - if (file_exists($src) && ! file_exists($dest)) - { - require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - dol_mkdir($dirodt); - $result=dol_copy($src, $dest, 0, 0); - if ($result < 0) - { - $langs->load("errors"); - $this->error=$langs->trans('ErrorFailToCopyFile', $src, $dest); - return 0; - } - } + if (file_exists($src) && ! file_exists($dest)) + { + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + dol_mkdir($dirodt); + $result=dol_copy($src, $dest, 0, 0); + if ($result < 0) + { + $langs->load("errors"); + $this->error=$langs->trans('ErrorFailToCopyFile', $src, $dest); + return 0; + } + } - $sql = array( - "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->db->escape($this->const[0][2])."' AND type = 'mymodule' AND entity = ".$conf->entity, - "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->db->escape($this->const[0][2])."','mymodule',".$conf->entity.")" - ); - */ + $sql = array( + "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->db->escape($this->const[0][2])."' AND type = 'mymodule' AND entity = ".$conf->entity, + "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->db->escape($this->const[0][2])."','mymodule',".$conf->entity.")" + ); + */ - return $this->_init($sql, $options); - } + return $this->_init($sql, $options); + } - /** - * Function called when module is disabled. - * Remove from database constants, boxes and permissions from Dolibarr database. - * Data directories are not deleted - * - * @param string $options Options when enabling module ('', 'noboxes') - * @return int 1 if OK, 0 if KO - */ - public function remove($options = '') - { - $sql = array(); - return $this->_remove($sql, $options); - } + /** + * Function called when module is disabled. + * Remove from database constants, boxes and permissions from Dolibarr database. + * Data directories are not deleted + * + * @param string $options Options when enabling module ('', 'noboxes') + * @return int 1 if OK, 0 if KO + */ + public function remove($options = '') + { + $sql = array(); + return $this->_remove($sql, $options); + } } diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php b/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php index 22be3dee4ed..98c2c94bc7b 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php @@ -47,14 +47,14 @@ class doc_generic_myobject_odt extends ModelePDFMyObject public $emetteur; /** - * @var array Minimum version of PHP required by module. - * e.g.: PHP ≥ 5.5 = array(5, 5) - */ + * @var array Minimum version of PHP required by module. + * e.g.: PHP ≥ 5.5 = array(5, 5) + */ public $phpmin = array(5, 5); /** - * @var string Dolibarr version of the loaded document - */ + * @var string Dolibarr version of the loaded document + */ public $version = 'dolibarr'; @@ -63,12 +63,12 @@ class doc_generic_myobject_odt extends ModelePDFMyObject * * @param DoliDB $db Database handler */ - public function __construct($db) + public function __construct($db) { global $conf, $langs, $mysoc; // Load translation files required by the page - $langs->loadLangs(array("main", "companies")); + $langs->loadLangs(array("main", "companies")); $this->db = $db; $this->name = "ODT templates"; @@ -108,12 +108,12 @@ class doc_generic_myobject_odt extends ModelePDFMyObject * @param Translate $langs Lang object to use for output * @return string Description */ - public function info($langs) + public function info($langs) { global $conf, $langs; // Load translation files required by the page - $langs->loadLangs(array("errors", "companies")); + $langs->loadLangs(array("errors", "companies")); $form = new Form($this->db); @@ -170,12 +170,12 @@ class doc_generic_myobject_odt extends ModelePDFMyObject if ($nbofiles) { - $texte .= '<div id="div_'.get_class($this).'" class="hidden">'; - foreach ($listoffiles as $file) - { - $texte .= $file['name'].'<br>'; - } - $texte .= '</div>'; + $texte .= '<div id="div_'.get_class($this).'" class="hidden">'; + foreach ($listoffiles as $file) + { + $texte .= $file['name'].'<br>'; + } + $texte .= '</div>'; } $texte .= '</td>'; @@ -191,7 +191,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject return $texte; } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Function to build a document on disk using the generic odt module. * @@ -203,9 +203,9 @@ class doc_generic_myobject_odt extends ModelePDFMyObject * @param int $hideref Do not show ref * @return int 1 if OK, <=0 if KO */ - public function write_file($object, $outputlangs, $srctemplatepath, $hidedetails = 0, $hidedesc = 0, $hideref = 0) + public function write_file($object, $outputlangs, $srctemplatepath, $hidedetails = 0, $hidedesc = 0, $hideref = 0) { - // phpcs:enable + // phpcs:enable global $user, $langs, $conf, $mysoc, $hookmanager; if (empty($srctemplatepath)) @@ -271,8 +271,8 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); if (!empty($conf->global->MAIN_DOC_USE_TIMING)) { - $format = $conf->global->MAIN_DOC_USE_TIMING; - if ($format == '1') $format = '%Y%m%d%H%M%S'; + $format = $conf->global->MAIN_DOC_USE_TIMING; + if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } else @@ -304,10 +304,10 @@ class doc_generic_myobject_odt extends ModelePDFMyObject // On peut utiliser le nom de la societe du contact if (!empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; else { - $socobject = $object->thirdparty; - // if we have a CUSTOMER contact and we dont use it as recipient we store the contact object for later use - $contactobject = $object->contact; - } + $socobject = $object->thirdparty; + // if we have a CUSTOMER contact and we dont use it as recipient we store the contact object for later use + $contactobject = $object->contact; + } } else { @@ -338,7 +338,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject // Open and load template require_once ODTPHP_PATH.'odf.php'; try { - $odfHandler = new odf( + $odfHandler = new odf( $srctemplatepath, array( 'PATH_TO_TMP' => $conf->commande->dir_temp, @@ -367,7 +367,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject } catch (OdfException $e) { - dol_syslog($e->getMessage(), LOG_INFO); + dol_syslog($e->getMessage(), LOG_INFO); } // Define substitution array @@ -404,7 +404,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject } catch (OdfException $e) { - dol_syslog($e->getMessage(), LOG_INFO); + dol_syslog($e->getMessage(), LOG_INFO); } } // Replace tags of lines @@ -439,11 +439,11 @@ class doc_generic_myobject_odt extends ModelePDFMyObject } catch (OdfException $e) { - dol_syslog($e->getMessage(), LOG_INFO); + dol_syslog($e->getMessage(), LOG_INFO); } catch (SegmentException $e) { - dol_syslog($e->getMessage(), LOG_INFO); + dol_syslog($e->getMessage(), LOG_INFO); } } $listlines->merge(); @@ -467,7 +467,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject } catch (OdfException $e) { - dol_syslog($e->getMessage(), LOG_INFO); + dol_syslog($e->getMessage(), LOG_INFO); } } @@ -481,8 +481,8 @@ class doc_generic_myobject_odt extends ModelePDFMyObject try { $odfHandler->exportAsAttachedPDF($file); } catch (Exception $e) { - $this->error = $e->getMessage(); - dol_syslog($e->getMessage(), LOG_INFO); + $this->error = $e->getMessage(); + dol_syslog($e->getMessage(), LOG_INFO); return -1; } } @@ -490,8 +490,8 @@ class doc_generic_myobject_odt extends ModelePDFMyObject try { $odfHandler->saveToDisk($file); } catch (Exception $e) { - $this->error = $e->getMessage(); - dol_syslog($e->getMessage(), LOG_INFO); + $this->error = $e->getMessage(); + dol_syslog($e->getMessage(), LOG_INFO); return -1; } } diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php index 242ad38c077..ae5f5d1e876 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php @@ -98,15 +98,15 @@ class mod_myobject_advanced extends ModeleNumRefMyObject */ public function getExample() { - global $conf, $db, $langs, $mysoc; + global $conf, $db, $langs, $mysoc; - $object = new MyObject($db); - $object->initAsSpecimen(); + $object = new MyObject($db); + $object->initAsSpecimen(); /*$old_code_client = $mysoc->code_client; - $old_code_type = $mysoc->typent_code; - $mysoc->code_client = 'CCCCCCCCCC'; - $mysoc->typent_code = 'TTTTTTTTTT';*/ + $old_code_type = $mysoc->typent_code; + $mysoc->code_client = 'CCCCCCCCCC'; + $mysoc->typent_code = 'TTTTTTTTTT';*/ $numExample = $this->getNextValue($object); diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php index 471e09f4f7d..a611b6210bc 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php @@ -57,7 +57,7 @@ class mod_myobject_standard extends ModeleNumRefMyObject public function info() { global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); } diff --git a/htdocs/modulebuilder/template/core/tpl/linkedobjectblock_myobject.tpl.php b/htdocs/modulebuilder/template/core/tpl/linkedobjectblock_myobject.tpl.php index 1be39ddde83..06e3498fca0 100644 --- a/htdocs/modulebuilder/template/core/tpl/linkedobjectblock_myobject.tpl.php +++ b/htdocs/modulebuilder/template/core/tpl/linkedobjectblock_myobject.tpl.php @@ -38,17 +38,17 @@ $langs->load("mymodule"); $total = 0; $ilink = 0; foreach ($linkedObjectBlock as $key => $objectlink) { - $ilink++; + $ilink++; - $trclass = 'oddeven'; - if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass .= ' liste_sub_total'; + $trclass = 'oddeven'; + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass .= ' liste_sub_total'; ?> <tr class="<?php echo $trclass; ?>"> - <td><?php echo $langs->trans("MyObject"); ?></td> - <td><?php echo $objectlink->getNomUrl(1); ?></td> - <td></td> + <td><?php echo $langs->trans("MyObject"); ?></td> + <td><?php echo $objectlink->getNomUrl(1); ?></td> + <td></td> <td class="center"><?php echo dol_print_date($objectlink->date, 'day'); ?></td> - <td class="right"><?php echo ''; ?></td> + <td class="right"><?php echo ''; ?></td> <td class="right"><?php echo $objectlink->getLibStatut(7); ?></td> <td class="right"><a class="reposition" href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_picto($langs->transnoentitiesnoconv("RemoveLink"), 'unlink'); ?></a></td> </tr> diff --git a/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php b/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php index dcee9eeaea5..4c5951dad70 100644 --- a/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php +++ b/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php @@ -40,278 +40,278 @@ require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php'; */ class InterfaceMyModuleTriggers extends DolibarrTriggers { - /** - * @var DoliDB Database handler - */ - protected $db; + /** + * @var DoliDB Database handler + */ + protected $db; - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - $this->db = $db; + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct($db) + { + $this->db = $db; - $this->name = preg_replace('/^Interface/i', '', get_class($this)); - $this->family = "demo"; - $this->description = "MyModule triggers."; - // 'development', 'experimental', 'dolibarr' or version - $this->version = 'development'; - $this->picto = 'mymodule@mymodule'; - } + $this->name = preg_replace('/^Interface/i', '', get_class($this)); + $this->family = "demo"; + $this->description = "MyModule triggers."; + // 'development', 'experimental', 'dolibarr' or version + $this->version = 'development'; + $this->picto = 'mymodule@mymodule'; + } - /** - * Trigger name - * - * @return string Name of trigger file - */ - public function getName() - { - return $this->name; - } + /** + * Trigger name + * + * @return string Name of trigger file + */ + public function getName() + { + return $this->name; + } - /** - * Trigger description - * - * @return string Description of trigger file - */ - public function getDesc() - { - return $this->description; - } + /** + * Trigger description + * + * @return string Description of trigger file + */ + public function getDesc() + { + return $this->description; + } - /** - * Function called when a Dolibarrr business event is done. - * All functions "runTrigger" are triggered if file - * is inside directory core/triggers - * - * @param string $action Event action code - * @param CommonObject $object Object - * @param User $user Object user - * @param Translate $langs Object langs - * @param Conf $conf Object conf - * @return int <0 if KO, 0 if no triggered ran, >0 if OK - */ - public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf) - { - if (empty($conf->mymodule->enabled)) return 0; // If module is not enabled, we do nothing + /** + * Function called when a Dolibarrr business event is done. + * All functions "runTrigger" are triggered if file + * is inside directory core/triggers + * + * @param string $action Event action code + * @param CommonObject $object Object + * @param User $user Object user + * @param Translate $langs Object langs + * @param Conf $conf Object conf + * @return int <0 if KO, 0 if no triggered ran, >0 if OK + */ + public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf) + { + if (empty($conf->mymodule->enabled)) return 0; // If module is not enabled, we do nothing - // Put here code you want to execute when a Dolibarr business events occurs. - // Data and type of action are stored into $object and $action + // Put here code you want to execute when a Dolibarr business events occurs. + // Data and type of action are stored into $object and $action - switch ($action) { - // Users - //case 'USER_CREATE': - //case 'USER_MODIFY': - //case 'USER_NEW_PASSWORD': - //case 'USER_ENABLEDISABLE': - //case 'USER_DELETE': - //case 'USER_SETINGROUP': - //case 'USER_REMOVEFROMGROUP': + switch ($action) { + // Users + //case 'USER_CREATE': + //case 'USER_MODIFY': + //case 'USER_NEW_PASSWORD': + //case 'USER_ENABLEDISABLE': + //case 'USER_DELETE': + //case 'USER_SETINGROUP': + //case 'USER_REMOVEFROMGROUP': - // Actions - //case 'ACTION_MODIFY': - //case 'ACTION_CREATE': - //case 'ACTION_DELETE': + // Actions + //case 'ACTION_MODIFY': + //case 'ACTION_CREATE': + //case 'ACTION_DELETE': - // Groups - //case 'USERGROUP_CREATE': - //case 'USERGROUP_MODIFY': - //case 'USERGROUP_DELETE': + // Groups + //case 'USERGROUP_CREATE': + //case 'USERGROUP_MODIFY': + //case 'USERGROUP_DELETE': - // Companies - //case 'COMPANY_CREATE': - //case 'COMPANY_MODIFY': - //case 'COMPANY_DELETE': + // Companies + //case 'COMPANY_CREATE': + //case 'COMPANY_MODIFY': + //case 'COMPANY_DELETE': - // Contacts - //case 'CONTACT_CREATE': - //case 'CONTACT_MODIFY': - //case 'CONTACT_DELETE': - //case 'CONTACT_ENABLEDISABLE': + // Contacts + //case 'CONTACT_CREATE': + //case 'CONTACT_MODIFY': + //case 'CONTACT_DELETE': + //case 'CONTACT_ENABLEDISABLE': - // Products - //case 'PRODUCT_CREATE': - //case 'PRODUCT_MODIFY': - //case 'PRODUCT_DELETE': - //case 'PRODUCT_PRICE_MODIFY': - //case 'PRODUCT_SET_MULTILANGS': - //case 'PRODUCT_DEL_MULTILANGS': + // Products + //case 'PRODUCT_CREATE': + //case 'PRODUCT_MODIFY': + //case 'PRODUCT_DELETE': + //case 'PRODUCT_PRICE_MODIFY': + //case 'PRODUCT_SET_MULTILANGS': + //case 'PRODUCT_DEL_MULTILANGS': - //Stock mouvement - //case 'STOCK_MOVEMENT': + //Stock mouvement + //case 'STOCK_MOVEMENT': - //MYECMDIR - //case 'MYECMDIR_CREATE': - //case 'MYECMDIR_MODIFY': - //case 'MYECMDIR_DELETE': + //MYECMDIR + //case 'MYECMDIR_CREATE': + //case 'MYECMDIR_MODIFY': + //case 'MYECMDIR_DELETE': - // Customer orders - //case 'ORDER_CREATE': - //case 'ORDER_MODIFY': - //case 'ORDER_VALIDATE': - //case 'ORDER_DELETE': - //case 'ORDER_CANCEL': - //case 'ORDER_SENTBYMAIL': - //case 'ORDER_CLASSIFY_BILLED': - //case 'ORDER_SETDRAFT': - //case 'LINEORDER_INSERT': - //case 'LINEORDER_UPDATE': - //case 'LINEORDER_DELETE': + // Customer orders + //case 'ORDER_CREATE': + //case 'ORDER_MODIFY': + //case 'ORDER_VALIDATE': + //case 'ORDER_DELETE': + //case 'ORDER_CANCEL': + //case 'ORDER_SENTBYMAIL': + //case 'ORDER_CLASSIFY_BILLED': + //case 'ORDER_SETDRAFT': + //case 'LINEORDER_INSERT': + //case 'LINEORDER_UPDATE': + //case 'LINEORDER_DELETE': - // Supplier orders - //case 'ORDER_SUPPLIER_CREATE': - //case 'ORDER_SUPPLIER_MODIFY': - //case 'ORDER_SUPPLIER_VALIDATE': - //case 'ORDER_SUPPLIER_DELETE': - //case 'ORDER_SUPPLIER_APPROVE': - //case 'ORDER_SUPPLIER_REFUSE': - //case 'ORDER_SUPPLIER_CANCEL': - //case 'ORDER_SUPPLIER_SENTBYMAIL': - //case 'ORDER_SUPPLIER_DISPATCH': - //case 'LINEORDER_SUPPLIER_DISPATCH': - //case 'LINEORDER_SUPPLIER_CREATE': - //case 'LINEORDER_SUPPLIER_UPDATE': - //case 'LINEORDER_SUPPLIER_DELETE': + // Supplier orders + //case 'ORDER_SUPPLIER_CREATE': + //case 'ORDER_SUPPLIER_MODIFY': + //case 'ORDER_SUPPLIER_VALIDATE': + //case 'ORDER_SUPPLIER_DELETE': + //case 'ORDER_SUPPLIER_APPROVE': + //case 'ORDER_SUPPLIER_REFUSE': + //case 'ORDER_SUPPLIER_CANCEL': + //case 'ORDER_SUPPLIER_SENTBYMAIL': + //case 'ORDER_SUPPLIER_DISPATCH': + //case 'LINEORDER_SUPPLIER_DISPATCH': + //case 'LINEORDER_SUPPLIER_CREATE': + //case 'LINEORDER_SUPPLIER_UPDATE': + //case 'LINEORDER_SUPPLIER_DELETE': - // Proposals - //case 'PROPAL_CREATE': - //case 'PROPAL_MODIFY': - //case 'PROPAL_VALIDATE': - //case 'PROPAL_SENTBYMAIL': - //case 'PROPAL_CLOSE_SIGNED': - //case 'PROPAL_CLOSE_REFUSED': - //case 'PROPAL_DELETE': - //case 'LINEPROPAL_INSERT': - //case 'LINEPROPAL_UPDATE': - //case 'LINEPROPAL_DELETE': + // Proposals + //case 'PROPAL_CREATE': + //case 'PROPAL_MODIFY': + //case 'PROPAL_VALIDATE': + //case 'PROPAL_SENTBYMAIL': + //case 'PROPAL_CLOSE_SIGNED': + //case 'PROPAL_CLOSE_REFUSED': + //case 'PROPAL_DELETE': + //case 'LINEPROPAL_INSERT': + //case 'LINEPROPAL_UPDATE': + //case 'LINEPROPAL_DELETE': - // SupplierProposal - //case 'SUPPLIER_PROPOSAL_CREATE': - //case 'SUPPLIER_PROPOSAL_MODIFY': - //case 'SUPPLIER_PROPOSAL_VALIDATE': - //case 'SUPPLIER_PROPOSAL_SENTBYMAIL': - //case 'SUPPLIER_PROPOSAL_CLOSE_SIGNED': - //case 'SUPPLIER_PROPOSAL_CLOSE_REFUSED': - //case 'SUPPLIER_PROPOSAL_DELETE': - //case 'LINESUPPLIER_PROPOSAL_INSERT': - //case 'LINESUPPLIER_PROPOSAL_UPDATE': - //case 'LINESUPPLIER_PROPOSAL_DELETE': + // SupplierProposal + //case 'SUPPLIER_PROPOSAL_CREATE': + //case 'SUPPLIER_PROPOSAL_MODIFY': + //case 'SUPPLIER_PROPOSAL_VALIDATE': + //case 'SUPPLIER_PROPOSAL_SENTBYMAIL': + //case 'SUPPLIER_PROPOSAL_CLOSE_SIGNED': + //case 'SUPPLIER_PROPOSAL_CLOSE_REFUSED': + //case 'SUPPLIER_PROPOSAL_DELETE': + //case 'LINESUPPLIER_PROPOSAL_INSERT': + //case 'LINESUPPLIER_PROPOSAL_UPDATE': + //case 'LINESUPPLIER_PROPOSAL_DELETE': - // Contracts - //case 'CONTRACT_CREATE': - //case 'CONTRACT_MODIFY': - //case 'CONTRACT_ACTIVATE': - //case 'CONTRACT_CANCEL': - //case 'CONTRACT_CLOSE': - //case 'CONTRACT_DELETE': - //case 'LINECONTRACT_INSERT': - //case 'LINECONTRACT_UPDATE': - //case 'LINECONTRACT_DELETE': + // Contracts + //case 'CONTRACT_CREATE': + //case 'CONTRACT_MODIFY': + //case 'CONTRACT_ACTIVATE': + //case 'CONTRACT_CANCEL': + //case 'CONTRACT_CLOSE': + //case 'CONTRACT_DELETE': + //case 'LINECONTRACT_INSERT': + //case 'LINECONTRACT_UPDATE': + //case 'LINECONTRACT_DELETE': - // Bills - //case 'BILL_CREATE': - //case 'BILL_MODIFY': - //case 'BILL_VALIDATE': - //case 'BILL_UNVALIDATE': - //case 'BILL_SENTBYMAIL': - //case 'BILL_CANCEL': - //case 'BILL_DELETE': - //case 'BILL_PAYED': - //case 'LINEBILL_INSERT': - //case 'LINEBILL_UPDATE': - //case 'LINEBILL_DELETE': + // Bills + //case 'BILL_CREATE': + //case 'BILL_MODIFY': + //case 'BILL_VALIDATE': + //case 'BILL_UNVALIDATE': + //case 'BILL_SENTBYMAIL': + //case 'BILL_CANCEL': + //case 'BILL_DELETE': + //case 'BILL_PAYED': + //case 'LINEBILL_INSERT': + //case 'LINEBILL_UPDATE': + //case 'LINEBILL_DELETE': - //Supplier Bill - //case 'BILL_SUPPLIER_CREATE': - //case 'BILL_SUPPLIER_UPDATE': - //case 'BILL_SUPPLIER_DELETE': - //case 'BILL_SUPPLIER_PAYED': - //case 'BILL_SUPPLIER_UNPAYED': - //case 'BILL_SUPPLIER_VALIDATE': - //case 'BILL_SUPPLIER_UNVALIDATE': - //case 'LINEBILL_SUPPLIER_CREATE': - //case 'LINEBILL_SUPPLIER_UPDATE': - //case 'LINEBILL_SUPPLIER_DELETE': + //Supplier Bill + //case 'BILL_SUPPLIER_CREATE': + //case 'BILL_SUPPLIER_UPDATE': + //case 'BILL_SUPPLIER_DELETE': + //case 'BILL_SUPPLIER_PAYED': + //case 'BILL_SUPPLIER_UNPAYED': + //case 'BILL_SUPPLIER_VALIDATE': + //case 'BILL_SUPPLIER_UNVALIDATE': + //case 'LINEBILL_SUPPLIER_CREATE': + //case 'LINEBILL_SUPPLIER_UPDATE': + //case 'LINEBILL_SUPPLIER_DELETE': - // Payments - //case 'PAYMENT_CUSTOMER_CREATE': - //case 'PAYMENT_SUPPLIER_CREATE': - //case 'PAYMENT_ADD_TO_BANK': - //case 'PAYMENT_DELETE': + // Payments + //case 'PAYMENT_CUSTOMER_CREATE': + //case 'PAYMENT_SUPPLIER_CREATE': + //case 'PAYMENT_ADD_TO_BANK': + //case 'PAYMENT_DELETE': - // Online - //case 'PAYMENT_PAYBOX_OK': - //case 'PAYMENT_PAYPAL_OK': - //case 'PAYMENT_STRIPE_OK': + // Online + //case 'PAYMENT_PAYBOX_OK': + //case 'PAYMENT_PAYPAL_OK': + //case 'PAYMENT_STRIPE_OK': - // Donation - //case 'DON_CREATE': - //case 'DON_UPDATE': - //case 'DON_DELETE': + // Donation + //case 'DON_CREATE': + //case 'DON_UPDATE': + //case 'DON_DELETE': - // Interventions - //case 'FICHINTER_CREATE': - //case 'FICHINTER_MODIFY': - //case 'FICHINTER_VALIDATE': - //case 'FICHINTER_DELETE': - //case 'LINEFICHINTER_CREATE': - //case 'LINEFICHINTER_UPDATE': - //case 'LINEFICHINTER_DELETE': + // Interventions + //case 'FICHINTER_CREATE': + //case 'FICHINTER_MODIFY': + //case 'FICHINTER_VALIDATE': + //case 'FICHINTER_DELETE': + //case 'LINEFICHINTER_CREATE': + //case 'LINEFICHINTER_UPDATE': + //case 'LINEFICHINTER_DELETE': - // Members - //case 'MEMBER_CREATE': - //case 'MEMBER_VALIDATE': - //case 'MEMBER_SUBSCRIPTION': - //case 'MEMBER_MODIFY': - //case 'MEMBER_NEW_PASSWORD': - //case 'MEMBER_RESILIATE': - //case 'MEMBER_DELETE': + // Members + //case 'MEMBER_CREATE': + //case 'MEMBER_VALIDATE': + //case 'MEMBER_SUBSCRIPTION': + //case 'MEMBER_MODIFY': + //case 'MEMBER_NEW_PASSWORD': + //case 'MEMBER_RESILIATE': + //case 'MEMBER_DELETE': - // Categories - //case 'CATEGORY_CREATE': - //case 'CATEGORY_MODIFY': - //case 'CATEGORY_DELETE': - //case 'CATEGORY_SET_MULTILANGS': + // Categories + //case 'CATEGORY_CREATE': + //case 'CATEGORY_MODIFY': + //case 'CATEGORY_DELETE': + //case 'CATEGORY_SET_MULTILANGS': - // Projects - //case 'PROJECT_CREATE': - //case 'PROJECT_MODIFY': - //case 'PROJECT_DELETE': + // Projects + //case 'PROJECT_CREATE': + //case 'PROJECT_MODIFY': + //case 'PROJECT_DELETE': - // Project tasks - //case 'TASK_CREATE': - //case 'TASK_MODIFY': - //case 'TASK_DELETE': + // Project tasks + //case 'TASK_CREATE': + //case 'TASK_MODIFY': + //case 'TASK_DELETE': - // Task time spent - //case 'TASK_TIMESPENT_CREATE': - //case 'TASK_TIMESPENT_MODIFY': - //case 'TASK_TIMESPENT_DELETE': - //case 'PROJECT_ADD_CONTACT': - //case 'PROJECT_DELETE_CONTACT': - //case 'PROJECT_DELETE_RESOURCE': + // Task time spent + //case 'TASK_TIMESPENT_CREATE': + //case 'TASK_TIMESPENT_MODIFY': + //case 'TASK_TIMESPENT_DELETE': + //case 'PROJECT_ADD_CONTACT': + //case 'PROJECT_DELETE_CONTACT': + //case 'PROJECT_DELETE_RESOURCE': - // Shipping - //case 'SHIPPING_CREATE': - //case 'SHIPPING_MODIFY': - //case 'SHIPPING_VALIDATE': - //case 'SHIPPING_SENTBYMAIL': - //case 'SHIPPING_BILLED': - //case 'SHIPPING_CLOSED': - //case 'SHIPPING_REOPEN': - //case 'SHIPPING_DELETE': + // Shipping + //case 'SHIPPING_CREATE': + //case 'SHIPPING_MODIFY': + //case 'SHIPPING_VALIDATE': + //case 'SHIPPING_SENTBYMAIL': + //case 'SHIPPING_BILLED': + //case 'SHIPPING_CLOSED': + //case 'SHIPPING_REOPEN': + //case 'SHIPPING_DELETE': - // and more... + // and more... - default: - dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - break; - } + default: + dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + break; + } - return 0; - } + return 0; + } } diff --git a/htdocs/modulebuilder/template/css/mymodule.css.php b/htdocs/modulebuilder/template/css/mymodule.css.php index 58987d52b83..a7ce9fce677 100644 --- a/htdocs/modulebuilder/template/css/mymodule.css.php +++ b/htdocs/modulebuilder/template/css/mymodule.css.php @@ -55,7 +55,7 @@ session_cache_limiter('public'); // 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'])) { - $user->fetch('',$_SESSION['dol_login']); + $user->fetch('',$_SESSION['dol_login']); $user->getrights(); }*/ @@ -70,10 +70,10 @@ else header('Cache-Control: no-cache'); ?> div.mainmenu.mymodule::before { - content: "\f249"; + content: "\f249"; } div.mainmenu.mymodule { - background-image: none; + background-image: none; } .myclasscss { diff --git a/htdocs/modulebuilder/template/mymoduleindex.php b/htdocs/modulebuilder/template/mymoduleindex.php index 2d9bdf2f1e6..4a3356f1d7e 100644 --- a/htdocs/modulebuilder/template/mymoduleindex.php +++ b/htdocs/modulebuilder/template/mymoduleindex.php @@ -88,7 +88,7 @@ if (! empty($conf->mymodule->enabled) && $user->rights->mymodule->read) $langs->load("orders"); $sql = "SELECT c.rowid, c.ref, c.ref_client, c.total_ht, c.tva as total_tva, c.total_ttc, s.rowid as socid, s.nom as name, s.client, s.canvas"; - $sql.= ", s.code_client"; + $sql.= ", s.code_client"; $sql.= " FROM ".MAIN_DB_PREFIX."commande as c"; $sql.= ", ".MAIN_DB_PREFIX."societe as s"; if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -117,21 +117,21 @@ if (! empty($conf->mymodule->enabled) && $user->rights->mymodule->read) $obj = $db->fetch_object($resql); print '<tr class="oddeven"><td class="nowrap">'; - $orderstatic->id=$obj->rowid; - $orderstatic->ref=$obj->ref; - $orderstatic->ref_client=$obj->ref_client; - $orderstatic->total_ht = $obj->total_ht; - $orderstatic->total_tva = $obj->total_tva; - $orderstatic->total_ttc = $obj->total_ttc; - print $orderstatic->getNomUrl(1); - print '</td>'; + $orderstatic->id=$obj->rowid; + $orderstatic->ref=$obj->ref; + $orderstatic->ref_client=$obj->ref_client; + $orderstatic->total_ht = $obj->total_ht; + $orderstatic->total_tva = $obj->total_tva; + $orderstatic->total_ttc = $obj->total_ttc; + print $orderstatic->getNomUrl(1); + print '</td>'; print '<td class="nowrap">'; $companystatic->id=$obj->socid; $companystatic->name=$obj->name; $companystatic->client=$obj->client; - $companystatic->code_client = $obj->code_client; - $companystatic->code_fournisseur = $obj->code_fournisseur; - $companystatic->canvas=$obj->canvas; + $companystatic->code_client = $obj->code_client; + $companystatic->code_fournisseur = $obj->code_fournisseur; + $companystatic->canvas=$obj->canvas; print $companystatic->getNomUrl(1,'customer',16); print '</td>'; print '<td class="right" class="nowrap">'.price($obj->total_ttc).'</td></tr>'; @@ -172,7 +172,7 @@ $max = 3; if (! empty($conf->mymodule->enabled) && $user->rights->mymodule->read) { $sql = "SELECT s.rowid, s.nom as name, s.client, s.datec, s.tms, s.canvas"; - $sql.= ", s.code_client"; + $sql.= ", s.code_client"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE s.client IN (1, 2, 3)"; @@ -192,7 +192,7 @@ if (! empty($conf->mymodule->enabled) && $user->rights->mymodule->read) print '<tr class="liste_titre">'; print '<th colspan="2">'; if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) print $langs->trans("BoxTitleLastCustomersOrProspects",$max); - else if (! empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) print $langs->trans("BoxTitleLastModifiedProspects",$max); + else if (! empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) print $langs->trans("BoxTitleLastModifiedProspects",$max); else print $langs->trans("BoxTitleLastModifiedCustomers",$max); print '</th>'; print '<th class="right">'.$langs->trans("DateModificationShort").'</th>'; @@ -205,9 +205,9 @@ if (! empty($conf->mymodule->enabled) && $user->rights->mymodule->read) $companystatic->id=$objp->rowid; $companystatic->name=$objp->name; $companystatic->client=$objp->client; - $companystatic->code_client = $objp->code_client; - $companystatic->code_fournisseur = $objp->code_fournisseur; - $companystatic->canvas=$objp->canvas; + $companystatic->code_client = $objp->code_client; + $companystatic->code_fournisseur = $objp->code_fournisseur; + $companystatic->canvas=$objp->canvas; print '<tr class="oddeven">'; print '<td class="nowrap">'.$companystatic->getNomUrl(1,'customer',48).'</td>'; print '<td class="right nowrap">'; diff --git a/htdocs/modulebuilder/template/myobject_agenda.php b/htdocs/modulebuilder/template/myobject_agenda.php index 89efa438de9..559c5ed47b0 100644 --- a/htdocs/modulebuilder/template/myobject_agenda.php +++ b/htdocs/modulebuilder/template/myobject_agenda.php @@ -56,12 +56,12 @@ $backtopage = GETPOST('backtopage', 'alpha'); if (GETPOST('actioncode', 'array')) { - $actioncode = GETPOST('actioncode', 'array', 3); - if (!count($actioncode)) $actioncode = '0'; + $actioncode = GETPOST('actioncode', 'array', 3); + if (!count($actioncode)) $actioncode = '0'; } else { - $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); + $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); @@ -106,19 +106,19 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e if (empty($reshook)) { - // Cancel - if (GETPOST('cancel', 'alpha') && !empty($backtopage)) - { - header("Location: ".$backtopage); - exit; - } + // Cancel + if (GETPOST('cancel', 'alpha') && !empty($backtopage)) + { + header("Location: ".$backtopage); + exit; + } - // 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 - { - $actioncode = ''; - $search_agenda_label = ''; - } + // 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 + { + $actioncode = ''; + $search_agenda_label = ''; + } } @@ -161,40 +161,40 @@ if ($object->id > 0) if ($permissiontoadd) { if ($action != 'classify') - //$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : '; - $morehtmlref.=' : '; - if ($action == 'classify') { - //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">'; - $morehtmlref.='<input type="hidden" name="action" value="classin">'; - $morehtmlref.='<input type="hidden" name="token" value="'.newToken().'">'; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">'; - $morehtmlref.='</form>'; - } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); - } - } else { - if (! empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">'; - $morehtmlref.=$proj->ref; - $morehtmlref.='</a>'; - } else { - $morehtmlref.=''; - } - } - }*/ + //$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : '; + $morehtmlref.=' : '; + if ($action == 'classify') { + //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); + $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">'; + $morehtmlref.='<input type="hidden" name="action" value="classin">'; + $morehtmlref.='<input type="hidden" name="token" value="'.newToken().'">'; + $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">'; + $morehtmlref.='</form>'; + } else { + $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + } + } else { + if (! empty($object->fk_project)) { + $proj = new Project($db); + $proj->fetch($object->fk_project); + $morehtmlref.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">'; + $morehtmlref.=$proj->ref; + $morehtmlref.='</a>'; + } else { + $morehtmlref.=''; + } + } + }*/ $morehtmlref .= '</div>'; dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); - print '<div class="fichecenter">'; - print '<div class="underbanner clearboth"></div>'; + print '<div class="fichecenter">'; + print '<div class="underbanner clearboth"></div>'; - $object->info($object->id); + $object->info($object->id); dol_print_object_info($object, 1); print '</div>'; @@ -205,54 +205,54 @@ if ($object->id > 0) // Actions buttons - $objthirdparty = $object; - $objcon = new stdClass(); + $objthirdparty = $object; + $objcon = new stdClass(); - $out = '&origin='.$object->element.'&originid='.$object->id; - $permok = $user->rights->agenda->myactions->create; - if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok) - { - //$out.='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'; - if (get_class($objthirdparty) == 'Societe') $out .= '&socid='.$objthirdparty->id; - $out .= (!empty($objcon->id) ? '&contactid='.$objcon->id : '').'&backtopage=1&percentage=-1'; - //$out.=$langs->trans("AddAnAction").' '; - //$out.=img_picto($langs->trans("AddAnAction"),'filenew'); - //$out.="</a>"; + $out = '&origin='.$object->element.'&originid='.$object->id; + $permok = $user->rights->agenda->myactions->create; + if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok) + { + //$out.='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'; + if (get_class($objthirdparty) == 'Societe') $out .= '&socid='.$objthirdparty->id; + $out .= (!empty($objcon->id) ? '&contactid='.$objcon->id : '').'&backtopage=1&percentage=-1'; + //$out.=$langs->trans("AddAnAction").' '; + //$out.=img_picto($langs->trans("AddAnAction"),'filenew'); + //$out.="</a>"; } print '<div class="tabsAction">'; - if (!empty($conf->agenda->enabled)) - { - if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) - { - print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out.'">'.$langs->trans("AddAction").'</a>'; - } - else - { - print '<a class="butActionRefused classfortooltip" href="#">'.$langs->trans("AddAction").'</a>'; - } - } + if (!empty($conf->agenda->enabled)) + { + if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) + { + print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out.'">'.$langs->trans("AddAction").'</a>'; + } + else + { + print '<a class="butActionRefused classfortooltip" href="#">'.$langs->trans("AddAction").'</a>'; + } + } - print '</div>'; + print '</div>'; - if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) - { - $param = '&id='.$object->id.'&socid='.$socid; - if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); - if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); + if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) + { + $param = '&id='.$object->id.'&socid='.$socid; + if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); //print load_fiche_titre($langs->trans("ActionsOnMyObject"), '', ''); - // List of all actions + // List of all actions $filters = array(); - $filters['search_agenda_label'] = $search_agenda_label; + $filters['search_agenda_label'] = $search_agenda_label; - // TODO Replace this with same code than into list.php - show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder); - } + // TODO Replace this with same code than into list.php + show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder); + } } // End of page diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index 50fcd2629a7..336b410022a 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -127,47 +127,47 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e if (empty($reshook)) { - $error = 0; + $error = 0; - $backurlforlist = dol_buildpath('/mymodule/myobject_list.php', 1); + $backurlforlist = dol_buildpath('/mymodule/myobject_list.php', 1); - if (empty($backtopage) || ($cancel && empty($id))) { - if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) { - if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) $backtopage = $backurlforlist; - else $backtopage = dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.($id > 0 ? $id : '__ID__'); - } - } - $triggermodname = 'MYMODULE_MYOBJECT_MODIFY'; // Name of trigger action code to execute when we modify record + if (empty($backtopage) || ($cancel && empty($id))) { + if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) { + if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) $backtopage = $backurlforlist; + else $backtopage = dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.($id > 0 ? $id : '__ID__'); + } + } + $triggermodname = 'MYMODULE_MYOBJECT_MODIFY'; // Name of trigger action code to execute when we modify record - // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen - include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; + // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen + include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; - // Actions when linking object each other - include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; + // Actions when linking object each other + include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; - // Actions when printing a doc from card - include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php'; + // Actions when printing a doc from card + include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php'; - // Action to move up and down lines of object - //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php'; + // Action to move up and down lines of object + //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php'; - // Action to build doc - include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php'; + // Action to build doc + include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php'; - if ($action == 'set_thirdparty' && $permissiontoadd) - { - $object->setValueFrom('fk_soc', GETPOST('fk_soc', 'int'), '', '', 'date', '', $user, 'MYOBJECT_MODIFY'); - } - if ($action == 'classin' && $permissiontoadd) - { - $object->setProject(GETPOST('projectid', 'int')); - } + if ($action == 'set_thirdparty' && $permissiontoadd) + { + $object->setValueFrom('fk_soc', GETPOST('fk_soc', 'int'), '', '', 'date', '', $user, 'MYOBJECT_MODIFY'); + } + if ($action == 'classin' && $permissiontoadd) + { + $object->setProject(GETPOST('projectid', 'int')); + } - // Actions to send emails - $triggersendname = 'MYOBJECT_SENTBYMAIL'; - $autocopy = 'MAIN_MAIL_AUTOCOPY_MYOBJECT_TO'; - $trackid = 'myobject'.$object->id; - include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php'; + // Actions to send emails + $triggersendname = 'MYOBJECT_SENTBYMAIL'; + $autocopy = 'MAIN_MAIL_AUTOCOPY_MYOBJECT_TO'; + $trackid = 'myobject'.$object->id; + include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php'; } @@ -244,7 +244,7 @@ if (($id || $ref) && $action == 'edit') print load_fiche_titre($langs->trans("MyObject")); print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; - print '<input type="hidden" name="token" value="'.newToken().'">'; + print '<input type="hidden" name="token" value="'.newToken().'">'; print '<input type="hidden" name="action" value="update">'; print '<input type="hidden" name="id" value="'.$object->id.'">'; if ($backtopage) print '<input type="hidden" name="backtopage" value="'.$backtopage.'">'; @@ -274,7 +274,7 @@ if (($id || $ref) && $action == 'edit') // Part to show record if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) { - $res = $object->fetch_optionals(); + $res = $object->fetch_optionals(); $head = myobjectPrepareHead($object); dol_fiche_head($head, 'card', $langs->trans("MyObject"), -1, $object->picto); @@ -284,7 +284,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // Confirmation to delete if ($action == 'delete') { - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteMyObject'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1); + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteMyObject'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1); } // Confirmation to delete line if ($action == 'deleteline') @@ -302,17 +302,17 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($action == 'xxx') { $formquestion = array(); - /* + /* $forcecombo=0; if ($conf->browser->name == 'ie') $forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy - $formquestion = array( - // 'text' => $langs->trans("ConfirmClone"), - // array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1), - // array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1), - // array('type' => 'other', 'name' => 'idwarehouse', 'label' => $langs->trans("SelectWarehouseForStockDecrease"), 'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1, 0, 0, '', 0, $forcecombo)) - ); - */ - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('XXX'), $text, 'confirm_xxx', $formquestion, 0, 1, 220); + $formquestion = array( + // 'text' => $langs->trans("ConfirmClone"), + // array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1), + // array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1), + // array('type' => 'other', 'name' => 'idwarehouse', 'label' => $langs->trans("SelectWarehouseForStockDecrease"), 'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1, 0, 0, '', 0, $forcecombo)) + ); + */ + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('XXX'), $text, 'confirm_xxx', $formquestion, 0, 1, 220); } // Call Hook formConfirm @@ -339,32 +339,32 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // Project if (! empty($conf->projet->enabled)) { - $langs->load("projects"); - $morehtmlref.='<br>'.$langs->trans('Project') . ' '; - if ($permissiontoadd) - { - if ($action != 'classify') - $morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : '; - if ($action == 'classify') { - //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">'; - $morehtmlref.='<input type="hidden" name="action" value="classin">'; - $morehtmlref.='<input type="hidden" name="token" value="'.newToken().'">'; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', 0, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">'; - $morehtmlref.='</form>'; - } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); - } - } else { - if (! empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref.=$proj->getNomUrl(); - } else { - $morehtmlref.=''; - } - } + $langs->load("projects"); + $morehtmlref.='<br>'.$langs->trans('Project') . ' '; + if ($permissiontoadd) + { + if ($action != 'classify') + $morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : '; + if ($action == 'classify') { + //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); + $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">'; + $morehtmlref.='<input type="hidden" name="action" value="classin">'; + $morehtmlref.='<input type="hidden" name="token" value="'.newToken().'">'; + $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', 0, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">'; + $morehtmlref.='</form>'; + } else { + $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + } + } else { + if (! empty($object->fk_project)) { + $proj = new Project($db); + $proj->fetch($object->fk_project); + $morehtmlref.=$proj->getNomUrl(); + } else { + $morehtmlref.=''; + } + } } */ $morehtmlref .= '</div>'; @@ -402,147 +402,147 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if (!empty($object->table_element_line)) { - // Show object lines - $result = $object->getLinesArray(); + // Show object lines + $result = $object->getLinesArray(); - print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '#addline' : '#line_'.GETPOST('lineid', 'int')).'" method="POST"> - <input type="hidden" name="token" value="' . newToken().'"> - <input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'"> - <input type="hidden" name="mode" value=""> - <input type="hidden" name="id" value="' . $object->id.'"> - '; + print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '#addline' : '#line_'.GETPOST('lineid', 'int')).'" method="POST"> + <input type="hidden" name="token" value="' . newToken().'"> + <input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'"> + <input type="hidden" name="mode" value=""> + <input type="hidden" name="id" value="' . $object->id.'"> + '; - if (!empty($conf->use_javascript_ajax) && $object->status == 0) { - include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; - } + if (!empty($conf->use_javascript_ajax) && $object->status == 0) { + include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; + } - print '<div class="div-table-responsive-no-min">'; - if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) - { - print '<table id="tablelines" class="noborder noshadow" width="100%">'; - } + print '<div class="div-table-responsive-no-min">'; + if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) + { + print '<table id="tablelines" class="noborder noshadow" width="100%">'; + } - if (!empty($object->lines)) - { - $object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1); - } + if (!empty($object->lines)) + { + $object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1); + } - // Form to add new line - if ($object->status == 0 && $permissiontoadd && $action != 'selectlines') - { - if ($action != 'editline') - { - // Add products/services form - $object->formAddObjectLine(1, $mysoc, $soc); + // Form to add new line + if ($object->status == 0 && $permissiontoadd && $action != 'selectlines') + { + if ($action != 'editline') + { + // Add products/services form + $object->formAddObjectLine(1, $mysoc, $soc); - $parameters = array(); - $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - } - } + $parameters = array(); + $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + } + } - if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) - { - print '</table>'; - } - print '</div>'; + if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) + { + print '</table>'; + } + print '</div>'; - print "</form>\n"; + print "</form>\n"; } // Buttons for actions if ($action != 'presend' && $action != 'editline') { - print '<div class="tabsAction">'."\n"; - $parameters = array(); - $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + print '<div class="tabsAction">'."\n"; + $parameters = array(); + $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - if (empty($reshook)) - { - // Send - if (empty($user->socid)) { - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=presend&mode=init#formmailbeforetitle">'.$langs->trans('SendMail').'</a>'."\n"; - } + if (empty($reshook)) + { + // Send + if (empty($user->socid)) { + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=presend&mode=init#formmailbeforetitle">'.$langs->trans('SendMail').'</a>'."\n"; + } - // Back to draft - if ($object->status == $object::STATUS_VALIDATED) - { - if ($permissiontoadd) - { - print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=confirm_setdraft&confirm=yes">'.$langs->trans("SetToDraft").'</a>'; - } - } + // Back to draft + if ($object->status == $object::STATUS_VALIDATED) + { + if ($permissiontoadd) + { + print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=confirm_setdraft&confirm=yes">'.$langs->trans("SetToDraft").'</a>'; + } + } - // Modify - if ($permissiontoadd) - { - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit">'.$langs->trans("Modify").'</a>'."\n"; - } - else - { - print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotEnoughPermissions")).'">'.$langs->trans('Modify').'</a>'."\n"; - } + // Modify + if ($permissiontoadd) + { + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit">'.$langs->trans("Modify").'</a>'."\n"; + } + else + { + print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotEnoughPermissions")).'">'.$langs->trans('Modify').'</a>'."\n"; + } - // Validate - if ($object->status == $object::STATUS_DRAFT) - { - if ($permissiontoadd) - { - if (empty($object->table_element_line) || (is_array($object->lines) && count($object->lines) > 0)) - { - print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=confirm_validate&confirm=yes">'.$langs->trans("Validate").'</a>'; - } - else - { - $langs->load("errors"); - print '<a class="butActionRefused" href="" title="'.$langs->trans("ErrorAddAtLeastOneLineFirst").'">'.$langs->trans("Validate").'</a>'; - } - } - } + // Validate + if ($object->status == $object::STATUS_DRAFT) + { + if ($permissiontoadd) + { + if (empty($object->table_element_line) || (is_array($object->lines) && count($object->lines) > 0)) + { + print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=confirm_validate&confirm=yes">'.$langs->trans("Validate").'</a>'; + } + else + { + $langs->load("errors"); + print '<a class="butActionRefused" href="" title="'.$langs->trans("ErrorAddAtLeastOneLineFirst").'">'.$langs->trans("Validate").'</a>'; + } + } + } - // Clone - if ($permissiontoadd) - { - print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&socid='.$object->socid.'&action=clone&object=myobject">'.$langs->trans("ToClone").'</a>'."\n"; - } + // Clone + if ($permissiontoadd) + { + print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&socid='.$object->socid.'&action=clone&object=myobject">'.$langs->trans("ToClone").'</a>'."\n"; + } - /* - if ($permissiontoadd) - { - if ($object->status == $object::STATUS_ENABLED) - { - print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=disable">'.$langs->trans("Disable").'</a>'."\n"; - } - else - { - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=enable">'.$langs->trans("Enable").'</a>'."\n"; - } - } - if ($permissiontoadd) - { - if ($object->status == $object::STATUS_VALIDATED) - { - print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=close">'.$langs->trans("Cancel").'</a>'."\n"; - } - else - { - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=reopen">'.$langs->trans("Re-Open").'</a>'."\n"; - } - } - */ + /* + if ($permissiontoadd) + { + if ($object->status == $object::STATUS_ENABLED) + { + print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=disable">'.$langs->trans("Disable").'</a>'."\n"; + } + else + { + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=enable">'.$langs->trans("Enable").'</a>'."\n"; + } + } + if ($permissiontoadd) + { + if ($object->status == $object::STATUS_VALIDATED) + { + print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=close">'.$langs->trans("Cancel").'</a>'."\n"; + } + else + { + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=reopen">'.$langs->trans("Re-Open").'</a>'."\n"; + } + } + */ - // Delete (need delete permission, or if draft, just need create/modify permission) - if ($permissiontodelete) - { - print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete">'.$langs->trans('Delete').'</a>'."\n"; - } - else - { - print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotEnoughPermissions")).'">'.$langs->trans('Delete').'</a>'."\n"; - } - } - print '</div>'."\n"; + // Delete (need delete permission, or if draft, just need create/modify permission) + if ($permissiontodelete) + { + print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete">'.$langs->trans('Delete').'</a>'."\n"; + } + else + { + print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotEnoughPermissions")).'">'.$langs->trans('Delete').'</a>'."\n"; + } + } + print '</div>'."\n"; } @@ -553,38 +553,38 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($action != 'presend') { - print '<div class="fichecenter"><div class="fichehalfleft">'; - print '<a name="builddoc"></a>'; // ancre + print '<div class="fichecenter"><div class="fichehalfleft">'; + print '<a name="builddoc"></a>'; // ancre - // Documents - /*$objref = dol_sanitizeFileName($object->ref); - $relativepath = $objref . '/' . $objref . '.pdf'; - $filedir = $conf->mymodule->dir_output . '/' . $objref; - $urlsource = $_SERVER["PHP_SELF"] . "?id=" . $object->id; - $genallowed = $user->rights->mymodule->myobject->read; // If you can read, you can build the PDF to read content - $delallowed = $user->rights->mymodule->myobject->create; // If you can create/edit, you can remove a file on card - print $formfile->showdocuments('mymodule', $objref, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $langs->defaultlang); + // Documents + /*$objref = dol_sanitizeFileName($object->ref); + $relativepath = $objref . '/' . $objref . '.pdf'; + $filedir = $conf->mymodule->dir_output . '/' . $objref; + $urlsource = $_SERVER["PHP_SELF"] . "?id=" . $object->id; + $genallowed = $user->rights->mymodule->myobject->read; // If you can read, you can build the PDF to read content + $delallowed = $user->rights->mymodule->myobject->create; // If you can create/edit, you can remove a file on card + print $formfile->showdocuments('mymodule', $objref, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $langs->defaultlang); */ - // Show links to link elements - $linktoelem = $form->showLinkToObjectBlock($object, null, array('myobject')); - $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); + // Show links to link elements + $linktoelem = $form->showLinkToObjectBlock($object, null, array('myobject')); + $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); - print '</div><div class="fichehalfright"><div class="ficheaddleft">'; + print '</div><div class="fichehalfright"><div class="ficheaddleft">'; - $MAXEVENT = 10; + $MAXEVENT = 10; - $morehtmlright = '<a href="'.dol_buildpath('/mymodule/myobject_agenda.php', 1).'?id='.$object->id.'">'; - $morehtmlright .= $langs->trans("SeeAll"); - $morehtmlright .= '</a>'; + $morehtmlright = '<a href="'.dol_buildpath('/mymodule/myobject_agenda.php', 1).'?id='.$object->id.'">'; + $morehtmlright .= $langs->trans("SeeAll"); + $morehtmlright .= '</a>'; - // List of actions on element - include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; - $formactions = new FormActions($db); - $somethingshown = $formactions->showactions($object, $object->element, (is_object($object->thirdparty) ? $object->thirdparty->id : 0), 1, '', $MAXEVENT, '', $morehtmlright); + // List of actions on element + include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; + $formactions = new FormActions($db); + $somethingshown = $formactions->showactions($object, $object->element, (is_object($object->thirdparty) ? $object->thirdparty->id : 0), 1, '', $MAXEVENT, '', $morehtmlright); - print '</div></div></div>'; + print '</div></div></div>'; } //Select mail models is same action as presend diff --git a/htdocs/modulebuilder/template/myobject_document.php b/htdocs/modulebuilder/template/myobject_document.php index 658bed118bd..5f3cdf02684 100644 --- a/htdocs/modulebuilder/template/myobject_document.php +++ b/htdocs/modulebuilder/template/myobject_document.php @@ -131,9 +131,9 @@ if ($object->id) dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); - print '<div class="fichecenter">'; + print '<div class="fichecenter">'; - print '<div class="underbanner clearboth"></div>'; + print '<div class="underbanner clearboth"></div>'; print '<table class="border centpercent tableforfield">'; // Number of files diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 9b230eae594..18c0b1bda2b 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -344,8 +344,8 @@ if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&co if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); foreach ($search as $key => $val) { - if (is_array($search[$key]) && count($search[$key])) foreach ($search[$key] as $skey) $param .= '&search_'.$key.'[]='.urlencode($skey); - else $param .= '&search_'.$key.'='.urlencode($search[$key]); + if (is_array($search[$key]) && count($search[$key])) foreach ($search[$key] as $skey) $param .= '&search_'.$key.'[]='.urlencode($skey); + else $param .= '&search_'.$key.'='.urlencode($search[$key]); } if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss); // Add $param from extra fields @@ -353,10 +353,10 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; // List of mass actions available $arrayofmassactions = array( - //'validate'=>$langs->trans("Validate"), - //'generate_doc'=>$langs->trans("ReGeneratePDF"), - //'builddoc'=>$langs->trans("PDFMerge"), - //'presend'=>$langs->trans("SendByMail"), + //'validate'=>$langs->trans("Validate"), + //'generate_doc'=>$langs->trans("ReGeneratePDF"), + //'builddoc'=>$langs->trans("PDFMerge"), + //'presend'=>$langs->trans("SendByMail"), ); if ($permissiontodelete) $arrayofmassactions['predelete'] = '<span class="fa fa-trash paddingrightonly"></span>'.$langs->trans("Delete"); if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete'))) $arrayofmassactions = array(); @@ -504,16 +504,16 @@ while ($i < ($limit ? min($num, $limit) : $num)) foreach ($object->fields as $key => $val) { $cssforfield = (empty($val['css']) ? '' : $val['css']); - if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'center'; - elseif ($key == 'status') $cssforfield .= ($cssforfield ? ' ' : '').'center'; + 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 (in_array($val['type'], array('timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + elseif ($key == 'ref') $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'status') $cssforfield .= ($cssforfield ? ' ' : '').'right'; - //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; + if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'status') $cssforfield .= ($cssforfield ? ' ' : '').'right'; + //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; - if (!empty($arrayfields['t.'.$key]['checked'])) + if (!empty($arrayfields['t.'.$key]['checked'])) { print '<td'.($cssforfield ? ' class="'.$cssforfield.'"' : '').'>'; if ($key == 'status') print $object->getLibStatut(5); diff --git a/htdocs/modulebuilder/template/myobject_note.php b/htdocs/modulebuilder/template/myobject_note.php index 13d54251215..f116bf51f5b 100644 --- a/htdocs/modulebuilder/template/myobject_note.php +++ b/htdocs/modulebuilder/template/myobject_note.php @@ -111,35 +111,35 @@ if ($id > 0 || !empty($ref)) // Project if (! empty($conf->projet->enabled)) { - $langs->load("projects"); - $morehtmlref.='<br>'.$langs->trans('Project') . ' '; - if ($permissiontoadd) - { - if ($action != 'classify') - //$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : '; - $morehtmlref.=' : '; - if ($action == 'classify') { - //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">'; - $morehtmlref.='<input type="hidden" name="action" value="classin">'; - $morehtmlref.='<input type="hidden" name="token" value="'.newToken().'">'; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">'; - $morehtmlref.='</form>'; - } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); - } - } else { - if (! empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">'; - $morehtmlref.=$proj->ref; - $morehtmlref.='</a>'; - } else { - $morehtmlref.=''; - } - } + $langs->load("projects"); + $morehtmlref.='<br>'.$langs->trans('Project') . ' '; + if ($permissiontoadd) + { + if ($action != 'classify') + //$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : '; + $morehtmlref.=' : '; + if ($action == 'classify') { + //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); + $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">'; + $morehtmlref.='<input type="hidden" name="action" value="classin">'; + $morehtmlref.='<input type="hidden" name="token" value="'.newToken().'">'; + $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">'; + $morehtmlref.='</form>'; + } else { + $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + } + } else { + if (! empty($object->fk_project)) { + $proj = new Project($db); + $proj->fetch($object->fk_project); + $morehtmlref.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">'; + $morehtmlref.=$proj->ref; + $morehtmlref.='</a>'; + } else { + $morehtmlref.=''; + } + } }*/ $morehtmlref .= '</div>'; diff --git a/htdocs/modulebuilder/template/scripts/mymodule.php b/htdocs/modulebuilder/template/scripts/mymodule.php index 9b9192ef84f..02024759058 100644 --- a/htdocs/modulebuilder/template/scripts/mymodule.php +++ b/htdocs/modulebuilder/template/scripts/mymodule.php @@ -29,7 +29,7 @@ $path = __DIR__.'/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; + echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; exit(-1); } @@ -68,7 +68,7 @@ $user->getrights(); print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; if (!isset($argv[1])) { // Check parameters - print "Usage: ".$script_file." param1 param2 ...\n"; + print "Usage: ".$script_file." param1 param2 ...\n"; exit(-1); } print '--- start'."\n"; diff --git a/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php b/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php index 7c038971ed6..9701e27d06e 100644 --- a/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php +++ b/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php @@ -69,14 +69,14 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase ), // Geckodriver does not keep the session at the moment?! // XPath selectors also don't seem to work - //array( - // 'browser' => 'Mozilla Firefox on Linux', - // 'browserName' => 'firefox', - // 'sessionStrategy' => 'shared', - // 'desiredCapabilities' => array( - // 'marionette' => true, - // ), - //) + //array( + // 'browser' => 'Mozilla Firefox on Linux', + // 'browserName' => 'firefox', + // 'sessionStrategy' => 'shared', + // 'desiredCapabilities' => array( + // 'marionette' => true, + // ), + //) ); /** @@ -99,7 +99,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase /** * Global test setup - * @return void + * @return void */ public static function setUpBeforeClass() { @@ -107,7 +107,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase /** * Unit test setup - * @return void + * @return void */ public function setUp() { @@ -117,7 +117,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase /** * Verify pre conditions - * @return void + * @return void */ protected function assertPreConditions() { @@ -125,7 +125,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase /** * Handle Dolibarr authentication - * @return void + * @return void */ private function authenticate() { @@ -146,7 +146,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase /** * Test enabling developer mode - * @return bool + * @return bool */ public function testEnableDeveloperMode() { @@ -166,7 +166,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase * Test enabling the module * * @depends testEnableDeveloperMode - * @return bool + * @return bool */ public function testModuleEnabled() { @@ -192,7 +192,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase * Test access to the configuration page * * @depends testModuleEnabled - * @return bool + * @return bool */ public function testConfigurationPage() { @@ -205,7 +205,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase * Test access to the about page * * @depends testConfigurationPage - * @return bool + * @return bool */ public function testAboutPage() { @@ -218,13 +218,13 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase * Test about page is rendering Markdown * * @depends testAboutPage - * @return bool + * @return bool */ public function testAboutPageRendersMarkdownReadme() { $this->url('/custom/mymodule/admin/about.php'); $this->authenticate(); - return $this->assertEquals( + return $this->assertEquals( 'Dolibarr Module Template (aka My Module)', $this->byTag('h1')->text(), "Readme title" @@ -235,7 +235,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase * Test box is properly declared * * @depends testModuleEnabled - * @return bool + * @return bool */ public function testBoxDeclared() { @@ -248,13 +248,13 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase * Test trigger is properly enabled * * @depends testModuleEnabled - * @return bool + * @return bool */ public function testTriggerDeclared() { $this->url('/admin/triggers.php'); $this->authenticate(); - return $this->assertContains( + return $this->assertContains( 'interface_99_modMyModule_MyModuleTriggers.class.php', $this->byTag('body')->text(), "Trigger declared" @@ -265,13 +265,13 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase * Test trigger is properly declared * * @depends testTriggerDeclared - * @return bool + * @return bool */ public function testTriggerEnabled() { $this->url('/admin/triggers.php'); $this->authenticate(); - return $this->assertContains( + return $this->assertContains( 'tick.png', $this->byXPath('//td[text()="interface_99_modMyModule_MyTrigger.class.php"]/following::img')->attribute('src'), "Trigger enabled" @@ -280,7 +280,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase /** * Verify post conditions - * @return void + * @return void */ protected function assertPostConditions() { @@ -288,7 +288,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase /** * Unit test teardown - * @return void + * @return void */ public function tearDown() { @@ -296,7 +296,7 @@ class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase /** * Global test teardown - * @return void + * @return void */ public static function tearDownAfterClass() { From 92898c9562da57f2fa7ccbe2c6a1bd7118674bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Fri, 1 May 2020 11:27:11 +0200 Subject: [PATCH 277/780] enable free emails with select2 --- htdocs/core/actions_sendmails.inc.php | 9 ++++-- htdocs/core/class/html.form.class.php | 39 +++++++++++++++++++---- htdocs/core/class/html.formmail.class.php | 22 ++++++------- htdocs/langs/en_US/mails.lang | 1 + 4 files changed, 52 insertions(+), 19 deletions(-) diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index e23d2ce01a9..f647bd5418e 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -190,10 +190,12 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST { $tmparray[] = dol_string_nospecial($contact->getFullName($langs), ' ', array(",")).' <'.$contact->email.'>'; } - elseif ($val) // $val is the Id of a contact + elseif ((int) $val > 0) // $val is the Id of a contact { $tmparray[] = $thirdparty->contact_get_property((int) $val, 'email'); $sendtoid[] = $val; + } else { + $tmparray[] = $val; } } } @@ -240,10 +242,12 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST { $tmparray[] = dol_string_nospecial($contact->name, ' ', array(",")).' <'.$contact->email.'>'; } - elseif ($val) // $val is the Id of a contact + elseif ((int) $val > 0) // $val is the Id of a contact { $tmparray[] = $thirdparty->contact_get_property((int) $val, 'email'); //$sendtoid[] = $val; TODO Add also id of contact in CC ? + } else { + $tmparray[] = $val; } } } @@ -261,6 +265,7 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST } } $sendtocc = implode(',', $tmparray); + //var_dump($sendto, $sendtocc);exit; if (dol_strlen($sendto)) { diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index b2c677ed29d..bc605d286c1 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6617,10 +6617,11 @@ class Form * @param string $elemtype Type of element we show ('category', ...). Will execute a formating function on it. To use in readonly mode if js component support HTML formatting. * @param string $placeholder String to use as placeholder * @param int $addjscombo Add js combo + * @param int $enablefreetag 0 no free tag, 1 enable free tag for elemtype * @return string HTML multiselect string * @see selectarray(), selectArrayAjax(), selectArrayFilter() */ - public 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) + public 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, $enablefreetag = 0) { global $conf, $langs; @@ -6634,11 +6635,11 @@ class Form // Add code for jquery to use multiselect if (!empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')) { - $out .= "\n".'<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' --> - <script>'."\n"; if ($addjscombo == 1) { $tmpplugin = empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) ?constant('REQUIRE_JQUERY_MULTISELECT') : $conf->global->MAIN_USE_JQUERY_MULTISELECT; + $out .= "\n".'<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' -->'."\n"; + $out .= '<script>'."\n"; $out .= 'function formatResult(record) {'."\n"; if ($elemtype == 'category') { @@ -6662,13 +6663,37 @@ class Form $out .= '$(document).ready(function () { $(\'#'.$htmlname.'\').'.$tmpplugin.'({ dir: \'ltr\', + tags: '.($enablefreetag?'true':'false').', // Specify format function for dropdown item formatResult: formatResult, - templateResult: formatResult, /* For 4.0 */ + /* For 4.0 */ + templateResult: formatResult, // Specify format function for selected item formatSelection: formatSelection, - templateSelection: formatSelection /* For 4.0 */ - }); + /* For 4.0 */ + templateSelection: formatSelection'; + if ($enablefreetag && $elemtype == 'email') { + $out .= ', + createTag: function (params) { + var REGEX_EMAIL = "([a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@" + + "(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)"; + // Dont offset to create a tag if there is no @ symbol + if (params.term.indexOf("@") === -1) { + // Return null to disable tag creation + return null; + } + var match = params.term.match(new RegExp("^([^<]*)\<" + REGEX_EMAIL + "\>$", "i")); + // console.log(match); + if (match !== null) { + return { + id: $.trim(match[1]) + " <" + match[2] + ">", + text: $.trim(match[1]) + " <" + match[2] + ">" + } + } + return null; + }'; + } + $out .= ' }); });'."\n"; } elseif ($addjscombo == 2) @@ -6676,6 +6701,8 @@ class Form // Add other js lib // TODO external lib multiselect/jquery.multi-select.js must have been loaded to use this multiselect plugin // ... + $out .= "\n".'<!-- JS CODE TO ENABLE external lib for id '.$htmlname.' -->'."\n"; + $out .= '<script>'."\n"; $out .= '$(document).ready(function () { $(\'#'.$htmlname.'\').multiSelect({ containerHTML: \'<div class="multi-select-container">\', diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index d961cd20536..45c40a8bc72 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -630,7 +630,7 @@ class FormMail extends Form if (!empty($this->withto) || is_array($this->withto)) { $out .= '<tr><td class="fieldrequired">'; - if ($this->withtofree) $out .= $form->textwithpicto($langs->trans("MailTo"), $langs->trans("YouCanUseCommaSeparatorForSeveralRecipients")); + if ($this->withtofree) $out .= $form->textwithpicto($langs->trans("MailTo"), $langs->trans("YouCanUseFreeEmailsForRecipients")); else $out .= $langs->trans("MailTo"); $out .= '</td><td>'; if ($this->withtoreadonly) @@ -670,14 +670,14 @@ class FormMail extends Form else { // The free input of email - if (!empty($this->withtofree)) - { - $out .= '<input class="minwidth200" id="sendto" name="sendto" value="'.(($this->withtofree && !is_numeric($this->withtofree)) ? $this->withtofree : (!is_array($this->withto) && !is_numeric($this->withto) ? (isset($_REQUEST["sendto"]) ? $_REQUEST["sendto"] : $this->withto) : "")).'" />'; - } + // if (!empty($this->withtofree)) + // { + // $out .= '<input class="minwidth200" id="sendto" name="sendto" value="'.(($this->withtofree && !is_numeric($this->withtofree)) ? $this->withtofree : (!is_array($this->withto) && !is_numeric($this->withto) ? (isset($_REQUEST["sendto"]) ? $_REQUEST["sendto"] : $this->withto) : "")).'" />'; + // } // The select combo if (!empty($this->withto) && is_array($this->withto)) { - if (!empty($this->withtofree)) $out .= " ".$langs->trans("and")."/".$langs->trans("or")." "; + //if (!empty($this->withtofree)) $out .= " ".$langs->trans("and")."/".$langs->trans("or")." "; // multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time $tmparray = $this->withto; foreach ($tmparray as $key => $val) @@ -689,7 +689,7 @@ class FormMail extends Form { $withtoselected = array_keys($tmparray); } - $out .= $form->multiselectarray("receiver", $tmparray, $withtoselected, null, null, 'inline-block minwidth500', null, ""); + $out .= $form->multiselectarray("receiver", $tmparray, $withtoselected, null, null, 'inline-block minwidth500', 0, '', '', 'email', '', -1, !empty($this->withtofree)?1:0); } } $out .= "</td></tr>\n"; @@ -736,7 +736,7 @@ class FormMail extends Form if (!empty($this->withtocc) || is_array($this->withtocc)) { $out .= '<tr><td>'; - $out .= $form->textwithpicto($langs->trans("MailCC"), $langs->trans("YouCanUseCommaSeparatorForSeveralRecipients")); + $out .= $form->textwithpicto($langs->trans("MailCC"), $langs->trans("YouCanUseFreeEmailsForRecipients")); $out .= '</td><td>'; if ($this->withtoccreadonly) { @@ -744,10 +744,10 @@ class FormMail extends Form } else { - $out .= '<input class="minwidth200" id="sendtocc" name="sendtocc" value="'.(GETPOST("sendtocc", "alpha") ? GETPOST("sendtocc", "alpha") : ((!is_array($this->withtocc) && !is_numeric($this->withtocc)) ? $this->withtocc : '')).'" />'; + //$out .= '<input class="minwidth200" id="sendtocc" name="sendtocc" value="'.(GETPOST("sendtocc", "alpha") ? GETPOST("sendtocc", "alpha") : ((!is_array($this->withtocc) && !is_numeric($this->withtocc)) ? $this->withtocc : '')).'" />'; if (!empty($this->withtocc) && is_array($this->withtocc)) { - $out .= " ".$langs->trans("and")."/".$langs->trans("or")." "; + //$out .= " ".$langs->trans("and")."/".$langs->trans("or")." "; // multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time $tmparray = $this->withtocc; foreach ($tmparray as $key => $val) @@ -755,7 +755,7 @@ class FormMail extends Form $tmparray[$key] = dol_htmlentities($tmparray[$key], null, 'UTF-8', true); } $withtoccselected = GETPOST("receivercc"); // Array of selected value - $out .= $form->multiselectarray("receivercc", $tmparray, $withtoccselected, null, null, 'inline-block minwidth500', null, ""); + $out .= $form->multiselectarray("receivercc", $tmparray, $withtoccselected, null, null, 'inline-block minwidth500', 0, '', '', 'email', '', -1, !empty($this->withtofree)?1:0); } } $out .= "</td></tr>\n"; diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 7b3bfd3852a..9806748a1c0 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -117,6 +117,7 @@ NbOfEMailingsSend=Mass emailings sent IdRecord=ID record DeliveryReceipt=Delivery Ack. YouCanUseCommaSeparatorForSeveralRecipients=You can use the <b>comma</b> separator to specify several recipients. +YouCanUseFreeEmailsForRecipients=You can enter free emails to specify several recipients. TagCheckMail=Track mail opening TagUnsubscribe=Unsubscribe link TagSignature=Signature of sending user From 1c7873b4f46f236c7cfed4fb280a897cb582e991 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 1 May 2020 15:53:56 +0200 Subject: [PATCH 278/780] FIX Sanitizing menu parameter --- htdocs/core/get_menudiv.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/get_menudiv.php b/htdocs/core/get_menudiv.php index edebf8a31b4..af64d065931 100644 --- a/htdocs/core/get_menudiv.php +++ b/htdocs/core/get_menudiv.php @@ -184,8 +184,8 @@ else // If external user } // Load the menu manager (only if not already done) -$file_menu=$conf->standard_menu; -if (GETPOST('menu')) $file_menu=GETPOST('menu'); // example: menu=eldy_menu.php +$file_menu = $conf->standard_menu; +if (GETPOST('menu', 'aZ09')) $file_menu = GETPOST('menu', 'aZ09'); // example: menu=eldy_menu.php if (! class_exists('MenuManager')) { $menufound=0; From 385f9982540dddf424c9eb35e4c62de0a435408c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 1 May 2020 21:01:40 +0200 Subject: [PATCH 279/780] Fix restore param --quick --- htdocs/admin/tools/dolibarr_export.php | 8 ++++++++ htdocs/core/class/utils.class.php | 1 + 2 files changed, 9 insertions(+) diff --git a/htdocs/admin/tools/dolibarr_export.php b/htdocs/admin/tools/dolibarr_export.php index 0bef19dde56..ee8594e6bf8 100644 --- a/htdocs/admin/tools/dolibarr_export.php +++ b/htdocs/admin/tools/dolibarr_export.php @@ -244,6 +244,14 @@ print '<tr '.$bc[false].'><td style="padding-left: 8px">'; <option value="ORACLE">ORACLE</option> <option value="POSTGRESQL">POSTGRESQL</option> </select> <br> + <input type="checkbox" name="use_mysql_quick_param" value="yes" id="checkbox_use_quick" /> + <label for="checkbox_use_quick"> + <?php echo $form->textwithpicto( + $langs->trans('ExportUseMySQLQuickParameter'), + $langs->trans('ExportUseMySQLQuickParameterHelp') + ); ?> + </label> + <br/> <!-- <input type="checkbox" name="drop_database" value="yes" id="checkbox_drop_database" /> <label for="checkbox_drop_database"><?php echo $langs->trans("AddDropDatabase"); ?></label> --> diff --git a/htdocs/core/class/utils.class.php b/htdocs/core/class/utils.class.php index 86eff6613c1..61fc845d7dc 100644 --- a/htdocs/core/class/utils.class.php +++ b/htdocs/core/class/utils.class.php @@ -262,6 +262,7 @@ class Utils if (GETPOST("disable_fk", "alpha") || $usedefault) $param.=" -K"; if (GETPOST("sql_compat", "alpha") && GETPOST("sql_compat", "alpha") != 'NONE') $param.=" --compatible=".escapeshellarg(GETPOST("sql_compat", "alpha")); if (GETPOST("drop_database", "alpha")) $param.=" --add-drop-database"; + if (GETPOST("use_mysql_quick_param", "alpha"))$param.=" --quick"; if (GETPOST("sql_structure", "alpha") || $usedefault) { if (GETPOST("drop", "alpha") || $usedefault) $param.=" --add-drop-table=TRUE"; From 10af669719955fa0abe0ac7410be465ebcf09def Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 1 May 2020 22:14:09 +0200 Subject: [PATCH 280/780] Fix missing autoincrement --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 98d64622cb8..c18a1089839 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -271,3 +271,11 @@ ALTER TABLE llx_prelevement_facture_demande ADD COLUMN fk_facture_fourn INTEGER ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; ALTER TABLE llx_menu MODIFY COLUMN module varchar(255); + + +-- VMYSQL4.3 ALTER TABLE llx_c_typent CHANGE COLUMN id id INTEGER NOT NULL AUTO_INCREMENT; +-- VPGSQL8.2 CREATE SEQUENCE llx_c_typent_id_seq OWNED BY llx_c_typent.id; +-- VPGSQL8.2 ALTER TABLE llx_c_typent ADD PRIMARY KEY (id); +-- VPGSQL8.2 ALTER TABLE llx_c_typent ALTER COLUMN id SET DEFAULT nextval('llx_c_typent_id_seq'); +-- VPGSQL8.2 SELECT setval('llx_c_typent_id_seq', MAX(id)) FROM llx_c_typent; + From 994b60b1d82a41bccb2eb3c6a20008690d31dc58 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 1 May 2020 22:17:13 +0200 Subject: [PATCH 281/780] Revert use of autoincrement not possible with value 0 --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 6 ------ 1 file changed, 6 deletions(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index c18a1089839..8e1fbf1901a 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -273,9 +273,3 @@ ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; ALTER TABLE llx_menu MODIFY COLUMN module varchar(255); --- VMYSQL4.3 ALTER TABLE llx_c_typent CHANGE COLUMN id id INTEGER NOT NULL AUTO_INCREMENT; --- VPGSQL8.2 CREATE SEQUENCE llx_c_typent_id_seq OWNED BY llx_c_typent.id; --- VPGSQL8.2 ALTER TABLE llx_c_typent ADD PRIMARY KEY (id); --- VPGSQL8.2 ALTER TABLE llx_c_typent ALTER COLUMN id SET DEFAULT nextval('llx_c_typent_id_seq'); --- VPGSQL8.2 SELECT setval('llx_c_typent_id_seq', MAX(id)) FROM llx_c_typent; - From 3957b74d9a9d07a2fb092bb25dad9de56a9121f3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 1 May 2020 22:17:33 +0200 Subject: [PATCH 282/780] Revert "FIX: add auto incrementation to llx_c_typent.sql" This reverts commit 14a3aa2165ad75986d4960b3ab881bdbd12e26a6. --- htdocs/install/mysql/tables/llx_c_typent.sql | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_c_typent.sql b/htdocs/install/mysql/tables/llx_c_typent.sql index 130e9d8784f..0b15e70b15b 100644 --- a/htdocs/install/mysql/tables/llx_c_typent.sql +++ b/htdocs/install/mysql/tables/llx_c_typent.sql @@ -19,11 +19,11 @@ create table llx_c_typent ( - id integer AUTO_INCREMENT PRIMARY KEY, - code varchar(12) NOT NULL, - libelle varchar(64), - fk_country integer NULL, -- Defined only to have specific list for countries that can't use generic list (like argentina that need type A or B) - active tinyint DEFAULT 1 NOT NULL, - module varchar(32) NULL, - position integer NOT NULL DEFAULT 0 + id integer PRIMARY KEY, + code varchar(12) NOT NULL, + libelle varchar(64), + fk_country integer NULL, -- Defined only to have specific list for countries that can't use generic list (like argentina that need type A or B) + active tinyint DEFAULT 1 NOT NULL, + module varchar(32) NULL, + position integer NOT NULL DEFAULT 0 )ENGINE=innodb; From dc24738f930755bd59a23d6c728dfb0e9391972f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 1 May 2020 22:34:49 +0200 Subject: [PATCH 283/780] Group columns about thirdparty data together --- htdocs/accountancy/customer/lines.php | 10 +++++----- htdocs/accountancy/customer/list.php | 10 +++++----- htdocs/accountancy/supplier/lines.php | 11 ++++++----- htdocs/accountancy/supplier/list.php | 10 +++++----- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 36d451b6d08..45b0c909016 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -304,7 +304,6 @@ if ($result) { print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n"; print '<tr class="liste_titre_filter">'; - print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="'.dol_escape_htmltag($search_societe).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>'; print '<td class="liste_titre center nowraponall">'; @@ -319,6 +318,7 @@ if ($result) { print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>'; print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>'; print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" placeholder="%" name="search_vat" size="1" value="'.dol_escape_htmltag($search_vat).'"></td>'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="'.dol_escape_htmltag($search_societe).'"></td>'; print '<td class="liste_titre">'; print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth150', 'code2', 1, 0, 1); //print '<input type="text" class="flat maxwidth50" name="search_country" value="' . dol_escape_htmltag($search_country) . '">'; @@ -331,7 +331,6 @@ if ($result) { print "</td></tr>\n"; print '<tr class="liste_titre">'; - print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "fd.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "f.datef, f.ref, fd.rowid", "", $param, '', $sortfield, $sortorder, 'center '); @@ -340,6 +339,7 @@ if ($result) { print_liste_field_titre("Description", $_SERVER["PHP_SELF"], "fd.description", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "fd.total_ht", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], "fd.tva_tx", "", $param, '', $sortfield, $sortorder, 'right '); + print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Country", $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("VATIntra", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Account", $_SERVER["PHP_SELF"], "aa.account_number", "", $param, '', $sortfield, $sortorder); @@ -376,9 +376,6 @@ if ($result) { print '<tr class="oddeven">'; - // Thirdparty - print '<td>' . $thirdpartystatic->getNomUrl(1, 'customer') . '</td>'; - // Line id print '<td>'.$objp->rowid.'</td>'; @@ -405,6 +402,9 @@ if ($result) { print '<td class="right">'.vatrate($objp->tva_tx.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')).'</td>'; + // Thirdparty + print '<td class="tdoverflowmax100">' . $thirdpartystatic->getNomUrl(1, 'customer') . '</td>'; + // Country print '<td>'; if ($objp->country_code) diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index a623628a3d4..1d93a0fea17 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -370,7 +370,6 @@ if ($result) { // We add search filter print '<tr class="liste_titre_filter">'; - print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>'; print '<td class="liste_titre center nowraponall minwidth100imp">'; @@ -385,6 +384,7 @@ if ($result) { print '<td class="liste_titre"><input type="text" class="flat maxwidth100" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>'; print '<td class="liste_titre right"><input type="text" class="flat maxwidth50 right" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>'; print '<td class="liste_titre right"><input type="text" class="flat maxwidth50 right" name="search_vat" placeholder="%" size="1" value="'.dol_escape_htmltag($search_vat).'"></td>'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; print '<td class="liste_titre">'; print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth150', 'code2', 1, 0, 1); //print '<input type="text" class="flat maxwidth50" name="search_country" value="' . dol_escape_htmltag($search_country) . '">'; @@ -399,7 +399,6 @@ if ($result) { print '</tr>'; print '<tr class="liste_titre">'; - print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "l.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "f.datef, f.ref, l.rowid", "", $param, '', $sortfield, $sortorder, 'center '); @@ -408,6 +407,7 @@ if ($result) { print_liste_field_titre("ProductDescription", $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "l.total_ht", "", $param, '', $sortfield, $sortorder, 'right maxwidth50 '); print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, '', $sortfield, $sortorder, 'right '); + print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Country", $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("VATIntra", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("AccountAccountingSuggest", '', '', '', '', '', '', '', 'nowraponall '); @@ -546,9 +546,6 @@ if ($result) { print '<tr class="oddeven">'; - // Thirdparty - print '<td>' . $thirdpartystatic->getNomUrl(1, 'customer') . '</td>'; - // Line id print '<td>'.$objp->rowid.'</td>'; @@ -582,6 +579,9 @@ if ($result) { print vatrate($objp->tva_tx_line.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')); print '</td>'; + // Thirdparty + print '<td class="tdoverflowmax100">' . $thirdpartystatic->getNomUrl(1, 'customer') . '</td>'; + // Country print '<td>'; $labelcountry = ($objp->country_code && ($langs->trans("Country".$objp->country_code) != "Country".$objp->country_code)) ? $langs->trans("Country".$objp->country_code) : $objp->country_label; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index a854f2345b9..f3a4b255f3e 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -308,7 +308,6 @@ if ($result) { // We add search filter print '<tr class="liste_titre_filter">'; - print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>'; @@ -321,6 +320,7 @@ if ($result) { print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>'; print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>'; print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_vat" placeholder="%" size="1" value="'.dol_escape_htmltag($search_vat).'"></td>'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; print '<td class="liste_titre">'; print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth150', 'code2', 1, 0, 1); // print '<input type="text" class="flat maxwidth50" name="search_country" value="' . dol_escape_htmltag($search_country) . '">'; @@ -334,7 +334,6 @@ if ($result) { print "</tr>\n"; print '<tr class="liste_titre">'; - print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "l.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("InvoiceLabel", $_SERVER["PHP_SELF"], "f.libelle", "", $param, '', $sortfield, $sortorder); @@ -344,6 +343,7 @@ if ($result) { print_liste_field_titre("Description", $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "l.total_ht", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, '', $sortfield, $sortorder, 'right '); + print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Country", $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("VATIntra", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Account", $_SERVER["PHP_SELF"], "aa.account_number", "", $param, '', $sortfield, $sortorder); @@ -381,9 +381,6 @@ if ($result) { print '<tr class="oddeven">'; - // Thirdparty - print '<td>' . $thirdpartystatic->getNomUrl(1, 'supplier') . '</td>'; - // Line id print '<td>'.$objp->rowid.'</td>'; @@ -415,6 +412,10 @@ if ($result) { print '<td class="right">'.vatrate($objp->tva_tx.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')).'</td>'; + // Thirdparty + print '<td class="tdoverflowmax100">' . $thirdpartystatic->getNomUrl(1, 'supplier') . '</td>'; + + // Country print '<td>'; if ($objp->country_code) { diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index f9bac6682a8..6ef942bea89 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -371,7 +371,6 @@ if ($result) { // We add search filter print '<tr class="liste_titre_filter">'; - print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>'; @@ -384,6 +383,7 @@ if ($result) { print '<td class="liste_titre"><input type="text" class="flat maxwidth100" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>'; print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>'; print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_vat" placeholder="%" size="1" value="'.dol_escape_htmltag($search_vat).'"></td>'; + print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="' . dol_escape_htmltag($search_societe) . '"></td>'; print '<td class="liste_titre">'; print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth150', 'code2', 1, 0, 1); //print '<input type="text" class="flat maxwidth50" name="search_country" value="' . dol_escape_htmltag($search_country) . '">'; @@ -398,7 +398,6 @@ if ($result) { print "</tr>\n"; print '<tr class="liste_titre">'; - print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "l.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("InvoiceLabel", $_SERVER["PHP_SELF"], "f.libelle", "", $param, '', $sortfield, $sortorder); @@ -408,6 +407,7 @@ if ($result) { print_liste_field_titre("ProductDescription", $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "l.total_ht", "", $param, '', $sortfield, $sortorder, 'right maxwidth50 '); print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, '', $sortfield, $sortorder, 'right '); + print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Country", $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("VATIntra", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("AccountAccountingSuggest", '', '', '', '', '', '', '', 'nowraponall '); @@ -527,9 +527,6 @@ if ($result) { print '<tr class="oddeven">'; - // Thirdparty - print '<td>' . $thirdpartystatic->getNomUrl(1, 'supplier') . '</td>'; - // Line id print '<td>'.$objp->rowid.'</td>'; @@ -567,6 +564,9 @@ if ($result) { print vatrate($objp->tva_tx_line.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')); print '</td>'; + // Thirdparty + print '<td class="tdoverflowmax100">' . $thirdpartystatic->getNomUrl(1, 'supplier') . '</td>'; + // Country print '<td>'; $labelcountry = ($objp->country_code && ($langs->trans("Country".$objp->country_code) != "Country".$objp->country_code)) ? $langs->trans("Country".$objp->country_code) : $objp->country_label; From c2c0e6517f6c70335db384aadeb595e718be2ce7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 1 May 2020 22:44:46 +0200 Subject: [PATCH 284/780] Fix init data of units D and H. --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 3 +++ htdocs/langs/en_US/admin.lang | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 8e1fbf1901a..0730511ad99 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -30,6 +30,9 @@ -- Missing in v11 +UPDATE llx_c_units set scale = 3600 where code = 'H' and unit_type = 'time'; +UPDATE llx_c_units set scale = 86400 where code = 'D' and unit_type = 'time'; + create table llx_commande_fournisseur_dispatch_extrafields ( rowid integer AUTO_INCREMENT PRIMARY KEY, diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index d19d928cdbd..a9abfbc9f1f 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1995,5 +1995,5 @@ PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard JumpToBoxes=Jump to Setup -> Widgets -MeasuringUnitTypeDesc=For the product units like weight, length, area and volume use "size", "surface", "volume" or "weight" as Unit_type -MeasuringScaleDesc=The scale for the Unit_types "size", "surface", "volume" and "weight" can only we have values from -127 up to 128. +MeasuringUnitTypeDesc=Use here a value like "size", "surface", "volume", "weight", "time" +MeasuringScaleDesc=The scale is the number of places you have to move the decimal part to match the default reference unit. For "time" unit type, it is the number of seconds. Values between 80 and 99 are reserved values. From 62a2469c71da0a9f56d120a7c0d145ebd85eef63 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 2 May 2020 00:41:27 +0200 Subject: [PATCH 285/780] Fix position of modules --- htdocs/core/lib/functions.lib.php | 6 +++--- htdocs/core/modules/modAdherent.class.php | 2 +- htdocs/core/modules/modBanque.class.php | 2 ++ htdocs/core/modules/modCommande.class.php | 2 +- htdocs/core/modules/modContrat.class.php | 2 +- htdocs/core/modules/modFacture.class.php | 2 +- htdocs/core/modules/modPropale.class.php | 2 +- htdocs/core/modules/modStock.class.php | 2 +- 8 files changed, 11 insertions(+), 9 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 3bf1be1d772..36b95566bfc 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3151,7 +3151,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_donation', 'object_dynamicprice', - 'object_holiday', 'object_hrm', 'object_intervention', 'object_label', + 'object_holiday', 'object_hrm', 'object_invoice', 'object_intervention', 'object_label', 'object_margin', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', 'object_lot', 'object_mrp', 'object_payment', 'object_product', 'object_propal', 'object_other', 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', @@ -3195,7 +3195,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'switch_off'=>'toggle-off', 'switch_on'=>'toggle-on', 'check'=>'check', 'bookmark'=>'star', 'bookmark'=>'star', 'bank'=>'university', 'close_title'=>'window-close', 'delete'=>'trash', 'edit'=>'pencil-alt', 'filter'=>'filter', 'list-alt'=>'list-alt', 'calendar'=>'calendar-alt', 'calendarweek'=>'calendar-week', 'calendarmonth'=>'calendar-alt', 'calendarday'=>'calendar-day', 'calendarperuser'=>'table', - 'intervention'=>'ambulance', 'multicurrency'=>'dollar-sign', 'order'=>'file-invoice', + 'intervention'=>'ambulance', 'invoice'=>'file-invoice-dollar', 'multicurrency'=>'dollar-sign', 'order'=>'file-invoice', 'error'=>'exclamation-triangle', 'warning'=>'exclamation-triangle', 'other'=>'square', 'playdisabled'=>'play', 'poll'=>'check-double', 'preview'=>'binoculars', 'project'=>'sitemap', 'projectpub'=>'sitemap', 'projecttask'=>'tasks', 'propal'=>'file-signature', @@ -3264,7 +3264,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'order'=>'bg-infobox-commande', 'user'=>'bg-infobox-adherent', 'users'=>'bg-infobox-adherent', 'error'=>'pictoerror', 'warning'=>'pictowarning', 'switch_on'=>'font-status4', - 'holiday'=>'bg-infobox-holiday', + 'holiday'=>'bg-infobox-holiday', 'invoice'=>'bg-infobox-commande', 'payment'=>'bg-infobox-bank_account', 'poll'=>'bg-infobox-adherent', 'project'=>'bg-infobox-project', 'projecttask'=>'bg-infobox-project', 'propal'=>'bg-infobox-propal', 'resource'=>'bg-infobox-action', 'supplier_invoice'=>'bg-infobox-order_supplier', 'supplier_order'=>'bg-infobox-order_supplier', 'supplier_proposal'=>'bg-infobox-supplier_proposal', 'ticket'=>'bg-infobox-contrat', 'title_accountancy'=>'bg-infobox-bank_account', 'title_hrm'=>'bg-infobox-holiday', 'trip'=>'bg-infobox-expensereport', 'title_agenda'=>'bg-infobox-action', diff --git a/htdocs/core/modules/modAdherent.class.php b/htdocs/core/modules/modAdherent.class.php index f2fc9af2f9e..911a4bbd5b9 100644 --- a/htdocs/core/modules/modAdherent.class.php +++ b/htdocs/core/modules/modAdherent.class.php @@ -50,7 +50,7 @@ class modAdherent extends DolibarrModules $this->numero = 310; $this->family = "hr"; - $this->module_position = '55'; + $this->module_position = '06'; // 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 = "Management of members of a foundation or association"; diff --git a/htdocs/core/modules/modBanque.class.php b/htdocs/core/modules/modBanque.class.php index b51ac199ff5..822ebd81e03 100644 --- a/htdocs/core/modules/modBanque.class.php +++ b/htdocs/core/modules/modBanque.class.php @@ -143,6 +143,7 @@ class modBanque extends DolibarrModules //-------- $r = 0; + // Bank lines $r++; $this->export_code[$r] = $this->rights_class.'_'.$r; $this->export_label[$r] = 'Ecritures bancaires et releves'; @@ -174,6 +175,7 @@ class modBanque extends DolibarrModules $this->export_sql_end[$r] .= ' AND ba.entity IN ('.getEntity('bank_account').')'; $this->export_sql_order[$r] = ' ORDER BY b.datev, b.num_releve'; + // $r++; $this->export_code[$r] = $this->rights_class.'_'.$r; $this->export_label[$r] = 'Bordereaux remise Chq/Fact'; diff --git a/htdocs/core/modules/modCommande.class.php b/htdocs/core/modules/modCommande.class.php index c548b18fffb..5c9ca314bef 100644 --- a/htdocs/core/modules/modCommande.class.php +++ b/htdocs/core/modules/modCommande.class.php @@ -51,7 +51,7 @@ class modCommande extends DolibarrModules $this->numero = 25; $this->family = "crm"; - $this->module_position = '23'; + $this->module_position = '11'; // 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 = "Gestion des commandes clients"; diff --git a/htdocs/core/modules/modContrat.class.php b/htdocs/core/modules/modContrat.class.php index 7aadc941180..d3b1c56b054 100644 --- a/htdocs/core/modules/modContrat.class.php +++ b/htdocs/core/modules/modContrat.class.php @@ -47,7 +47,7 @@ class modContrat extends DolibarrModules $this->numero = 54; $this->family = "crm"; - $this->module_position = '35'; + $this->module_position = '41'; // 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 = "Gestion des contrats de services"; diff --git a/htdocs/core/modules/modFacture.class.php b/htdocs/core/modules/modFacture.class.php index 2dbd7195154..5043e2c2d28 100644 --- a/htdocs/core/modules/modFacture.class.php +++ b/htdocs/core/modules/modFacture.class.php @@ -48,7 +48,7 @@ class modFacture extends DolibarrModules $this->numero = 30; $this->family = "financial"; - $this->module_position = '10'; + $this->module_position = '11'; // 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 = "Gestion des factures"; diff --git a/htdocs/core/modules/modPropale.class.php b/htdocs/core/modules/modPropale.class.php index 1f9bdb0f37d..007e92e4277 100644 --- a/htdocs/core/modules/modPropale.class.php +++ b/htdocs/core/modules/modPropale.class.php @@ -49,7 +49,7 @@ class modPropale extends DolibarrModules $this->numero = 20; $this->family = "crm"; - $this->module_position = '22'; + $this->module_position = '10'; // 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 = "Gestion des propositions commerciales"; diff --git a/htdocs/core/modules/modStock.class.php b/htdocs/core/modules/modStock.class.php index 8c0f92b8db1..4dd1a740278 100644 --- a/htdocs/core/modules/modStock.class.php +++ b/htdocs/core/modules/modStock.class.php @@ -48,7 +48,7 @@ class modStock extends DolibarrModules $this->numero = 52; $this->family = "products"; - $this->module_position = '40'; + $this->module_position = '39'; // 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 = "Gestion des stocks"; From 7c6dc930d2e485e63007bfbde909a15e599815c6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 2 May 2020 03:25:34 +0200 Subject: [PATCH 286/780] Fix var not defined --- htdocs/don/class/don.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index d2786cd2a79..77dbd177cbd 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -922,7 +922,7 @@ class Don extends CommonObject */ public function getNomUrl($withpicto = 0, $notooltip = 0) { - global $langs; + global $conf, $langs; if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips From 4606b9fd9f0d352ff50806d002300804a8e9cd18 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 2 May 2020 03:29:33 +0200 Subject: [PATCH 287/780] Fix name of class Service (already used by APIs) --- htdocs/index.php | 2 +- htdocs/product/class/product.class.php | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index 7fed7d75bb3..36aae1f25b8 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -207,7 +207,7 @@ if (empty($user->socid) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTATS)) 'suppliers' => 'Fournisseur', 'contacts' => 'Contact', 'products' => 'Product', - 'services' => 'Service', + 'services' => 'ProductService', 'proposals' => 'Propal', 'orders' => 'Commande', 'invoices' => 'Facture', diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 8f2e0973ab3..0db9a411b19 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -5639,9 +5639,10 @@ class Product extends CommonObject /** - * Class to manage products or services + * Class to manage products or services. + * Do not use 'Service' as class name since it is already used by APIs. */ -class Service extends Product +class ProductService extends Product { public $picto = 'service'; } From 90bbb9beac979a5b9d9f6957a9ef49412b7430bc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 2 May 2020 03:33:33 +0200 Subject: [PATCH 288/780] Fix API to delete purchase price --- htdocs/product/class/api_products.class.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/product/class/api_products.class.php b/htdocs/product/class/api_products.class.php index 91162d727c3..b04560dab32 100644 --- a/htdocs/product/class/api_products.class.php +++ b/htdocs/product/class/api_products.class.php @@ -716,18 +716,18 @@ class Products extends DolibarrApi if (!DolibarrApiAccess::$user->rights->produit->supprimer) { throw new RestException(401); } - $result = $this->product->fetch($id); + $result = $this->productsupplier->fetch($id); if (!$result) { throw new RestException(404, 'Product not found'); } - if (!DolibarrApi::_checkAccessToResource('product', $this->product->id)) { + if (!DolibarrApi::_checkAccessToResource('product', $this->productsupplier->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } + $resultsupplier = 0; - if ($result) { - $this->productsupplier->fetch($id); - $resultsupplier = $this->product->remove_product_fournisseur_price($priceid); + if ($result > 0) { + $resultsupplier = $this->productsupplier->remove_product_fournisseur_price($priceid); } return $resultsupplier; From c4b87d01ce858d2bead047740b1e971be970a2bf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 2 May 2020 03:36:01 +0200 Subject: [PATCH 289/780] Fix non traversable var --- htdocs/website/samples/wrapper.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/website/samples/wrapper.php b/htdocs/website/samples/wrapper.php index 84878a102f6..25483a36f53 100644 --- a/htdocs/website/samples/wrapper.php +++ b/htdocs/website/samples/wrapper.php @@ -102,9 +102,11 @@ if ($rss) { $MAXNEWS = 20; $arrayofblogs = $websitepage->fetchAll($website->id, 'DESC', 'date_creation', $MAXNEWS, 0, $filters); $eventarray = array(); - foreach ($arrayofblogs as $blog) { - $blog->fullpageurl = $website->virtualhost.'/'.$blog->pageurl.'.php'; - $eventarray[] = $blog; + if (is_array($arrayofblogs)) { + foreach ($arrayofblogs as $blog) { + $blog->fullpageurl = $website->virtualhost.'/'.$blog->pageurl.'.php'; + $eventarray[] = $blog; + } } require_once DOL_DOCUMENT_ROOT."/core/lib/xcal.lib.php"; From 8f0e00b4aab552375833d91b9640da425c633458 Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> Date: Sat, 2 May 2020 01:39:56 +0000 Subject: [PATCH 290/780] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- htdocs/comm/propal/class/propal.class.php | 6 +++--- htdocs/commande/class/commande.class.php | 6 +++--- htdocs/compta/facture/class/facture-rec.class.php | 4 ++-- htdocs/compta/facture/class/facture.class.php | 4 ++-- htdocs/contrat/class/contrat.class.php | 6 +++--- htdocs/core/class/commonobject.class.php | 6 +++--- htdocs/core/lib/functions.lib.php | 2 +- htdocs/core/modules/facture/doc/pdf_crabe.modules.php | 2 +- htdocs/expedition/class/expedition.class.php | 6 +++--- htdocs/fichinter/class/fichinter.class.php | 6 +++--- htdocs/fourn/class/fournisseur.commande.class.php | 6 +++--- htdocs/fourn/class/fournisseur.facture.class.php | 4 ++-- htdocs/product/stock/class/entrepot.class.php | 2 +- htdocs/reception/class/reception.class.php | 6 +++--- htdocs/supplier_proposal/class/supplier_proposal.class.php | 6 +++--- 15 files changed, 36 insertions(+), 36 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index ebd328ca171..3c7cfe0006c 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -2999,9 +2999,9 @@ class Propal extends CommonObject if (!$error) { - $main = MAIN_DB_PREFIX . 'propaldet'; - $ef = $main . "_extrafields"; - $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_propal = " . $this->id . ")"; + $main = MAIN_DB_PREFIX.'propaldet'; + $ef = $main."_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_propal = ".$this->id.")"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."propaldet WHERE fk_propal = ".$this->id; if ($this->db->query($sqlef) && $this->db->query($sql)) { diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 6665d738948..b911a03e3ad 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3412,9 +3412,9 @@ class Commande extends CommonOrder if (!$error) { // Delete extrafields of order details - $main = MAIN_DB_PREFIX . 'commandedet'; - $ef = $main . "_extrafields"; - $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_commande = " . $this->id . ")"; + $main = MAIN_DB_PREFIX.'commandedet'; + $ef = $main."_extrafields"; + $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_commande = ".$this->id.")"; if (!$this->db->query($sql)) { $error++; diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index a64cac0e97c..71be89f30f5 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -748,8 +748,8 @@ class FactureRec extends CommonInvoice $error = 0; $this->db->begin(); - $main = MAIN_DB_PREFIX . 'facturedet_rec'; - $ef = $main . "_extrafields"; + $main = MAIN_DB_PREFIX.'facturedet_rec'; + $ef = $main."_extrafields"; $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_facture = $rowid)"; dol_syslog($sqlef); $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE fk_facture = ".$rowid; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 8e415658a98..90ed560b3cf 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -2187,8 +2187,8 @@ class Facture extends CommonInvoice } // Invoice line extrafileds - $main = MAIN_DB_PREFIX . 'facturedet'; - $ef = $main . "_extrafields"; + $main = MAIN_DB_PREFIX.'facturedet'; + $ef = $main."_extrafields"; $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_facture = $rowid)"; // Delete invoice line $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facturedet WHERE fk_facture = '.$rowid; diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 31655cf8033..1dec473edac 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -1255,9 +1255,9 @@ class Contrat extends CommonObject if (!$error) { // Delete contratdet extrafields - $main = MAIN_DB_PREFIX . 'contratdet'; - $ef = $main . "_extrafields"; - $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_contrat = " . $this->id . ")"; + $main = MAIN_DB_PREFIX.'contratdet'; + $ef = $main."_extrafields"; + $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_contrat = ".$this->id.")"; dol_syslog(get_class($this)."::delete contratdet_extrafields", LOG_DEBUG); $resql = $this->db->query($sql); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index adb6d21a828..f3f1b9eaee3 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -3077,10 +3077,10 @@ abstract class CommonObject if (empty($reshook) && $forcedroundingmode == '0') // Check if data on line are consistent. This may solve lines that were not consistent because set with $forcedroundingmode='auto' { // This part of code is to fix data. We should not call it too often. - $localtax_array = array($obj->localtax1_type,$obj->localtax1_tx,$obj->localtax2_type,$obj->localtax2_tx); + $localtax_array = array($obj->localtax1_type, $obj->localtax1_tx, $obj->localtax2_type, $obj->localtax2_tx); $tmpcal = calcul_price_total($obj->qty, $obj->up, $obj->remise_percent, $obj->vatrate, $obj->localtax1_tx, $obj->localtax2_tx, 0, 'HT', $obj->info_bits, $obj->product_type, $seller, $localtax_array, (isset($obj->situation_percent) ? $obj->situation_percent : 100), $multicurrency_tx); - $diff_when_using_price_ht = price2num($tmpcal[1] - $obj->total_tva, 'MT', 1); // If price was set with tax price adn unit price HT has a low number of digits, then we may have a diff on recalculation from unit price HT. + $diff_when_using_price_ht = price2num($tmpcal[1] - $obj->total_tva, 'MT', 1); // If price was set with tax price adn unit price HT has a low number of digits, then we may have a diff on recalculation from unit price HT. $diff_on_current_total = price2num($obj->total_ttc - $obj->total_ht - $obj->total_tva - $obj->total_localtax1 - $obj->total_localtax2, 'MT', 1); //var_dump($obj->total_ht.' '.$obj->total_tva.' '.$obj->total_localtax1.' '.$obj->total_localtax2.' =? '.$obj->total_ttc); //var_dump($diff_when_using_price_ht.' '.$diff_on_current_total); @@ -3090,7 +3090,7 @@ abstract class CommonObject $sqlfix = "UPDATE ".MAIN_DB_PREFIX.$this->table_element_line." SET ".$fieldtva." = ".$tmpcal[1].", total_ttc = ".$tmpcal[2]." WHERE rowid = ".$obj->rowid; dol_syslog('We found unconsistent data into detailed line (diff_when_using_price_ht = '.$diff_when_using_price_ht.' and diff_on_current_total = '.$diff_on_current_total.') for line rowid = '.$obj->rowid." (total vat of line calculated=".$tmpcal[1].", database=".$obj->total_tva."). We fix the total_vat and total_ttc of line by running sqlfix = ".$sqlfix, LOG_WARNING); $resqlfix = $this->db->query($sqlfix); - if (! $resqlfix) dol_print_error($this->db, 'Failed to update line'); + if (!$resqlfix) dol_print_error($this->db, 'Failed to update line'); $obj->total_tva = $tmpcal[1]; $obj->total_ttc = $tmpcal[2]; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 36b95566bfc..14531947574 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3159,7 +3159,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member', 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', 'off', 'on', 'order', - 'paiment', 'play', 'playdisabled', 'poll', 'printer', 'product', 'propal', 'projecttask', 'stock', 'resize', 'service', 'stats', 'trip', + 'paiment', 'play', 'playdisabled', 'poll', 'printer', 'product', 'propal', 'projecttask', 'stock', 'resize', 'service', 'stats', 'trip', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', 'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 1310aec4ccb..cf91ec4806c 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -372,7 +372,7 @@ class pdf_crabe extends ModelePDFFactures $pdf->setSignature($cert, $cert, $this->emetteur->name, '', 2, $info); } - $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right + $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right // Set $this->atleastonediscount if you have at least one discount for ($i = 0; $i < $nblines; $i++) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 5135410f0d9..52ec6048506 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1514,9 +1514,9 @@ class Expedition extends CommonObject if (!$error) { - $main = MAIN_DB_PREFIX . 'expeditiondet'; - $ef = $main . "_extrafields"; - $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_expedition = " . $this->id . ")"; + $main = MAIN_DB_PREFIX.'expeditiondet'; + $ef = $main."_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_expedition = ".$this->id.")"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet"; $sql .= " WHERE fk_expedition = ".$this->id; diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index b3db0bc45c5..1f14d8aa4c8 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -994,9 +994,9 @@ class Fichinter extends CommonObject if (!$error) { - $main = MAIN_DB_PREFIX . 'fichinterdet'; - $ef = $main . "_extrafields"; - $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_fichinter = " . $this->id . ")"; + $main = MAIN_DB_PREFIX.'fichinterdet'; + $ef = $main."_extrafields"; + $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_fichinter = ".$this->id.")"; $resql = $this->db->query($sql); if (!$resql) $error++; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 7286f715359..19060b9a393 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -2035,9 +2035,9 @@ class CommandeFournisseur extends CommonOrder // End call triggers } - $main = MAIN_DB_PREFIX . 'commande_fournisseurdet'; - $ef = $main . "_extrafields"; - $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_commande = " . $this->id . ")"; + $main = MAIN_DB_PREFIX.'commande_fournisseurdet'; + $ef = $main."_extrafields"; + $sql = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_commande = ".$this->id.")"; dol_syslog(get_class($this)."::delete extrafields lines", LOG_DEBUG); if (!$this->db->query($sql)) { diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 7bc56994fdb..52d1b9bf326 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1180,8 +1180,8 @@ class FactureFournisseur extends CommonInvoice if (!$error) { - $main = MAIN_DB_PREFIX . 'facture_fourn_det'; - $ef = $main . "_extrafields"; + $main = MAIN_DB_PREFIX.'facture_fourn_det'; + $ef = $main."_extrafields"; $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_facture_fourn = $rowid)"; $resqlef = $this->db->query($sqlef); $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det WHERE fk_facture_fourn = '.$rowid.';'; diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index 510a6469482..56938d08979 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -272,7 +272,7 @@ class Entrepot extends CommonObject $error = 0; if (empty($id)) $id = $this->id; - if (empty($this->label)) $this->label = $this->libelle; // For backward compatibility + if (empty($this->label)) $this->label = $this->libelle; // For backward compatibility // Check if new parent is already a child of current warehouse if (!empty($this->fk_parent)) diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index dbf6e4b9e29..a95d6217c1c 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -930,9 +930,9 @@ class Reception extends CommonObject if (!$error) { - $main = MAIN_DB_PREFIX . 'commande_fournisseur_dispatch'; - $ef = $main . "_extrafields"; - $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_reception = " . $this->id . ")"; + $main = MAIN_DB_PREFIX.'commande_fournisseur_dispatch'; + $ef = $main."_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_reception = ".$this->id.")"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."commande_fournisseur_dispatch"; $sql .= " WHERE fk_reception = ".$this->id; diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index ee17941d965..97c0ee27e4e 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -2069,9 +2069,9 @@ class SupplierProposal extends CommonObject if (!$error) { - $main = MAIN_DB_PREFIX . 'supplier_proposaldet'; - $ef = $main . "_extrafields"; - $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_supplier_proposal = " . $this->id . ")"; + $main = MAIN_DB_PREFIX.'supplier_proposaldet'; + $ef = $main."_extrafields"; + $sqlef = "DELETE FROM $ef WHERE fk_object IN (SELECT rowid FROM $main WHERE fk_supplier_proposal = ".$this->id.")"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."supplier_proposaldet WHERE fk_supplier_proposal = ".$this->id; if ($this->db->query($sql)) { From 79647b35cd2239c4d378c3988e72c9abc789bd31 Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Sat, 2 May 2020 06:42:12 +0200 Subject: [PATCH 291/780] Enable multiple mass actions on a single page - dev branch --- htdocs/core/class/html.form.class.php | 60 ++++++++++++++------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 5eaa7d5ede8..00efbc00dfd 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -665,16 +665,18 @@ class Form * @param string $selected Value auto selected when at least one record is selected. Not a preselected value. Use '0' by default. * @param array $arrayofaction array('code'=>'label', ...). The code is the key stored into the GETPOST('massaction') when submitting action. * @param int $alwaysvisible 1=select button always visible + * @param string $name Name for massaction + * @param string $cssclass CSS class used to check for select * @return string|void Select list */ - public function selectMassAction($selected, $arrayofaction, $alwaysvisible = 0) + public function selectMassAction($selected, $arrayofaction, $alwaysvisible = 0, $name = 'massaction', $cssclass = 'checkforselect') { global $conf, $langs, $hookmanager; $disabled = 0; $ret = '<div class="centpercent center">'; - $ret .= '<select class="flat'.(empty($conf->use_javascript_ajax) ? '' : ' hideobject').' massaction massactionselect valignmiddle" name="massaction"'.($disabled ? ' disabled="disabled"' : '').'>'; + $ret .= '<select class="flat'.(empty($conf->use_javascript_ajax) ? '' : ' hideobject').' ' . $name . ' ' . $name . 'select valignmiddle" name="' . $name . '"'.($disabled ? ' disabled="disabled"' : '').'>'; // Complete list with data from external modules. THe module can use $_SERVER['PHP_SELF'] to know on which page we are, or use the $parameters['currentcontext'] completed by executeHooks. $parameters = array(); @@ -693,46 +695,46 @@ class Form $ret .= '</select>'; - if (empty($conf->dol_optimize_smallscreen)) $ret .= ajax_combobox('.massactionselect'); + if (empty($conf->dol_optimize_smallscreen)) $ret .= ajax_combobox('.' . $name . 'select'); // Warning: if you set submit button to disabled, post using 'Enter' will no more work if there is no another input submit. So we add a hidden button $ret .= '<input type="submit" name="confirmmassactioninvisible" style="display: none" tabindex="-1">'; // Hidden button BEFORE so it is the one used when we submit with ENTER. - $ret .= '<input type="submit" disabled name="confirmmassaction" class="button'.(empty($conf->use_javascript_ajax) ? '' : ' hideobject').' massaction massactionconfirmed" value="'.dol_escape_htmltag($langs->trans("Confirm")).'">'; + $ret .= '<input type="submit" disabled name="confirmmassaction" class="button'.(empty($conf->use_javascript_ajax) ? '' : ' hideobject').' ' . $name . ' ' . $name . 'confirmed" value="'.dol_escape_htmltag($langs->trans("Confirm")).'">'; $ret .= '</div>'; if (!empty($conf->use_javascript_ajax)) { $ret .= '<!-- JS CODE TO ENABLE mass action select --> <script> - function initCheckForSelect(mode) /* mode is 0 during init of page or click all, 1 when we click on 1 checkbox */ + function initCheckForSelect(mode, name, cssclass) /* mode is 0 during init of page or click all, 1 when we click on 1 checkboxi, 'name' refers to the class of the massaction button, 'cssclass' to the class of the checkfor select boxes */ { atleastoneselected=0; - jQuery(".checkforselect").each(function( index ) { + jQuery("."+cssclass).each(function( index ) { /* console.log( index + ": " + $( this ).text() ); */ if ($(this).is(\':checked\')) atleastoneselected++; }); - console.log("initCheckForSelect mode="+mode+" atleastoneselected="+atleastoneselected); + console.log("initCheckForSelect mode="+mode+" name="+name+" cssclass="+cssclass+" atleastoneselected="+atleastoneselected); if (atleastoneselected || '.$alwaysvisible.') { - jQuery(".massaction").show(); - '.($selected ? 'if (atleastoneselected) { jQuery(".massactionselect").val("'.$selected.'").trigger(\'change\'); jQuery(".massactionconfirmed").prop(\'disabled\', false); }' : '').' - '.($selected ? 'if (! atleastoneselected) { jQuery(".massactionselect").val("0").trigger(\'change\'); jQuery(".massactionconfirmed").prop(\'disabled\', true); } ' : '').' + jQuery("."+name).show(); + '.($selected ? 'if (atleastoneselected) { jQuery("."+name+"select").val("'.$selected.'").trigger(\'change\'); jQuery("."+name+"confirmed").prop(\'disabled\', false); }' : '').' + '.($selected ? 'if (! atleastoneselected) { jQuery("."+name+"select").val("0").trigger(\'change\'); jQuery("."+name+"confirmed").prop(\'disabled\', true); } ' : '').' } else { - jQuery(".massaction").hide(); - jQuery(".massactionother").hide(); + jQuery("."+name).hide(); + jQuery("."+name+"other").hide(); } } jQuery(document).ready(function () { - initCheckForSelect(0); - jQuery(".checkforselect").click(function() { - initCheckForSelect(1); - }); - jQuery(".massactionselect").change(function() { + initCheckForSelect(0, "' . $name . '", "' . $cssclass . '"); + jQuery(".' . $cssclass . '").click(function() { + initCheckForSelect(1, "'.$name.'", "' . $cssclass . '"); + }); + jQuery(".' . $name . 'select").change(function() { var massaction = $( this ).val(); var urlform = $( this ).closest("form").attr("action").replace("#show_files",""); if (massaction == "builddoc") @@ -744,13 +746,13 @@ class Form /* Warning: if you set submit button to disabled, post using Enter will no more work if there is no other button */ if ($(this).val() != \'0\') { - jQuery(".massactionconfirmed").prop(\'disabled\', false); - jQuery(".massactionother").show(); + jQuery(".' . $name . 'confirmed").prop(\'disabled\', false); + jQuery(".' . $name . 'other").show(); } else { - jQuery(".massactionconfirmed").prop(\'disabled\', true); - jQuery(".massactionother").hide(); + jQuery(".' . $name . 'confirmed").prop(\'disabled\', true); + jQuery(".' . $name . 'other").hide(); } }); }); @@ -7790,18 +7792,19 @@ class Form * * @param string $cssclass CSS class * @param int $calljsfunction 0=default. 1=call function initCheckForSelect() after changing status of checkboxes + * @param string $massactionname Mass action button name that will launch an action on the selected items * @return string */ - public function showCheckAddButtons($cssclass = 'checkforaction', $calljsfunction = 0) + public function showCheckAddButtons($cssclass = 'checkforaction', $calljsfunction = 0, $massactionname = "massaction") { global $conf, $langs; $out = ''; $id = uniqid(); - if (!empty($conf->use_javascript_ajax)) $out .= '<div class="inline-block checkallactions"><input type="checkbox" id="checkallactions'.$id.'" name="checkallactions" class="checkallactions"></div>'; + if (!empty($conf->use_javascript_ajax)) $out .= '<div class="inline-block checkallactions"><input type="checkbox" id="' . $cssclass . 's" name="' . $cssclass . 's" class="checkallactions"></div>'; $out .= '<script> $(document).ready(function() { - $("#checkallactions'.$id.'").click(function() { + $("#' . $cssclass . 's").click(function() { if($(this).is(\':checked\')){ console.log("We check all '.$cssclass.'"); $(".'.$cssclass.'").prop(\'checked\', true).trigger(\'change\'); @@ -7811,10 +7814,10 @@ class Form console.log("We uncheck all"); $(".'.$cssclass.'").prop(\'checked\', false).trigger(\'change\'); }'."\n"; - if ($calljsfunction) $out .= 'if (typeof initCheckForSelect == \'function\') { initCheckForSelect(0); } else { console.log("No function initCheckForSelect found. Call won\'t be done."); }'; + if ($calljsfunction) $out .= 'if (typeof initCheckForSelect == \'function\') { initCheckForSelect(0, "' . $massactionname . '", "' . $cssclass . '"); } else { console.log("No function initCheckForSelect found. Call won\'t be done."); }'; $out .= ' }); - $(".checkforselect").change(function() { + $(".' . $cssclass . '").change(function() { $(this).closest("tr").toggleClass("highlight", this.checked); }); @@ -7830,14 +7833,15 @@ class Form * @param int $addcheckuncheckall Add the check all/uncheck all checkbox (use javascript) and code to manage this * @param string $cssclass CSS class * @param int $calljsfunction 0=default. 1=call function initCheckForSelect() after changing status of checkboxes + * @param string $massactionname Mass action name * @return string */ - public function showFilterAndCheckAddButtons($addcheckuncheckall = 0, $cssclass = 'checkforaction', $calljsfunction = 0) + public function showFilterAndCheckAddButtons($addcheckuncheckall = 0, $cssclass = 'checkforaction', $calljsfunction = 0, $massactionname = "massaction") { $out = $this->showFilterButtons(); if ($addcheckuncheckall) { - $out .= $this->showCheckAddButtons($cssclass, $calljsfunction); + $out .= $this->showCheckAddButtons($cssclass, $calljsfunction, $massactionname); } return $out; } From fbabfe9a7136cd91a7e6b4d9fc09106629ce9a5a Mon Sep 17 00:00:00 2001 From: Marc Guenneugues <marc.guenneugues@simicar.fr> Date: Sat, 2 May 2020 06:53:11 +0200 Subject: [PATCH 292/780] Correct typo --- htdocs/core/class/html.form.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 00efbc00dfd..ade0dd06a06 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -706,7 +706,7 @@ class Form { $ret .= '<!-- JS CODE TO ENABLE mass action select --> <script> - function initCheckForSelect(mode, name, cssclass) /* mode is 0 during init of page or click all, 1 when we click on 1 checkboxi, 'name' refers to the class of the massaction button, 'cssclass' to the class of the checkfor select boxes */ + function initCheckForSelect(mode, name, cssclass) /* mode is 0 during init of page or click all, 1 when we click on 1 checkboxi, "name" refers to the class of the massaction button, "cssclass" to the class of the checkfor select boxes */ { atleastoneselected=0; jQuery("."+cssclass).each(function( index ) { From e9c60e64d64c1d0480cc08931b988a2e087c482a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 2 May 2020 12:56:22 +0200 Subject: [PATCH 293/780] Typo --- htdocs/langs/en_US/interventions.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/interventions.lang b/htdocs/langs/en_US/interventions.lang index f04a88db758..e5936f8246e 100644 --- a/htdocs/langs/en_US/interventions.lang +++ b/htdocs/langs/en_US/interventions.lang @@ -62,5 +62,5 @@ InterLineId=Line id intervention InterLineDate=Line date intervention InterLineDuration=Line duration intervention InterLineDesc=Line description intervention -RepeatableIntervention=Template of intevention +RepeatableIntervention=Template of intervention ToCreateAPredefinedIntervention=To create a predefined or recurring intervention, create a common intervention and convert it into intervention template From 6bc70852974d3d3778f9064b7d4451239b657598 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 2 May 2020 13:02:58 +0200 Subject: [PATCH 294/780] Check more phpcs rules --- dev/setup/codesniffer/ruleset.xml | 10 ++--- dev/tools/test/testdiv.php | 71 ------------------------------- 2 files changed, 4 insertions(+), 77 deletions(-) delete mode 100644 dev/tools/test/testdiv.php diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index e4bdefaecd4..f8219fc7119 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -23,13 +23,12 @@ <!-- Rules from Internal Standard --> - <rule ref="Internal.NoCodeFound"> - <severity>0</severity> - </rule> + <rule ref="Internal.NoCodeFound" /> <!-- Rules from Generic Standard --> - + + <!-- We want to allow empty statement: It allows to put some code comments into the else for examples --> <rule ref="Generic.CodeAnalysis.EmptyStatement"> <exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedIf"/> <exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedElse"/> @@ -38,8 +37,7 @@ <exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedForeach"/> </rule> - <!-- <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" /> --> - + <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" /> <rule ref="Generic.CodeAnalysis.ForLoopWithTestFunctionCall" /> <rule ref="Generic.CodeAnalysis.JumbledIncrementer" /> diff --git a/dev/tools/test/testdiv.php b/dev/tools/test/testdiv.php deleted file mode 100644 index 438df80b69e..00000000000 --- a/dev/tools/test/testdiv.php +++ /dev/null @@ -1,71 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- BEGIN PHP TEMPLATE LOGIN.TPL.PHP --> -<html> - -<head> -<meta name="robots" content="noindex,nofollow" /> -<meta name="author" content="Dolibarr Development Team"> -<link rel="shortcut icon" type="image/x-icon" href="/dolibarrnew/theme/eldy/img/favicon.ico"/> -<title>Login Dolibarr 3.4.0-alpha - - - - - - - - - - - -
- -
- - - - - - - - - - - -
  fds fs df sdf gdsfgsdf r   - -
    - -
- -
-
- - -
- - - -
-
- - - - - - - - - - From a88ab40384f9ec359f289148d0e5ea5052c52c1a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 2 May 2020 15:18:59 +0200 Subject: [PATCH 295/780] Clean phpcs --- README.md | 2 +- dev/setup/codesniffer/ruleset.xml | 52 ++++++++++--------- htdocs/api/class/api_access.class.php | 2 +- htdocs/api/index.php | 2 +- .../core/class/commondocgenerator.class.php | 2 +- .../core/modules/modEmailCollector.class.php | 7 ++- htdocs/dav/fileserver.php | 2 +- htdocs/debugbar/class/autoloader.php | 2 +- htdocs/don/class/paymentdonation.class.php | 52 +++++++++++-------- htdocs/product/admin/price_rules.php | 2 +- htdocs/product/inventory/inventory.php | 6 +-- 11 files changed, 71 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 3f329c678a7..f611f333e6a 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Other licenses apply for some included dependencies. See [COPYRIGHT](https://git If you have low technical skills and you're looking to install Dolibarr ERP/CRM in just a few clicks, you can use one of the packaged versions: - [DoliWamp for Windows](https://wiki.dolibarr.org/index.php/Dolibarr_for_Windows_(DoliWamp) -- DoliDeb for Debian or Ubuntu +- [DoliDeb for Debian](https://wiki.dolibarr.org/index.php/Dolibarr_for_Ubuntu_or_Debian - DoliRpm for Redhat, Fedora, OpenSuse, Mandriva or Mageia Releases can be downloaded from [official website](https://www.dolibarr.org/). diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index f8219fc7119..421acfeed1f 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -67,19 +67,11 @@ - + - - - @@ -99,19 +91,33 @@ + + + + 0 - - + + + @@ -127,7 +133,7 @@ - + @@ -190,13 +196,10 @@ - - 0 - - - 0 - - + + + + 0 @@ -208,7 +211,6 @@ - 0 diff --git a/htdocs/api/class/api_access.class.php b/htdocs/api/class/api_access.class.php index 866de6a53d2..339ddfd2ad6 100644 --- a/htdocs/api/class/api_access.class.php +++ b/htdocs/api/class/api_access.class.php @@ -18,7 +18,7 @@ // Create the autoloader for Luracast require_once DOL_DOCUMENT_ROOT.'/includes/restler/framework/Luracast/Restler/AutoLoader.php'; -call_user_func(function() { +call_user_func(function () { $loader = Luracast\Restler\AutoLoader::instance(); spl_autoload_register($loader); return $loader; diff --git a/htdocs/api/index.php b/htdocs/api/index.php index d27bd39e966..c5edbc74d66 100644 --- a/htdocs/api/index.php +++ b/htdocs/api/index.php @@ -44,7 +44,7 @@ if (!$res) die("Include of main fails"); require_once DOL_DOCUMENT_ROOT.'/includes/restler/framework/Luracast/Restler/AutoLoader.php'; -call_user_func(function() { +call_user_func(function () { $loader = Luracast\Restler\AutoLoader::instance(); spl_autoload_register($loader); return $loader; diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index 4bcfbafa9d8..1f5ef0a5a9e 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -1295,7 +1295,7 @@ abstract class CommonDocGenerator if (!empty($fields)) { // Sort extrafields by rank - uasort($fields, function($a, $b) { + uasort($fields, function ($a, $b) { return ($a->rank > $b->rank) ? -1 : 1; }); diff --git a/htdocs/core/modules/modEmailCollector.class.php b/htdocs/core/modules/modEmailCollector.class.php index ed37a3a70ab..ce8ea9436e8 100644 --- a/htdocs/core/modules/modEmailCollector.class.php +++ b/htdocs/core/modules/modEmailCollector.class.php @@ -282,7 +282,8 @@ class modEmailCollector extends DolibarrModules $tmpresql = $this->db->query($tmpsql); if ($tmpresql) { if ($this->db->num_rows($tmpresql) == 0) { - $descriptionA1 = 'This collector will scan your mailbox to find emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from the ticket, you may also see answers of your customers or partners directly on the ticket view.'; + $descriptionA1 = 'This collector will scan your mailbox to find emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated.'; + $descriptionA1 .= ' If the collector Collect_Responses is also enabled, when you send an email from the ticket, you may also see answers of your customers or partners directly on the ticket view.'; $sqlforexampleA1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)"; $sqlforexampleA1 .= " VALUES (".$conf->entity.", 'Collect_Ticket_Requets', 'Example to collect ticket requests', '".$this->db->escape($descriptionA1)."', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; $sqlforexampleA2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)"; @@ -319,7 +320,9 @@ class modEmailCollector extends DolibarrModules $tmpresql = $this->db->query($tmpsql); if ($tmpresql) { if ($this->db->num_rows($tmpresql) == 0) { - $descriptionC1 = "This collector will scan your mailbox to find emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1."; + $descriptionC1 = "This collector will scan your mailbox to find emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated."; + $descriptionC1 .= " If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
"; + $descriptionC1 .= "Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1."; $sqlforexampleC1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)"; $sqlforexampleC1 .= " VALUES (".$conf->entity.", 'Collect_Leads', 'Example to collect leads', '".$this->db->escape($descriptionC1)."', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)"; $sqlforexampleC2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)"; diff --git a/htdocs/dav/fileserver.php b/htdocs/dav/fileserver.php index ce3157414f5..18b8bc8b07c 100644 --- a/htdocs/dav/fileserver.php +++ b/htdocs/dav/fileserver.php @@ -82,7 +82,7 @@ $tmpDir = $conf->dav->multidir_output[$entity]; // We need root dir, not a dir t // Authentication callback function -$authBackend = new \Sabre\DAV\Auth\Backend\BasicCallBack(function($username, $password) { +$authBackend = new \Sabre\DAV\Auth\Backend\BasicCallBack(function ($username, $password) { global $user; global $conf; global $dolibarr_main_authentication, $dolibarr_auto_user; diff --git a/htdocs/debugbar/class/autoloader.php b/htdocs/debugbar/class/autoloader.php index a68ace2c3c0..1d5c85c975d 100644 --- a/htdocs/debugbar/class/autoloader.php +++ b/htdocs/debugbar/class/autoloader.php @@ -4,7 +4,7 @@ * Simple autoloader, so we don't need Composer just for this. */ -spl_autoload_register(function($class) { +spl_autoload_register(function ($class) { if (preg_match('/^DebugBar/', $class) || preg_match('/^'.preg_quote('Psr\Log', '/').'/', $class)) { $file = DOL_DOCUMENT_ROOT.'/includes/'.str_replace('\\', DIRECTORY_SEPARATOR, $class).'.php'; //var_dump($class.' - '.file_exists($file).' - '.$file); diff --git a/htdocs/don/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php index ee8156c229e..64644d18971 100644 --- a/htdocs/don/class/paymentdonation.class.php +++ b/htdocs/don/class/paymentdonation.class.php @@ -55,11 +55,17 @@ class PaymentDonation extends CommonObject public $fk_donation; public $datec = ''; + public $tms = ''; + public $datep = ''; - public $amount; // Total amount of payment - public $amounts = array(); // Array of amounts + + public $amount; // Total amount of payment + + public $amounts = array(); // Array of amounts + public $typepayment; + public $num_payment; /** @@ -121,14 +127,14 @@ class PaymentDonation extends CommonObject } // Clean parameters - if (isset($this->fk_donation)) $this->fk_donation = (int) $this->fk_donation; - if (isset($this->amount)) $this->amount = trim($this->amount); + if (isset($this->fk_donation)) $this->fk_donation = (int) $this->fk_donation; + if (isset($this->amount)) $this->amount = trim($this->amount); if (isset($this->fk_typepayment)) $this->fk_typepayment = trim($this->fk_typepayment); - if (isset($this->num_payment)) $this->num_payment = trim($this->num_payment); - if (isset($this->note_public)) $this->note_public = trim($this->note_public); - if (isset($this->fk_bank)) $this->fk_bank = (int) $this->fk_bank; - if (isset($this->fk_user_creat)) $this->fk_user_creat = (int) $this->fk_user_creat; - if (isset($this->fk_user_modif)) $this->fk_user_modif = (int) $this->fk_user_modif; + if (isset($this->num_payment)) $this->num_payment = trim($this->num_payment); + if (isset($this->note_public)) $this->note_public = trim($this->note_public); + if (isset($this->fk_bank)) $this->fk_bank = (int) $this->fk_bank; + if (isset($this->fk_user_creat)) $this->fk_user_creat = (int) $this->fk_user_creat; + if (isset($this->fk_user_modif)) $this->fk_user_modif = (int) $this->fk_user_modif; $totalamount = 0; foreach ($this->amounts as $key => $value) // How payment is dispatch @@ -228,26 +234,26 @@ class PaymentDonation extends CommonObject { $obj = $this->db->fetch_object($resql); - $this->id = $obj->rowid; - $this->ref = $obj->rowid; + $this->id = $obj->rowid; + $this->ref = $obj->rowid; - $this->fk_donation = $obj->fk_donation; - $this->datec = $this->db->jdate($obj->datec); - $this->tms = $this->db->jdate($obj->tms); - $this->datep = $this->db->jdate($obj->datep); - $this->amount = $obj->amount; + $this->fk_donation = $obj->fk_donation; + $this->datec = $this->db->jdate($obj->datec); + $this->tms = $this->db->jdate($obj->tms); + $this->datep = $this->db->jdate($obj->datep); + $this->amount = $obj->amount; $this->fk_typepayment = $obj->fk_typepayment; - $this->num_payment = $obj->num_payment; - $this->note_public = $obj->note_public; - $this->fk_bank = $obj->fk_bank; - $this->fk_user_creat = $obj->fk_user_creat; - $this->fk_user_modif = $obj->fk_user_modif; + $this->num_payment = $obj->num_payment; + $this->note_public = $obj->note_public; + $this->fk_bank = $obj->fk_bank; + $this->fk_user_creat = $obj->fk_user_creat; + $this->fk_user_modif = $obj->fk_user_modif; - $this->type_code = $obj->type_code; + $this->type_code = $obj->type_code; $this->type_label = $obj->type_label; $this->bank_account = $obj->fk_account; - $this->bank_line = $obj->fk_bank; + $this->bank_line = $obj->fk_bank; } $this->db->free($resql); diff --git a/htdocs/product/admin/price_rules.php b/htdocs/product/admin/price_rules.php index 6da4d65925b..64bf5702996 100644 --- a/htdocs/product/admin/price_rules.php +++ b/htdocs/product/admin/price_rules.php @@ -141,7 +141,7 @@ for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) { $price_options[$i] = $langs->trans('SellingPrice').' '.$i; } -$genPriceOptions = function($level) use ($price_options) { +$genPriceOptions = function ($level) use ($price_options) { $return = array(); diff --git a/htdocs/product/inventory/inventory.php b/htdocs/product/inventory/inventory.php index b6021c82cb8..3f0989251b5 100644 --- a/htdocs/product/inventory/inventory.php +++ b/htdocs/product/inventory/inventory.php @@ -31,10 +31,10 @@ $langs->loadLangs(array("stocks", "other")); // Get parameters $id = GETPOST('id', 'int'); -$ref = GETPOST('ref', 'alpha'); +$ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'aZ09'); -$confirm = GETPOST('confirm', 'alpha'); -$cancel = GETPOST('cancel', 'aZ09'); +$confirm = GETPOST('confirm', 'alpha'); +$cancel = GETPOST('cancel', 'aZ09'); $contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'myobjectcard'; // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); From 99d7cb72a170286366cdb759e6721f8d8beafcbf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 2 May 2020 15:40:23 +0200 Subject: [PATCH 296/780] Fix duplicate --- .scrutinizer.yml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.scrutinizer.yml b/.scrutinizer.yml index 7c43ab24aef..6dbf39bde26 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -194,22 +194,6 @@ tools: - 'test/*' - 'htdocs/includes/*' paths: { } - - php_changetracking: - enabled: false - bug_patterns: - - '\bfix(?:es|ed)?\b' - feature_patterns: - - '\badd(?:s|ed)?\b' - - '\bimplement(?:s|ed)?\b' - filter: - excluded_paths: - - 'build/*' - - 'dev/*' - - 'doc/*' - - 'test/*' - - 'htdocs/includes/*' - paths: { } # Coding-Style / Bug Detection js_hint: From b5abb72c5b5b1ab74cce3700b20bc2c3cf03a9dd Mon Sep 17 00:00:00 2001 From: Marc Guenneugues Date: Sat, 2 May 2020 16:36:40 +0200 Subject: [PATCH 297/780] Add / as a delimiter for replacement pattern in select_produits* --- htdocs/core/class/html.form.class.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 5eaa7d5ede8..f48ce989a7a 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2507,7 +2507,7 @@ class Form $label = $objp->label; if (!empty($objp->label_translated)) $label = $objp->label_translated; - if (!empty($filterkey) && $filterkey != '') $label = preg_replace('/('.preg_quote($filterkey).')/i', '$1', $label, 1); + if (!empty($filterkey) && $filterkey != '') $label = preg_replace('/('.preg_quote($filterkey, '/').')/i', '$1', $label, 1); $outkey = $objp->rowid; $outref = $objp->ref; @@ -2579,7 +2579,7 @@ class Form if ($outorigin && !empty($conf->global->PRODUCT_SHOW_ORIGIN_IN_COMBO)) $opt .= ' ('.getCountry($outorigin, 1).')'; $objRef = $objp->ref; - if (!empty($filterkey) && $filterkey != '') $objRef = preg_replace('/('.preg_quote($filterkey).')/i', '$1', $objRef, 1); + if (!empty($filterkey) && $filterkey != '') $objRef = preg_replace('/('.preg_quote($filterkey, '/').')/i', '$1', $objRef, 1); $outval .= $objRef; if ($outbarcode) $outval .= ' ('.$outbarcode.')'; $outval .= ' - '.dol_trunc($label, $maxlengtharticle); @@ -2948,11 +2948,11 @@ class Form } $objRef = $objp->ref; - if ($filterkey && $filterkey != '') $objRef = preg_replace('/('.preg_quote($filterkey).')/i', '$1', $objRef, 1); + if ($filterkey && $filterkey != '') $objRef = preg_replace('/('.preg_quote($filterkey, '/').')/i', '$1', $objRef, 1); $objRefFourn = $objp->ref_fourn; - if ($filterkey && $filterkey != '') $objRefFourn = preg_replace('/('.preg_quote($filterkey).')/i', '$1', $objRefFourn, 1); + if ($filterkey && $filterkey != '') $objRefFourn = preg_replace('/('.preg_quote($filterkey, '/').')/i', '$1', $objRefFourn, 1); $label = $objp->label; - if ($filterkey && $filterkey != '') $label = preg_replace('/('.preg_quote($filterkey).')/i', '$1', $label, 1); + if ($filterkey && $filterkey != '') $label = preg_replace('/('.preg_quote($filterkey, '/').')/i', '$1', $label, 1); $optlabel = $objp->ref; if (!empty($objp->idprodfournprice) && ($objp->ref != $objp->ref_fourn)) { From 1929f9132db3c67023ce284a935943a8c47b232a Mon Sep 17 00:00:00 2001 From: proprum <51385888+proprum@users.noreply.github.com> Date: Sat, 2 May 2020 17:25:22 +0200 Subject: [PATCH 298/780] MAIN_NO_CONCAT_DESCRIPTION in contrat/card.php Idem to propal/card.php --- htdocs/contrat/card.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 3c64b627a5c..111a446d9ae 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -521,7 +521,8 @@ if (empty($reshook)) } $desc = $prod->description; - $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION)); + if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc; + else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION)); $fk_unit = $prod->fk_unit; } else From 518853bb9614343369e0fa2c1f3f0430a95072db Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 2 May 2020 18:37:34 +0200 Subject: [PATCH 299/780] Add image --- doc/images/background_dolibarr.jpg | Bin 0 -> 175643 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/images/background_dolibarr.jpg diff --git a/doc/images/background_dolibarr.jpg b/doc/images/background_dolibarr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6c4cc11460d334442b8f53e41054c333a626db18 GIT binary patch literal 175643 zcmbrkby!rv+c$o;S-QKVyE~=3yCs$mS-M35r6m@mL^>o~x&%Q1=`KN#1_c!mR1|&J z=lfpI^ZxO^fBdfB?6tf1nK^UMJu~+`^Esb0e^>v007!K;bu2;5LXt^feS!xg`9y^9XU$z8ZFd06mWoD81C(x>jWZAcAcX(&UH&7p{*yiaBTM{~(dMRVxO;GYW+n9aKV+BxLw5B<`{DX; zj=P`ZKQ`bb0ALKl4T2!b*B2#dDJB?%_HYSCy9#-^;%xly!~_HZrhpcp3J3xyz!&#H z;Ur5y4EGxZpaBoS1qjCdy8=Rh7w-4}toz?e{{INUsBqla0DxM+-3YXohi5RWn24yP z0ILShY*w@20DlxKPZ-K2$SW8n$Lbjzd{<6b*x$<^<%aS=qfkLEDBplEA=dyuVR=@R zpR<>*9P7Uh2mPyf`~P+yuMn%br&kaw&U;wzq66H$aLwQ@eZ5>!{y``=))0R;6q?nU zRSk`D4)zK~v8o05`33j~v8n_IqrF^0g1rL#16 z{(rQv^87P22xqD5|JH&t@ShT)0JMkj|86Qs*d;41Jku3$1Ke>w>WTABADr*{0scS$5Qy{FAe`5R0%1Tn z5CKF1(Lf9k3)}2FL^QfhRyAPy`eM zB|s_g3@8K2fl8nXs0M0)TA&_y4m1FbKr`?Hzyd8m8_*7P0G&WL&;#@WeLz1j0K5VQ zfg#`xFbs?Uqrez24om=(z%(!e%mQ=30`UD zj(}s}BX9zo0$+fyz!`7>d;_k4@4ye>8u$g=0DpkLxMdIwf`VWm1PBj=4j=+1?mCyf%-wOKtrH6pb^kp&^TxkG!2>s z&4U&}%b-=zJJ1Gb6SNK51?__lLC2s^pi|Hn&>83gbP4(ax(59Q{Q(1DFc=C(fRSJV zFcFvpOb(_5Q-f*2^k6113-}h89n1;l0rPU`wzy*cR*nb^<$t-N5c(FR%~T4}2Gl28V#dz!BhRa4a|;`~aK;egsYh zr-L7Zv%wf}KDZEE3@!zifh)n);5zVga1;0ixE0(E?gICMUxHtOhrq+&x8QN`6nF+a z4_*SVfZu`NgSWst;63mm_#^lP`~`dtz65^r<9F@%^v%psN#8;Cu`3E~1lK|CQo z5PwJ@Bp4C~iG;*J?m_ND5+RQusgMjv79dtxrF?H{DS;}f}t=d9+Ut|0wsr1 zL203kP!=c~loQGe6@Usu#i3GAS*RlPHdGC&1=WQbKuw_LP%Ee%)Dh|eML|8GzR&<@ z5Hu7T0gZv)gC;;9LQ|m`&}=9MS^zDEK7&?3YoPVeCMXu#4()>WK?k6(p(D_7=rnW= zx&&Q?Za_akccF*SkI>K1bLb`XC-epez@RWZ7y*m~MggOS(ZiTwY%oq3FH8_73X_1z zz!YG&VQMffm>$dsW(u=}*}@!QE--hP7t9Y92n&Hlz+zzWumsp6SQ_jxEEo0!Rt$Rv ztAy3U8eq+^R#+#j7d8NU4I70`z-C|zuoc)kYzwvvJA{3LeSv+0{eb<318^uD4^9Xt zg;T<5;f(NGa85WcTo5h_mxRm0mEfvyO}H-H5N-yyg4@BJ;I42_xG(%JJQyAUkAcU- z6X7ZF40tv?A6^76g;&CB;SF#sydB;R?}rb;N8l6i8TcZ66}|!AhVR2a!au{$;osrE z5C8&-Kq80`)xr$W&w& zG7njVEJIc!pChrz4rCv45IKUJM9v{skQ>My*5>ZTjJZ{JL9|K`{JYV!|-G9AK*X2&%n>cFTgLwufng#e}UhD z--kblKZ-wvzkt7rzlpzx{}KNS{w4k|0uTX$fRKQkfR=!nfP;XKK$t+1K%PK_K#RbD zz>L6#z=^<(z?J=$5R4Pd5-byJ5bO{f z6MP}KB=|)LB18}p5mFG+5wa3;5eg8B5y}uM5o!?X5t@AYueDF)VNc;k;Y$%r5lxXmkw%eAQ9@Bg(MZuw@seVgVv1s! zVw2*4;xok+#a~JUB?%=BB`YNlr3j@Ar3$4Er3s}ir3yP#sg9Q(aR-s0pblshOy`sD-Jesc%#3P@7WQQoB<7 zQio8-QYTSoQa_kOua>YM14kmO#`7Jq@ko?qT!+urjemhq0yx= zqp_z!(fHGZ(cGg+rpcx$rm3Q7qUof0MKeY-PqR+5M{`Q^ofe=)(vs6M&~nfU(Mr?a zrq!V}rM0I;(fZSd(Z7NM(>c@m&;`@Q(mkZhqAR4Uq-&(>q3$(X>H!T5x+oUwtigK>~?f^ms)i}9H88{;1)JSK7`Mka11 zQ6_mN4JKnITP8QA0Hz402TU1EPngP?8ksto2AL+AmYKGhJ~3S~1I+l$RLm^Qe9RKe zO3XUUX3UPvp3FhaG0cycbC^q*YnfY^Uowv}&ogf@A2Oda|7Jn3kh3tdaI=W9D6nX; zn6lWjc(9;ZqFElYWV4j8)UdR$ykvRHGSBj!<%s2ipj*~);!iS)&|y2)*;p@)>YPB*3YazZ$WR7+@in5c}wJ${4LE}Cb#TwdE7$Z zioKP5EB99Et@>N-w_e?vytQ&`=ho@1A8b%I5;l4^PBsxX1vV`$6+4yRrwcN3tieXR(*C*Rr>< z53o{P(|8Mbt9e^^2Y4rW zS9$k&&v^gv5%AISaqx-qDe>v@S@F5?1@gu4rSRqRRq|o^Uh<9et?=#fo$>wQ$LFWv z=inFRSK`;>x8_Ijqxs|b)A$SctN2^^2lyxX*Z2?kF9bjW!~zTgJOYvesscs=_5xl4 zp#l#C9t%7bcrMT-Ff1@HuqALRa4m=sq!hd*C@iQTs3T}8=q4B_7%P}6SRhy}*eWYtG8b|d3J{7GN)gHzsuF4udL=X^v@UccbR`TCCKF~B z77&&b))KZ5b`icS94nkETp(N{+$KCEJS+TO_>=HY5x5AY2%Ctoh@yy|h>eJcNU+F# zk;fuWMH)o9MMg!IM0Q2aME;5riPDSmh)Rj7i<*kw5%m|17EKX-B3dolCORZKE4nFq zB6=-`Cq^yCAtokvTg*_*Ud&r8LhPX!Myx^%D>fiDCAJ~O} zUff$eTs%n}BVHkn6@Mi@ExsZCN&Ke-LV{X?Lqc3aMZ!qJQNmXuN+Ma}iA1$TyTogW zd5I4aUnFiM2_@+zc_pPKH6_g@T_w?y_arkVOC%d4dnLytS0xW6FQuST6jHaOM5L6Z z45jR)e54|!lBM#cs-@bc-bgJ-ZA*QX`YTN=%_J=#EibJjZ7uB~9V(qDohw}--6B0G zJuAH>{aN}(hERq8#$6^vCP5}grd$RqGbl4FvnBIc=0=uKmO++ZR!&w& z)>_s>HcU2279(3J+a~*3c3yT{_Dl|tBavf~6OvPuGmx{F^O1{^OOY#-tCQ=Jdn>mh zcPMuy50|Hs=aiR_SC==Fca=xW-E|4M#VeoOv~{2v8k1!e_71w{n|1$zZw zg=mFTg(8LL3Ox$r3hxv?D*RMLD$*(PD#|KqD_SdhDuydQQhcIVqu8l9s<@(fsQ6t8 zp+uv^tt73arDUb#p%kX{P$^%jMyXS2RB1)&Q0coeLYYRHTUlCJOW8`*pjd_h-jc=MTO&U!eO<7G{ zO*>6r%^1y0&1afe%^}SN%{|R4Erb@W7O$4PmcEvQmcQ0Ltt_o_tv0P;t!1qvt)JTX z+Kk$Q+REC-+RoZR+6mfu+BMqU+T+?A+Nauobx3vCbi{QubS!l|bs}|AbxL%abYAJq z>+I@W>cVwtb@_DVbq#c#bOUwo>*nfK>vrmn>8|UZ>i*Ru)nn6>(9_hj*7MSf(o5GX z)x+w&)?3m$)cdKAug|D2q<>rARNqZMRR58Fp?-sYzy7TLj{Y|TxB;C3zk#BGk%6;8 zkU^qBzCoQqpTV@j2ZM7%s3DCZuc5r5fuWNj+AzT|&#=z0*Ko>k%kbO?YD8_sYb0-E zXmrO2ZIoz~Z&Yv8XEbfJZFFG_H>Ne_H&!$@Hg+)%F@9)VXxwN#U_5WUXZ+m+X~JkC zY@%XfZsK7QVUlK2YJxR+W3pm$Z1UTb#FWic!c@!D*3{4Ro@usem1&phgz2W~nHkiK z+Kkss!OY0a#Vo|^ky(*hli8rzqS>L@wKNVCxh1EijHRBXlO@_R(Xzm@!E(TI!ScZJ z+KR}E)k?xj%gWBm-|D^<#;VS$&uZ3c*Xp}9zBRM8sI`W*wY9JHJ?k9n8tWeGY3m*9 zOBCSj!lhCkIl5rj?I-V(w50q)K4()!~li0J{OWW(&-?0z2e`H^5|HA%_{i^+m z1IU5Of!9IN!NdXO5b2QNQ0~y-FyXM}aN&sO$ml5IsP1Uv=;wIfG0(ByalmoG@zC+N z6R8uYldO}WlZ#WBQ>xQ5r#7cCr}s|hci?vz?g-yezhiyJ@6P=@d3T=Q8Mw1}=lITz zGr2Rjv%IshGs-#AIm5ZaxyyOVdE5EQg}{Z?Mbbsb#nC0m<&jH?ON+~>%eu=~SC}ik ztFWuOtBtF_>jT#(u8pokt}Cu5ZXh>mH-5Lt0{I;ogkiV&2-`4&FiD$=;>j?cU?wAH1)82z}UmWPA*L++5^p_la+l?;GEDzF+;|evE$NemZ_mej$FTer0}Le$#$?e%JnF z{@nhG{$~E({`dUz{2TpW`>*+b4S)wQ28ajf1l$P-4M+>92^I_d^OoUWAN>Y=&Hg5`}Vv%7>bUdWXh`J_&6O9Sz+Ky$mA^;|P-v zGY#_&iw}De_9ARFY%}aCoG6?#Tp`>%+$a2gcwsm;d@TG!_>TyZ2<`}_2+Iinh{TAJ zh_;Byh~0=^kra`9k*bllk%5uPk!6uxk+YFUQ9u+;lyH<*lv7k_R7O;FRDaZR)aPhe zG*h%>v_Ui~Iwl$u-55O_y%GH_hA@UBMj^&L#y2J*rZ}c8W-4Ys<|dXZRxnm0)*&_| zHa)f~wm)_`_H!IOjyX;`&M3|!E-o%V?nT_&xDRnZ?~&c(y{B@|_8$6P%Dswvz4sRH zoy0@qnc^km4ddP80SCs8HQHW8henpm0m zGI2TaOA=nvtt7c5vn1c7#H6Q5ok_Dv#}B~|86HYJGAdNx z>GtWN>5tRv(qE^)Pye1lmcgH)p5d4go{^o=kTH_+A>%reB2zF^E7LhMDif30oH>@c zn|bq?=CSBwy~n7>agPfhw>_SIe3S*wV$71tGS2eJO3W(F>dsoo`kalI&6cf@ZIvCE zotj;p{VMxi_O~389NrxD9LJpSoSdA-oVPhUIlpshaz%6XbKP^}bBl62a%XctVPF_m zj6B8ya~G3>slvR%yu)1Pk>v5^Y2-QOMdo4hUgVAE?dJpe4Ed7z#`!+^N%>{@z4^=e zXHN*9a6eIf;_xKwN%oV*CvTtZKKWBXS0GVfRN!5ZSn#Z%w_v&8tdOvfyHK^zu`r@A zx3IZzyl}q=C}J#N~o2PV7C7v2T^?Ca6Y5CLsr|+I#mXehUlxml{md2G9m3EZQmwtYR ze8%}q<(d7n@MpQtUObz4c31`}V=0p>vn)fGWt7#Ijg)Pd-IUXnOO~6I`;{k`SCtQz zzc2q;K~*7IVNl^!kyuey@v>sA;**r`Lwd9a=G%ninxleN~_AXDz2)i zs;g?T>T5M&HE*>>wR3fBbzyZ!^+NTR8iE?08ugkxH8C{>H61ncHD788YI$naYn^Lj zY71*SY8Pt1)DhP4)@jta)Wy~n)pgY^)}7T8*YnkD)w|W-t1qeVsb8tTcux9U@VV}D zkLM4bKYRZ2`Mc-e8z>t@8Vnk|8y+@PHVigwHvDR&ZIo;@Z478kYpiP=Y20lBnwXm8 znyi|Fo3fjlnbaG`BY|G=F_T^n&k&_6yXD`!7mgynONQ#djvQxkbLkrX{o`w*}iW({j>^-^$&p(dyEAuk~qbZ|hp?RU2iS zSesFsUt4NhZQDrOUOTv*rCqVzu05hXuf45(zWr+lafd*MPKQTFVn;>CV8>R+O(#RA zY^POcNM}wbwsWTQw2PpNw@a%F)%BpOtZSg_eb=vUx^9_n%kJRr?Cuxc)7_^%1U-C>EOm7t4*u9B*Q~0L)&FY))!!*NE!xqCK!@0w)!}G)EBV;2YBgP{E zBbg&jBU2-%qlBXZqk5x0qbZ~Hqhq7TZ}Hypyw!T^@iysg_1odM`(v;%jxqHyx3LFf z6=Sc*cE-WuY~w29&g1dpW#g~LKTH4#ZI!?w;KAr5J z+?@O~#XO}nnI#YIEw(G|RN|w9|Clbm{cK^w#v>8P=KGGk0e0%{-eKoY|fQ z&EA?-opqVLKU+TgdUkgXGRHBeK8Ko1oU57}nLC(A%yZ9c&3n#2ny;H5oBz0gzreqs zzu>!&zRd$DD4Ve#7%<&xx*q^2()yl}q;VRxL@2c*q&uZFg+0*M^`!OM^|AGj8w4AI8-^PJ8(AAI8;cv4@2TI* zytjED^}hIh|NE^?&?eia`X*}g;b!gT_~ywL(U$O*@fLb3cdLDCW$Wh$`VR^p96!W; zDEsjG!~QmWn`c{h+jl#CyLo$V`(lS`M|#I*CvvBFr+??eE_jz?S98~MH)XeBcY62h z9{HZcp5{|M~vZ{?`NY1BnC6gNTEogO>+ehu}kwL(N04 z!_>pZ!`Z|0Bg!M`Bb%eBqo+r&j&_e>$2`Zn$9~6|$1TT;$KOBFeN_19_%Z%t<;Rha z$Das334Jp86!aZ{CGyRWfd%f1eOJvt*e6FM_F3qE^t z)_b;j4m#&J*FN_-&p5}PFP;CmV7O4eaJfjlsJocF`1+0Fo76YkZ!zD>zPNw=?dsB`q}lH>!V+UzeIkS{|f(A{Oi@Pz2A7h z1%4a<4*6a1`{nQL8`ur+jlm82Chw-_X7dmD5BDFvKLLMo|8)J?_zV2y{HycV?{D_s zj=$@F|NiG(3GNgCLaU|)3a6VM*Xnx7{iE4vTY5T^ zW$^&Hg3y*-9b=UKJKOM-Kt1sYIioDbFGNx1LbZ!_wJ%BtY$x6&7zwtW$y@J~zJ32L z9HSt_-mpJ{UEulTeH0pE)k@jVKr7iN&e*9NaM+#cw}Yo6FcE}Ov#t?{Qt#T%@6vBc zmy9E^SNWwNCgS5|ar|r1Ewt?tKgfPT*urzlKP&a@MSoH8no)pkNrj!vc4T>hE%z8R z#&mhJepB?C7SpEZo$A?e&DcCVkg{=DnqM-$(8GtRsWv?Cd}#TbB2MCtPw?w*WIjgze=BZJAMZD{gl;c}Zw^Z;G<=`uTP7GUm?EGQ_N857(e0I1K3mCbf`LAca&8*+=Z5)h?hGUzJJI*NGIM)#nOwTl7fDA)WtH)3sLDkf0N;^4V=I66RCs-vo zz4|-ZzL_XfKW&>exJ+o2%x{O|YjJv2f3Km_qhndohG1-eorj^$0neMp%K3cGBtE$+ zS>XtAv64NG?y|s9_70QU=M{e}otNf64*%+wd$N?!lf9jg5w^Q+SKO^dVLEMm2zMP{ z@z)CD57(1tXKpIhjhG~x5Kg`J5BjsA--zz^H8>F^{`j|kzvbGI1%GT5 zwH<|N%aQjI>q`4|5x-xgUXh2w={uM6jR=O~ZcSlo$qhT7v0X8#T*)VTXUraShKe>Z z^7W6Sq#raXbItgN-H&Ci(=$oH_K1}QAwv{8lIl#EY+5>3IB9z2ch6DiK3T1DUQGwB z*VKW_*B`?tq(ZOXaAtabk`-+VBdiGH6OF<5@IZR3@mAFi+3%suaOkbVcBBaVz|1gp zn$Wv2I%hp7yoL_#8mPY?F4|~l$2g@Yt0kMtQ!-GtG@fgtf9lF{C5t*6Fw7~s+D8R+ zvK6cgpyeX-$fC2-t&Du~KL$?V2Gm2K$=~w#P(pN_LPdz>w8>1%9sAk9gM#Grq0{~a z-fBtR&4rDX_uQ76`gLP(JE(s}<|ur2q+xXPF5#Y~bbGocHQ#xNMFboL1^7jK8wwW* z*F?y;hT8DQ#*Duwj-p1ncw720nFbzAr4zaK${y-eYb9wPXDXSb4yT9aN_tKdiPvon zg>PK^SS$`q`s!x-vW~dnOXm1Z*H-3rB%%K;p{n{o4&lsm<1##}H>&p8Xqen%Uj_(Se6LlZX3S3oz4X0p2$K zNeZWKrR*8@vRXQ0{CaYn{uxAVwLz;*xLRREa{3)hcO@iw)mL>h#cI@Np7c`=;iB!p zLQvD>VA4Yi-EHc*snG2*^_u>@$>L8`!D2h!M3Jl`b+TsVE-n^vu3~f7=yhx2B5JW; z(&f6?PkwB)E?>*Ur$~|ZcbX4odt9!#T7k>+=%b!*t5nH1x9$@6@D-&FaVCjBoI#xi zXhtD+&dC;W{Z2YlJ6f}LhZJt_UkrYay4dsV#d-|w=yi;J%FJu88P-gV%FIs}j&Rfd zr-WNvgHPd#A43shx`Nd|efob8p*g5m+a=z%! z)#KEfZ8A@o;IT<}oA39jE71L^R9&**1GSm_d3TYQF)xNi zEqw<&kJfA-d}f-fzh=UZ%b~|MjyKVe8_o8YjAinv+ta%rN?Est@B5ZHC{>NuRU4Y1 zvKl#YGr*2p4dV=Y3f)@Lef}!wh zsI3m~V7kYw#VW1%9FvBJ#X5~}p>)5;(6Yz;?br4rUrz06^9<>XQJvxj^$i=DC7%Mf zI?VXf$s7T!V@p%IzXrB02RU5+wvT;)Me3&8WAxfR5aP~Odv0Jpw$<0-bFL|CC zq}xVM>OMZi?#&QlBSpt8Io9lQ#`x*<%A@rpmk$Q3i#odd6;pl;-9 z@jYnGGclE&HXSS#t*#G@K>4}ChpH3~U6RdSGZ^rwFCf(zFCOcW6m(6+H@Vrk%a_Bm z;GO(2*Ljk~p=`5M{carHd3ql#gks~V+Pk)y;v3iGytrCmkM-)Jt%Qbym-V(6%3PSG z)>)U2!mmk~rdk>sXUCKrW)mKz9%)^j7+m}XZbee6G(Rhj%=XE@8}$M2gY}*f!>xb; z7hcY;YmdOHq=%W$2w03g^OfuqUm(jQ49W$4p|)GIegQ{1!7=fIuaXdHE!N*wPUc7Uw&K`x^#myk?f$dSwc}NPnnk zH+3g>hRXev&8a&E3g?2OWi)g28rJKzg-+xns`j0GF!aIOmdOAtyyK3_Hwqh$m0;lw zwvIeS{DXeF69<9A*(RSBp0bn9)oceHna^)}q24uKZR-mYW3D;+s(sF)Gjbwa}1hbZylHOQf=+gvF@2hooSG~P$ zzpfIYiJ-fuP6DJQO&gsImUYABCb`Q|MTmgJw+}kM2@T`-?LM5NllX$7YUQ^)F--b` z7od^V+PPG(>3A{NQqeRm7-b`yLG(3Qi}&SPT}j$E%zN7(8G3Y2-%m|7C(BQs|Clz} z>-dpx)?G{=5iTv;k`b1qn6dE2I8U*{C!ld5+i_k&H?Pc8G1fhX$h|VKK)gx$R_fq& zlpm8J4ljy1hZy=qGs_0-&{e){#la5C?zf*Z6`I0QMr-5nJ)5d9_{F<4rE00|XBDFt@bAtQ%v|k6*;2jTU?#G$C&n_L0342b}#2H$@CqFye|6%jg zWO8}VXY^}bG$CJ4jJC3OG4`wcljSO<*XPGN!LnQF>EAXEC(bX{-u(r_T z66uS#;Vw&ao)fvYvQDY_+w(y)6ZdfgnBw6zruc*VQl#GVvZ55Fy&oP_nsmq| zIX1qqfG&6!GPtmWts^`$%XWe=TlPPcPcKdSrF)3-=?Uk-LBx68m8T}=jna0$y1hZ! zIP_xPxaC?=Qd6dX>L}~05%hVfalE8AGr9!Q_KmNk>G!?42(%G_bCcxOj^Cm8wUCBb z`>5*4osqVk#XQCUb|~5`A{r2$~pvt?Of*5VqVakUw10>5%Un`6Z9x2ru*MG zWph3JVIK~=y+j6O9gx+@oUi52_tr7@^_F8 z3=Hcf|K@Q&Agzyy@D#Vx`^>m_u9srq!a^ni*xr9Z!jF0W@qW8#?oO)L#$u{ntC;0F znitc0;;>qX@nh1hw7q&tlt|=laws?@(DD+|HF!1;_aOOj3T)60TUIuGAi{U)oV(Ptxp z`6k=qkINbxTW~1JQS7&t%|v=o7mA_VOn<1m1NU^m>olTQAQ?y(B3Wl@M?dp%bv(dj zw0b*=YrZHIb*%BEPiFa0$S|@hcR7@|q}6^GyCCQFxTMcXEzgNLmZ5m7Q|R;te;>DO zRF&kis4-V1;r9Cs-6=9WC;xcYq*12d-9Y|$uo3sr z(Y&7L#PaR)uC3U}QDL?RgPM8v!MU%e_t=F;bOg4^DwXHxMIk$%*Eh+w5L&&ue1a~$ zx^9%mq;4nWZN08M@I-0-gMvhRCtIq?>$p_{^*T4WIJ<4W;z(uQb6q#{ zAB{#|W0AqTitLb!$?fq z+|@mn_0hrsJ6!+V&&?@tQyY*xDujP5YwKn5jX(G$QD0+$ey!3d!?0_^9_IOWb`-H# zu1yIaC%WRu!%{eG zJm<)QkD-qa-!tmY)Gh|Mr6A{GQmV9KHK&G2F%syB#Cdc(y6VV^PjlYfj32}7!Pw;+ zT%7J&y+A%0%N1OE`nKNuUnHOMJzDbYr-7j>RTf6k)B0E;+GRH%E(iMl>UI=Gx@N}e z#h;C4n&Vb8j!K^jn-d56QQwHbCLEwEezQ}c?wzMu)=X6@qFcy^Vf(|uKs%9PS;Lv8 zV>)JEmf+DxjN3M28$K6NW!Fq!ou=6eMi`jkCerb1O^YqAs+tVcq*KEi@QPj5kicS602D zQhIw(%$cFzq*F6iQBmiipnPYf&i(uXs`uK`eRd-MC)G@$v{}3L_q*n&6+iWFETTqA zzO5EhuQPD_4sh)`Fvb$~Lq5GI5It^IJ=&AXR5d9kk9hU5NUB9>k2?^r=56D9HHEog zzfh&}(UopI%d|YU2~(q-4Rtk!tS?yiu|Beq-}h2~5U{AmUEH(3-ovY;rFYOuoQkJR z_7!Rk=e>?Gns(prSgyt2tVei3h%j-}Ihp{%U7v`4p>MTdL zD}pU=+j1OURqLUNTsh}A67rSySHDGW(sdM0(VwSYiah_}c)GL@bLOs@Ut(QCM)%P8rurLf+MB!8%Qo*xJvYpCsyC-|3I1Pc^zN;&9CG zXyN+BgVyz__e~~9+iSEUb7X9(lk!kXY?7c8@w&OeLhbH_XsnPEjt?6?TxdI*Ge5Qb z z@C|4SLbso!?0f!V;%JPZ!ZADQHuf8hF?jL;Y89AjC$?_efQ0x?nN!C%Oud7%<8vrq zD}LqMy+P-lJ~fM}WfOksCykC|$amMQe&xZT>%g6(fTG?ieGVL>576c!&d_qG;_bi18);xX8_ww63 zOcu+8--Is-+Tu3-7ruV&$D_=1%h8Ya!+lmNLXbh8Sl!|o@%A%HY+rg~=cDqo0wxb3 z$(c{s^&W}+2^dxIwb`^Yg+@TrkoDC+ew6&T9#?0E&HT{UsY z5RJ2DL(Kqcny;-nJp1*>k`+HFL_S(iD}AHC9NZ8V(l#wahRQmn3s)a1{_aBB;?>(M$G%ug)#Wej++4nhu*U4&>8#l{bx(7FQpN#MO z9XZUW*d}UobfsO>Pi`+2ju{VKvL4HP*qGtLu^=A>Lym>eQXTKk!zW}ok;6HOHlyA1 zL94^tnB$J?NzP0!x^E#odd%|*^_WxbCU+E*X=Pxq-0r#k7sT;L?y7iOUqbJQ98CEO6qwxUem7 zVrO_oVLun`qw1jXnm!a;S66-UTD0El!e&h(SZDb1?FQT2^jBBA;tpBawXq-^o7Ta? z-i*QP_pGie<}7u?q0<{V!+`ZHOec=^eMwwhT|#}e_GC%oSV)V1FxNjwOPt>~m>1Kj zn2}MHTQSY0a9S8uf!ogKJs5vCrquWiu*b;I*!jIJ zw6V?f=Gb<;8~ruycs&R=*FTQ2sOl;^RIQ&}k9zrvwV`UvTq&codCs(_4#N_o;^>HL+mLNY}*xJMw}t%4Hk-ZUAj z;>bQa%I1$+3@M?%Fmgn}lHwDTU9NVz^p!a_ab|K!wNJ&Sz0Kc|?w}Fe*#by(S+y&=+DCs@}(xiWqJRm#LppOcQo3>gQRN2{TK&hf0PB(vSUv z)!4p&bmcV;cAw3om+zb3{Yixblmq|R%H(%k(>BqO$Fda~e4PH7Wj%GCYJ<<3~?0Ic*;r8QhI=|_ENEv*mW2>(;?yLad5niEj^$3{U%_qvp$&(byu^D8h6FL|-7sWA% zhE@a&r~E|bxv{Vp-JZF1RO4Ch5o%46`G%jevIuhLB@Ky?vg*f~ia5i?ziw)_aMg2p zIoq0i!UhYym|nebwQr_M?<7Yg-5J^s6H0eG>t1PVuyOfLIliw$EJ?=6p_f)UKB7>I z!HsXp3z>?i_NG0Cx+`+_Yy&`jd4o>_c=Eo z(eVQNXIv33os2$glBpKvcbv=W+JZ+*uZFjMD@4WzAK<68o6GNxi3N69k40q#+VG{T z>tzO6>P95Xa9PRe>|ymD|46gv#6<#ea1^Cs>WS}D5mgf{!hVJR64Cue_2b-WB8G?s z{o&^t%+X!wj34K^%VQEMdy^%CV+-vQd#;4&_UCz`59!f4``8fq&?yYRvYHsC{3NRD zM;z`5dueq&^=9H(`!}iC4jr^`I&Afe$cU`{CldzEYl>fa5fuUSdW;YEn}$D8w0k*Z z@837ZrX2Z|C=QybFFLf(wPr+6^IKm@;S)f%HLd)7+B2QywXdY?c?@}`eExHZD^>W< zWl&qDi&$HxtJ^$9im2_n6~D|MQ{rj)U-AqdRI3kgS^rSHV@wWxbrIr+$v~jGJ;jmB zNVTEAt%dS<%F|4vbN1@s6&IoGlc1JP@eF@C4UU(?kDulk{DB6?nx4cjWV*^VhGuB? zCmTB5Tli?pSA!VpR3tX9SY7!@J(ue^s?h7Yzrc{;$ShfBQs=*EIr6m1JL}7Xxo8a( z{A<2hab2~h5hIs!-A(7WfCVFGxl3kt>Z$j9()NN~;!$PCq-m}vB^pFxLIh;1qg&{H zl6u$ELv-R~#6lL8t;q}{{ZHm(EA0nHYa;#xE?hj+uVmS_B_^`s$sSUhr*!fJNoNU0;8aOCH%uC4=v)>#2l!&I+-JPqT<#PH;x4Ns8eR;Ky#p>qA4y^G+^bzj%#`r>?fRpc-!>{Z~}<*QBCI1CTio*b7_Z-~Bep#I!?dn!}$ zN}d1lni~F*%ZgJm$E92atq)n-!y@dc(G&Es7_Io*$60OuviYS)|1K4Fz}{8xK#6KG z7_Bc!BNh$kk5+AYn2Y?_xp1c5)o^T{WT#bAk2t43c$jYEz&ac!C$ic3QL=Lw+{#`WQEV(<`Re>?<~~U$Isl!_o1WefE;N0XHu75 zrK$^!KuNe}`8_9xD>6&i78!==Kg1~Q1j!0{_4*{()U@9bx2yx+tI||&b_orfb)#kZ zh^~|)EX<8tl`10J)0u`p0=4JVtgGKG%7nXw1z{C|SbwM;m!mGEH#U`q0(u>h{H9zA*$|=dEj}i4-3=hx` zUOky$upZ8o2Ry?M*&JHwD?p2rCJx#3CA3#Mk0;L^{KU2}OviW?i%E2>ULcg8QYjoq zgrE2Rt`ShL_DcCYh(i5=YAi8Qom5aboL{BcP!so=*^HTyxqnjo(%l!e9PucO`U~C$c+N`UwMS+h};lP!N7PoBP z2J(0ENO%PL5K_--D?QXR*H#OY#Oz24);YBSEk=_*b00`RlNj4LtFYjGZ;XYAigzfx z(U-o}Rcj5au{P2}jtl`{G}alpAD{;=KjhcW*NNmsewUp znA@(|rnTD&$z%u1iguq`flQm)uG|Xw#J3~A&elnBQ*1&2a}iihfXv?~isp0-XN06P zf$tej4nC~sFgX`Ed=uL}!Bs-+dBa*8{z_TOX^IYrht1L#FUsn=8X-0Men0^si|Hi7(%d*9gT;C_j)rLN{Cu2^7zDfQQN@5{uDY za)ql=KU^8^YeTU10Yd_Xvv65#rkaWqhMciI-w^BIbH%nkrD4mng!Beue%2qb5+oFUF`v4{SCP-d0815;V_AD>e zF>1Ve5Q&=sGSAAIlc8o~)_g=fN99db9*6Rj@nXB_?gZG)0;P1A%^~1I`qIh+CAc`) z;!TB9vX!b+G!VZd;W>v~?Mb4*@|-jo=DTW@t`7(1HQsNbe9E1s1|0l!HHtk`xXQV} zcR)EK?PXVeP2OjO;N`2Cw7vn)l@v|^8t@s2KjXY#BYK<9EGVTS72$=&vYsd1t(3S{@zz}YTIaj*1Yd)tR2DK#Zv;Fers6i-frhdq69alGbG|Cs zj1+cH*^3+22jX)^?(8bzur4y>OA;EQGVVNlTVzjbQxkF>zHbXDX~C(Y1wQsS1eXA+ zYP_wYU3P3pJ6rEw1vG8ZzdiG@?FPG-*`QF81M{=75$d8pp4!^hW`8NeR2*xjYX-?P z9D{?*n}m^`<8EVdZkI4sxh4mKXP4$y@XP=ut4u?jxo}DnkIpw0_sNb+y}Af5oO9zv zyr!SF5dFnsug~>{S^<kH_^pvIa4-xh-u1&_YdJCOnzHPv#XhiN7U4@^p)H?sb9FN1t7qcc8T!mtFa+W=G>E<45*N5=g!da_&VNk9tDltC~c*yC#>B zEB(v;wwK42m$e?D<&{;RykyJCZA|KK=JWR8v2c_v;OHxV>$dIQhLBt*3U#!RkQ{wu z$8^1i05-zavWGv$6TqrQq?AJ)9L(qjbt0&v2Az8E?3Rw zURO3WdAlCB=r1YJZ|wRk6Lx0~btcEwy+3gQ3;hD*via{|UnDpR#NBnu>~?r}`MN=(e$lTxQgvLK z)?=1J!!M4#P&i#H^yS?b{+x!h8L8Tkyi2Hu{@a2hA49L)$(Fxo=(BwJbj7PCiev&u zSKqlbHW7#upX~AW)=PyEeQGao}E_F{=jq!^`ZU;w~#w82jO)?DmI}GS9xPS6UJmt z+FD3jyp0m>nN(GUXsWLr-Y8KTN)Ac+xae!UD;3aN&T*Ibbbo^W{fuA*5WTKy9rX$m zJ5l-nt~5p(KH>4}NyVrJJ;AEsqF3$6N*8C^A%18_+|;J3m+gP?=03Md_~YDwIal2+ z5jySr*zVa8qAHrnB-;cXwHPohlxWj2F$u^*5rN$Qk%g=7h#lE|fh`%2WxuT{+k~>3 z&GRrJytk(tN}j$SGs=<_+{SKq0X3C~nsGE6K(%fdOZ2UXdB`utR@oPuWFa{sm{&+$ z$-bD1jPPaMuxKH#4^p(9kIB@6huUHD99uGv6<2FvQ-UB+bVk)rJ~4eyA`YbZUTr!p zWXQ(1)>KG;tnN$c!uk$WZ%Y8JH$2?`RVNWHobv=jOoZ_A zkbRR!&gG#pU&s$JV&ch^$EVQMy-*5p-@I*b)X_ePOkB-$9=gW$u7m>+J0T~$!zVXl zJ@52~1}Iike@R&oLVdU)pJ`*K$VI(3K^@I(0r#0-;xDs|kd(G>xlh=d{m5CWmjGTv z^6-!qUB%tp2QJ;PR=nFl@Wt}$V)P$Sm~8BnkpB>Lw;b>3CAG7?i&j1Gm450eVI=KZ zK7gTLYmjYJeo@QxSU^3F#Dtts%>h2$4)Ey^xlb++UVjbPLNfERK6h$cgJ8T&Hkm3N z%q`BfCyhc@E#YEXkxfSDG1pVCq7jF4LEYHM^Nv9MdAnjUUy&Gzpssv_kd!O*jMlJM z@S$wU(0iSc3qnJ6f4DdOm$OtCDMN_*y09uy25a*4^ldD;aiw?lL%KWkO0qB%0?ssCdkF>yrT(9a#;ByTHWRz zkS=mSy5xKTcSAuQ`szc=qox64ydzm@o>LjQCAmuv66kkZeU!N9tg*|w8r-Ndk)R(K zAsa_h`oYMKe}aX3KZFPM(N5P_E5q>o!!6G-n^oY9kD%w12=i2B@dSew(j9%3D;fue zdOVrOs-zt(SetG)w*!Ny;DXaT&+nfU&F5bCjF3Euxv&$X zy+BobZx90{&T+y|A#8sF5Q*IBDG1fp3L*y~S_H*0h!HZ6S&b4C>FD{0$VWgcD{W@4 z81)eSzPHTafm3XqQQd1a4opfvwF_}(rXX>3`(t_jCb-HG7?z#h%j`a*o&cFut16&2 zm5nU>fpRAIgHQ|w(*kFynYuZ)B8MxSN!$n9h+P+|ncBI$yM440J8F9Yh7pcS9Ej9U z<@>3f`^=F9sEMBWwwj@8$Qr<1IC?ThPiQ6=Fdn2~=G4Z?CW5m{VO1>z>(=0nzE5Gu zyp3E+CBO_VRGN{6a|Q~{IeCS9F3u{;O$An+STukP_^xP}C5c6LTQAyikZic2$1cz->%B>E!divd0-8`09Txct_`YdT_AEKJFov_k# z!yTcuv~Y;hGsXM%ooh3hd=TqX&;AbKN#O5SsAc0XMm>CxuF))C$cRjH-1E@UZbf8v zp^gqV%~id@sj)WQH8-EC;gkUtSiA5k`jxp|?U1j7;kE0{=6T}A7ZWZ_VcQDs2#=G# z1%CVnqt9MZ^=`-h`U@$HmmWK>tuh%rBKB$K|8HI4>nqr)qgSs=JAb-zYv_)Xz1_e37Pi%Sqo{F3vd)e;+{Y zn>Q7NZdPVy>h{FE2q>9T9|E zh;0taJ9&dreO!1Wb}^g>f_$?JTKRM*Z6kro@0^ zp6Jg7Z!MJ813zC5sFxJT!DSh+*Bd+U-T?exTzW#l=MZ8xp+Gj(<3P~V>q?>eIRElS z$24`6_uS_)v#4r!bA`mQM7S|?c6C5+?I%IrnhmC>PtPUUrXQr5zRz$_Z~*E-{EPQp z*T^amnQW@!tExR-qb5SRTJMxJFbzHtFqI@K@}P*>WoB_4m#aXXAkiwJ<-6`hx#+J+ zK*;%ADbualWNq65)cUqyYE`hI@{f4C*l3F%FU90a4%lNp@qN%?bT_oU)HE^iU(fSfs9=t}ef_SN1fsH>$wn1DMLf=4z*o|l7Y@H2wScZ| zQ@AM+P+^5L)b)?|N6U1@jDpo^I}IZtWgsU8*F5p zAT`g6g8&L5#-A|w4#t^7193G>Yh&%LK=v9LCs2Qeg7OD?t9pAZKVbT$p{a2q4FLV7 z4lj{}IjSN|AcIhDS`)P3CtD3fO3flfs+;)t`fowrtN2FXx&a_?&9!JfZzfTQlg6ol zu9-}s%hgOKIQNq)x2Xe#)Ant{X1-CRK_q>%QrvvNknbC~+}Cz>WvZKx4iS{ePE9Y$ zyCj!3Fv?q~1dTZdw#cQ5IwMYG4Y9a2kCFwN9(9?aT$Sz8Vd>xe^f9^+#RR)+(9EP z@E!2zMq}$z;kh-yJ_14ESc#`6IEV2rE}Qe#_^|=A@hmfN4*+|l_wJ+k?fL5w9D<%@pd9|>A<}-tySh6`_Zhqwou1Y_Wv>K6uIB+ zGi|&CydR$2rs=}6I^Rm znh*Uiy*I>2VKr%v9CGo%KKyFgrGo6mGHO3}S{hHdc!+%w>A~NskFljCsiJs2UEb$w zn~lKO+kh%^EX)$N(@O-wHzJr_Z>pP7Ihe;$2v|?@xLILS+c*H`pkrWnfWZ|4LB*Qa zJ*gKRJXRF2B=HHEOUIh#AD$L$68;#l#^|VoOZrrmSPmsWvSEHX}llYt&=gQMOIBciC8oCa?_T$7C|$XG{@@+irL2(ODDba%YU%`MQjF4bmk zY2=8YAJm??^32?)RsGM4Aq&G^6oN3ka-?<8%6Vjaq)pPbRg#<8|J|D|eUx}?FsF$P zJKQ#gHUP7B`|Aw6;@Gj19rw~D!a9gWf|Sd)QR1@Y06Cjf1A(p%9X7!K8J)bH6FgHYP*FmCimkv zk()x0Y|jr^J{@Y)7ya+6Rl{onzNadnA?RI4FJi~xZN8we-#$(q6+!>vKXz>L@qO3JoPGu-fg_Yy|k=2lq0*KbF%zH zVb(1P0jb}DX_I}%UUg3|-9<6|bwABPmI85p?%auESNAktHry3hJ{fW;MNxR91@`mY ztGw5~BBLiA9^4dKz4K#RM3QOayJW=MnoZS!T`ZwCO0083l21`@%N-+GOhRBqnnjWt zmdfc3DxtXZ0kI!O1b+*MtLfp4yd@6~C(X(55@)W8LxNOIBV1epyQLW4@vAcRbfa3N zSxre}q1NlnETnm8lw1$_rw(+#Rw1QH_%lS{i8m}1nQt;;*5|eG-?5jHVcphE*VC+? z5AG8$d}(= zjbnZ`9MSZZN0sag>VF};U-P^y(zKxR#nu@_9{dNcUUO2A8>>u4CO}`TpaD zG>|;`Tht5w7NrNtfnW#%(L*%UjFln^R{)zepEbKQgB+^N2wz1z2oOH@dKu(l;s*O7 zswY#szfixVxs7_%URhgF6iyN`pES3}Da&+Ev&xUA7#m&XI?4=HEx!VqkE}VN+?pTr@A(_&=4ZW@lteXA+B;V z9zHgb;ae|nrmE{|$~T~JrCML_&1_LqzOpmdx&+GTH{h}4L_Mkn_ObF3CW#Zi5R({V zmH;YOTb(%9!u)=XLcs4E?(?ta2HYDvwR)iSos_O*$4%LQH- zA<96<*?R~g3{swXczN}8idya;wGOi%Txd{Tr;@7xRSPsd0 zy<^Q8#e|8LS#{s0?;8cqJN!?g^pzrt%ZH5(;7e%Tcep*2a7TjCd?@FJ29++fMRQp|lq( z_a;1n1U_B40xF4sGJmhno#|t20s=CBUVD9RP!9o}p7zH@z+Wo3>YMDJX_Y|Gv1BY* zsa&nVUeY<)QKy?$WS#3A@77fi&grkcC!y{*KB)y(+1TrM#T9R*!aYE?W-C)HTV9lz zQC?%qOB}K}xQn{ySFeaJ5~cHRJn=TwB%Z7tvVq9-Z>RIxJal$yM;zAj9-Bm}i_s zicR{8jZd8f0P$*MhFxsjK3@gB(<$oYAR1(hY=%Bww$9K@`n&hw(VCHu_$iZ3lUPvn zP!4%MKh#Yu>V&4Cc+WJA-&oN_0}4KNS{0Q`EGAcUuPWy{%qg|xMzxj99TI#G6hbi# zm#0lXfc|M1 zf6ONkF1FuRv4TXh)ouqX>%xt*ZP#-cVrQM^3Y7>0P+Z@Nh)dc6lGZ&RBpa8M20NI< z=|wDKx7V*bM%kzVGDC$|7+p1On|j06#AP7h=k8c(!0#9SNE=)v*I>k=1M_%0cN~Il z6f;$+T5j}aBwXrFiMR8>P_T2FqT$;XM&O)`X;2z9Hae6BFP*}sf}246A{>lXQ6%uN zZ$knjw!adsrAbiv@96Eag>p)&{(U-S1oMa9+U>rDFD?kn0`Q$lxZy62VA<(6D1l=i z^DW7Od$?ou^eqQ#j6pXl{FWy=;w+Oe%n#n348y=4}+|ECQCaqc) zNpfAY)s^EXj0)7Kj*Y6cBE8eNn@b}HzBzDxrBISfJlc%U-4u6Y1dASSKp~0au2_hl zwswy}D#ju518xav7MU5Q>n8lEY}CT6YwrQetimtBwlHG@bZ-(7r@78{5+P>yl4+jHc&sUVI7yvsR~W04=gv{fQw z+d5`tai$4SIUAhn$7HrnGZF`kX{ME7Vaf>URDk4C;T{j-0_+j>D~ziX?u?G;tV(7B z4GrCeKUH1ejdemZoq{IhTs3q296IPOmUTW{0f}gQeT|KPg{uzB)MPtyyty$rnBxC| zrS4v>;EfvLc(Y*AKgW(aojjg!ftYYyTpw)^EtDj6=@y&p+bDiv>*psNWpn?%#%XpZ zfe{vH{t6%8Q+*;bIJ!Bn!yga>P2jvb zRx%p(uYH)}KpBvH)eO#WWUT1fS0sl9@ALPLxI&t5$Tg%=j-TuOLQYFm5b;KNk; z@8^QML1*JNMY{UD{2xMWuH4<_KVn_h+Q|IZS6%;}xhQNNCdOFmhF{=>9kE*(tly-d(Y0B1-4OkDp^{s%U>!msQC`{M&) z@gRW@+4d1L=KCtrs)5R;S3y_WH@Q`wTxyU8V-4tz0MTw8W_H%4+FskydG@OuHRR>8 zF1gUKa@6Ce<2!eetu8=zHf3Mkche|a}i(g)_MoN4J4PtwXR|5{;BUTthC zXCA)o5CUx0kA~yD6WG+*Hpj6*^%NZnO*Z zlx*QDPGBG3Hn~qUCjTxE>%s9F4HWI7bY@(wK3R_1=~!pjZz)`Xj!-)0#YPH*)@af* z*7=*2l60!bC^m4&zoQ8~257H4zXf{ct$i2vwjp2+!+c;w?g7VE>umgefNeQMao%cp zPN@pUO6lb)S1PTAIJA^DOPr3g3}kVQ)ccU3%{KW?$ME!RP_A-V67x|t>gnQ42#VQ~3y z!6@=kQ_drU))_z*q23U3Q!pIQfRN#}EzGB|8;!6s!npsA8PZ%OB)lk|j6kUns0WRx zm0uuU0eDZG2ci{T1E4sbHNiUPD@HW^?-?6>CX|fQkbqv*Xu4My@`;3Nlc_jxdE%-| zC*44dgjnCBM}&iG|DUzqD+hNbQQZs#+%-R6srVRnK$&zEpZSuMnnD3w*0=O+|52$N)w@x+M1#sX}myeSOuQ@|7zyj9= zk>J%#Oa1qzp#n;DO7Uz1-XUZ*&PI73vo$8}o~;Mq_zQ%e4yMA2_ft*gN>^p8V^$K= zQe?te#)d(~k?P{Z2duRr+9v>IHqq@gvKtDsz*=yOKmB;}!YI*nt zi}~N_88mAIqdlYS0S8 z4$oMJd)OqENNQ9&WIoC%F$g%SePFM zLh5!c<8@#JhJ_ubh(~33N$H_T={jcNHp;XxU_DZmJ@d~CySsb1&r1Ta$t1*Z%aG*Q zrIUyJ6qA@`Z4Mcfi)B$hB}PcmG0K_&T%~m>i0i&+14a$06KSlXP+_8CG4@3%|IPrI zm?APefF8Xq5!loU;<)8J@3aL|2~98_sGUr6Rb!~|h+a}70dGLIUI8U(FnC7L-A)*P zH5Xe&p0JGuLqnEE+VbJ=kZ}ECNaWBc!pKbV#`3Nfo_^u|h?dFR1E=h^w?)MEs(_VxUUZHtl(`dTbDLnu&y z#MX!loIB`4c>sU8j7;GxEk3EQ?~ppjrSwQ+$rL(>TrsA=o|)`&l#p0k5ps= zrr@aFRFTrK;GohdFj)`8eA({7J#Tlb=&wB;IxW z+xgxxgRVQT3}l`Eu3%vqKK`HsZ*}4ro1FQj)Bkqeea-arm?ZX9bZcFxT*`)fppW_!4D(-~*V)EAz^nb|rtNDk}sMmAKv3I<(>h-Z_XL_#A?%enVdwRkBb>dXD)VOWR??`}ohsg3OIvqv)Z7N|%xfBpu z9RXknp=Yu+U#`g&s8ROZ!R1$RocH4A#1Z<$)$GenH)t9rYXe#$4Q3ckp^z6E(Tf8PylGqv$=nq;{{~ z;ajBpurTHLb7Gw#x2wm&yn3z>DzeMhu$qz>n$lJ>KaBUDe5`3#zyAKSMCK;6r6Edk zTQz0Z)_n1ovH7NFkZ9*l^TM7(Pio8F_mE)BF0t^_Ti&s2;A7X039A2dyrb_QAT0j( z3k-}qbz!jzC}>IaKL9FKYR09kff$v3I%1(Xo$@`GiF^hW;vxu38=Y&2Nma%r3GT zv2P99SPh#!2f{Ht^oOjwN1$0&xwU&hXUygjD0v+k5rXuC%mCk=ZEeTbPTQRp9dg?$ z8Gm23x${dfdDzeZ~*@r%wH_ao}*r4a}A%DO5p2m8a<~-216bz`D18dDqIA(POuk-sB6` z`^MUS{@w=wRgm)E?LuK&nd679v&&UGqN?6b8lb)(Jgjn2cR^$M2)G@Ky(AHn z2wMSMF_po-5WTOmk6)o+^-=eq0CORAC--y+ZQqH8R;nAHjy>Z+{v*Gf)E{0M@x<8;> zZ#xc*y=qiJCb_XQZ*yo}3syFBJDTYW{h4!^m~mi#0f<@PJy;n_T@0ij3f3wq+0xXk z5{!QPu7aA@@2QOw^^q+O@K(4KMhO@$DYD%Y%B54Zq;$}>uZSbbUo$Sx$t%+F>aMeX z?v!HnXKBPnfQ3R9Xn=eU0DCWwFoLA~Rni1wX-p2~Ty@{&>jo@IwOn}tAzsy~oseA5 z{hNJR#8CaEN;B3QJ*p^y_`qa9K3MbHdYcA-?-6N6yaXJ5nj_+OB)WE6S$ABg++Zy@ zqwEx@dBMhQ4n57qubVzmfeG${F%;lLt8ix|5u@VkRG0^ zYn~Ab)Pmwx>rB>5BrqQG`pFza^Vxw)^BD2WY{3KYkF1nw9%7NHL9otkWB51l>U{2? z;Ggk+RON+9%|}P@vUxbz5YtBA1m!kVt82HS78u_S?1tAx!s_9FyyC7>j={z^%Di5N9TlNSs+}i4$L(H;Qb`cj-@8@wN-G~ z=WV_>=1#}!wcBupN%$)97mnC<7DeqyM+b|5VxH)SsEa@uAe=4HZ!N@?lbDlT3q^ja;O;VFn)eK4Rgm769e8TtNzQi2+C^Z7Rn|^!eK; z(g_!D*^({;cQDmKPAb7|DJUKPF3%t$LhgOwO>qNCY_*}?%WG`}WKXM|#mm?Te2(c%{9E<(dD#1uUX=chmEHZ`5jpj{H`%Y02{)9rSzX$ z4-?J#Wd*fuV~1mzN7pJ7hlE<~c9qljz#kh@yamHH66}9pG;l}DZkH`qp3{Du*w~P% zyT05tSW>YNJAZmGJH78P!=d#DMJ@C1W2=j26WRV^&X!~%iW^*ea6F0MutL(^#2K2> z+Fevz*NKql%GtG|+CEWsU@IFMtrSRn|JyHiX4)PXuy)J#mrmd6zpIj-y38aEyAwNn zfD3+j`QIqdi+D{3^`OhbkV*E-Z6BTLn0crI9foM3$#>|7mww%=?oL{%>9{T%J$1&oF3y<6;E|&2tNjh0C|4aIv^Q*J!&eK&)b!Aawk#DEw zHcB~jqv985$NfzX$&Rtf{by2O@aFg=^ZLx!I!h>3>lgFdOg|$QU>T;9!Q$T!GM*@!-C7<+S0 z>{+tajC%&MW_y|VTroG*ugMZjNZ%}*tA-JyaOIrVhu#5D`Fqec-8Vn_U3tEDhJhls zGdFnKih{8O?DY zdJB+>SM|1jiZsA$zQ#38y%}hzZ`%%X>)9IHtj}81uQA3P-64KLna?wyd13cN=BIJs zna$wJ-NL)9D({?k&1S8?;b2GP*<{WThhNz`bGB+NP3cx{Bm29qCShA9Y8+b@hs0pL ztaNLf>U^9BY`=l8I(+wL_@0}-;V@Zz$|#M*9a8oJKB>Z2QvNX%y>5R(jc-nU>11k4 zJE`FFU4mFx+^74Ml)dEbIaKhCuHKcX0c6_?c{%(}pTTi$lKzwDr5{e6!FcxGGc#WWe;%89jqPQ1MjKJNGM z?D4p_e-sdNU-;jDpP>Ez=jN+hCk~!@1^#tI5^L33qFaVf(t+0#zgeUmym?@F*K4ON z+FvD1bkt|g+v{clX?hdy<8u{RY7H=zsT6Ld`K!N&TfJ^0NHT<0T?uA9S~V)i^l zz5}0pMbgpcy0lGDfmto;#iB89PfzLuAL%ZSaa5RrJx@W=Xt0Csz)*f&B_yR}R3YrY zW60e+xRgY+@paR1=Uqag5o(g;@wHga-6J7rYD?udkGuJ3rJXdszIt@+ zt5CE5MbhJ`rK-ctGW~+Wk9G!cz>d{eomkjr^RdLKkuzQIw>t(3`|p_N^z}iC`P;)J zc+9GARkbd}vn#J?57@F29C7XU-$70ur0H4b1Wk1n6l#^aje4RKEPHU*7>G~|?PKKB zb-OMB`|}t`o}%SoMGU}4`PzEpq?7o%!O{no=3GK@0@iv&H?%-=4sU4fo*&Dwy-SVA z!k|`6VCfRMix`nj8hcb8PY3e{0DtMm`ym@NiFmJ+SQz&e1xPLhd3vDR)g;0xVB$tN zg?q)S8pKn*oPPU1$=qm8Akvy0?)>&0MN!6W`i3ntax}~z>Q5) zmi{1MW6L!h=Unnrh*v3qV|@t8KLYT9bDjJ4*z-cI9~yrYk-0h%o{rQ5+QgtF<%pY4 zu)RE;(UReEA6LCXqv>ub(nJ}2FJT5tvtAPMJo*!k2r-b=>X>Ep2i^e;tn<$tfxhJ; zD@dE_+Vnomo|!wNKgUmo5dHaTLOrh7?p%TQ5zhv1T$0kzqs~Asbi652nH!K?W@;>} zty3j#Q$|X`(vfR92MM_27h={t(9Y4eGUQ09JEfk0VwS1^2mA7OOTtK449^BjX&Pa{ zUJ(NBzG(``;)S+kIEauK`1fJI0ItRI<5zf<~R7!=aL zm9%Y1$^#7Wj39PTftGry*=5>ykUYH9?~70AufkE7Z056Re*l;=+k45bg3fyJes=~y zk!h+>yCK07;?PYVXg*_@mVwvyzBb|qfqC07(2+N8?w!0M>W$?=>Hb!-9yw5%LQsLW zBj*0$M%;2EM4Kbg9V2$MB$(y<5yVGdEtBF^Lt}w|z0bzvN0G8OS?9&Oi=yB+Ryduk zwWYySfiZOcok6+xCY+|QY2hV-zy7rhXBjuWvBLB1s-he&CMC+Zdf7@m^mQ^*L(YBy zS7fv^kK|R8l3@!C`@b9q8oB@ z9IwF>8)DNzBl0Hrw#lXFujn9eq9yVvS9y^*Fy$P4gtu`5C#w@DJ0CHMFL#t*^sfa? zGs{~Kx)D(cVVyF!-r+fxb)()CMQ8~3UwxRvubUv`ar)*f>WiB*b}Y|3dJ|;p;>YC> zQ0v&n6tw>yNw}V%ULdKVBV|Ib37Zb3ZwI+X8sp0c1lGBhddsW&N0u@}19}Gws}^FL zUO>wPohny0d)LFJHj? zlOIoS_Z8~D$yJEpzQV7x*ok}-C@vA!ydyl)9e-co=(1bVg2?cL9A3~w7wWsFsghv( zOJDiYH@7>{4kX16@{b3?cghT-E^@yxZ?bY`|&CK&vGRB4&ec9}S&WaSeu1x3FUAgk5J}XJaW97U^)a`6#>jpr$I^TtZk%m!& zafBc7H;zmy2+ZOYq3vgAd$+q&TMm=fjlSUw`4*L8b{+20fx=L4d)J0sUjN`>+470h zCnv4<-?1vOFatTvteV1Ci_vvYPqBkqsLlNsz9~u0pQiLz`X+R>cPHRM(Z#2~IJd+T zq0Gz|F9#K94zGvZ@$%6($~No~e>2~<&c|ICB;Aq%JEBE}B!1=c*58)Ld3mpI728Y= ze9L3f+!>!7e&qiIH9<%zo3H;$Q1&I=b=z!DPFwZ;ns7d8F|{Qf#eLP#@D%4Gv)FyJ zed{pkK!%VR}E33~Y&)%1k%rPi>3Nw=k-EDa*PC*-8JiwWw<9v1g!l0Nzd-wMK>K9GC& zz4xEeYN~uu@nopmFj2hE++Hs3r5IwOf$fKA4}@K$R;QDY6`|gbTD}@b+cT;jmZIFT zupfqwvq^pZcVWj1vY}gSL|8y_z|TGMO-u9*%WOMyQe;D0dJg;FvDh%J|Bl@&n@1@4 zkwph>W==~aD^W|{W|T)pCQ+fqApvzgJLhC(3yi9W?Bl|i zuaPzGE*3Vvm_hGsTGD~)n?WMt;$(s7&$t%8pL^F0enO|;zg6Mv%e(y;><_N($WL08 z(dTEnr@8lwVLb1CyBu1po%u%dJxDg|caEPmj{!kKOlxBIyzx-D;q&eELUOY6cNf() z?}r=kv;)rf&T6fA{R8A*Vqn(SfKxE18;HM5{&{!e0DQgwN3vabIt0F+NpL!rn2|JI z$&dXt%o7~QF7UfQ`s5Jzq{9`Dnz5O>q;^c8>n^tVzOJ6F<&M%Lp^xTx%bn2c)zSU! z(_)H)ls?N}MV4l>=7}-;GvAXr!8rM1xw5>qhVVQK6#M26#hOgv^5Qt=_hI8()=7pB zI*CvG@05wpm8i4IZ9h(NIXeEu;`t_h(qQ#;@1IOp9%*oBinV-9D0!`*&hI z#q^^f15SrOGD(#1rs9I4tuEP>)fmbT^OqC!79R6fF|S`kw0Pqq>+-^ZQsVVEN5u@I z_oGb=3&6A7PTQC%Q>Wlpw!4McqmlNHdO8+4`^ER(dzpR6Gcr!aucc+AZuNY!Cp60E zRv1Z%#N|t2Ka*SJd@vfNPlPnPr8GAC>QLDOO9E=%+n>FbuNm~44vjLr0}gDbTpPjD zlK^)3e*6bHuk7#SQT)954^vwe&1pbkn5~T>Wz38Vhfjq|T1A)PNAsUQ3)Ie+okF^3O!vY4hR4uTlmYo6DQG@`j>GzQ(Nz6d)q6Xr> zW2WH}iixC&hQ`?c`6am18fI2?xcdLGxLiYBUU#3ToLbkM00rdHumV{MrAzo?4FT=$l%7#{2D@Z7LAL zLrOp-iDX%c@BEOeviUg~GIyA&-C(b%G-hw;FYCU_YG*Xa808=vS8Zkxrkn9uN_P*~ zixQLp^t>gg43VGDVZ)?z4pTp_N&|{Djd9U6x}f_K#yup!_(PHisxKVN8SHX_0~~MJplXoFt9*Hq)X|Z3`U2d zjNIrhrMtV8E|Hc|5@U3CH;nEM=|;N2-}Upp@9&&1e{AQTGY;F%*nRGk){M!e0Vso+ zeT(c2>>1*glFUjW53dxD$(C25S^?h&-T->L4;G>5r)jOAUs2RGr4s#epf*}lLL6dF zsAO=|o7Of1wW%=W2e5XdoF`#2{c1tM9GuYfms1I`)VXsBW=z#CG6OouuGx=yy{}j8 z6+HUy$^bwlA}rpw-l!`b+Wz5)haWOc3hQ4F#gN;cO?V{>0XWE!vGQCx0v(7R=$-lu zGJR|zLoC78a%c%F{>eL!vF~kjRoa6{`_09?d7+w2^F-wqF+8pxdcWWw|Kz zpsM>Y#rI;@;d9jU%-VbNe?jddFM~hJrf63l?Wx|L8oo5&rgpgq zefUW@Q$t&)eYKK$@*VZ0t?;LkZdtn^{Zy-EkKhVFu|oC7p`XdqtZG+0#l@G8lP?9- z>yY`zxq#SU65(q=tV`uKxSfx@u4@J^ghqAzPyW!>a4W8sSBf4bIO~}fqqE^)*VSHB zPCs;yR1L5vMTWxAbVf_0-W1#T1;z@vCxVcT%czT#rWN|}Cn+CnDaV)}J2$l8deuRDYF<0oFn=x*901E&`K3P+Fj@@6roDEW*LCmce< z&xg{B#c*y{Cyk1JqS5b9MgM|^EE|NLHb8SG3UZH8>g(@xehL+VhQ0clj8a*)n+%1y z(UPJnC3WaWRS(tvf)e@6|6sdBb&0qQ7g5J6KL<};e*~G?jg78o@OO-7Dho7ln+FKK zviF6f4#i~Ei*r<%3krDKScE$_rY1=}lLx#GO+^b`4@YH2bT5e7h%SL=thcxxPDgY_ zdTqQpx`vD#Dl}HeLqzxRBczj5mDjVx+G9m$5gNtH-6MNKU2(@+G%9Ej?3K2?umA&?+U6p;r2F3 zAuSu(-5L9hmX@z9S{+w8S$nFeO*+VPz`K#TFq=J@#(UUNg|u(a_>QU#U$4ktTGX1T z{T<>pS5}h9^L>myyQxSBW1g`kbZAJk^Rkl41&W#1~M|!(c_V z^$7V<4-TE{He^8l4lJtN`~pfnmdh}~Ah0%?+Jtzq{M}pTMkUL;>doVAX4A7W?;h!; z5;&Z2MtVAC=@=uN6r5!L%gQkQPO5j~Rq*CH-no+T0bt-zJQ(Zoni<3XS0_e!N+R<0 zQyTB}aEup>o!ecz#|Ik}@*l1PZX)r1V~hEKCgtB;V!!wJ8Yrjz9)BL%he`8xw)zY5 zwb!6}QbztHn8W&aY z>^Sh3M}I-CKfN}(%xhur#J&NW}z`isWz+0)0WBkc=xVD;_T%@g4cgR9gHI5Tmpt7PbO3wVawng1GB7}6j`(<%9KdjELwLd z#`u~ut^Cj_L6e+kDAbeLh^oeGaC&$yM=Zj4YGcpQOnJn?Trs<;21>(Cw3w)`z3f;J z|MXugBXMzksI=YYoLHgZp(3Wo4=7rk5DJY|x{6+w0cy4l)n1ir0%%Owg}d&Vzi=lQ zrvM=}(ldP*>0oGLq#ept?=DBsC&vrKQiQGm>Q*5nyq*j5d1!wZ_f&rCpDmQ?7 z)ReV;rji(o7~hB-I8@nSHJN|K9<9~iSC9(yVy>ix`iJ+eD7Mj_k;X)p00!2okN@@k zkf5*JL)?;<_FXL2lL_)w*a$*&UQlv{{IdWR`XwIFW{umdIZkt?Z6O<)=z4G zkNzhfKH3@=1>P^S+*HL_|GA9tKBO~XJ^^esL;F2SsDI)Qz4VE$;T5iN-c*INP# z|MYBRI{n9V6{aTP$I#`nH3m53)vr22=Afu3gB|9+JVKRTU^WK+U9K3gwrD0y6simY z#_GmdGUo>{rBS{GfTT3lrdVj#CU@Y0q*npmWjlZz`;T#wKqSu1NX_{HzMw-jAaGT% zWE###15who?B*8^aMasZmd|61>s%_-b0`)Y1&S>h)YV_s%r){*W;K0XC6uq}*XIf0 zE-9>wgXKb>+KGh#oF!jI@^V2bQhym%2|Z^Ex6fRSP4o|&D`?Xvg+?=wqULgPYdY|3 zWTae4e~j_S1Cp0S6C=(Xop~9_$eXQ%pC4Mobm-CaKiLzA?(?-+iH&l&>?m^M%kaPy z|FKaMo$K-n(H|8}qJ5GcRFcMm-$mt=NXv*NRWe9)E7G;=GeJCzfo&k7hXp}75*}iE z_{w^OkPi|bpANEyVmyB>v!d%5)T~MwyPl9ZOj3tPN5(#I?BrWh&($1 z2lBY|MFM@duz}*INP=xil3W>L4v2~`J~j>X{Z9j!`G;U%d`KzQyXSuLQLI$I!tzP* zS6>V%KuWPe^oA0hHSU}Y^c16K>VqPPpR(-M8u6w5vhYD4IjNlMcDmqQSf zLHB{9A-U6wDWvErvjUNVtW6h&;N^#-xj60zJ^`Eo!Vx9x*>D2x?+>n`*HV^E(s3=T z-s&fCH-6H%N4$?~7-eq#K|fVAoy|%N$deZ~XG7R54uVTW0y=)EeiySOf|d|AJY`y1 z1ZOAcYt^Q|(i99(u4?)fwTD|`t$Gtv3mKL8}D&f zGf|hWMx}O;=iJstM!$QJ_18})wK*b& zBEFn1rKtgET6+M^`Bt7>kzG!WM*yBQm45qBT^gciKr%*ZuX3$KvvMA|!g1hP6`S4b zwddC^x0*ho-gCC5fX`NSI=!d^8sjP>_80spD(Avisum-u>cYuPh5yveZi4Ifi>>CX zvR1Vl2ft)ka~w7ZlM-;xJ_?`v3xeq4&ovG)+02g5rY%*8^u-CJ+`U*nHeS!(=E54< zZx;9qDt1h*@Wc|?JHAfwa(gjFJvcM)wTXG;FQ}(gb(YkhL1QA5hKPQW_P}(jL24dF z43%UELM7dJ!gse01rH@fVB)>m4Kx3sTXtHu&VkstpMG*fb-B@&YOK}k3=Jj(6W63t zADXm5iI%S8Q7Ro+?Q7ISN-v>JxJN)<%N;oP-tRYPA`JSNE(S#Wp!xp2=0%!Ea%0(B zchc1>9qKk>o$Q)7KK;!aMS5!cc$Nhi4fm*vuRO0WGw&EXYeskX^;T@nMbqz2x%#@g z+w1F4=CUE>CDZH{xBz|W;{o2s|Xe^0%v1{+VsMq+aW-#_Y(6w!MmFzZQ_Ax|x z^PuHA@lQ(M%#^CL%GeI?!D0UIhWwid;xXZ7uCt5sTb=Fb&0N~yjN0qxhXl3W<1-EQ z2gNa~%bp}YEk$KC@<$aL)9CNJyiMC zT<;X55dglLDTx|;i!x@`PQzTh^=`{fkRG17EMhv(JN|-jJGkpO30XpHWDRCyu2SW$ z2@b*sw8_lQj{YF>x`x*OG&Wlpr&e!|=Qt_9?eJBM2I{B&f-?A4lGux*`vfq~P-Iqu zLI=#ztP_p@r)GPy>5JQKt+(y?rm8kRf`KR3Gx}mAW^P+8FW-yV5&srf26dC+WBr(d zFS|1j4Q3HO1t=Q66q?i=rU#n1+A6#dIPj0KLPFR_3=@`##u(tK7d4Dt}DA>Q3!p8YT@zrh3Jg)6Ia~MZZ-#>sILy*f!dJB-lXmcS_lqA%gHFKr|UiRJ6 zjdbedFQ|;Ftbj)6pg?+OoIiHEQ_XcIQ9FX=kUs9j(&>+^{jp&1!J&Rasy-Oclv#ds z-+UxcS*ob?4wm~D^k-6)v!)^3EH+oL$1Z{sqP=^=5w}UIpk^xa!eL!-QRyC*K1@YzbT?GH!@LXt1G{Byd}nu+b@QmOoeEhn^(ms4{dc? zu{*w*gwoYS2)!!eRrYISd6emi-d2KwUn|ExE@T#IONvoYFbAAE3SfPF9J@qdt!I5B zbN*w@>qZ=)ThaD~TddfjxDE;3Qb*xwhZH2Df&B6AJmVNLFb2(J5yu%duiBE^pT#US1jfP}6)uz6haj8?U@aov06cP09r=UzcD=1Pw$U!Jd zAB}sLb>FReIzRi_h$_jAKyv-5diJxtaFb{Icj~SqzxAw6w5Gpm*k^zpSh-HCHQj$| zJ_L#2A8i~dXDP3?O0qwQ-*r&&Vi;w&UDFx%`mT1{3-Qe~#j}ACkZn5>nhtR4&c{iw z*wjT}Pw-1_=)L-tDr%PNDan*29hNr(5MimJIWx!Hd>^XP5<8dyLvDgbeQeM484rRf z66lKjhm{J*s`f+XUwm}iECjsvvT32sb89Ba_nre`y}3PLHwxh#P{pSYX9hpe=8mk2 zEmH>o)t{1ofN{;-#UPMGlB6_kQ&h=$6|QEb%u&R6%I-fGukbu5neCF$I7T`EDAzt+ z0oryhE#u5QDxXLSeFyqpJC?(D*+;jv$$}cuf+$)9G!uY}K+K8#J2YAg!yGgux-DJf z0p`(6X831E*0*mDEZa3(a;}10%oT1fx~lEy^E~^Nq{tZVa9G1TE_UE5Ir@p>wR&e@ zdtG!skogN|W+{0h$Ek83NN|PA>}Uh&c^YQnfL?zv*kv-rLVn0#0Ig=9yUjBei)rg>;Z?^=J)EWW%y{Zj;)sPOZA59XvQ(8 zWIf-CQZNUI$r6|8ZGDAz8S>G}@BvBnE%guyR}OtSWVRU~mgZFwLOzDYzdV#IX%%Zm zeu>i3>&wjnWW@v=nU0lknW=#X8dI1UsW}`iu0_vm11g%g?Y;rm#HCfNit*L9kS^Sy zYT~=iGNqU*NWm3xNknw1eO6%RjK9^^|Ak z&!@Wxt2TQXbsqN!!Cxl0qAnzyDZg$~XY);3KsjXk*E9mN$< zI*RQVOsV-$bZ|Ke_RNeZe5cqxBl4_(7Wv!;ADgvE}C1hss)8=mP^oz$+C~xnFAV z<(buQRYZC`>rJnvP}d>h%RQlKkM|8pi$SKh6S}VOp3DUz!fmSinH=DJQ=L({!o(0) zwa>P}lfPm$hU`$PsYFaP*+b*N+G0IFaX-%_#m_%nNN2*Bf-w~F=(&1=srdfMTS>u# zd;=T`ef5BN4L@_RUT)m=o*!(o-OUrogeSXcXu8vLA*Q_mik(m*lRs2T5mSdI|@WY~eA<-C&%7MR#u)h>ENtuDD z4I}6{n=?MD7NQ+&aKlc-a+ChS=N|VvRveHT;S&&^Ig4ZL_Lq56CmwZGZl_cG%bYA@ z5P4SGnfH?B>fK?wdW}d2u}vAW>H75nYCxMAx|eu2;L(WA{`}6&(0J9wD(wvG3u_&& z-u8?1yayv(s;PRybZH&uxEc$kog93;YgFQ&->G9F(LM30Mk)Noz9ALiE)1zlO0rqF z@V(Sf*55gcKsy1Rnx&$P`KqVyS7fch2JrCtLC{aLw3 zZeh|!soXU9j-F;@OR>oTrD78jM_v{X2l1rxK4V&93G5IJA1}W|Bl21=$?km zX3Uj;F976D1YQm%7#%eDp*l%$N4>RzM8rtFt;?P=E7}uYFK6GSX64pDIF%Y~k%J)h zDloT&=QEbC_-~rz-X>q1%P1&WB)98|uuHC%@m<3Ow=15Gz1DV9_!g(ItkrGZ*3o+5 zYD`8!S@p{W`Fg8Oe)!MZHRGAz7VX6i{^96(@a~R&aMjPx3!N!pF;+}ciZRrgi7~DP zml;Dh?#synS_iv~YTG0?g}<0p0;Np zf^fsN{AfTPAHEoD8}|Sgj*YTRqHR_l_bYvy&N4xZ#@t@nc+A4W*Mt3tyod=Yb4KBUNJO!nrCjtrKpv^Dj>IdI}S5!w-oNOEEj!Z zEYKEFkPj4pykNfwcwXt`G)`0@3P5s2$%<6Q9;zjSdMZ@XcN5%s_$v|*Xl7G;2(!s} ze2v1Zi+YlJbuVN>XFkrfsk7~0kaDUoCR|~mK*TF%O8 zB#J~34Mk)ae>5*LJ!f*|aWG8%L-n*1!Nyye>R>c$HhDJ4#lF+F^fuS5aSv_(B)?O# z2&R#n<)MrQiV)hl*<3aJVe#wy$vk^#-OASdG!2>_S5KX+pBK@>9;3nw`n!2M^mWzA zItgdPOFQ|@<8(0Dds2sOsCp4K;Kze2d$z(uB zfsJF9VpzFB9HlhxD5q_>OpMewfa?6`Bb!dBw*xGQg|Sr-fZFRE@8GbZAqwE(Ge>L+ zw^LAkwA-QvGG+gH$FqPMBKF{_*jj+(Obcz(w~vD&qIbb;|9Z;-aXJOYuQus2xh(w~ zE+x_9;Q6@rU!#;N>4;cKjR6I=Aml#mnG+vZ@@tWq9ddYo};*|Faz3a&|f*v#w9Ng){N z0PKVT)E_+wYv~5i3kp{&?fI5SpX>2psk+(;U*LI(S+=B1SLc0u`$&F>%lUH}3dyJy zz;Y`@wDB3E@MA7qnuT97NJ}%6Ht&^5#M9;rU)nM4m^Y<{Bf(og zz0d7^<32JEjLILh1ogg`A?9Qz{)y+FkoP8@M%5c^1naS$hLXlKB#^sW2kP*x^(;t- z)Q3qDX-PxThaBsd=Yk|cQ^_Lh?7*r1x`a`!$?m zE)AL1R7Ns7ZOyoB1Cif0iD%YDrh4KD&rzemhzCgv0qB>pRIb zk)d><$14e62-We3dhKYhpOIk^!ahwZKy-h-Y)*y9p5kj>k>Z)BzquqVg{+b&bkJ2% zx8giqJEb1h$6(8+9bt{^T54DQLRk!ua*toicxi6+O|v+E7rm}ir;oSvzORiPJvDel z>1qY0dBHnpGK(uEN!>kep5q<8_%r!Y%z1ghYPb5*y^&P zVU9!dp1MK>!IdlWM!?d^7TJZ_vFyTBFDk#O&z>wQ)CdjLJM1zP*VsRYZ0$VNcH%YZ zFGLj=(ViJg4gw$Dh_l2T=34D`mzs`LuK!{1X6v1G6e@C4St)7$LwdS|+F5h#{PJU1 z5ozOCo8F%VJo8MvSE2v{W>8S*#V(fjX+gSoc+(KQY~=0ARuCHQligYdC?n>i956srklbsZ41^z)f+Ut-7=X0P}U+q`TPg(L3t?6bpZkG@q zoNa9(`-V2-TDit6uSxQoaHs}B2$G$_2mdgeR2ma>Pu%~;PSbS1clqIOnDrCnhO@Hd z3h{j->_(oEo!1DS;T=M36XN0etgGM1>a2y)_gW8>B^u$llES~<;rs%=i2t7-91!TU z8ZoGt^%dwXBNNz^zClGsI-I?AolQ$!Q%UxC1fURTctNWbFUl65>23@T7nEML*xYsT zd7d#W3HaS0RaO36$J#Y1j@^Hlpnge7;(7Ma;^<`0YB|DCfloJWV4Ldm)d`tXtv{-h z&z6VKlj;Aczs2c|2#YsqEX4B)zI`sVs4yq4NkZYbqezW_uXamB@i*L;cEYXA$ey-2 zfcld}cf>+<_2lb|k#QFaX#dnS-+a&h(aL0GnAWIWh z_nGsO^gpntaVT7j0H1(oMPR9vv!Vp-rlR@Prd7exCG{B@K$Dx(Z~gmit8^(so(SG*k~)1Oj1pY84?v!t(3y= z_OdENVHy39HmRheuCpuOOyrBsn^3#TrivO*-qq#Bv7w1;w!@TYqDg{17+E zHha@qk|6;K|8r#r9T~H{87FIi$YsXy8sb2YiIhyfbVt@4m%H`I9mNtZ46>2R*ec71 zs@b&~1sa~o8=87AufguZNl)s7D-cDs3&ON_6DOfUH0@k((VDFb;TlhMv?vwK*ZY;Y zn1>72P0ve0L;8$KzFh5xSabC&>}SM|_tqx!9&`+#@x6lj&r7+6R}Ho%939zUGd+Ik zxsymgmo@+R`JYE&IRkP?GkF)&6G(aP>F%Fw-C6l#LvyGit`VPhKaJ@!)qS%WXy(4- zGmTf3q3!6Wktv*;ReY-GnSN^+%Tmc^3e&ZC{UNCuIxO>cY~dQ8 z)%KRPr#{Y2sOQ|HrbzO0dRD6Aa|hJX-1ggTDLASmHILwrmPJkvcqT0U)9H@)V}-_1 zhr~onqpt5~UP@aN@y}4ggEf6S{6Ye_3frCQubIcvcpmY)cdX-Tho&~tqFNU~DAh%poX7RH#?O8kD#a zkhun&CQ?^DC=s=N$6Di=^MF6RN`)RdA_EbTb}f>H8RD83Mb*0=+8H{ibN4F<5Cxf& zZ%k8WK;+XML>_3feBR`x^p79rH*Stg}@^w0TS6q?mK+9HO!KSH>8AhFPK@ zR)g3Mi8;l)bIu75va^;fbA112ljr8amV0&v0_q+O?w?IbuQjh!Uyp6UrNFrm8f|CJ z8qMQ9_ixl&Y0TMCNJ6oh=TW<&O7d<|q%A2xcOVDd`$8or&f>4_{mbG1rsahFv}p`} z1A%*@;2fY8S{GoofI6Qi@*FOC_K`)u^_ENq9V7sC(+xmD?eKInOCo+RKfzL~wvMNO z=UFcv%clOH_bW5MdV*D1@f{Cf58Ghj2`^U0qvO;iDMvtc7473VfY!>m6-*#0Dl*r~ zm|4r5_MIZBUrcZHV9bHvvTu;br!jSTo40FmtDGh5c<##20Wp&B3eF zCc-BQuR;3ZRJ0eg1F3vwK0Uj6+;(4?coss5s2?kAJu~{>7Kftwwe-0oKC-9M>d9$^ z^>{=eD0MvI#ecL1IDU6%%Ps}s$mr?iKp+MQ*dGWV%b0|?g5LL)%g8|J4b$2HfAD0sA0bCBc#JQpYQ7d?(luN((Ajyi|NJuDI>GZ8~19HHjh#c8iPZxpH$M?D}| zIA^7k*EhQ^&rrkHFs;<|u_JmKziOd$7x-+{;73*5+41jj&Ih&4l3ZDR*^k0JJ|fw5 zwJ!S-#TK}G-$F*z0Jr2F;YW#5)@bTx2yJ^uWC?xGDu$;j?TL_2JCN0vbpFHXXpcc^ zHX0om(?eFdYVPUy#cw-({+cd9%8aj0_$2fpo~PJ1wF{6`;6D2;=A1|YV7M5zQwos9f$+NIFta-1&%Y2-v@+I|YJv7vWDA zE@;AoSGL8{6IHsQO=&W8GX{-Di{U~s&G)Zag7yPP`WP^gsRu9Yx(HY961fSZ^Nd_3yEH`#b*#Rdr%kyj ziH0vN5-Cnp$kq&3CaKXpu()0iI3&=5=_ z#1&_FVSiR&YMi?;wV>7mwfvK2O8LY%1R{TSrzN}TFcTPF?hfYm_|1lWbcH&}A8ClW8RQJUp4x7NmCo*-y%uCL%p7iTI?dJ+h}TH6OG29F z3nxY&2(YjrIvIC*@b+aP)^U&oez(7%@Of?06x0*>@cw=t#cu(0#D~jrmUe3D zgV~f_gc4zrpl3k&gyutZok-BXn?o#%OH!xv`1U#3$gEU8(2=ixeC>qQlC44t4FQQh zlhv2Gi;%n5@sTk6rJiVyyN@5sr_|Kd_Fd;wn)0>|!wTuntKol0>~(_v?B(*8GY!bw z+DR^*kPdYN=YBTAP9mNgsaH|o}}3Ks(rv%~R|>sON8wST@FP*h}P=)1~(AGr!w zv$a`=;xAUU_aWd6Bprn*=;)zq*7|Zu)0yQvTyNo*w$hN!S8=%Gi-8^=Ro@R6m`wUV zt24@;LnNyPkC;D~o+OKLzELLnB*Lw&H%N5d6mc@+j0oG`p34#CipjNY>DXQDP1x4K zEAX~o+F_olwQ0zC$o#|nIk=e2U)@o56AIK02wE^aZZrikF^s=p^hG@yy>}E38zRKg zji>9eAkCS7$9k`kIW$QwS<60D=a0tW$pDN)KkTPgym-;a?yhiwpfjq6Mhw)aV+Q2FC^z`s_g7Z2Z|_e z?ml~X4dJ?EQM_h8L^VjovY3X{S+gtU!qhKm#BRllOv(~#M!>Iic%!op4sKtR7qfCI z#$}}vd8=y}anz3*C25+65N`|(&mr(@@|aCwxNEc}zWdMm8Dtya+S8gUgTnl#Nw83)Cn_=(P(?N+NZ0f;&RF7qZgDb3zAMdTaykHi=!dGyO{?2g6`pYm?G zIibv5(Xe%*@(ZS(tOc3L<%k?qL|NI!wo}!Z;0NQNZ8zL8B`3?_*)u2)seiK4it`s{ zWsb1w{mQA*@Yhx1S)SiD)E3mum5PcOha6vUqoHYW+$^HdmdqV-9+>ALHGrjYQ5v{OxoH@fAvI4FX#wNQu-R18xW=Ohr z&*@fO?(ac3w=Q?cJ+1PS*=q0XXx;g_&g7@%w^xc0*9->O;0HHg@7a*|PMlR4B3`jP zhyNN$OS#q2gb4NWfw9;qA-d6Da*a!EM5mXMk&e@gGR>SSggp+Id8z?SYlu-sK?F!{VHTsr*m~Gh3G!9r=^Nslgzf zf^^YX)Aa%o!xUjx+lGvy=S|^me*ah-8DrUXv5q7(+xM#P+;}yoYyinK&KjivbRgs} z&@ZU~-~m|aZMO73ZBpkr%Mf1#u zSEfrQBF=cHz**0xBtPN#&t!;WN#U?m^fny+%jPQZ@q7SE61cX0UH#R_F{R{3mZa=h z$G{U?XDAjo&gE>hhr>mvHC1-n65&Yd0^k@Jlg`i z!7D3w%X-rq+fMJBR$W9o)yKMr6hAs^18w}yvF^Tp3p#nU$^C>#B2<07 zvii{ORsv!_@E24q@UW3WNN;wGleIkuB-?eUr@{>FCG=S=G>O?IpM&iM53E zyhWjg!3w4bi1}q|=nO~Wih>XEcUq%aGt}Am3m19}z3p=-ZH$h192Nx$nafe%KV5O$ zfM=tVocg_pPH0x$D7cv<5DPI)OsQJ{@odbQ@Q>bPkY*uOxM3{RaNxis)RRE@^phQg zggL^` z_)4N35S2eC{R?_7D}8p|5nwpMvN}KqeCtnYj9Eg>>{D zi4JBcV|H>F@fs_k3n+DHD_TpedV=Pg7-yrgH?;Y^)~M2z(P2^2-C0$Eh9TrM%jigY zH4neAjT4k zl;xV|VG<@kSsHlfPFQ8DGYMC=Bv)2u%tVnN8m?f6M1%rwUUiPQD5WFwVaD2My!iMn zj+kpxu!na3g>*aVT>jRWZBe!%b4*eiZ?4jrY}Q_!$zPC}#z3mV#Gpb|K!!%cnoCcn ze)AGsB}PeMKT7tuo2ST2b!}yo)OvsRSoRW0Ka+T{K9vFwK|P;J)vZ%(GJp9F4;6$- zSa2oS^VuV5qK?-SDk_p+Rtv*596zIAnGDY*Te3nY-#qO8Urh6~uqjf+myM<7?$aGe z4bwachq`}X?3AD$UuRjWN3tf!h z%&`m)S=st1{rS%q|AIEhM}~o^DXHgN&Yg5~xV1TS1FUAH+sI2w5yv8zh1QD4bD9$& zRxk7DBoXg48CcKV{Uc^n8l;ZGDKz0|DZI9%n;I}Tn<4Mj71pj)zCbtv94#*Jy9rP6 zP&ndzYS@7`SLzj-uC{Gz^Yz>DH>^GPir9t7J|3;sz`uSbI2hAHenEyNsg6AZ74?}X zsWF%Ar2ZnrdZ+--p`*R>X@>ax@9X}*yZcx^AVOeMiFzeAptM1TtbhhlJGfxM#$tRt z9M*8>Y&9#r9C*UFfVgP+VP3lmE_L~E-CA|0>&HtXnPtF$*Rig#*#E`r5N-6 z%M>k5+mP)j-eawIT@~Mx>{*Y-3Sn+QS_AOd@xcU7>Z+~=0Ryz%GuJx^;t%!*R5wCDD zAl?DD7Z5Cz@mrEIzxaWsyWPwJaF$Y1Y85$E$@oC)h}LF{$bP<8XR3NB${ZMSl2V8B zM3dNR8OTwkh^|3W@x=EIaA{fRZ%zBdwAN_2stuwi(1v zmQe4QgCQno!`|!ze$hAcz_=h367m|!Kw9wX==SlYdz>b&REdg7DRerbnVc>uj?*Tr zL#sr2YI0wgK72sMtFlAsQ}uA6q6sqh$jYwMt9FX%p6j~|r4nT*XYfR6<%_8_AYEvt zhE!|w3rS#S^*f4qT>T`AQ%J8TulH?B%@2BMKQp6Fpcu-aJm}zOy`{|5KC2o;OX7fJ zOXE+a@QSQm*FAP@z_c%yNiN!4;;WtOC>^@Z&eqN2*Io5Z>!j@AVcceS<`>2JQ_gG$ z{x5NJ$4GKsSG)2*-uK5r5V|8HmV-CO2RC;safjzm;eu9Xy6J`o>-K-3+$ z!M=0wA1{7?FZ#K~$8XBxQ%k1$qp@fj_FwvwtNq%8il&;8`8C^)Enz>~ZUcTe z3cS<)ii?x|{gF@em0R576)zvjx5A&rPw=?JV)3*;4KrLl1Bstu2kU=vVEx8sxha{kjtAzM5=kwY43s<_g)|9+`#kHQ+Oau+wz`>r$i9hM4;*<9thFm=n%O- z+r-$jUXRh%l0$_=C7VndNyF+AlMWNx$2@Zf!phxK4Q*{22IJVhf8H?+rJ7U?pkhso znKCy1wJ)HufD|iIWw;v_8l!#BwEIeO8e97gTZm0CQ%9 z*0;`4S1qgmmSe5K&gr|IK*1?nK9Zj^V|wydbOG7^<)L2~n!IuhNrY1?ErO3gh^t=< z4nf^(&sCj{oe6YYs%Pb02NX6<9d%3Vq$W;j(2EmQ(ULYxT!*9EZU~0k3D(}DuU(#r zE(#lMgsM-^)}iLAaawOmhyiy>a=t6Up>TPj z;396?KM_O`WSA~1`;AC0U&%9cXAJQT$+j{wq z@FjQHq^Z^Id?QY1ap<`*Ew&+Vj$*_snXZB?b(OFTm6@2B6vN$P{VLExFcN$Fy%4#6pA7&|6ET&VtR-TMtD>~mg+cuzXYK9S z&GFjmyr;o~0l7M7&aSYP_B*n;65FRId96t?N?OLxX%DZ77f24qJEL>!LPpb}Q%7F&oWbf@Op*#psY4n$L6QPgo99J_6%PtCg12`E5#N zZjK`Gk=9;+$os-ysOID<#(?veb4R7wZ8u`K9d1~G+C$!=w1VCXIIpI*)6v3yW}4^% z_kJy!j(DjtfvN8BcAU*zzAO#pI+kCRGRc)^jV9A@gz#_Cc+{>*Bj%HGY$eN>U5>0i3&243B3W;q68gWbTyhth*)E$Ql`|HD%MdynPQ z3c~vQ?j4rCKK8N1=pRMZIPQw*yO9{fJD3Yrml>7O-K(a-#08&t^61(N)Hlr~kJBnQ&q8MnL2APqEJ&DAhK>$ZS}92oAdFoBtTGN1C1IWLrUjbc_?*9+aWO{FJHSlwHBJrD4KMXzoVb^vSmG_iN| zbgQl0Tu$~>rrz^iS3YMIOYOl`RY(C@5Mm}ePX+xmcV#Bv8U(YNIM$z>L$>bd7UJ@Or*rKh>_zR_ev6I5gWc&ZV)xe)E(CHQ^UC zkX%xx`KA28Dl|(+bv%dvtTE7xmvMyNh%8euYblo(Acl+DHxVK^JuXqn5}M-uVHxZ~7jab7#v+xM=45Mw6hzZ| zx(uBf2GP3x;sOWUjf9ElWwIx1CCZen4Fc|-z36eo1g>y^2GUq4Lz~a^M92FnH(oXG z3WjUTrXb3M8{s8AZ+}$OevXN){2YQqW=acaLLc+-4|=K z8_3w!`@N`#!tLvkUzL|6krUSubl8Z~)PDZSpP+bPfZGSeMfs^2=WC=s^_4%pSV^M+ z$^Gqn4`5LS;!#34<&?{M-3hVWVgU6s{Fpcanbl5D!xjJtY#k=t^ev^Vy}+Z|s4*dF zCGQN}6HG&0!G=k3WnhbKYoNo0+^c|o=kxLUAK!Zxg$j!gGJ#4~PXxh?O0V>t9{)9! zBl-7;KQx7<=km5^0~YITeAH8=PPURw*3Ly1xKV2 zJ}?lAa{uvJUTt#Dk($xhnLY^)Rm#?TDAI-pZK0^P)K?Yd?aJ{do;iJR=~?>N$!M(`Tt|;EW?^^ z{BVztfuM+pbScs)-JmESBPOF;Ng27(tq&<9q@^Xs7~L>Zi4mh2-3_A~MtJu8&v|jU zE_kuGjQzgc@wpk#dZp~dM=x3490`qDLRNh!JZ{sX7{Go}C|Ov~MVfQt#;*+Wx9}PL zRo7Rmcm~_ImOq-Jk{(3WXhxfL%jP>Wkp*x1IB4ciw{oBT9us_LwP_U-f69@h*NS;U zT#>mc8y3GQ>KL4JpvsYwym~ar^fG%RQ`UL!R0Q+*V7qKx;rrggm)A>mMWZ%ex`W3o z9e75T&b7hmACz|q_L=^PN8pXa7ITyNB~a}DT|Lh4Pu*#5AGBHFx6#uX=%^*fcONU4 zt~yDbT$ZEt0*I6RSu>asjnoA9-!WR4B5}%fu_YnI^c9l#r_2P%=tGzCFeliDC)Bia^ZFN%KVi- z3FXsWHJBgF1+$X%W|F9tf(uqWGgoyWiveaoHqp>zG-vBiVMJc0En~^}>%%(BDYqWI z%q&OVycN?CSV5MmWgzxZ6MVR}z}q=*>eC(b#}nMdhcq?@M0)9U%LbhP?{EuT{%6a# z7`r6(VTLd;Uv{Xr{7>7fkfdk+KJ>jt>sfla!S>6lHM>giQ;yRe$7lZSA|`pAbk?rD z>;fTlt_j@QpdusDW&D6D-*p!q(l;?%Fi3s)V&Pp@xZ8b8Ktr~Kq=p7wc5%^x5bSk}ap^iD_X&5Y%MFk<8}8NH+sv)8&;`Ww)6Y9xdYU022*;YpM?4riEOxLs(*AGzkuQ**uPF zb3!c}Z?7ut7k{JMs43!hl9vj*8>Nd9MlXKxY}!u#C1R%q)s{9WCC^}y%8Vj#!5?(L zEsN@Jx%&MqR82+#zx(~Jf2}C?=@Os-A{-Os5AVMCzjuVb`K9&+_0zIzlpj$?+3oia zXy@2?cG35Da2uD9-bV6{mi#dyyA3n7G!rY?>d^^NEhv?s zNlbTgsW}OJHZlwzO?TWYHC;$yENB{)pnvR6%FNZ8tA~Eh$F3Mf22BL+e^Wq-s5Q0qHsV}?YWod>6gND;Ba+Xowc)_&*F045@{o!dppjtxMtyr zeti^=jt(!M3MtIMUqYzH8eu+HL@2z8pJvn0kitAe?aQ(h={d@By)56?LyNrWc^a3a zz96`IO{t|B)CeXSRVu7CirZ4MAU)7E6YD2vtUCf$4(YGyR2>g-dLlr@RhqKtYP1Gd z+tp~)kSA@-<@Ht+d&Rb(?nj<@blIXp?YZ6M)gQn++8M^IeN~oRGd&*CNjnCY97rFx zOKEB zwJ~TT;WLcLLAR6hB9xbC* z#M#7a?V9Gg65`&EsdhJy;ZhrPu*+{=R6KEnjp(-<0?4u-)ZdJXXt1eqem@`IUf<`(?uW^|T}GCF3z_Lvy_p$zpL&LL@FA2a{y%Dur#rP`mxA zh(VBEL)4mnGgraqWrKjx*;#LjE$*_jkTnh88u6VWdc04i&MQy}x1fDU!G6o5EpP&l zc=9tlDcP>1M};5L54-4H+j|GJ^yfa)aGrlbu(!>czhM-U(FaD2Me6IEed$4%WhnjB z6gEWnjbYTQF}F+x8=1QagX%dKO^sm>j{Bi^eG}%TV;0VcEIzeMxz z+mw|vFPwK5?7Gf{{H0q44{*?tFA96FES8TxUnnx$gxL$64A;9E9hWBlAFdvMA_u~xfq_|Q_342EO zsxV(l2?J|KCud)$Udyc+Msiovu-?|NKyAvFC6I6S!}03LCv-ed{M@N!+S+80!}?b3 zhRS*DxZzd7nyAy4ZGO29b^og5d?40Jm`+COT`#4@;A4jM34 zhemR_kRMi7y$=-MIpdVy=<3G?nP+;Z)EI^sYzJkkL$Xiq4z1sbNhJy895@H;tn3 zrXqnfieY-#sABK)Nc7-W(I%trQZWRSl(5?^(mOO)v0yZ#_^f0VFGGwNbkDiSK8qo^eworDzXe(e%GhwAUG-lgoLJ+h%aQ*rI5In z;d_L@;SJNoUn1iM&c8$%e~GSKWoJ(oHdh#LO6=r+5ZdhrA2@*3CdR(1zm`(h2+Or2 z7hUFIp(kO1dOVQhS5N5FLY%JBf&aE(H%h>x6<9aCj^uWO8_zH*7@O>YN`?A_g4r(& zE)e5%7a}n+F()|v=%^FZV%gq=>nXV^5|`Wjy{zw|M)5AuNUQvcM4n*{+hhscgE5_b zI^q;&WLa#GXYtl}l1OuzucCOlSE4~bfctE+G9PXYNTg46Drn1a@P;PDfd)SbCw_2? z!^eSQl*6z1Z5@d3nZLhx6so({HRjhIR1H7?%KUA9wyo-VBl?s3bNR%U2>*?21a3I6pJ?I281%lJOr>W?^ z;kuUHrxi>T#)u(?TsP65empN}@8OjEhxU=;x#%qADYY1k!SbGsJYo5|fVsla4A&c1 zW8aUE!~%e%2AfdribIZM1}`lX(m1N7oy1zH)CA9TBe_m-LH>11c*Nj%J8hpzF>#Qo zDR-wwS<6Jj<4?_@>CISa6u=GF;O@1YH_}enyL72yJ{t(xB?jOUz}mh`$+drp9;A!4 zlp&4BvISduYq<5JBpWBXzqUz}b7%Q%kg<@m%p*>mz2l1FoT3J}Bg&Fc%gn z3GwB4?)?Z9HKsv&MDJJcG|PrmFu(ZW-~}IlsPX3t``E~h+^MEE^^}lO$P-awq zqzFgzBv^FX4abdPcAI^kJ)A$jo7PHp(F4Y3JbIKNuQ!Gpao1iZ&_W~cjCl(l=>NRn zE!CyG$QjclgSL}%yE*#(E{j-ljbuM2mo7XnXpQGPS{qRp(h6X^ee-VL;5=LG=)R|# z42I=dz=BoB%(glS&&gUZ1RtWxt!Q8$&y!%M;FGoacKFv-+0UoQ+YsQYR+X~fma<#D z_bY}y;K3OFn=;KC2){>SGWXl-4-Hfki@?R-A8)PXIZW3QA2m49JkOP^9^ZD4C*%2% zV1mTh4h`tL;SU8P4QR`Ui(f3S*r|%fX$Z_lx$g&8Hx`Z-N$b9nI)=nHM|E=ceyJds zr@(d7Nl_#HF#hU>k&F`6gZcs&Rcp4W`}~w3I1&V_h2=6J^anJ2i}$tP2Ag3=+sphU z3#PVt&c@dz#&`$d+=Y(Cw!CDX5?NOAZekkBq*Plomo8u`kr09U9$XXm^}|9f*cr%h zCnm9ru;yVOELiFHx2XAq;2vr1jXwhOmVZ(|L<# z?>b(8kgPYBjTjKkkkZUs>119Ip~iG1fM?Xp6n-PzkGMJ>5I zy2?|ASIs9PiU&KJ0Oqc%+^b!8&+Ov%%)MY<7NtUG0U~juPNYH!W+I`rVq>xti@n1x zxq&>QYu^h4z-T>}gL8?A>C%vP0NnR6yNc+vft{__j&{-Hm%?d6R;3%&Z${NloC4r? zq+WQ3Fi5i(kRP1Gz|Gn_NU7}FWGSMWEJ++gI^wUJy-x)unm9|qo~Q0|ye4i=)@w=x zgfJl0MMJI3&+$}3eA+Q9Ty#qYJhq8`B06$zO-vPaplC*ob=)fSu_@Rbjoy+F^lqxd z*%seKJ4t)S@F9#^7jTVUe9Eu{9&EvkA!J}~dXT+BI)LZUBTJh;Db@_mg%RWB^~ilb zvKH;T;XeTDp!UR`@Jf49A|ZMSx$6VuvL;6d(N1T$y$K+e9Wjmy(i=${FvAS0A5C_# z|NQKFBNn-9?!}O?YimeQwD#43lcOA0YGA&Xq##+EnQwfHze^>&VPx<=Uf--2WDm} zk8+1=j$i6ZyDWp8nI28B>3Uv&XFjJA+hfYUCvQ^$=(#BKj zi)Jn3Q+E(Uj(4h#EiOe>Rpk+{RsyNp+lK2B)#&CFi`h9=#F!Z^9X@YljdCQ-?7mY$ zY6{m^HD;$e6-~*$Wp7pZD96b~Ch)Dqz`mMid=xz3f{-V%5s>s6)CT7Y#N)qx5zDmp zDro2odp;p~L;FPM*JUTg(aYf;Ken!Q%lXLU?f?gw#fO(5vt7gMgN_ybChJ3`LWo}~ zE!C*&04FVc^T@mFBnq+a|6?0?Bu!{EoK(p19hYrAViv6UOY~H5ZzS+G^^R>_2OVFX zpM+?Z9cwj!oQf5n?|Qav?&9_6*})iWAD~b%Ed6CozR$j}g>rO_z=xzP1*yndjqDod zhc|FFi^_!=YK{vrJ@4-Qmaf!E@b$E%fB#30tEhy$H=#)Dn3x=I0M@RWir8%BJc$z_ zw7|s%h?Z@o2`~~*k<+o1^73|9{^1u}vUJ-PeL0yNp@qUuDKr|ZPMrsFg*}DvCw!9T zzdb9Y(dyuMU9GSd}Efqa`{u%0h}u#MOQD95ER~_OQM`zdMK@@r!nNnRXAi4uB>3` zjUwV=bW*HS5!K}0LpBAQ1U6*ijjXIdzRz!#<%a2IRYFo~khFw8W)h?h+V8!O8Uu^P z!)8}YtupLnOKtfwDzrFM(%24q=SBL~=VxwMvd4^Ctr<&WdO5Wmt0_2Zo%7#W^w8k% z`eqoY#yUj5Z9(hu#jpwU?cJ*?7gwsVBC%4Be)mGPlFyJZ;g@Z}@RH+M;6Hph4e42~ z)MX-slp{4lUd2g5HevBWXp60<@PkSoK`~5loN8zKr z#d{wgeBz@DnxS~g8zPwTcXtNGKZ<)wx50#TuVCsw{C+M<$32`_VB8EeT$nHIl=U)L z?=p4^#qIv;@E@5~*rw_V!_)XlGH?-lq#Vo=BG#W+=q#VtR5jSpV5NxD@|%hU;2|bc zUw@%^e^lRuwsuAqa;E(wA<)OrEpJOsSkQzIwZ`H42Rxi9 zYxJKlSb*K~Aj4Se5R|{1>PiZ#UxDw&L%NjS8A+!V9FL|OY}Y;&429$DchCs+bl`Mz z>TO|tDtg!!GhyBrNV(-)J@c1HM5B!H7$$Fry0zazHHlqVtKAXGAo2-3aWuTrA2kQN zD;#Bh?mK1Koc>FM9~*7{tT4#|tf=8-a0HB$lJs)u*vT;+M}JsZ$Tr6E(gh`*$VLZ-{6#-j=*8cU>1+TdtoK<-kIGk>QWMs$3^ z%15_kKMSy2JZ^EQKkdwnfZHIxlrJY6_|r1m`JO>M1s~w(`D=4E0L@()#9S@3rJY6_ zL8tg><|r0?;_eMxkR#8gIof_kt)&Zbcpe$Ht}^ELm9V>t8?0s$4xzI5bTul9Y>tr- zT|7D{$6L}05$;l3HG`|-5?<*-SwQgS1}{VHgg{vJVS5A3eF^Qp4wJ)ZKIgAe`**GZU`=bz!Sza!**!{ScseX+mf$dZ-eO`|Dq=T&mi~vcQoPlg(+u6;b3)t zaYa<0Q4-dcuQ@CCF6HOsMp^|Af@CDnYd=@`y8y)Z-$lfE_>za_(E;N4uC3Z7po zOEZ@U5S+j9nLgxNEA{eD+R!_E+Ll zfYq)~uzsp^^>3lgd_U2O@^T@2REeSsR^5kA>Q2DaCxScIlrEv zL+WIAd!xKvYg(mFO#z0cBcA%^gXW3*ygx@eX@2IXE;-jBGk_zt<=`_ z$#h^bdp5?nBz;PkY5AJ+*NCC<;-R8W9=tRA5wfv zMS-dQx!Z5MFJ1T1LX!K>#jg~rPd7?nA_ZM@mJahC1W5rIPNR0)Qiser7X8UhqpSv z0qgOE_^>Lvn7vmGr+0pi{Nc9Q;#P6=kM6WP*I%OWPLx;KE7lAip;XA!wUXJq7-yyg z^#cxNqn))2a9JwruDyWfW6}lwNW6dY@6HNglI**P@{<`9T8 zq8LL$_&a8@PG!h#mrlpXI*)%$UFx9r_|yjb#1$58HcHoeVP9)B-nOdie*OLW5nxXt zR^i)l68i$a_24IcF#HkyQ4l2Et~Pb^z;@0zAuBt~om_k#E_$#*^Zb^rB}`;#7liZF z*)-L3jXcxLdwm>vZ0sprvzHzklZ_MCKe07)+t3v0gVVWnIWYO0t3&q9l*uEU$3kSl ziTvCqpgBxmwC7HiO5_dM{kVhLs(=E_8#w)_BkGcrN2AMsTqM5fXhkm~av4rtKDyez zhaCm>hR$%dp_t&QCz4U}_zA@(EVo^%dahcZX0Gmx^P@~=mx{?A)ZuNKqgTm>v)gJx z;ZefNj$G=fjPp<~6TK3>M4uCO-E{!j=aW@%k(V@_w;`EY%yAuOjGl*}f_w$~Mf#7* zI8{%soMQ+{rRJ=BuZj0q0j{B3cP_o+LrpR6URjMZ$4^@;-A9dqcemY~Pv*G|ZpO!( zc%&4e%N^!6K6#!hg5P`k(_1~HD@sjV&;tp7^6*5=U2KFQ`0z+1TW#-U5~<18kf!v_ z&K5^Tm6;3{g`KR9AG=P7+a1DUTlcP`LM&zKl|EvfU_&Oc+&(D6tGtN$7B=>fu7A3v z`HH2%^&l#B_g?g&zHIvrzzGptaznA%#CJ%@CHQbW>+aVbS4CI)YXodXsivhD&x`ly z5=JFHjuYO69EDZdsUoMffG^KuzZMB=6+7>IAE_Eu98fnH=P1lK8$lQ~hf)BLC^6YH zhWF`8ZNYhJuvdyt9tP#ZDj9nqFn-I153oGzM-P0I^VKCjnCU$pppcB;CJ^8>Q63hQu41@il-1;m$ZjiwEp%`RL@ z%^BCXBi%V`RaFs_9A~1O?=VYU%eSN3!Kk#Cp=S%72F-T5veW;x+NWNg0ma4>CxAC6 zfD9=K+x&GBQnd9|6t9@Y^r4V~sJ_`f-f~8+67^&{Uyec(F3G2mFba=M6{4mJM6#G_)+gcAKylTYBl7N{o$qTx8B}Sy6x|-; zLmr%=*>6=sN!WAaI+I|0sQJ*%Y?rP0)g^#4zw0RD?!T0Ijg&ckvo)p?w(SX@Obo_C zy^L+`czDSzscR~|CpWz2g!(%HQEr;l=fWz$^Y;s^n?_v~gSZ*jIFzc6RHz+F+19dn9Pct>EAA(?)v~dS>d8i@8?UvwO?UdDL4GVNUS0l?C$8t_(!8?-m~EKXemF3 z)+h0q0UxiHY33*Vy9eKvT!1l~TH5a$BhJ9KtF~MHNDPceLd%-4LWdpW7yKA10pp7* zIbl9IJ{IyihKZnS{nYBylU>bLJel3{-bFVIQgPpqOmJVAE>9i$-|3!EUbfq(6O84W z^W;oC80d!3W_gG62IHertyf`zia*DINCDYXvFej}3ug=d9f8oegiG2{!FaB$O^+35 zzq!-WRm?fvrfb0o8w2cI^eL;N|J|2IPYF3}w>uBxZ{C(fyqXwN|Mc`}Kwj#sDd`J* z5JBv}bNaH!^^Zh%B3pd!BtnAh9Ke-+?0mMP3f#T+r^DRTU?e^M^2ZQ$;{%g4G zkpsoSN?40arb&^})?DBJQlM(4D+-gxl%s*UF}JlRF}hm*+_jXP)4z%A2#tk@uS1EH zI_1A;rklT4Co1cW(Fnrqa=?g4)7elOH+QLI5J&t(ye0-`6-WQG_y4;%3D?&Bs?~n= zcvojRji#G%uz9m!_ya2xVfX&O%fXzL@oTe*uBpm-11wcNM;85i679~Y-C_1F+VnF% zeQ=t|Q7iL5`Ope_B+>&hOj6wYAQd>w3>@aqRtR1{K zqv2}xNyAe>e%)+Zu6k#M1Ps;4Y=UdVe2MKf2Z9SnK?ru9LF~vS4kE4OM`WcWTv>$cQk*&Ie?*C|mM59XIDOq|N`=i8-+pd)LFvFQa;SB` z%uj<**=XcgM7mdHCQEi;(ge2}?!KQVZ~CX(yT`aPAK0bv0NqLQ*rOTKk58}0u)R5I7;P!)AZ!*MZf!aV4a(NKfjf=*tWBiGcl~Ms$*Jgu3tvQCKu#pwzV5y z)b^P542g*IifN~hLWgNm@$;zi)`0T3OS!q+?dZv$ZxKc-k@^**dt;o6Ivd1JD{T`E zx17x`XX~8z#_55}euK$>iGW?J)~@p<1dj#?Wa(~#s_>s#6m_*x1GY4DREvR`Pl_X7 z@p|!0c_}*ZX5a#jY9%E_@lNgeNZfzI&}jlD0%@ZJ1@D@uj|KoQVloYbu{# z;$6jP_S=ua=>@eb+;ZdI8GBwP?ua-DwC}u?tk`%8|Ksrfqn;vggCCA3VRbf_CWJj& z!%wv|SXN2-NN2Zj5`ak2^aDkjjTrbUWIhp@8OP4qr}o#)uJB9i%63cW`H?^MUjIw9 zXgTXuF5_ z6?r<|Kokc&egrs}*VNMFKaRjZNHHQ6ss1;@&kO@uSheh0XEt$Uxpx6RsxB4X#vRm$ za?&a1`&HvVpGdPj*b>J(FBDFjH5SYgdR&WIOK}_BgQM39h^>(#ULMW(!nm~M0mz}S zXo+}c8UQX0O30N$U75;}tQ?4|{rG3~-bdOuL|V{_wVKP}?;fp@=bP4ZM~GWdOVhFy zg|E+%J*^kiPcti>pXDhYzHPK0yK+v^-!sG1A zkJnUS!Lu02Q9t+MMkY|rP2znSgFkUY7YJOteD>1x(opA2eD}yX&uE^S_$c*biY;YN?>$xOC_Q6pa`cva-Ix zeX=xBSRA={&Jl?#O+c23F!CX~Ym*!K{Ag*f$W{o%cekK(d$kiQYg>hOU4@9d;$cUG z$#|j98>9c4yiSr+^&X>XRyODONk?RPvnA+5_3AKuY)rngtMk*NgRiAx*#aQoI*{wZ zogYNR-S-9F=-OUqrQP(a#Bh7xl1v~2eE*v+xGR2^)f>1Rh=MKi1UP*|YHxHof)p+c zSTZcEaD19-W3e_&S=#1~ssI&%-(^Jo1OqRXXT6zY!A-+kd`HBmNOc z@uI6o=d0Uk&jv-WtG#E7JTdF@e8x{x9}Ai7??lEkvIw8wk)+)+-pN)iU5l+xFq#D+ z4qkE5jlq^HUwTalZ<-5~xtc6@i%zh5_A;?M<@(Y@VRAjGQR&;g^hmBG=wy~QJgV1U zwQw8NSCrC)WcL-d-?QCvE3Dj8)iWIcO9#i#R)CeRa{L8i`c2V=j5utvo~CqyZ)*B* z7P9r2267o1Cmku1RJ7TW-!hqH?2Hx^qVM!(Ub&j}5gyRSIb8fvpWubhCeQ0bZ@!<_ zlD@}A`8m-*I}PRG>5;Q^h3^KD5rx^8;R_xH11SlVN_p#4>DY9 zwwA(xunCL#EDWgC#mSI|Jk@?8sO@X1EB|!qy<}L21ew-aw)6+^yJco_E^prQjQdm6 z5b|&^L!oKI&bz(siujJ8a4=I5#f(6QX|eAsiI;U2?l6%O-)dksu`M&YXOaH>7PYMr z!kVR5pO`X7($d5%bL1$zOBlWK|=RHmh5s5IW^qL<1VLLT>^mir)4t*9>Vm-Nbu$qCg#lgHIXKcOimC3{=9jAiedJz{rsWoTQ%cn>Y}E~)-B z)V$==eD*%qB}=5dD8J3HPy4l#sFCnsRZzyone>3S$zLM+WY9CezM^KKVaGO&Yjvhk zyBm^FadTb=lF;i_kD(E@E6VD-AI`DQ<^gy01G@^1+_(q-BbDd6(`kySAJzS^?mS~nJx z{YEGbJfv0qRC zu3(!9jXWOfa%?kN$vSEP8hcUdXgg;7k-?i3*H%97| zkETJjFk2Hc9^&}sT{R{#-MpN&PTF;o+|06}4a*fC@na+tAZ)pVQwhSo=Ye+eu|PO4 zZyUn}Wi*h?j7SLkTwo^YJaVaVda?|m(jVtyn3qL4BV-`>mnhGO-M2xfaC(`FySJEK z+PFu+QSe)`?uCz=Av9PfII zZ8;~IRgRKWPC#}ZZt!mq3py?})S59imN$(EGL7kTOaF+7gI-IXY@Esm_OGuk_xfw2 zi&~%1S}UNoJm$HE1x$3AK;xjK9>`K!2;Wk%C_YQhWOB9(cm#(}AY6YE^fzKgRMQQ) z_b_$^K84N!gA=rYnJ%su<{}EQ4g>aT{hgAh)()?O9!48LJmq2E7D3T{VAbH}|Flm2 z8w~$`5S7GmD>9M%gp&G&s%Flb#3}oRt~rd|G4_pBQ7WuTAlC@~e*RT0ntl~f48~|Q zMz!eLl5mM#R+Q7tYH#1`u4Cy0p2!;SD}1R<+(Pf_fBfhYnN7vl`&w1?+RTtXQ|=HB z?~^~xm(+#?bQILCj-1?`Hu=)(!;;OyF?TexILJ|V^>J*gH>ZBIU>rd&gk0ahm!?{i zxh)%GFzRIK``OtwIMIN6$+?e&hvHg{t;O=FP|&05GTBAxMDb|l;PM+Ns%;GmgAf3gQp2Om!h)&`@6rRw16T%%%$JITzJKE ze5rQ*0o`;9zPM8~F2paq8#t$SCdopkt5f5vs*NN;X}n!>*_pukh=CzRnr`b=BnX-V zTLtSS-bcKJ?j>*|S;`eHN3r-)I#s?h2?=IH+h~JZCi-=Lz<}rUyIf7J$jYqhY2fgp z{ZFvCdkq;iyremh6|T|LXUmYjQ3vlI8g0@AhG?}!+Hs7te^)*8JrO+gH*OHGeO3f2 zmTS^UV5SjN6dCaYDl&@J@aQH#YxA{`oXu}`erD$pkAxy8av3?+m?Z`?yMTfDM*Kj~ zI4|Z+ZB1(i?W}YJT$SzkIesG(-7sT_{k&{!&#!A>Hk#O58&^btD+#Ej#+}IUYwn%F z4ThVBcK7&&I!SuTr!M(gvvc9@a7BD#Uy~F)ji_~3GH2&wsF%FCLfgh*^3Dpz%ya*6 z1)Z5LRsM6EYcG4LggIl3^rRa9eEVZEla!*YqvmsS8!S0uDGJ(?BXKA)PA4~KBts(UBZcCB{J*uVY z1Fh{obNS5{d&OR3Vw@z(kdB-Qru2nsH=9{LcxQT`ea~p|rR-XUQ$hx|`6daa7lg z+0v18qK+q$Jc9%jQ3Tw~a=-VhC_!(No$14IAO$WH<4(agxl>EO+&W zbN$`PoG~HBcE;^=!Jihm9WHm1aWi6Pc-sg*heSZYtEheffaZQkuYFu!vq; zn(5Y(s-MvYbDz`%fAK)ND)j7cvI}(0c1^Ceek{=p1;J^Ca++oZdjy9xYpe&N1D^2{ zuv)h{|7#X7I25$7ht7CCy6{etczTUpZB=x$TI- z9yxk+%1{`XRK0@#+1FmR1>77qmnQRZ+@}vi9kNIh9?UagkL(Kqz0SuBmKOBT>k{gx zY@&Ts1{HdI1Dr;^>f%CUAOHec(lN3gyqx-SofTj;>Bj~8mo2YSp3U^F@z)Gd!`Rgf zi`{qmN+ZGn|Nh5w)Q#ApaEnBTAEe-y&p%&UxJ{)lEB($g))r?7PbW}D2Gs#1xMeemKcw=t0Q2ieAR`jTZiq z&(jH>LMCW1OsX3`KB7()5+w_T+B(`%hgWOF5+qvG``{d-?kZ_hB;>`S+3Q`nOOO4!KG)BB31LeN?>&S7I-R zU-8JACwtW7*zul)UzOC#AX`@ zAabr~vZhbF(ReA{U*qs88jWxl+L~G7%#woz^>XHHq;o(=OyYuE5=y# z44JgCtrq@H*}8=P7ktuZ-IZq33E%&{^j+ta{Phq&h_`^yM1J+(OOE>~xUhA4!R-&W z^K3O-0Twr5%KHRE{%2#VE>iotBPpA_kCWBSiR#UYm_k69D*67GAQ z9R(qFU-CW}f$U_5X8bblf28n}YBf+urajjd9ggC#Z@DDzdve6`)6*<+>+{dk?1~uP z%>XN1?T`6MNAFR}dBrk#lL4naMlrh9W-Pbph;J&-sqEB-1EW($MPc&Ge^2PSfIrB8 z$-^K0cx=EIE)&-EQ$Bn4p5U)PM-Lwgg+YV639b4)m3oq|lV8nIG?C|QN+#1SB=u(F|fnRN+3J7fj+o#2kfdGP`E9LtTcJ; zuW3UczmIYg6Vx_$5|h@u90}S{**mb06BEM5+w(Qh|GURwfE`yqx2G8jF41EV4#z!0 zfm<|O1LE=FJw9=2 z(kmwffW1AGjv({ZG&?$xxn*8lnQY!dP&~ZIm>W9AW^j#ZLbYIh5X?PUV~8Qx<71*v zHBwb{*8I-wLA926Qa|j*ynzDF;ns7igYF`!htK=LVIw7 z2rIF5w!r~J;?v<;Yqd`Bz1D9#7n2(?)FN^Ff|z7>^qQ0WPZvVi-iBwjuOV;~bWugY zGzqzVF)nClPeUy(AzlHPYN2b=6hWio+fp~eOGHEX0g+A!Ubu#I&2y_?m#x~_hcUrl z?9WbRzoW;G93lEzm^f3qzRfI~I_kPgqonNfG;S5I&gvtS+@QR+{5+F&7f>^}>iJc1 zijG%CjT!Oo=M|F0?&uMrOp@8zVOi0tTBv3WuvV(uCN15?9CyZ{qFK=I;y51vk~ z({nf>*IdIy%TQy@b~IU}rv1&hck#7m24YKeiRYp)IG2Y;TAiJp4Nlx1l5rg5Xt`WO zTElJJmI!cCqX5XTIn9L>m4J#%wi*&&!#Sy1q$rFW(``E$zyQMm9T$n1&7-#JL*^`q zW?s{RAjU8?6;178u3|K5A1H7Z^q0sXV(8>lI!@;`j!(@WwK_g_V3R2A{`uh;f<8uA zD_I=4D_e(k+QoH6B!Z!a=n*B)1~@$E--Z%;r+_`5^qp%8+iO9NZi$ZE!MoZ4{o{C}&VRE>j~e0hB3__`@-+V30wX>1HdMAk@bDTl$B;Ac zmN=lM#$Z?x}zs3a0i*w0u-lC~C`(wG~a{%XU?4F(t*~0{>Nww@EQ` zH@Fqy(WR2?#Fo%P9O}y}`)IncUK{T-YitqT?z>xn`37XW%OTxv6jgE0N&x{SKn3~S5TFdx4>Vk1RcH(w4^&Q(JQ-mtg4vfC@?4&F6ZBL zg{?Yzv7&T^tvHe`)5l)hTPnA~6Qygoc}Pqk+ADFHo>O-ZvtZR%3i4MP*&s^jkt+%J zSeLp0uylQoTu`vN`Jlk6cji&T7ji-A)%2T5z#_un;vI$YHQJvHZiOADX;*pUPeu z`3{rnZ8F~J*^h>J%{)+FljOrZVYAnZ60grq|Mr!Dj$pRHr#mp^8e$W<1{Wf&4-GkzC`RMu@h(eC__~c5&TfRO^_pG` zl|(_I1CqA%TIB+~3M0P)uPI?swWX;2dn^^|8s0^6P1ronIn%y%id`Af8> zvB|+eF2vetj}NDVc+{x}m(~E7(4sL&9ASny+HcZ-(oD8luN(uP_42DuJ!@gh)>a=q zl{RcdfP~$wY0(N1g8AgmF#2MT1H2I5ue$!FV(W?FND zk0IVqQdEX!Wnc0P6xzsMSn9)c+g< z8-%`}l7IH(Rqq8ycdaU7DCj*(7t7IIsUEbdiOI2|UF$AYA9NpzB_V4?l2BH517jbE zcMCh_St-8H>#hZYOO>GJAgC2x#0ZLywYJte&YRc99l6 z%fkxyQ?^TrI|@TE?~6FrOP@P5SQuM(5B0+qD;8nrq}gsEEt>A2i+C&Z0z#I7h1Efw z)Gs;qQs$KflDt>tN&fVjY7EA|CBMDrge6Wo?f;PVmSIsw?HcGHij<&)q@Xki3|%5f z!_ZwrNH@|TF(@G2F*Fhb3@{+wAf1wfG}0wq(w^7v+xxoqIcI)MF+X4p>wTVeKX=&Q ze$%=*=e^C5D0vgjIfI+w{4j||X_Ps;>%<=``dfpsu9*Vw>w&XJij%Ikp1ngR4c3gbCvH&9-^186rQwO-r^dem@nm< z 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 M0e$3v%zu;r2ThWJWdHyG literal 0 HcmV?d00001 From 81c808692e13f45922f7716b8c698e1537bc2e1a Mon Sep 17 00:00:00 2001 From: "jove@bisquerra.com" Date: Sat, 2 May 2020 22:00:04 +0200 Subject: [PATCH 300/780] NEW Bar Restaurant tab and Auto order --- htdocs/core/lib/takepos.lib.php | 8 ++ htdocs/langs/en_US/cashdesk.lang | 4 +- htdocs/takepos/admin/bar.php | 178 +++++++++++++++++++++++++++++++ htdocs/takepos/admin/setup.php | 55 ---------- htdocs/takepos/ajax/ajax.php | 6 ++ htdocs/takepos/auto_order.php | 29 +++++ htdocs/takepos/genimg/qr.php | 33 ++++++ htdocs/takepos/invoice.php | 7 +- htdocs/takepos/phone.php | 31 ++++-- 9 files changed, 287 insertions(+), 64 deletions(-) create mode 100644 htdocs/takepos/admin/bar.php create mode 100644 htdocs/takepos/auto_order.php create mode 100644 htdocs/takepos/genimg/qr.php diff --git a/htdocs/core/lib/takepos.lib.php b/htdocs/core/lib/takepos.lib.php index 8a883ceef91..729952916ad 100644 --- a/htdocs/core/lib/takepos.lib.php +++ b/htdocs/core/lib/takepos.lib.php @@ -42,6 +42,14 @@ function takepos_prepare_head() $head[$h][1] = $langs->trans("Receipt"); $head[$h][2] = 'receipt'; $h++; + + if ($conf->global->TAKEPOS_BAR_RESTAURANT) + { + $head[$h][0] = DOL_URL_ROOT.'/takepos/admin/bar.php'; + $head[$h][1] = $langs->trans("BarRestaurant"); + $head[$h][2] = 'bar'; + $h++; + } $numterminals = max(1, $conf->global->TAKEPOS_NUM_TERMINALS); for ($i = 1; $i <= $numterminals; $i++) diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index f2bc989b953..b22a7b83166 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -105,4 +105,6 @@ CashReport=Cash report MainPrinterToUse=Main printer to use OrderPrinterToUse=Order printer to use MainTemplateToUse=Main template to use -OrderTemplateToUse=Order template to use \ No newline at end of file +OrderTemplateToUse=Order template to use +BarRestaurant=Bar Restaurant +AutoOrder=Customer auto order \ No newline at end of file diff --git a/htdocs/takepos/admin/bar.php b/htdocs/takepos/admin/bar.php new file mode 100644 index 00000000000..16fccf85147 --- /dev/null +++ b/htdocs/takepos/admin/bar.php @@ -0,0 +1,178 @@ + + * Copyright (C) 2011-2017 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 + * (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/takepos/admin/bar.php + * \ingroup takepos + * \brief Setup page for TakePos module - Bar Restaurant features + */ + +require '../../main.inc.php'; // Load $user and permissions +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; +require_once DOL_DOCUMENT_ROOT."/core/lib/takepos.lib.php"; + +// Security check +if (!$user->admin) accessforbidden(); + +$langs->loadLangs(array("admin", "cashdesk", "printing")); + +global $db; + +/* + * Actions + */ + +if (GETPOST('action', 'alpha') == 'set') +{ + $db->begin(); + + dol_syslog("admin/cashdesk: level ".GETPOST('level', 'alpha')); + + if (!$res > 0) $error++; + + if (!$error) + { + $db->commit(); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); + } + else + { + $db->rollback(); + setEventMessages($langs->trans("Error"), null, 'errors'); + } +} + + +/* + * View + */ + +$form = new Form($db); +$formproduct = new FormProduct($db); + +llxHeader('', $langs->trans("CashDeskSetup")); + +$linkback = ''.$langs->trans("BackToModuleList").''; +print load_fiche_titre($langs->trans("CashDeskSetup").' (TakePOS)', $linkback, 'title_setup'); +$head = takepos_prepare_head(); +dol_fiche_head($head, 'bar', 'TakePOS', -1); +print '
'; + + +// Mode +print ''; +print ''; +print ''; + +print '
'; +print ''; +print ''; +print ''; +print "\n"; + +if ($conf->global->TAKEPOS_BAR_RESTAURANT && $conf->global->TAKEPOS_PRINT_METHOD != "browser") { + print ''; + + print ''; +} + +print ''; + +print ''; + +if ($conf->global->TAKEPOS_SUPPLEMENTS) +{ + print '\n"; +} + +print ''; + + +print '
'.$langs->trans("Parameters").''.$langs->trans("Value").'
'; + print $langs->trans("OrderPrinters").' ('.$langs->trans("Setup").')'; + print ''; + print ajax_constantonoff("TAKEPOS_ORDER_PRINTERS", array(), $conf->entity, 0, 0, 1, 0); + //print $form->selectyesno("TAKEPOS_ORDER_PRINTERS", $conf->global->TAKEPOS_ORDER_PRINTERS, 1); + print '
'; + print $langs->trans("OrderNotes"); + print ''; + print ajax_constantonoff("TAKEPOS_ORDER_NOTES", array(), $conf->entity, 0, 0, 1, 0); + //print $form->selectyesno("TAKEPOS_ORDER_NOTES", $conf->global->TAKEPOS_ORDER_NOTES, 1); + print '
'; +print $langs->trans("BasicPhoneLayout"); +print ''; +//print $form->selectyesno("TAKEPOS_PHONE_BASIC_LAYOUT", $conf->global->TAKEPOS_PHONE_BASIC_LAYOUT, 1); +print ajax_constantonoff("TAKEPOS_PHONE_BASIC_LAYOUT", array(), $conf->entity, 0, 0, 1, 0); +print '
'; +print $langs->trans("ProductSupplements"); +print ''; +//print $form->selectyesno("TAKEPOS_SUPPLEMENTS", $conf->global->TAKEPOS_SUPPLEMENTS, 1); +print ajax_constantonoff("TAKEPOS_SUPPLEMENTS", array(), $conf->entity, 0, 0, 1, 0); +print '
'; + print $langs->trans("SupplementCategory"); + print ''; + print $form->select_all_categories(Categorie::TYPE_PRODUCT, $conf->global->TAKEPOS_SUPPLEMENTS_CATEGORY, 'TAKEPOS_SUPPLEMENTS_CATEGORY', 64, 0, 0); + print ajax_combobox('TAKEPOS_SUPPLEMENTS_CATEGORY'); + print "
'; +print $langs->trans("AutoOrder"); +print ''; +print ajax_constantonoff("TAKEPOS_AUTO_ORDER", array(), $conf->entity, 0, 0, 1, 0); +print '
'; + +if ($conf->global->TAKEPOS_AUTO_ORDER) +{ + print '
'; + print ''; + print ''; + print ''; + print "\n"; + + //global $dolibarr_main_url_root; + $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); + $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file + $sql = "SELECT rowid, entity, label, leftpos, toppos, floor FROM ".MAIN_DB_PREFIX."takepos_floor_tables"; + $resql = $db->query($sql); + $rows = array(); + while ($row = $db->fetch_array($resql)) { + print ''; + } + + print '
'.$langs->trans("Table").''.$langs->trans("URL").''.$langs->trans("QR").'
'; + print $langs->trans("Table")." ".$row['label']; + print ''; + print "".$urlwithroot."/takepos/auto_order.php?key=".dol_encode($row['rowid']).""; + print ''; + print ""; + print '
'; +} + +print '
'; + +print '
'; + +print '
'; + +print "\n"; + +print '
'; + +llxFooter(); +$db->close(); diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index 3e12fdce5c9..59fe85e66ef 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -434,19 +434,6 @@ print "\n"; //print $form->selectarray('TAKEPOS_ADDON', $array, (empty($conf->global->TAKEPOS_ADDON) ? '0' : $conf->global->TAKEPOS_ADDON), 0); //print "\n"; -print ''; -print ''; - -print '
'; - -// Bar Restaurant mode -print '
'; -print ''; - -print ''; -print ''; -print "\n"; - print ''; @@ -455,48 +442,6 @@ print ajax_constantonoff("TAKEPOS_BAR_RESTAURANT", array(), $conf->entity, 0, 0, //print $form->selectyesno("TAKEPOS_BAR_RESTAURANT", $conf->global->TAKEPOS_BAR_RESTAURANT, 1); print "\n"; -if ($conf->global->TAKEPOS_BAR_RESTAURANT && $conf->global->TAKEPOS_PRINT_METHOD != "browser") { - print ''; - - print ''; -} - -if ($conf->global->TAKEPOS_BAR_RESTAURANT) -{ - print ''; - - print ''; - - if ($conf->global->TAKEPOS_SUPPLEMENTS) - { - print '\n"; - } -} print '
'.$langs->trans("Other").''.$langs->trans("Value").'
'; print $langs->trans("EnableBarOrRestaurantFeatures"); print '
'; - print $langs->trans("OrderPrinters").' ('.$langs->trans("Setup").')'; - print ''; - print ajax_constantonoff("TAKEPOS_ORDER_PRINTERS", array(), $conf->entity, 0, 0, 1, 0); - //print $form->selectyesno("TAKEPOS_ORDER_PRINTERS", $conf->global->TAKEPOS_ORDER_PRINTERS, 1); - print '
'; - print $langs->trans("OrderNotes"); - print ''; - print ajax_constantonoff("TAKEPOS_ORDER_NOTES", array(), $conf->entity, 0, 0, 1, 0); - //print $form->selectyesno("TAKEPOS_ORDER_NOTES", $conf->global->TAKEPOS_ORDER_NOTES, 1); - print '
'; - print $langs->trans("BasicPhoneLayout"); - print ''; - //print $form->selectyesno("TAKEPOS_PHONE_BASIC_LAYOUT", $conf->global->TAKEPOS_PHONE_BASIC_LAYOUT, 1); - print ajax_constantonoff("TAKEPOS_PHONE_BASIC_LAYOUT", array(), $conf->entity, 0, 0, 1, 0); - print '
'; - print $langs->trans("ProductSupplements"); - print ''; - //print $form->selectyesno("TAKEPOS_SUPPLEMENTS", $conf->global->TAKEPOS_SUPPLEMENTS, 1); - print ajax_constantonoff("TAKEPOS_SUPPLEMENTS", array(), $conf->entity, 0, 0, 1, 0); - print '
'; - print $langs->trans("SupplementCategory"); - print ''; - print $form->select_all_categories(Categorie::TYPE_PRODUCT, $conf->global->TAKEPOS_SUPPLEMENTS_CATEGORY, 'TAKEPOS_SUPPLEMENTS_CATEGORY', 64, 0, 0); - print ajax_combobox('TAKEPOS_SUPPLEMENTS_CATEGORY'); - print "
'; print '
'; diff --git a/htdocs/takepos/ajax/ajax.php b/htdocs/takepos/ajax/ajax.php index f3b5ba15716..d1f59325c1f 100644 --- a/htdocs/takepos/ajax/ajax.php +++ b/htdocs/takepos/ajax/ajax.php @@ -142,4 +142,10 @@ elseif ($action == 'search' && $term != '') { } echo json_encode($object); +} elseif ($action == 'thecheck') { + $place = GETPOST('place', 'alpha'); + require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; + require_once DOL_DOCUMENT_ROOT.'/core/class/dolreceiptprinter.class.php'; + $printer = new dolReceiptPrinter($db); + $printer->sendToPrinter($object, $conf->global->{'TAKEPOS_TEMPLATE_TO_USE_FOR_INVOICES'.$term}, $conf->global->{'TAKEPOS_PRINTER_TO_USE'.$term}); } diff --git a/htdocs/takepos/auto_order.php b/htdocs/takepos/auto_order.php new file mode 100644 index 00000000000..5305b4da81f --- /dev/null +++ b/htdocs/takepos/auto_order.php @@ -0,0 +1,29 @@ + + * + * 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/takepos/auto_order.php + * \ingroup takepos + * \brief Public orders for customers + */ + +if (!defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session) +if (!defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip + +$_SESSION["basiclayout"] = 1; +$_SESSION["publicterminal"] = true; // Is a public customer +require 'phone.php'; diff --git a/htdocs/takepos/genimg/qr.php b/htdocs/takepos/genimg/qr.php new file mode 100644 index 00000000000..23b033f3da5 --- /dev/null +++ b/htdocs/takepos/genimg/qr.php @@ -0,0 +1,33 @@ + + * + * 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 . + */ + +if (!defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session) +if (!defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip +if (!defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); +if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); +if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); +if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); +if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); +if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); + +require '../../main.inc.php'; // Load $user and permissions +require '../../core/modules/barcode/doc/tcpdfbarcode.modules.php'; + +$key = GETPOST('key'); + +$module = new modtcpdfbarcode($db); +$result = $module->buildBarCode("http://www.takepos.com", 'QRCODE', 'Y'); \ No newline at end of file diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index fa5ca2f83be..f59a3b5c97d 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -47,13 +47,16 @@ $idproduct = GETPOST('idproduct', 'int'); $place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Bar or Restaurant $placeid = 0; // $placeid is ID of invoice -if (empty($user->rights->takepos->run)) { +if ($_SESSION["publicterminal"]) { + $_SESSION["takeposterminal"] = 1; // Use Terminal 1 for public customers +} +else if (empty($user->rights->takepos->run)) { accessforbidden(); } -if ($conf->global->TAKEPOS_PHONE_BASIC_LAYOUT == 1 && $conf->browser->layout == 'phone') +if (($conf->global->TAKEPOS_PHONE_BASIC_LAYOUT == 1 && $conf->browser->layout == 'phone') || $_SESSION["publicterminal"]) { // DIRECT LINK TO THIS PAGE FROM MOBILE AND NO TERMINAL SELECTED if ($_SESSION["takeposterminal"] == "") diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index b2526ef885e..224cf3dd1c3 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -37,7 +37,12 @@ require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; -$place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Ba or Restaurant +if ($_SESSION["publicterminal"]){ + // Decode place if is a order from customer phone + $key = GETPOST('key'); + $place=dol_decode($key); +} +else $place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Ba or Restaurant $action = GETPOST('action', 'alpha'); $setterminal = GETPOST('setterminal', 'int'); @@ -48,7 +53,10 @@ if ($setterminal > 0) $langs->loadLangs(array("bills", "orders", "commercial", "cashdesk", "receiptprinter")); -if (empty($user->rights->takepos->run)) { +if ($_SESSION["publicterminal"]) { + $_SESSION["takeposterminal"] = 1; // Use Terminal 1 for public customers +} +else if (empty($user->rights->takepos->run)) { accessforbidden(); } @@ -167,6 +175,14 @@ function Exit(){ window.location.href='../user/logout.php'; } +function CheckPlease(){ + console.log("Request the check to the waiter"); + $.ajax({ + type: "GET", + url: "", + }); +} + @@ -175,10 +191,13 @@ if ($conf->global->TAKEPOS_NUM_TERMINALS != "1" && $_SESSION["takeposterminal"] ?>
- - - - + '.strtoupper(substr($langs->trans('Floors'), 0, 3)).''; + print ''; + print ''; + print ''; + if ($_SESSION["publicterminal"]) print ''; + ?>
From 35713ef0046b22f31c848fef1ea6facbb004b712 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Sun, 3 May 2020 00:05:59 +0200 Subject: [PATCH 301/780] Fix travis --- htdocs/takepos/genimg/qr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/genimg/qr.php b/htdocs/takepos/genimg/qr.php index 23b033f3da5..f0c3bea82b9 100644 --- a/htdocs/takepos/genimg/qr.php +++ b/htdocs/takepos/genimg/qr.php @@ -30,4 +30,4 @@ require '../../core/modules/barcode/doc/tcpdfbarcode.modules.php'; $key = GETPOST('key'); $module = new modtcpdfbarcode($db); -$result = $module->buildBarCode("http://www.takepos.com", 'QRCODE', 'Y'); \ No newline at end of file +$result = $module->buildBarCode("http://www.takepos.com", 'QRCODE', 'Y'); From ac75cf318eba8edaa0be6ed9fd7bee7f8a31f1d8 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Sun, 3 May 2020 00:07:04 +0200 Subject: [PATCH 302/780] Fix travis --- htdocs/takepos/invoice.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index f59a3b5c97d..b1641072829 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -50,7 +50,7 @@ $placeid = 0; // $placeid is ID of invoice if ($_SESSION["publicterminal"]) { $_SESSION["takeposterminal"] = 1; // Use Terminal 1 for public customers } -else if (empty($user->rights->takepos->run)) { +elseif (empty($user->rights->takepos->run)) { accessforbidden(); } From 32923daa9decc772155f713ea5aedfa9ff7c029b Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Sun, 3 May 2020 00:07:52 +0200 Subject: [PATCH 303/780] Fix travis --- htdocs/takepos/phone.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index 224cf3dd1c3..80d67513bf2 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -56,7 +56,7 @@ $langs->loadLangs(array("bills", "orders", "commercial", "cashdesk", "receiptpri if ($_SESSION["publicterminal"]) { $_SESSION["takeposterminal"] = 1; // Use Terminal 1 for public customers } -else if (empty($user->rights->takepos->run)) { +elseif (empty($user->rights->takepos->run)) { accessforbidden(); } From 8530db6dab7d7d8a068cac0705c47541f5062fc3 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Sun, 3 May 2020 00:09:17 +0200 Subject: [PATCH 304/780] Fix travis --- htdocs/takepos/admin/bar.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/takepos/admin/bar.php b/htdocs/takepos/admin/bar.php index 16fccf85147..672041d3bb3 100644 --- a/htdocs/takepos/admin/bar.php +++ b/htdocs/takepos/admin/bar.php @@ -138,13 +138,13 @@ print ''; print ''; if ($conf->global->TAKEPOS_AUTO_ORDER) -{ +{ print '
'; print ''; print ''; print ''; print "\n"; - + //global $dolibarr_main_url_root; $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file From fe98e430ceaa18d98a26706c7515e3d09201b86e Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Sun, 3 May 2020 00:10:12 +0200 Subject: [PATCH 305/780] Fix travis --- htdocs/core/lib/takepos.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/takepos.lib.php b/htdocs/core/lib/takepos.lib.php index 729952916ad..d04fa5f77ef 100644 --- a/htdocs/core/lib/takepos.lib.php +++ b/htdocs/core/lib/takepos.lib.php @@ -42,7 +42,7 @@ function takepos_prepare_head() $head[$h][1] = $langs->trans("Receipt"); $head[$h][2] = 'receipt'; $h++; - + if ($conf->global->TAKEPOS_BAR_RESTAURANT) { $head[$h][0] = DOL_URL_ROOT.'/takepos/admin/bar.php'; From e0ebe85c134bebf41e794026af59b9b475648af7 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sun, 3 May 2020 09:15:12 +0200 Subject: [PATCH 306/780] Fix addline titles --- htdocs/core/tpl/objectline_create.tpl.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 160d323a2c2..5e99146bc53 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -813,7 +813,7 @@ if (!empty($usemargins) && $user->rights->margins->creer) jQuery("#prod_entry_mode_free").prop('checked',true).change(); jQuery("#prod_entry_mode_predef").prop('checked',false).change(); jQuery("#search_idprod, #idprod, #search_idprodfournprice, #buying_price").val(''); - jQuery("#price_ht, #multicurrency_price_ht, #price_ttc, #price_ttc, #fourn_ref, #tva_tx, #buying_price, #title_vat, #title_up_ht, #title_up_ht_currency, #title_up_ttc, #title_up_ttc_currency").show(); + jQuery("#price_ht, #multicurrency_price_ht, #price_ttc, #price_ttc, #fourn_ref, #tva_tx, #buying_price, #title_fourn_ref, #title_vat, #title_up_ht, #title_up_ht_currency, #title_up_ttc, #title_up_ttc_currency").show(); jQuery("#np_marginRate, #np_markRate, .np_marginRate, .np_markRate, #units, #title_units").show(); jQuery("#fournprice_predef").hide(); } @@ -825,11 +825,13 @@ if (!empty($usemargins) && $user->rights->margins->creer) global->MAIN_DISABLE_EDIT_PREDEF_PRICEHT)) { ?> jQuery("#price_ht").val('').show(); jQuery("#multicurrency_price_ht").val('').show(); + jQuery("#title_up_ht, #title_up_ht_currency").show(); jQuery("#price_ht").val('').hide(); jQuery("#multicurrency_price_ht").val('').hide(); + jQuery("#title_up_ht, #title_up_ht_currency").hide(); - jQuery("#price_ttc, #fourn_ref, #tva_tx, #title_vat, #title_up_ht_currency, #title_up_ttc, #title_up_ttc_currency").hide(); + jQuery("#price_ttc, #fourn_ref, #tva_tx, #title_fourn_ref, #title_vat, #title_up_ttc, #title_up_ttc_currency").hide(); jQuery("#np_marginRate, #np_markRate, .np_marginRate, .np_markRate, #units, #title_units").hide(); jQuery("#buying_price").show(); jQuery('#trlinefordates, .divlinefordates').show(); From c3521502deff79b1ca166a51aca9552b13708fcf Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sun, 3 May 2020 10:34:56 +0200 Subject: [PATCH 307/780] Update global.inc.php --- htdocs/theme/eldy/global.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 7b8e1373df9..786bdbd431b 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3360,7 +3360,7 @@ tr.liste_titre th, th.liste_titre, tr.liste_titre td, td.liste_titre, form.liste } tr.liste_titre th a, th.liste_titre a, tr.liste_titre td a, td.liste_titre a, form.liste_titre div a, div.liste_titre a { text-shadow: none !important; - color: unset; + color: rgb(); } tr.liste_titre_topborder td { border-top-width: px; From 87d86f32ee28ca4012a7a977fd4fdd17872b69a5 Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sun, 3 May 2020 10:40:52 +0200 Subject: [PATCH 308/780] Update usergroups.lib.php --- htdocs/core/lib/usergroups.lib.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 5b7c923001b..003d1260252 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -732,7 +732,34 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ''; } + + // TextTitleLinkColor + if ($foruserprofile) + { + } + else + { + $default=(empty($colortexttitlelink) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitlelink))); + print ''; + print ''; + print ''; + + print ''; + } + // BackgroundTableLineOddColor if ($foruserprofile) { From 5c1eb08b3fdbb6fcfa72203d90d58d7795781758 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Sun, 3 May 2020 08:42:45 +0000 Subject: [PATCH 309/780] Fixing style errors. --- htdocs/core/lib/usergroups.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 003d1260252..8be3e234273 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -732,7 +732,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ''; } - + // TextTitleLinkColor if ($foruserprofile) { @@ -759,7 +759,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ''; } - + // BackgroundTableLineOddColor if ($foruserprofile) { From f299f0f849d7a745cabcfdcc8d8b41347f59dbee Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sun, 3 May 2020 10:42:49 +0200 Subject: [PATCH 310/780] Update theme_vars.inc.php --- htdocs/theme/eldy/theme_vars.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/theme/eldy/theme_vars.inc.php b/htdocs/theme/eldy/theme_vars.inc.php index f6324f0146f..823b8168b4c 100644 --- a/htdocs/theme/eldy/theme_vars.inc.php +++ b/htdocs/theme/eldy/theme_vars.inc.php @@ -69,6 +69,7 @@ $colorbacklinebreak = '233,228,230'; // line break $colorbackbody = '255,255,255'; $colortexttitlenotab = '0,113,120'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,113,120, violet: 0,50,120 $colortexttitle = '0,0,0'; +$colortexttitlelink = '10, 20, 100'; $colortext = '0,0,0'; $colortextlink = '10, 20, 100'; $fontsize = '0.86em'; From 2f18b444d7946335604dfd2cd19a831540a2fd37 Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sun, 3 May 2020 10:44:37 +0200 Subject: [PATCH 311/780] Update style.css.php --- htdocs/theme/eldy/style.css.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 39fcd003335..927d29e1919 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -128,6 +128,7 @@ $colorbacklinebreak = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (emp $colorbackbody = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_BACKBODY) ? $colorbackbody : $conf->global->THEME_ELDY_BACKBODY) : (empty($user->conf->THEME_ELDY_BACKBODY) ? $colorbackbody : $user->conf->THEME_ELDY_BACKBODY); $colortexttitlenotab = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_TEXTTITLENOTAB) ? $colortexttitlenotab : $conf->global->THEME_ELDY_TEXTTITLENOTAB) : (empty($user->conf->THEME_ELDY_TEXTTITLENOTAB) ? $colortexttitlenotab : $user->conf->THEME_ELDY_TEXTTITLENOTAB); $colortexttitle = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_TEXTTITLE) ? $colortexttitle : $conf->global->THEME_ELDY_TEXTTITLE) : (empty($user->conf->THEME_ELDY_TEXTTITLE) ? $colortexttitle : $user->conf->THEME_ELDY_TEXTTITLE); +$colortexttitlelink = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_TEXTTITLELINK) ? $colortexttitlelink : $conf->global->THEME_ELDY_TEXTTITLELINK) : (empty($user->conf->THEME_ELDY_TEXTTITLELINK) ? $colortexttitlelink : $user->conf->THEME_ELDY_TEXTTITLELINK); $colortext = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_TEXT) ? $colortext : $conf->global->THEME_ELDY_TEXT) : (empty($user->conf->THEME_ELDY_TEXT) ? $colortext : $user->conf->THEME_ELDY_TEXT); $colortextlink = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_TEXTLINK) ? $colortextlink : $conf->global->THEME_ELDY_TEXTLINK) : (empty($user->conf->THEME_ELDY_TEXTLINK) ? $colortextlink : $user->conf->THEME_ELDY_TEXTLINK); $fontsize = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_FONT_SIZE1) ? $fontsize : $conf->global->THEME_ELDY_FONT_SIZE1) : (empty($user->conf->THEME_ELDY_FONT_SIZE1) ? $fontsize : $user->conf->THEME_ELDY_FONT_SIZE1); From 44bafb7225555aff485d418b6440ee01a82f694a Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sun, 3 May 2020 10:46:48 +0200 Subject: [PATCH 312/780] Update ihm.php --- htdocs/admin/ihm.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index ab67974c920..c83dd83a9c9 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -121,6 +121,10 @@ if ($action == 'update') $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLE'), array())))); if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLE', $conf->entity); else dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLE', $val, 'chaine', 0, '', $conf->entity); + + $val=(implode(',', (colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLELINK'), array())))); + if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLELINK', $conf->entity); + else dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLELINK', $val, 'chaine', 0, '', $conf->entity); $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_LINEIMPAIR1'), array())))); if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_LINEIMPAIR1', $conf->entity); From 30cb4f0151133291de49b144a2c511a85a3c4bf7 Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sun, 3 May 2020 10:48:16 +0200 Subject: [PATCH 313/780] Update admin.lang --- htdocs/langs/en_US/admin.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 58e5cecf39d..bb1b56d4465 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1803,6 +1803,7 @@ TopMenuDisableImages=Hide images in Top menu LeftMenuBackgroundColor=Background color for Left menu BackgroundTableTitleColor=Background color for Table title line BackgroundTableTitleTextColor=Text color for Table title line +BackgroundTableTitleTextlinkColor=Text color for Table title link line BackgroundTableLineOddColor=Background color for odd table lines BackgroundTableLineEvenColor=Background color for even table lines MinimumNoticePeriod=Minimum notice period (Your leave request must be done before this delay) From fdb98dd6ed66396087a139c508310b01a7be5a5f Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sun, 3 May 2020 10:49:57 +0200 Subject: [PATCH 314/780] Update admin.lang --- htdocs/langs/fr_FR/admin.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 6363b8b710d..6545b71ede3 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1803,6 +1803,7 @@ TopMenuDisableImages=Cacher les images du menu principal LeftMenuBackgroundColor=Couleur de fond pour le menu Gauche BackgroundTableTitleColor=Couleur de fond pour la ligne de titres des liste/tableaux BackgroundTableTitleTextColor=Couleur du texte pour la ligne de titre des tableaux +BackgroundTableTitleTextlinkColor=Couleur du texte pour la ligne de titre lien des tableaux BackgroundTableLineOddColor=Couleur de fond pour les lignes impaires des tables BackgroundTableLineEvenColor=Couleur de fond pour les lignes paires des tales MinimumNoticePeriod=Période de préavis minimum (Votre demande de congé doit être faite avant ce délai) From ef3f121c88a926d7b02a780bceb587bf67abafdf Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Sun, 3 May 2020 08:51:50 +0000 Subject: [PATCH 315/780] Fixing style errors. --- htdocs/admin/ihm.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index c83dd83a9c9..ba849a267e7 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -121,7 +121,7 @@ if ($action == 'update') $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLE'), array())))); if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLE', $conf->entity); else dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLE', $val, 'chaine', 0, '', $conf->entity); - + $val=(implode(',', (colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLELINK'), array())))); if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLELINK', $conf->entity); else dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLELINK', $val, 'chaine', 0, '', $conf->entity); From fcee3a68f488d337e2d4295658faed84796010c3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 3 May 2020 13:00:39 +0200 Subject: [PATCH 316/780] Fix sort on file manager of website --- htdocs/theme/eldy/global.inc.php | 5 +++-- htdocs/website/index.php | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index c559fcec9ad..28fa0ecfa65 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1132,6 +1132,9 @@ table[summary="list_of_modules"] .fa-cog { padding-left: 5px; padding-right: 5px; } + + .hideonsmartphone { display: none; } + .hideonsmartphoneimp { display: none !important; } } /* Force values for small screen 570 */ @@ -1189,8 +1192,6 @@ table[summary="list_of_modules"] .fa-cog { 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; } .noenlargeonsmartphone { width : 50px !important; display: inline !important; } .maxwidthonsmartphone, #search_newcompany.ui-autocomplete-input { max-width: 100px; } .maxwidth50onsmartphone { max-width: 40px; } diff --git a/htdocs/website/index.php b/htdocs/website/index.php index a617d9ae018..ebfbc7a2ac3 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -271,7 +271,11 @@ if (GETPOST('optioncontent')) $algo .= 'content'; if (GETPOST('optionsitefiles')) $algo .= 'sitefiles'; if (empty($sortfield)) { - $sortfield = 'pageurl'; $sortorder = 'ASC'; + if ($action == 'file_manager') { + $sortfield='name'; $sortorder = 'ASC'; + } else { + $sortfield = 'pageurl'; $sortorder = 'ASC'; + } } $searchkey = GETPOST('searchstring', 'none'); From a31eaf2eb813fe7ef1b04b940d756b8176018a40 Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sun, 3 May 2020 13:59:40 +0200 Subject: [PATCH 317/780] Update style.css.php --- htdocs/theme/md/style.css.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index dcc9ce34886..5c3de3d7612 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -130,6 +130,7 @@ $colorbacklinebreak = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (emp $colorbackbody = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_BACKBODY) ? $colorbackbody : $conf->global->THEME_ELDY_BACKBODY) : (empty($user->conf->THEME_ELDY_BACKBODY) ? $colorbackbody : $user->conf->THEME_ELDY_BACKBODY); $colortexttitlenotab = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_TEXTTITLENOTAB) ? $colortexttitlenotab : $conf->global->THEME_ELDY_TEXTTITLENOTAB) : (empty($user->conf->THEME_ELDY_TEXTTITLENOTAB) ? $colortexttitlenotab : $user->conf->THEME_ELDY_TEXTTITLENOTAB); $colortexttitle = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_TEXTTITLE) ? $colortext : $conf->global->THEME_ELDY_TEXTTITLE) : (empty($user->conf->THEME_ELDY_TEXTTITLE) ? $colortexttitle : $user->conf->THEME_ELDY_TEXTTITLE); +$colortexttitlelink = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_TEXTTITLELINK) ? $colortexttitlelink : $conf->global->THEME_ELDY_TEXTTITLELINK) : (empty($user->conf->THEME_ELDY_TEXTTITLELINK) ? $colortexttitlelink : $user->conf->THEME_ELDY_TEXTTITLELINK); $colortext = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_TEXT) ? $colortext : $conf->global->THEME_ELDY_TEXT) : (empty($user->conf->THEME_ELDY_TEXT) ? $colortext : $user->conf->THEME_ELDY_TEXT); $colortextlink = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_TEXTLINK) ? $colortext : $conf->global->THEME_ELDY_TEXTLINK) : (empty($user->conf->THEME_ELDY_TEXTLINK) ? $colortextlink : $user->conf->THEME_ELDY_TEXTLINK); $fontsize = empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) ? (empty($conf->global->THEME_ELDY_FONT_SIZE1) ? $fontsize : $conf->global->THEME_ELDY_FONT_SIZE1) : (empty($user->conf->THEME_ELDY_FONT_SIZE1) ? $fontsize : $user->conf->THEME_ELDY_FONT_SIZE1); From dabb2f4ad39e26438d8e528a78124a4eb4f2b41c Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sun, 3 May 2020 14:01:42 +0200 Subject: [PATCH 318/780] Update theme_vars.inc.php --- htdocs/theme/md/theme_vars.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/theme/md/theme_vars.inc.php b/htdocs/theme/md/theme_vars.inc.php index d15444acb6c..6cdd37fe913 100644 --- a/htdocs/theme/md/theme_vars.inc.php +++ b/htdocs/theme/md/theme_vars.inc.php @@ -65,6 +65,7 @@ $colorbacklinebreak = '214,218,220'; $colorbackbody = '248,248,248'; $colortexttitlenotab = '80,71,5'; $colortexttitle = '20,20,20'; +$colortexttitlelink = '0,0,120'; $colortext = '0,0,0'; $colortextlink = '0,0,120'; $fontsize = '14'; From d81ae29ab7723262a705e20cdf5af5ae3588ae2c Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Sun, 3 May 2020 14:05:18 +0200 Subject: [PATCH 319/780] Update style.css.php --- htdocs/theme/md/style.css.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 5c3de3d7612..2becbf57324 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -3399,6 +3399,7 @@ tr.liste_titre th, th.liste_titre, tr.liste_titre td, td.liste_titre, form.liste } tr.liste_titre th a, th.liste_titre a, tr.liste_titre td a, td.liste_titre a, form.liste_titre div a, div.liste_titre a { text-shadow: none !important; + color: rgb(); } tr.liste_titre_topborder td { border-top-width: px; From 77cf9fb569ad67aac1df9c2180656f1b396dcd55 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 3 May 2020 14:28:23 +0200 Subject: [PATCH 320/780] Add .dolibarr file into CMS --- htdocs/website/class/website.class.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php index 2691dd9ebfd..6455b7538e0 100644 --- a/htdocs/website/class/website.class.php +++ b/htdocs/website/class/website.class.php @@ -249,6 +249,12 @@ class Website extends CommonObject // } } + if (! $error) { + $stringtodolibarrfile = "# Some properties for Dolibarr web site CMS\n"; + $stringtodolibarrfile .= "noclone=dir_list_to_exclude_when_cloning_separated_with_comma\n"; + file_put_contents('.dolibarr', $stringtodolibarrfile); + } + // Commit or rollback if ($error) { $this->db->rollback(); From da91a857a5fe7566a51236e94e294f8bff43a84f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 3 May 2020 14:49:06 +0200 Subject: [PATCH 321/780] Fix pb of lang subdir in cloning website --- htdocs/core/lib/files.lib.php | 9 ++++++--- htdocs/website/class/website.class.php | 7 ++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index bad0bf9f48c..941cb03d6c4 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -720,10 +720,11 @@ function dol_copy($srcfile, $destfile, $newmask = 0, $overwriteifexists = 1) * @param int $newmask Mask for new file (0 by default means $conf->global->MAIN_UMASK). Example: '0666' * @param int $overwriteifexists Overwrite file if exists (1 by default) * @param array $arrayreplacement Array to use to replace filenames with another one during the copy (works only on file names, not on directory names). + * @param int $excludesubdir 0=Do not exclude subdirectories, 1=Exclude subdirectories, 2=Exclude subdirectories if name is not a 2 chars (used for country codes subdirectories). * @return int <0 if error, 0 if nothing done (all files already exists and overwriteifexists=0), >0 if OK * @see dol_copy() */ -function dolCopyDir($srcfile, $destfile, $newmask, $overwriteifexists, $arrayreplacement = null) +function dolCopyDir($srcfile, $destfile, $newmask, $overwriteifexists, $arrayreplacement = null, $excludesubdir = 0) { global $conf; @@ -759,8 +760,10 @@ function dolCopyDir($srcfile, $destfile, $newmask, $overwriteifexists, $arrayrep { if (is_dir($ossrcfile."/".$file)) { - //var_dump("xxx dolCopyDir $srcfile/$file, $destfile/$file, $newmask, $overwriteifexists"); - $tmpresult = dolCopyDir($srcfile."/".$file, $destfile."/".$file, $newmask, $overwriteifexists, $arrayreplacement); + if (empty($excludesubdir) || ($excludesubdir == 2 && strlen($file) == 2)) { + //var_dump("xxx dolCopyDir $srcfile/$file, $destfile/$file, $newmask, $overwriteifexists"); + $tmpresult = dolCopyDir($srcfile."/".$file, $destfile."/".$file, $newmask, $overwriteifexists, $arrayreplacement, $excludesubdir); + } } else { diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php index 6455b7538e0..4edd2367758 100644 --- a/htdocs/website/class/website.class.php +++ b/htdocs/website/class/website.class.php @@ -251,8 +251,9 @@ class Website extends CommonObject if (! $error) { $stringtodolibarrfile = "# Some properties for Dolibarr web site CMS\n"; - $stringtodolibarrfile .= "noclone=dir_list_to_exclude_when_cloning_separated_with_comma\n"; - file_put_contents('.dolibarr', $stringtodolibarrfile); + $stringtodolibarrfile .= "param=value\n"; + //print $conf->website->dir_output.'/'.$this->ref.'/.dolibarr';exit; + file_put_contents($conf->website->dir_output.'/'.$this->ref.'/.dolibarr', $stringtodolibarrfile); } // Commit or rollback @@ -674,7 +675,7 @@ class Website extends CommonObject if (!$error) { - dolCopyDir($pathofwebsiteold, $pathofwebsitenew, $conf->global->MAIN_UMASK, 0); + dolCopyDir($pathofwebsiteold, $pathofwebsitenew, $conf->global->MAIN_UMASK, 0, null, 2); // Check symlink to medias and restore it if ko $pathtomedias = DOL_DATA_ROOT.'/medias'; // Target From d27ccb02333dfdf9513de33f24d3f478df9a952a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 3 May 2020 14:58:53 +0200 Subject: [PATCH 322/780] Fix pb of lang subdir in exporting website --- htdocs/website/class/website.class.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php index 4edd2367758..be91f6640a1 100644 --- a/htdocs/website/class/website.class.php +++ b/htdocs/website/class/website.class.php @@ -934,30 +934,34 @@ class Website extends CommonObject $arrayreplacementincss['file=logos%2Fthumbs%2F'.$mysoc->logo] = "file=logos%2Fthumbs%2F__LOGO_KEY__"; } + // Create output directories + dol_syslog("Create containers dir"); + dol_mkdir($conf->website->dir_temp.'/'.$website->ref.'/containers'); + dol_mkdir($conf->website->dir_temp.'/'.$website->ref.'/medias/image/websitekey'); + dol_mkdir($conf->website->dir_temp.'/'.$website->ref.'/medias/js/websitekey'); + + // Copy files into 'containers' $srcdir = $conf->website->dir_output.'/'.$website->ref; $destdir = $conf->website->dir_temp.'/'.$website->ref.'/containers'; - // Create containers dir - dol_syslog("Create containers dir"); - dol_mkdir($conf->website->dir_temp.'/'.$website->ref.'/containers'); - - // Copy files into medias dol_syslog("Copy content from ".$srcdir." into ".$destdir); - dolCopyDir($srcdir, $destdir, 0, 1, $arrayreplacementinfilename); + dolCopyDir($srcdir, $destdir, 0, 1, $arrayreplacementinfilename, 2); + // Copy files into medias/image $srcdir = DOL_DATA_ROOT.'/medias/image/'.$website->ref; $destdir = $conf->website->dir_temp.'/'.$website->ref.'/medias/image/websitekey'; dol_syslog("Copy content from ".$srcdir." into ".$destdir); dolCopyDir($srcdir, $destdir, 0, 1, $arrayreplacementinfilename); + // Copy files into medias/js $srcdir = DOL_DATA_ROOT.'/medias/js/'.$website->ref; $destdir = $conf->website->dir_temp.'/'.$website->ref.'/medias/js/websitekey'; - // Copy containers files dol_syslog("Copy content from ".$srcdir." into ".$destdir); dolCopyDir($srcdir, $destdir, 0, 1, $arrayreplacementinfilename); + // Make some replacement into some files $cssindestdir = $conf->website->dir_temp.'/'.$website->ref.'/containers/styles.css.php'; dolReplaceInFile($cssindestdir, $arrayreplacementincss); From f42492764d9a6e8821cf6938025c68426dadf3dc Mon Sep 17 00:00:00 2001 From: Anthony Berton Date: Sun, 3 May 2020 17:16:25 +0200 Subject: [PATCH 323/780] Update html.formproduct.class.php DEFAULT_WAREHOUSE is not select in sherch --- htdocs/product/class/html.formproduct.class.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/htdocs/product/class/html.formproduct.class.php b/htdocs/product/class/html.formproduct.class.php index efde996b927..d6ae705b651 100644 --- a/htdocs/product/class/html.formproduct.class.php +++ b/htdocs/product/class/html.formproduct.class.php @@ -253,10 +253,12 @@ class FormProduct $comboenhancement = ajax_combobox($htmlname, $events); $out .= $comboenhancement; } - - if (empty($selected) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE)) $selected = $conf->global->MAIN_DEFAULT_WAREHOUSE; - if (empty($selected) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE_USER)) $selected = $user->fk_warehouse; - + + if ($htmlname != 'search_warehouse'){ + if (empty($selected) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE)) $selected = $conf->global->MAIN_DEFAULT_WAREHOUSE; + if (empty($selected) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE_USER)) $selected = $user->fk_warehouse; + } + $out .= ''; if ($empty) $out .= ''; foreach ($this->cache_warehouses as $id => $arraytypes) From 33669b6fd8e2300c64e3a6abec008309915739a6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 3 May 2020 21:15:23 +0200 Subject: [PATCH 325/780] Update html.formproduct.class.php --- htdocs/product/class/html.formproduct.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/class/html.formproduct.class.php b/htdocs/product/class/html.formproduct.class.php index 4887f749d60..0eeddd15c07 100644 --- a/htdocs/product/class/html.formproduct.class.php +++ b/htdocs/product/class/html.formproduct.class.php @@ -254,7 +254,7 @@ class FormProduct $out .= $comboenhancement; } - if ($htmlname != 'search_warehouse'){ + if (strpos($htmlname, 'search_') !== 0) { if (empty($selected) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE)) $selected = $conf->global->MAIN_DEFAULT_WAREHOUSE; if (empty($selected) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE_USER)) $selected = $user->fk_warehouse; } From 2eb027833c644a2e946f286f38bad9703c1bf642 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 3 May 2020 21:25:49 +0200 Subject: [PATCH 326/780] Update card.php --- htdocs/contrat/card.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 111a446d9ae..e898ef9e8f4 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -523,6 +523,7 @@ if (empty($reshook)) $desc = $prod->description; if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc; else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION)); + $fk_unit = $prod->fk_unit; } else From ab20b5cb616f1e10add360171fd6e84a652072c9 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Sun, 3 May 2020 19:26:35 +0000 Subject: [PATCH 327/780] Fixing style errors. --- htdocs/contrat/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index e898ef9e8f4..21d46fb2974 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -523,7 +523,7 @@ if (empty($reshook)) $desc = $prod->description; if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc; else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION)); - + $fk_unit = $prod->fk_unit; } else From 4d6a45d491d3ad303cb6b060053303a44d216f6a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 3 May 2020 22:47:43 +0200 Subject: [PATCH 328/780] Major doxygen fix --- dev/setup/codesniffer/ruleset.xml | 62 +++------ htdocs/bom/class/bom.class.php | 1 - htdocs/core/class/html.formcategory.class.php | 4 + htdocs/core/class/html.formcompany.class.php | 4 + .../core/filemanagerdol/connectors/php/io.php | 31 ++++- .../modules/product/modules_product.class.php | 4 +- htdocs/ecm/class/ecmfiles.class.php | 4 +- htdocs/install/upgrade2.php | 11 +- .../template/class/myobject.class.php | 2 +- htdocs/mrp/class/mo.class.php | 2 +- htdocs/product/class/product.class.php | 16 +-- htdocs/product/index.php | 7 +- htdocs/public/stripe/confirm_payment.php | 4 +- htdocs/resource/class/dolresource.class.php | 6 +- htdocs/ticket/class/utils_diff.class.php | 125 ++++++++---------- htdocs/webservices/server_other.php | 7 +- htdocs/zapier/class/hook.class.php | 1 - test/phpunit/AccountingAccountTest.php | 12 +- test/phpunit/ActionCommTest.php | 12 +- test/phpunit/AdherentTest.php | 12 +- test/phpunit/AdminLibTest.php | 12 +- test/phpunit/BOMTest.php | 12 +- test/phpunit/BankAccountTest.php | 12 +- test/phpunit/BuildDocTest.php | 12 +- test/phpunit/CMailFileTest.php | 12 +- test/phpunit/CategorieTest.php | 12 +- test/phpunit/ChargeSocialesTest.php | 12 +- test/phpunit/CodingPhpTest.php | 12 +- test/phpunit/CodingSqlTest.php | 12 +- test/phpunit/CommandeFournisseurTest.php | 12 +- test/phpunit/CommandeTest.php | 12 +- test/phpunit/CommonInvoiceTest.php | 12 +- test/phpunit/CommonObjectTest.php | 12 +- test/phpunit/CompanyBankAccountTest.php | 12 +- test/phpunit/CompanyLibTest.php | 12 +- test/phpunit/ContactTest.php | 12 +- test/phpunit/ContratTest.php | 12 +- test/phpunit/CoreTest.php | 12 +- test/phpunit/DateLibTest.php | 12 +- test/phpunit/DateLibTzFranceTest.php | 12 +- test/phpunit/DiscountTest.php | 12 +- test/phpunit/EntrepotTest.php | 12 +- test/phpunit/ExpenseReportTest.php | 12 +- test/phpunit/ExportTest.php | 12 +- test/phpunit/FactureFournisseurTest.php | 12 +- test/phpunit/FactureRecTest.php | 12 +- test/phpunit/FactureTest.php | 12 +- test/phpunit/FactureTestRounding.php | 12 +- test/phpunit/FichinterTest.php | 12 +- test/phpunit/FilesLibTest.php | 12 +- test/phpunit/FormAdminTest.php | 12 +- test/phpunit/FormTest.php | 12 +- test/phpunit/Functions2LibTest.php | 12 +- test/phpunit/FunctionsLibTest.php | 12 +- test/phpunit/GetUrlLibTest.php | 12 +- test/phpunit/HolidayTest.php | 12 +- test/phpunit/ImagesLibTest.php | 12 +- test/phpunit/ImportTest.php | 12 +- test/phpunit/JsonLibTest.php | 12 +- test/phpunit/LangTest.php | 12 +- test/phpunit/LesscTest.php | 12 +- test/phpunit/LoanTest.php | 12 +- test/phpunit/MarginsLibTest.php | 12 +- test/phpunit/ModulesTest.php | 12 +- test/phpunit/MouvementStockTest.php | 12 +- test/phpunit/NumberingModulesTest.php | 12 +- test/phpunit/PaypalTest.php | 12 +- test/phpunit/PdfDocTest.php | 12 +- test/phpunit/PgsqlTest.php | 12 +- test/phpunit/PricesTest.php | 12 +- test/phpunit/ProductTest.php | 13 +- test/phpunit/ProjectTest.php | 12 +- test/phpunit/PropalTest.php | 12 +- test/phpunit/RestAPIDocumentTest.php | 12 +- test/phpunit/RestAPIUserTest.php | 12 +- test/phpunit/ScriptsTest.php | 12 +- test/phpunit/SecurityTest.php | 12 +- test/phpunit/SocieteTest.php | 12 +- test/phpunit/SupplierProposalTest.php | 12 +- test/phpunit/TicketTest.php | 12 +- test/phpunit/UserGroupTest.php | 12 +- test/phpunit/UserTest.php | 12 +- test/phpunit/UtilsTest.php | 12 +- test/phpunit/WebservicesOrdersTest.php | 12 +- test/phpunit/WebservicesOtherTest.php | 12 +- test/phpunit/WebservicesProductsTest.php | 13 +- test/phpunit/WebservicesThirdpartyTest.php | 12 +- test/phpunit/WebservicesUserTest.php | 12 +- test/phpunit/XCalLibTest.php | 12 +- 89 files changed, 871 insertions(+), 286 deletions(-) diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index 421acfeed1f..ad26c7f0bdc 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -187,6 +187,13 @@ + + + + + @@ -222,23 +229,16 @@ + - - - - - - 0 - + - - 0 - + 0 @@ -247,67 +247,38 @@ 0 - 0 - 0 - 0 - - - - - - 5 - - - - + 0 - 0 - - - - 0 - + - 0 + + + + 0 @@ -344,6 +315,7 @@ 0 + 0 diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index a9ed7ee3a00..c2c18dae6e5 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -979,7 +979,6 @@ class BOM extends CommonObject * * @return int 0 if OK, <>0 if KO (this function is used also by cron so only 0 is OK) */ - //public function doScheduledJob($param1, $param2, ...) public function doScheduledJob() { global $conf, $langs; diff --git a/htdocs/core/class/html.formcategory.class.php b/htdocs/core/class/html.formcategory.class.php index 4dd8bed247b..41e39cc93a2 100644 --- a/htdocs/core/class/html.formcategory.class.php +++ b/htdocs/core/class/html.formcategory.class.php @@ -23,6 +23,10 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; + +/** + * Class to manage forms for categories + */ class FormCategory extends Form { /** diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php index 5f32f5063d6..6fb02454311 100644 --- a/htdocs/core/class/html.formcompany.class.php +++ b/htdocs/core/class/html.formcompany.class.php @@ -32,6 +32,10 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; + +/** + * Class of forms component to manage companies + */ class FormCompany extends Form { diff --git a/htdocs/core/filemanagerdol/connectors/php/io.php b/htdocs/core/filemanagerdol/connectors/php/io.php index 68aa46ef9fb..2a9ac9f146b 100644 --- a/htdocs/core/filemanagerdol/connectors/php/io.php +++ b/htdocs/core/filemanagerdol/connectors/php/io.php @@ -236,8 +236,11 @@ function GetRootPath() return substr($sRealPath, 0, $position); } -// Emulate the asp Server.mapPath function. -// given an url path return the physical directory that it corresponds to +/** + * Emulate the asp Server.mapPath function. + * @param string $path given an url path return the physical directory that it corresponds to + * @return string Path + */ function Server_MapPath($path) { // This function is available only for Apache @@ -338,7 +341,12 @@ function GetCurrentFolder() return $sCurrentFolder; } -// Do a cleanup of the folder name to avoid possible problems +/** + * Do a cleanup of the folder name to avoid possible problems + * + * @param string $sNewFolderName Folder + * @return string Folder sanitized + */ function SanitizeFolderName($sNewFolderName) { $sNewFolderName = stripslashes($sNewFolderName); @@ -349,7 +357,12 @@ function SanitizeFolderName($sNewFolderName) return $sNewFolderName; } -// Do a cleanup of the file name to avoid possible problems +/** + * Do a cleanup of the file name to avoid possible problems + * + * @param string $sNewFileName Folder + * @return string Folder sanitized + */ function SanitizeFileName($sNewFileName) { global $Config; @@ -366,7 +379,15 @@ function SanitizeFileName($sNewFileName) return $sNewFileName; } -// This is the function that sends the results of the uploading process. +/** + * This is the function that sends the results of the uploading process. + * + * @param string $errorNumber errorNumber + * @param string $fileUrl fileUrl + * @param string $fileName fileName + * @param string $customMsg customMsg + * @return void + */ function SendUploadResults($errorNumber, $fileUrl = '', $fileName = '', $customMsg = '') { // Minified version of the document.domain automatic fix script (#1919). diff --git a/htdocs/core/modules/product/modules_product.class.php b/htdocs/core/modules/product/modules_product.class.php index 5031b4079e4..80bc9f7ce0a 100644 --- a/htdocs/core/modules/product/modules_product.class.php +++ b/htdocs/core/modules/product/modules_product.class.php @@ -61,6 +61,9 @@ abstract class ModelePDFProduct extends CommonDocGenerator } } +/** + * Class template for classes of numbering product + */ abstract class ModeleProductCode { /** @@ -97,7 +100,6 @@ abstract class ModeleProductCode */ public function getExample($langs) { - $langs->load("bills"); return $langs->trans("NoExample"); } diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php index 0c7c4c4cebb..6921b8aabd6 100644 --- a/htdocs/ecm/class/ecmfiles.class.php +++ b/htdocs/ecm/class/ecmfiles.class.php @@ -772,7 +772,6 @@ class EcmFiles extends CommonObject if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips $result = ''; - $companylink = ''; $label = ''.$langs->trans("MyModule").''; $label .= '
'; @@ -867,6 +866,9 @@ class EcmFiles extends CommonObject } +/** + * Class of an index line of a document + */ class EcmfilesLine { /** diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 0fb36466a02..765a8796a76 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -1,4 +1,6 @@ * Copyright (C) 2005-2018 Laurent Destailleur * Copyright (C) 2005-2011 Regis Houssin @@ -1185,8 +1187,13 @@ function migrate_contracts_date1($db, $langs, $conf) print ''; } -/* - * Mise a jour date contrat avec date min effective mise en service si inferieur +/** + * Update contracts with date min real if service date is lower + * + * @param DoliDB $db Database handler + * @param Translate $langs Language + * @param Conf $conf Conf + * @return void */ function migrate_contracts_date2($db, $langs, $conf) { diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index af707c3c87d..fad19564fdc 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -1047,10 +1047,10 @@ class MyObject extends CommonObject /** * Action executed by scheduler * CAN BE A CRON TASK. In such a case, parameters come from the schedule job setup field 'Parameters' + * Use public function doScheduledJob($param1, $param2, ...) to get parameters * * @return int 0 if OK, <>0 if KO (this function is used also by cron so only 0 is OK) */ - //public function doScheduledJob($param1, $param2, ...) public function doScheduledJob() { global $conf, $langs; diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 65ba9597b8a..42d97ee81d9 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -1226,10 +1226,10 @@ class Mo extends CommonObject /** * Action executed by scheduler * CAN BE A CRON TASK. In such a case, parameters come from the schedule job setup field 'Parameters' + * Use public function doScheduledJob($param1, $param2, ...) to get parameters * * @return int 0 if OK, <>0 if KO (this function is used also by cron so only 0 is OK) */ - //public function doScheduledJob($param1, $param2, ...) public function doScheduledJob() { global $conf, $langs; diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 0db9a411b19..2499ee958de 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1443,14 +1443,14 @@ class Product extends CommonObject } } - /* - * Sets an accountancy code for a product. - * Also calls PRODUCT_MODIFY trigger when modified - * - * @param string $type It can be 'buy', 'buy_intra', 'buy_export', 'sell', 'sell_intra' or 'sell_export' - * @param string $value Accountancy code - * @return int <0 KO >0 OK - */ + /** + * Sets an accountancy code for a product. + * Also calls PRODUCT_MODIFY trigger when modified + * + * @param string $type It can be 'buy', 'buy_intra', 'buy_export', 'sell', 'sell_intra' or 'sell_export' + * @param string $value Accountancy code + * @return int <0 KO >0 OK + */ public function setAccountancyCode($type, $value) { global $user, $langs, $conf; diff --git a/htdocs/product/index.php b/htdocs/product/index.php index 4d0f2e220b7..3067cc63733 100644 --- a/htdocs/product/index.php +++ b/htdocs/product/index.php @@ -101,7 +101,7 @@ if (!empty($conf->global->MAIN_SEARCH_FORM_ON_HOME_AREAS)) // This is useles foreach ($listofsearchfields as $key => $value) { if ($i == 0) print '
'; - print ''; + print ''; print ''; if ($i == 0) print ''; print ''; @@ -201,7 +201,7 @@ if (!empty($conf->categorie->enabled) && !empty($conf->global->CATEGORY_GRAPHSTA print '
'; print '
'.$langs->trans("Table").''.$langs->trans("URL").''.$langs->trans("QR").'
'.$langs->trans("BackgroundTableTitleTextlinkColor").''; + if ($edit) + { + print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTTITLELINK, array()), ''), 'THEME_ELDY_TEXTTITLELINK', 'formcolor', 1).' '; + } + else + { + print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLELINK, $langs->trans("Default")); + } + print '   ('.$langs->trans("Default").': '.$default.') '; + print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; + print '
'.$langs->trans("Search").'
'; print ''; - print ''; } diff --git a/htdocs/takepos/auto_order.php b/htdocs/takepos/public/auto_order.php similarity index 83% rename from htdocs/takepos/auto_order.php rename to htdocs/takepos/public/auto_order.php index 5305b4da81f..c97edfdc0e7 100644 --- a/htdocs/takepos/auto_order.php +++ b/htdocs/takepos/public/auto_order.php @@ -16,14 +16,14 @@ */ /** - * \file htdocs/takepos/auto_order.php + * \file htdocs/takepos/public/auto_order.php * \ingroup takepos * \brief Public orders for customers */ if (!defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session) -if (!defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip +if (!defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip $_SESSION["basiclayout"] = 1; $_SESSION["publicterminal"] = true; // Is a public customer -require 'phone.php'; +require '../phone.php'; From abd37c78f92dbd968982700e574348d1d853638c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 May 2020 17:07:18 +0200 Subject: [PATCH 334/780] Fix responsive --- htdocs/contrat/index.php | 8 ++++---- htdocs/contrat/list.php | 7 +++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/htdocs/contrat/index.php b/htdocs/contrat/index.php index 1f3a9fa5b99..2a7c9c0d91a 100644 --- a/htdocs/contrat/index.php +++ b/htdocs/contrat/index.php @@ -360,7 +360,7 @@ if ($result) $obj = $db->fetch_object($result); print ''; - print ''; - print ''; - print ''; - print ''; + + // Ref if (!empty($arrayfields['c.ref']['checked'])) { - print ''; } + if (!empty($arrayfields['c.ref_customer']['checked'])) { print ''; From 821e11ca3c0ba8bc15690835cb25aac56dd917bd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 May 2020 17:13:31 +0200 Subject: [PATCH 335/780] Look and feel v12 --- htdocs/core/ajax/selectsearchbox.php | 4 ++-- htdocs/langs/en_US/main.lang | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php index cd019b9ce38..2f8ad4ab5f7 100644 --- a/htdocs/core/ajax/selectsearchbox.php +++ b/htdocs/core/ajax/selectsearchbox.php @@ -56,7 +56,7 @@ $arrayresult = array(); if (!empty($conf->adherent->enabled) && empty($conf->global->MAIN_SEARCHFORM_ADHERENT_DISABLED) && $user->rights->adherent->lire) { - $arrayresult['searchintomember'] = array('position'=>8, 'shortcut'=>'M', 'img'=>'object_user', 'label'=>$langs->trans("SearchIntoMembers", $search_boxvalue), 'text'=>img_picto('', 'object_user').' '.$langs->trans("SearchIntoMembers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/adherents/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintomember'] = array('position'=>8, 'shortcut'=>'M', 'img'=>'object_member', 'label'=>$langs->trans("SearchIntoMembers", $search_boxvalue), 'text'=>img_picto('', 'object_member').' '.$langs->trans("SearchIntoMembers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/adherents/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (((!empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || !empty($conf->fournisseur->enabled)) && empty($conf->global->MAIN_SEARCHFORM_SOCIETE_DISABLED) && $user->rights->societe->lire) @@ -86,7 +86,7 @@ if (!empty($conf->projet->enabled) && empty($conf->global->MAIN_SEARCHFORM_PROJE } if (!empty($conf->projet->enabled) && empty($conf->global->MAIN_SEARCHFORM_TASK_DISABLED) && $user->rights->projet->lire) { - $arrayresult['searchintotasks'] = array('position'=>45, 'img'=>'object_task', 'label'=>$langs->trans("SearchIntoTasks", $search_boxvalue), 'text'=>img_picto('', 'object_task').' '.$langs->trans("SearchIntoTasks", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/tasks/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintotasks'] = array('position'=>45, 'img'=>'object_projecttask', 'label'=>$langs->trans("SearchIntoTasks", $search_boxvalue), 'text'=>img_picto('', 'object_projecttask').' '.$langs->trans("SearchIntoTasks", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/tasks/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } if (!empty($conf->propal->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_PROPAL_DISABLED) && $user->rights->propal->lire) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 38a4bcd2bad..fb0808e0953 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -959,7 +959,7 @@ SearchIntoCustomerInvoices=Customer invoices SearchIntoSupplierInvoices=Vendor invoices SearchIntoCustomerOrders=Sales orders SearchIntoSupplierOrders=Purchase orders -SearchIntoCustomerProposals=Customer proposals +SearchIntoCustomerProposals=Commercial proposals SearchIntoSupplierProposals=Vendor proposals SearchIntoInterventions=Interventions SearchIntoContracts=Contracts From 6d894b7abd3bd0c7e47a4e98b817b9d954ca0f1b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 May 2020 19:08:31 +0200 Subject: [PATCH 336/780] Fix missing link in message --- htdocs/core/class/notify.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index db0e490a6c6..6c0ec1ec62b 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -528,7 +528,7 @@ class Notify $message.= $outputlangs->transnoentities("YouReceiveMailBecauseOfNotification2", $application, $mysoc->name)."\n"; $message.= "\n"; $message.= $mesg; - if ($link) $message.= "\n" . $urlwithroot . $link; + if ($link) $message.= "\n" . $urlwithroot . $link; // if link is already added around the ref into the translation text, then $link must be set to '' $parameters = array('notifcode'=>$notifcode, 'sendto'=>$sendto, 'replyto'=>$replyto, 'file'=>$filename_list, 'mimefile'=>$mimetype_list, 'filename'=>$mimefilename_list); if (!isset($action)) $action = ''; @@ -600,6 +600,7 @@ class Notify { foreach($conf->global as $key => $val) { + $reg = array(); if ($val == '' || ! preg_match('/^NOTIFICATION_FIXEDEMAIL_'.$notifcode.'_THRESHOLD_HIGHER_(.*)$/', $key, $reg)) continue; $threshold = (float) $reg[1]; @@ -743,7 +744,7 @@ class Notify $message.= $langs->transnoentities("YouReceiveMailBecauseOfNotification2", $application, $mysoc->name)."\n"; $message.= "\n"; $message.= $mesg; - //if ($link) $message.= "\n" . $urlwithroot . $link; // link already added around the ref into the text + if ($link) $message.= "\n" . $urlwithroot . $link; // if link is already added around the ref into the translation text, then $link must be set to '' $message = nl2br($message); From 5e4ef9266ee33bf3df042ed09091e98937686186 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 May 2020 20:30:02 +0200 Subject: [PATCH 337/780] Fix update template to use for notifications --- htdocs/admin/notification.php | 101 +++++++++++++++++++++++++++------- htdocs/core/lib/admin.lib.php | 10 +++- 2 files changed, 88 insertions(+), 23 deletions(-) diff --git a/htdocs/admin/notification.php b/htdocs/admin/notification.php index 97b09861a42..ba92aa1ec21 100644 --- a/htdocs/admin/notification.php +++ b/htdocs/admin/notification.php @@ -34,10 +34,12 @@ require_once DOL_DOCUMENT_ROOT.'/core/triggers/interface_50_modNotification_Noti $langs->loadLangs(array('admin', 'other', 'orders', 'propal', 'bills', 'errors', 'mails')); // Security check -if (!$user->admin) - accessforbidden(); +if (!$user->admin) { + accessforbidden(); +} $action = GETPOST('action', 'aZ09'); +$error = 0; /* @@ -45,27 +47,48 @@ $action = GETPOST('action', 'aZ09'); */ // Action to update or add a constant -if ($action == 'update' || $action == 'add') +if ($action == 'settemplates') { - $constlineid = GETPOST('rowid', 'int'); - $constname = GETPOST('constname', 'alpha'); + $db->begin(); - $constvalue = (GETPOSTISSET('constvalue_'.$constname) ? GETPOST('constvalue_'.$constname, 'alpha') : GETPOST('constvalue')); - $consttype = (GETPOSTISSET('consttype_'.$constname) ? GETPOST('consttype_'.$constname, 'alphanohtml') : GETPOST('consttype')); - $constnote = (GETPOSTISSET('constnote_'.$constname) ? GETPOST('constnote_'.$constname, 'none') : GETPOST('constnote')); + if (!$error && is_array($_POST)) + { + $reg = array(); + foreach ($_POST as $key => $val) + { + if (!preg_match('/^constvalue_(.*)_TEMPLATE/', $key, $reg)) continue; - $typetouse = empty($oldtypetonewone[$consttype]) ? $consttype : $oldtypetonewone[$consttype]; + $triggername = $reg[1]; + $constvalue = GETPOST($key, 'alpha'); + $consttype = 'emailtemplate:xxx'; + $tmparray=explode(':', $constvalue); + if (! empty($tmparray[0]) && ! empty($tmparray[1])) { + $constvalue = $tmparray[0]; + $consttype = 'emailtemplate:'.$tmparray[1]; + //var_dump($constvalue); + //var_dump($consttype); + $res = dolibarr_set_const($db, $triggername.'_TEMPLATE', $constvalue, $consttype, 0, '', $conf->entity); + if ($res < 0) { + $error++; + break; + } + } else { + $res = dolibarr_del_const($db, $triggername.'_TEMPLATE', $conf->entity); + } + } + } - $res = dolibarr_set_const($db, $constname, $constvalue, $typetouse, 0, $constnote, $conf->entity); - - if (!$res > 0) $error++; if (!$error) { + $db->commit(); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { + $db->rollback(); + setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -74,12 +97,31 @@ if ($action == 'setvalue' && $user->admin) { $db->begin(); - $result = dolibarr_set_const($db, "NOTIFICATION_EMAIL_FROM", $_POST["email_from"], 'chaine', 0, '', $conf->entity); + $result = dolibarr_set_const($db, "NOTIFICATION_EMAIL_FROM", GETPOST("email_from", "none"), 'chaine', 0, '', $conf->entity); if ($result < 0) $error++; + + if (!$error) + { + $db->commit(); + + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); + } + else + { + $db->rollback(); + + setEventMessages($langs->trans("Error"), null, 'errors'); + } +} + + +if ($action == 'setfixednotif' && $user->admin) +{ + $db->begin(); + if (!$error && is_array($_POST)) { - //var_dump($_POST); $reg = array(); foreach ($_POST as $key => $val) { @@ -101,7 +143,7 @@ if ($action == 'setvalue' && $user->admin) } elseif (preg_match('/^NOTIF_(.*)_new_key/', $key, $reg)) { - // Add a new entry + // Add a new entry $newkey = 'NOTIFICATION_FIXEDEMAIL_'.$reg[1].'_THRESHOLD_HIGHER_'.((int) GETPOST($shortkey.'_amount')); $newval = GETPOST($shortkey.'_key'); } @@ -168,9 +210,18 @@ print ''; print ''; print '
'.$langs->trans("Categories").'
'; + print '
'; $sql = "SELECT c.label, count(*) as nb"; $sql .= " FROM ".MAIN_DB_PREFIX."categorie_product as cs"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."categorie as c ON cs.fk_categorie = c.rowid"; @@ -413,7 +413,7 @@ llxFooter(); $db->close(); -/* +/** * Print html activity for product type * * @param int $product_type Type of product @@ -422,7 +422,6 @@ $db->close(); function activitytrim($product_type) { global $conf, $langs, $db; - global $bc; // We display the last 3 years $yearofbegindate = date('Y', dol_time_plus_duree(time(), -3, "y")); diff --git a/htdocs/public/stripe/confirm_payment.php b/htdocs/public/stripe/confirm_payment.php index 25cb358ccea..9a45a2cbeec 100644 --- a/htdocs/public/stripe/confirm_payment.php +++ b/htdocs/public/stripe/confirm_payment.php @@ -129,8 +129,8 @@ try { )); } -/* - * generate payment response +/** + * Generate payment response * * @param \Stripe\PaymentIntent $intent PaymentIntent * @return void diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index 4cda97b39d1..1b4223e1fff 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -871,10 +871,12 @@ class Dolresource extends CommonObject return $resources; } - /* + /** * Return an int number of resources linked to the element * - * @return int + * @param string $element Element type + * @param int $element_id Element id + * @return int Nb of resources loaded */ public function fetchElementResources($element, $element_id) { diff --git a/htdocs/ticket/class/utils_diff.class.php b/htdocs/ticket/class/utils_diff.class.php index 03dff5506b4..84075d395ab 100644 --- a/htdocs/ticket/class/utils_diff.class.php +++ b/htdocs/ticket/class/utils_diff.class.php @@ -20,24 +20,21 @@ class Diff const DELETED = 1; const INSERTED = 2; - /* Returns the diff for two strings. The return value is an array, each of + /** + * Returns the diff for two strings. The return value is an array, each of * whose values is an array containing two values: a line (or character, if * $compareCharacters is true), and one of the constants DIFF::UNMODIFIED (the * line or character is in both strings), DIFF::DELETED (the line or character * is only in the first string), and DIFF::INSERTED (the line or character is * only in the second string). The parameters are: * - * $string1 - the first string - * $string2 - the second string - * $compareCharacters - true to compare characters, and false to compare - * lines; this optional parameter defaults to false + * @param string $string1 First string + * @param string $string2 Second string + * @param string $compareCharacters true to compare characters, and false to compare lines; this optional parameter defaults to false + * @return array Array of diff */ - public static function compare( - $string1, - $string2, - $compareCharacters = false - ) { - + public static function compare($string1, $string2, $compareCharacters = false) + { // initialise the sequences and comparison start and end positions $start = 0; if ($compareCharacters) { @@ -90,12 +87,13 @@ class Diff return $diff; } - /* Returns the diff for two files. The parameters are: + /** + * Returns the diff for two files. The parameters are: * - * $file1 - the path to the first file - * $file2 - the path to the second file - * $compareCharacters - true to compare characters, and false to compare - * lines; this optional parameter defaults to false + * @param string $file1 Path to the first file + * @param string $file2 Path to the second file + * @param boolean $compareCharacters true to compare characters, and false to compare lines; this optional parameter defaults to false + * @return array Array of diff */ public static function compareFiles( $file1, @@ -111,23 +109,18 @@ class Diff ); } - /* Returns the table of longest common subsequence lengths for the specified - * sequences. The parameters are: + /** + * Returns the table of longest common subsequence lengths for the specified sequences. The parameters are: * - * $sequence1 - the first sequence - * $sequence2 - the second sequence - * $start - the starting index - * $end1 - the ending index for the first sequence - * $end2 - the ending index for the second sequence + * @param string $sequence1 the first sequence + * @param string $sequence2 the second sequence + * @param string $start the starting index + * @param string $end1 the ending index for the first sequence + * @param string $end2 the ending index for the second sequence + * @return array array of diff */ - private static function computeTable( - $sequence1, - $sequence2, - $start, - $end1, - $end2 - ) { - + private static function computeTable($sequence1, $sequence2, $start, $end1, $end2) + { // determine the lengths to be compared $length1 = $end1 - $start + 1; $length2 = $end2 - $start + 1; @@ -156,21 +149,18 @@ class Diff return $table; } - /* Returns the partial diff for the specificed sequences, in reverse order. - * The parameters are: + /** + * Returns the partial diff for the specificed sequences, in reverse order. + * The parameters are: * - * $table - the table returned by the computeTable function - * $sequence1 - the first sequence - * $sequence2 - the second sequence - * $start - the starting index + * @param string $table the table returned by the computeTable function + * @param string $sequence1 the first sequence + * @param string $sequence2 the second sequence + * @param string $start the starting index + * @return array array of diff */ - private static function generatePartialDiff( - $table, - $sequence1, - $sequence2, - $start - ) { - + private static function generatePartialDiff($table, $sequence1, $sequence2, $start) + { // initialise the diff $diff = array(); @@ -205,17 +195,17 @@ class Diff return $diff; } - /* Returns a diff as a string, where unmodified lines are prefixed by ' ', + /** + * Returns a diff as a string, where unmodified lines are prefixed by ' ', * deletions are prefixed by '- ', and insertions are prefixed by '+ '. The * parameters are: * - * $diff - the diff array - * $separator - the separator between lines; this optional parameter defaults - * to "\n" + * @param array $diff the diff array + * @param string $separator the separator between lines; this optional parameter defaults to "\n" + * @return string String */ public static function toString($diff, $separator = "\n") { - // initialise the string $string = ''; @@ -242,17 +232,17 @@ class Diff return $string; } - /* Returns a diff as an HTML string, where unmodified lines are contained + /** + * Returns a diff as an HTML string, where unmodified lines are contained * within 'span' elements, deletions are contained within 'del' elements, and * insertions are contained within 'ins' elements. The parameters are: * - * $diff - the diff array - * $separator - the separator between lines; this optional parameter defaults - * to '
' + * @param string $diff the diff array + * @param string $separator the separator between lines; this optional parameter defaults to '
' + * @return string HTML string */ public static function toHTML($diff, $separator = '
') { - // initialise the HTML $html = ''; @@ -283,17 +273,16 @@ class Diff return $html; } - /* Returns a diff as an HTML table. The parameters are: + /** + * Returns a diff as an HTML table. The parameters are: * - * $diff - the diff array - * $indentation - indentation to add to every line of the generated HTML; this - * optional parameter defaults to '' - * $separator - the separator between lines; this optional parameter - * defaults to '
' + * @param string $diff the diff array + * @param string $indentation indentation to add to every line of the generated HTML; this optional parameter defaults to '' + * @param string $separator the separator between lines; this optional parameter defaults to '
' + * @return string HTML string */ public static function toTable($diff, $indentation = '', $separator = '
') { - // initialise the HTML $html = $indentation."\n"; @@ -373,14 +362,16 @@ class Diff return $html.$indentation."
\n"; } - /* Returns the content of the cell, for use in the toTable function. The + /** + * Returns the content of the cell, for use in the toTable function. The * parameters are: * - * $diff - the diff array - * $indentation - indentation to add to every line of the generated HTML - * $separator - the separator between lines - * $index - the current index, passes by reference - * $type - the type of line + * @param string $diff the diff array + * @param string $indentation indentation to add to every line of the generated HTML + * @param string $separator the separator between lines + * @param string $index the current index, passes by reference + * @param string $type the type of line + * @return string HTML string */ private static function getCellContent($diff, $indentation, $separator, &$index, $type) { diff --git a/htdocs/webservices/server_other.php b/htdocs/webservices/server_other.php index 3944ef5befa..4ae702ade15 100644 --- a/htdocs/webservices/server_other.php +++ b/htdocs/webservices/server_other.php @@ -137,7 +137,12 @@ $server->register( -// Full methods code +/** + * Full methods code + * + * @param string $authentication Authentication string + * @return array Array of data + */ function getVersions($authentication) { global $db, $conf, $langs; diff --git a/htdocs/zapier/class/hook.class.php b/htdocs/zapier/class/hook.class.php index 32268b039b4..b985c77434e 100644 --- a/htdocs/zapier/class/hook.class.php +++ b/htdocs/zapier/class/hook.class.php @@ -715,7 +715,6 @@ class Hook extends CommonObject * * @return int 0 if OK, <>0 if KO (this function is used also by cron so only 0 is OK) */ - //public function doScheduledJob($param1, $param2, ...) public function doScheduledJob() { global $conf, $langs; diff --git a/test/phpunit/AccountingAccountTest.php b/test/phpunit/AccountingAccountTest.php index ea1651c5902..b4367e96f49 100644 --- a/test/phpunit/AccountingAccountTest.php +++ b/test/phpunit/AccountingAccountTest.php @@ -73,7 +73,11 @@ class AccountingAccountTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class AccountingAccountTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ActionCommTest.php b/test/phpunit/ActionCommTest.php index 34d67341afb..0dd4946f69c 100644 --- a/test/phpunit/ActionCommTest.php +++ b/test/phpunit/ActionCommTest.php @@ -73,7 +73,11 @@ class ActionCommTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class ActionCommTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/AdherentTest.php b/test/phpunit/AdherentTest.php index 89e78b32bd9..f19e88c36a6 100644 --- a/test/phpunit/AdherentTest.php +++ b/test/phpunit/AdherentTest.php @@ -75,7 +75,11 @@ class AdherentTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -91,7 +95,11 @@ class AdherentTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/AdminLibTest.php b/test/phpunit/AdminLibTest.php index 7f3c9030725..e3c38c1df86 100644 --- a/test/phpunit/AdminLibTest.php +++ b/test/phpunit/AdminLibTest.php @@ -73,7 +73,11 @@ class AdminLibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -82,7 +86,11 @@ class AdminLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/BOMTest.php b/test/phpunit/BOMTest.php index 41cbdd9f247..39268bdeaea 100644 --- a/test/phpunit/BOMTest.php +++ b/test/phpunit/BOMTest.php @@ -74,7 +74,11 @@ class BOMTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class BOMTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/BankAccountTest.php b/test/phpunit/BankAccountTest.php index 416a17f0c0f..1007db02dad 100644 --- a/test/phpunit/BankAccountTest.php +++ b/test/phpunit/BankAccountTest.php @@ -75,7 +75,11 @@ class BankAccountTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class BankAccountTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/BuildDocTest.php b/test/phpunit/BuildDocTest.php index 61d7b7f1199..de4da3790b5 100644 --- a/test/phpunit/BuildDocTest.php +++ b/test/phpunit/BuildDocTest.php @@ -103,7 +103,11 @@ class BuildDocTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -121,7 +125,11 @@ class BuildDocTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CMailFileTest.php b/test/phpunit/CMailFileTest.php index 8029959c22b..d407b67d991 100755 --- a/test/phpunit/CMailFileTest.php +++ b/test/phpunit/CMailFileTest.php @@ -73,7 +73,11 @@ class CMailFileTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -82,7 +86,11 @@ class CMailFileTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CategorieTest.php b/test/phpunit/CategorieTest.php index 3c81a7aee21..a62d362a972 100644 --- a/test/phpunit/CategorieTest.php +++ b/test/phpunit/CategorieTest.php @@ -74,7 +74,11 @@ class CategorieTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class CategorieTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ChargeSocialesTest.php b/test/phpunit/ChargeSocialesTest.php index b1a3fd87b30..33349449795 100644 --- a/test/phpunit/ChargeSocialesTest.php +++ b/test/phpunit/ChargeSocialesTest.php @@ -74,7 +74,11 @@ class ChargeSocialesTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class ChargeSocialesTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CodingPhpTest.php b/test/phpunit/CodingPhpTest.php index 733071c0f58..5c3c6d7d54e 100644 --- a/test/phpunit/CodingPhpTest.php +++ b/test/phpunit/CodingPhpTest.php @@ -86,7 +86,11 @@ class CodingPhpTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -95,7 +99,11 @@ class CodingPhpTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CodingSqlTest.php b/test/phpunit/CodingSqlTest.php index b62b9befcc7..f56d00b5bcd 100644 --- a/test/phpunit/CodingSqlTest.php +++ b/test/phpunit/CodingSqlTest.php @@ -86,7 +86,11 @@ class CodingSqlTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -95,7 +99,11 @@ class CodingSqlTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CommandeFournisseurTest.php b/test/phpunit/CommandeFournisseurTest.php index 7ccbf5d0b76..bebd65634bf 100644 --- a/test/phpunit/CommandeFournisseurTest.php +++ b/test/phpunit/CommandeFournisseurTest.php @@ -75,7 +75,11 @@ class CommandeFournisseurTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class CommandeFournisseurTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CommandeTest.php b/test/phpunit/CommandeTest.php index ad2920282b2..990ef41f0b7 100644 --- a/test/phpunit/CommandeTest.php +++ b/test/phpunit/CommandeTest.php @@ -73,7 +73,11 @@ class CommandeTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class CommandeTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CommonInvoiceTest.php b/test/phpunit/CommonInvoiceTest.php index 9f4b5998455..5e9c45825ec 100644 --- a/test/phpunit/CommonInvoiceTest.php +++ b/test/phpunit/CommonInvoiceTest.php @@ -73,7 +73,11 @@ class CommonInvoiceTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -82,7 +86,11 @@ class CommonInvoiceTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CommonObjectTest.php b/test/phpunit/CommonObjectTest.php index e32952c167d..6c68423e8a9 100644 --- a/test/phpunit/CommonObjectTest.php +++ b/test/phpunit/CommonObjectTest.php @@ -74,7 +74,11 @@ class CommonObjectTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class CommonObjectTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CompanyBankAccountTest.php b/test/phpunit/CompanyBankAccountTest.php index 7410e1f15f9..1979f89fabb 100644 --- a/test/phpunit/CompanyBankAccountTest.php +++ b/test/phpunit/CompanyBankAccountTest.php @@ -74,7 +74,11 @@ class CompanyBankAccountTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class CompanyBankAccountTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CompanyLibTest.php b/test/phpunit/CompanyLibTest.php index c45f6ebd208..ab9eb414634 100644 --- a/test/phpunit/CompanyLibTest.php +++ b/test/phpunit/CompanyLibTest.php @@ -73,7 +73,11 @@ class CompanyLibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -82,7 +86,11 @@ class CompanyLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ContactTest.php b/test/phpunit/ContactTest.php index 8fdaea0cbe7..0c5687e67c9 100755 --- a/test/phpunit/ContactTest.php +++ b/test/phpunit/ContactTest.php @@ -82,7 +82,11 @@ class ContactTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -92,7 +96,11 @@ class ContactTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ContratTest.php b/test/phpunit/ContratTest.php index 7c302105aa2..d364d6c9dff 100644 --- a/test/phpunit/ContratTest.php +++ b/test/phpunit/ContratTest.php @@ -74,7 +74,11 @@ class ContratTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class ContratTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/CoreTest.php b/test/phpunit/CoreTest.php index c34bbffba95..87c43798a0f 100644 --- a/test/phpunit/CoreTest.php +++ b/test/phpunit/CoreTest.php @@ -76,7 +76,11 @@ class CoreTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -85,7 +89,11 @@ class CoreTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/DateLibTest.php b/test/phpunit/DateLibTest.php index dd32e02cee6..062bdb6dd11 100644 --- a/test/phpunit/DateLibTest.php +++ b/test/phpunit/DateLibTest.php @@ -74,7 +74,11 @@ class DateLibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class DateLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/DateLibTzFranceTest.php b/test/phpunit/DateLibTzFranceTest.php index 895599becde..7e96e39030e 100644 --- a/test/phpunit/DateLibTzFranceTest.php +++ b/test/phpunit/DateLibTzFranceTest.php @@ -74,7 +74,11 @@ class DateLibTzFranceTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -88,7 +92,11 @@ class DateLibTzFranceTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/DiscountTest.php b/test/phpunit/DiscountTest.php index 202c41958d0..9eba2460655 100644 --- a/test/phpunit/DiscountTest.php +++ b/test/phpunit/DiscountTest.php @@ -74,7 +74,11 @@ class DiscountTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class DiscountTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/EntrepotTest.php b/test/phpunit/EntrepotTest.php index 2ab2fc2aff3..27fd3dabbf3 100644 --- a/test/phpunit/EntrepotTest.php +++ b/test/phpunit/EntrepotTest.php @@ -74,7 +74,11 @@ class EntrepotTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -86,7 +90,11 @@ class EntrepotTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ExpenseReportTest.php b/test/phpunit/ExpenseReportTest.php index 67467ac6c81..3f6402262c3 100644 --- a/test/phpunit/ExpenseReportTest.php +++ b/test/phpunit/ExpenseReportTest.php @@ -74,7 +74,11 @@ class ExpenseReportTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class ExpenseReportTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ExportTest.php b/test/phpunit/ExportTest.php index 3abec2ee0e1..590accccbed 100644 --- a/test/phpunit/ExportTest.php +++ b/test/phpunit/ExportTest.php @@ -78,7 +78,11 @@ class ExportTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -87,7 +91,11 @@ class ExportTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/FactureFournisseurTest.php b/test/phpunit/FactureFournisseurTest.php index b277ba5c1b3..d9cd44a40d2 100644 --- a/test/phpunit/FactureFournisseurTest.php +++ b/test/phpunit/FactureFournisseurTest.php @@ -75,7 +75,11 @@ class FactureFournisseurTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class FactureFournisseurTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/FactureRecTest.php b/test/phpunit/FactureRecTest.php index 71caddeb491..f89ab4b1f13 100644 --- a/test/phpunit/FactureRecTest.php +++ b/test/phpunit/FactureRecTest.php @@ -75,7 +75,11 @@ class FactureRecTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class FactureRecTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/FactureTest.php b/test/phpunit/FactureTest.php index 4e361895fcc..47f3a639b29 100644 --- a/test/phpunit/FactureTest.php +++ b/test/phpunit/FactureTest.php @@ -74,7 +74,11 @@ class FactureTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -87,7 +91,11 @@ class FactureTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/FactureTestRounding.php b/test/phpunit/FactureTestRounding.php index 59ecc240461..f0165a88d0b 100644 --- a/test/phpunit/FactureTestRounding.php +++ b/test/phpunit/FactureTestRounding.php @@ -74,7 +74,11 @@ class FactureTestRounding extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class FactureTestRounding extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/FichinterTest.php b/test/phpunit/FichinterTest.php index ba9408441a1..f78e9250471 100644 --- a/test/phpunit/FichinterTest.php +++ b/test/phpunit/FichinterTest.php @@ -74,7 +74,11 @@ class FichinterTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class FichinterTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/FilesLibTest.php b/test/phpunit/FilesLibTest.php index fb3ce8f5814..9d476953381 100644 --- a/test/phpunit/FilesLibTest.php +++ b/test/phpunit/FilesLibTest.php @@ -75,7 +75,11 @@ class FilesLibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class FilesLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/FormAdminTest.php b/test/phpunit/FormAdminTest.php index e6b92b698d9..a434841930c 100644 --- a/test/phpunit/FormAdminTest.php +++ b/test/phpunit/FormAdminTest.php @@ -74,7 +74,11 @@ class FormAdminTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class FormAdminTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/FormTest.php b/test/phpunit/FormTest.php index 59cfeb3fa3d..bec23048e9f 100644 --- a/test/phpunit/FormTest.php +++ b/test/phpunit/FormTest.php @@ -74,7 +74,11 @@ class FormTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class FormTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/Functions2LibTest.php b/test/phpunit/Functions2LibTest.php index 4304251d7f1..21fa1f29257 100644 --- a/test/phpunit/Functions2LibTest.php +++ b/test/phpunit/Functions2LibTest.php @@ -77,7 +77,11 @@ class Functions2LibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -86,7 +90,11 @@ class Functions2LibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/FunctionsLibTest.php b/test/phpunit/FunctionsLibTest.php index dff6b3a7d06..e3dabff6df9 100644 --- a/test/phpunit/FunctionsLibTest.php +++ b/test/phpunit/FunctionsLibTest.php @@ -77,7 +77,11 @@ class FunctionsLibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -88,7 +92,11 @@ class FunctionsLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/GetUrlLibTest.php b/test/phpunit/GetUrlLibTest.php index ba074459f44..268122c8d48 100644 --- a/test/phpunit/GetUrlLibTest.php +++ b/test/phpunit/GetUrlLibTest.php @@ -75,7 +75,11 @@ class GetUrlLibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class GetUrlLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/HolidayTest.php b/test/phpunit/HolidayTest.php index cd5a9f28138..e7e3e8749cd 100644 --- a/test/phpunit/HolidayTest.php +++ b/test/phpunit/HolidayTest.php @@ -76,7 +76,11 @@ class HolidayTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -86,7 +90,11 @@ class HolidayTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ImagesLibTest.php b/test/phpunit/ImagesLibTest.php index 71474ba1847..3bfb676f3be 100644 --- a/test/phpunit/ImagesLibTest.php +++ b/test/phpunit/ImagesLibTest.php @@ -75,7 +75,11 @@ class ImagesLibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class ImagesLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ImportTest.php b/test/phpunit/ImportTest.php index 9e6b973500a..ce689fda4a4 100644 --- a/test/phpunit/ImportTest.php +++ b/test/phpunit/ImportTest.php @@ -76,7 +76,11 @@ class ImportTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -85,7 +89,11 @@ class ImportTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/JsonLibTest.php b/test/phpunit/JsonLibTest.php index 0b5d3dd53e6..7d2678b0ec7 100644 --- a/test/phpunit/JsonLibTest.php +++ b/test/phpunit/JsonLibTest.php @@ -76,7 +76,11 @@ class JsonLibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -85,7 +89,11 @@ class JsonLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/LangTest.php b/test/phpunit/LangTest.php index 3ff2917a9f2..f4a14373ebe 100644 --- a/test/phpunit/LangTest.php +++ b/test/phpunit/LangTest.php @@ -86,7 +86,11 @@ class LangTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -95,7 +99,11 @@ class LangTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/LesscTest.php b/test/phpunit/LesscTest.php index ca64853b381..a4ce302c540 100644 --- a/test/phpunit/LesscTest.php +++ b/test/phpunit/LesscTest.php @@ -86,7 +86,11 @@ class LesscTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -95,7 +99,11 @@ class LesscTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/LoanTest.php b/test/phpunit/LoanTest.php index 71a61c80ae0..253e779ac03 100644 --- a/test/phpunit/LoanTest.php +++ b/test/phpunit/LoanTest.php @@ -74,7 +74,11 @@ class LoanTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class LoanTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/MarginsLibTest.php b/test/phpunit/MarginsLibTest.php index fc25d929b38..e451262546d 100644 --- a/test/phpunit/MarginsLibTest.php +++ b/test/phpunit/MarginsLibTest.php @@ -74,7 +74,11 @@ class MarginsLibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class MarginsLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ModulesTest.php b/test/phpunit/ModulesTest.php index 5a43de21167..f8feaa8f829 100755 --- a/test/phpunit/ModulesTest.php +++ b/test/phpunit/ModulesTest.php @@ -73,7 +73,11 @@ class ModulesTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -82,7 +86,11 @@ class ModulesTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/MouvementStockTest.php b/test/phpunit/MouvementStockTest.php index 85137234a3b..23b6b2b0111 100644 --- a/test/phpunit/MouvementStockTest.php +++ b/test/phpunit/MouvementStockTest.php @@ -76,7 +76,11 @@ class MouvementStockTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -85,7 +89,11 @@ class MouvementStockTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/NumberingModulesTest.php b/test/phpunit/NumberingModulesTest.php index 099d6d2052c..089a2c2f4cf 100644 --- a/test/phpunit/NumberingModulesTest.php +++ b/test/phpunit/NumberingModulesTest.php @@ -73,7 +73,11 @@ class NumberingModulesTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class NumberingModulesTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/PaypalTest.php b/test/phpunit/PaypalTest.php index 96bfbefdf17..47d8341f501 100644 --- a/test/phpunit/PaypalTest.php +++ b/test/phpunit/PaypalTest.php @@ -75,7 +75,11 @@ class PaypalTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -87,7 +91,11 @@ class PaypalTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/PdfDocTest.php b/test/phpunit/PdfDocTest.php index 9c9c0bb666f..276deada0c6 100644 --- a/test/phpunit/PdfDocTest.php +++ b/test/phpunit/PdfDocTest.php @@ -77,7 +77,11 @@ class PdfDocTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -86,7 +90,11 @@ class PdfDocTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/PgsqlTest.php b/test/phpunit/PgsqlTest.php index 4b2a5f98746..5a09e7fc55a 100644 --- a/test/phpunit/PgsqlTest.php +++ b/test/phpunit/PgsqlTest.php @@ -76,7 +76,11 @@ class PgsqlTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -86,7 +90,11 @@ class PgsqlTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/PricesTest.php b/test/phpunit/PricesTest.php index d7f9e310088..0c47ec4f275 100755 --- a/test/phpunit/PricesTest.php +++ b/test/phpunit/PricesTest.php @@ -81,7 +81,11 @@ class PricesTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -90,7 +94,11 @@ class PricesTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ProductTest.php b/test/phpunit/ProductTest.php index 8a848416318..650d8a93e37 100644 --- a/test/phpunit/ProductTest.php +++ b/test/phpunit/ProductTest.php @@ -74,7 +74,11 @@ class ProductTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -85,7 +89,12 @@ class ProductTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // teardownafterclass + + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ProjectTest.php b/test/phpunit/ProjectTest.php index 84a6411082f..8a7e0540b9a 100644 --- a/test/phpunit/ProjectTest.php +++ b/test/phpunit/ProjectTest.php @@ -75,7 +75,11 @@ class ProjectTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -84,7 +88,11 @@ class ProjectTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/PropalTest.php b/test/phpunit/PropalTest.php index 709c5bbcfb7..068fb53b052 100644 --- a/test/phpunit/PropalTest.php +++ b/test/phpunit/PropalTest.php @@ -74,7 +74,11 @@ class PropalTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class PropalTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/RestAPIDocumentTest.php b/test/phpunit/RestAPIDocumentTest.php index 9ce14a4ac92..65b8c206c9d 100644 --- a/test/phpunit/RestAPIDocumentTest.php +++ b/test/phpunit/RestAPIDocumentTest.php @@ -76,7 +76,11 @@ class RestAPIDocumentTest extends PHPUnit\Framework\TestCase echo "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -85,7 +89,11 @@ class RestAPIDocumentTest extends PHPUnit\Framework\TestCase echo __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/RestAPIUserTest.php b/test/phpunit/RestAPIUserTest.php index ea3970e5a4b..9d49d10af73 100644 --- a/test/phpunit/RestAPIUserTest.php +++ b/test/phpunit/RestAPIUserTest.php @@ -80,7 +80,11 @@ class RestAPIUserTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -89,7 +93,11 @@ class RestAPIUserTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/ScriptsTest.php b/test/phpunit/ScriptsTest.php index e490054edfa..16884214418 100644 --- a/test/phpunit/ScriptsTest.php +++ b/test/phpunit/ScriptsTest.php @@ -86,7 +86,11 @@ class ScriptsTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -95,7 +99,11 @@ class ScriptsTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/SecurityTest.php b/test/phpunit/SecurityTest.php index 4130426d806..5a248006498 100644 --- a/test/phpunit/SecurityTest.php +++ b/test/phpunit/SecurityTest.php @@ -86,7 +86,11 @@ class SecurityTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -95,7 +99,11 @@ class SecurityTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/SocieteTest.php b/test/phpunit/SocieteTest.php index 070a8999bb2..4ed0771d668 100755 --- a/test/phpunit/SocieteTest.php +++ b/test/phpunit/SocieteTest.php @@ -74,7 +74,11 @@ class SocieteTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -88,7 +92,11 @@ class SocieteTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/SupplierProposalTest.php b/test/phpunit/SupplierProposalTest.php index 42d7e5842a6..27414ecab0a 100644 --- a/test/phpunit/SupplierProposalTest.php +++ b/test/phpunit/SupplierProposalTest.php @@ -77,7 +77,11 @@ class SupplierProposalTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -88,7 +92,11 @@ class SupplierProposalTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/TicketTest.php b/test/phpunit/TicketTest.php index fa7ea8df98f..c13bdcfb959 100644 --- a/test/phpunit/TicketTest.php +++ b/test/phpunit/TicketTest.php @@ -74,7 +74,11 @@ class TicketTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class TicketTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/UserGroupTest.php b/test/phpunit/UserGroupTest.php index fe08af2bce7..7e3cdd24b3a 100644 --- a/test/phpunit/UserGroupTest.php +++ b/test/phpunit/UserGroupTest.php @@ -73,7 +73,11 @@ class UserGroupTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -82,7 +86,11 @@ class UserGroupTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/UserTest.php b/test/phpunit/UserTest.php index 3c89bd52d06..10b0bd7b0b7 100644 --- a/test/phpunit/UserTest.php +++ b/test/phpunit/UserTest.php @@ -73,7 +73,11 @@ class UserTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -85,7 +89,11 @@ class UserTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/UtilsTest.php b/test/phpunit/UtilsTest.php index a1b9eafa45e..dd5ba68ca8f 100644 --- a/test/phpunit/UtilsTest.php +++ b/test/phpunit/UtilsTest.php @@ -73,7 +73,11 @@ class UtilsTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -83,7 +87,11 @@ class UtilsTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/WebservicesOrdersTest.php b/test/phpunit/WebservicesOrdersTest.php index 8afd50a0394..33d842f6d39 100644 --- a/test/phpunit/WebservicesOrdersTest.php +++ b/test/phpunit/WebservicesOrdersTest.php @@ -77,7 +77,11 @@ class WebservicesOrdersTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -86,7 +90,11 @@ class WebservicesOrdersTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/WebservicesOtherTest.php b/test/phpunit/WebservicesOtherTest.php index 7304e2bf367..34686cbec92 100644 --- a/test/phpunit/WebservicesOtherTest.php +++ b/test/phpunit/WebservicesOtherTest.php @@ -77,7 +77,11 @@ class WebservicesOtherTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -86,7 +90,11 @@ class WebservicesOtherTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/WebservicesProductsTest.php b/test/phpunit/WebservicesProductsTest.php index 3d74deb721c..70a8c12a498 100644 --- a/test/phpunit/WebservicesProductsTest.php +++ b/test/phpunit/WebservicesProductsTest.php @@ -84,7 +84,11 @@ class WebservicesProductsTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -92,7 +96,12 @@ class WebservicesProductsTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/WebservicesThirdpartyTest.php b/test/phpunit/WebservicesThirdpartyTest.php index 9aefd6c5ce6..1106164b4ee 100644 --- a/test/phpunit/WebservicesThirdpartyTest.php +++ b/test/phpunit/WebservicesThirdpartyTest.php @@ -94,7 +94,11 @@ class WebservicesThirdpartyTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -103,7 +107,11 @@ class WebservicesThirdpartyTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/WebservicesUserTest.php b/test/phpunit/WebservicesUserTest.php index de51431b046..bb68f413741 100644 --- a/test/phpunit/WebservicesUserTest.php +++ b/test/phpunit/WebservicesUserTest.php @@ -77,7 +77,11 @@ class WebservicesUserTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -86,7 +90,11 @@ class WebservicesUserTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; diff --git a/test/phpunit/XCalLibTest.php b/test/phpunit/XCalLibTest.php index 26d5e25c54b..9fb1975a1fd 100644 --- a/test/phpunit/XCalLibTest.php +++ b/test/phpunit/XCalLibTest.php @@ -73,7 +73,11 @@ class XCalLibTest extends PHPUnit\Framework\TestCase print "\n"; } - // Static methods + /** + * setUpBeforeClass + * + * @return void + */ public static function setUpBeforeClass() { global $conf,$user,$langs,$db; @@ -82,7 +86,11 @@ class XCalLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } - // tear down after class + /** + * tearDownAfterClass + * + * @return void + */ public static function tearDownAfterClass() { global $conf,$user,$langs,$db; From 4b34a6bd4acb766242eaaac072dbe68c9a9466d9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 May 2020 12:43:47 +0200 Subject: [PATCH 329/780] Look and feel --- htdocs/core/class/html.formfile.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 075fb95066b..98d781a51c1 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -1393,7 +1393,7 @@ class FormFile if ($permtoeditline) { $paramsectiondir = (in_array($modulepart, array('medias', 'ecm')) ? '§ion_dir='.urlencode($relativepath) : ''); - print ''.img_edit('default', 0, 'class="paddingrightonly"').''; + print ''.img_edit('default', 0, 'class="paddingrightonly"').''; } } if ($permonobject) From 3857c082776324938d38fdb0a5d82ca1b156c640 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 May 2020 13:24:09 +0200 Subject: [PATCH 330/780] Fix quick search on MO --- htdocs/core/ajax/selectsearchbox.php | 21 ++++++++++++------- htdocs/langs/en_US/main.lang | 1 + .../modulebuilder/template/myobject_list.php | 2 +- htdocs/mrp/mo_list.php | 2 +- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php index bc5287a51f9..cd019b9ce38 100644 --- a/htdocs/core/ajax/selectsearchbox.php +++ b/htdocs/core/ajax/selectsearchbox.php @@ -75,9 +75,14 @@ if (((!empty($conf->product->enabled) && $user->rights->produit->lire) || (!empt $arrayresult['searchintoproduct'] = array('position'=>30, 'shortcut'=>'P', 'img'=>'object_product', 'label'=>$langs->trans("SearchIntoProductsOrServices", $search_boxvalue), 'text'=>img_picto('', 'object_product').' '.$langs->trans("SearchIntoProductsOrServices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/product/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } +if (!empty($conf->mrp->enabled) && $user->rights->mrp->read && empty($conf->global->MAIN_SEARCHFORM_MRP_DISABLED)) +{ + $arrayresult['searchintomo'] = array('position'=>35, 'shortcut'=>'', 'img'=>'object_mrp', 'label'=>$langs->trans("SearchIntoMO", $search_boxvalue), 'text'=>img_picto('', 'object_mrp').' '.$langs->trans("SearchIntoMO", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/mrp/mo_list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); +} + if (!empty($conf->projet->enabled) && empty($conf->global->MAIN_SEARCHFORM_PROJECT_DISABLED) && $user->rights->projet->lire) { - $arrayresult['searchintoprojects'] = array('position'=>40, 'shortcut'=>'Q', 'img'=>'object_projectpub', 'label'=>$langs->trans("SearchIntoProjects", $search_boxvalue), 'text'=>img_picto('', 'object_projectpub').' '.$langs->trans("SearchIntoProjects", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintoprojects'] = array('position'=>40, 'shortcut'=>'Q', 'img'=>'object_projectpub', 'label'=>$langs->trans("SearchIntoProjects", $search_boxvalue), 'text'=>img_picto('', 'object_project').' '.$langs->trans("SearchIntoProjects", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } if (!empty($conf->projet->enabled) && empty($conf->global->MAIN_SEARCHFORM_TASK_DISABLED) && $user->rights->projet->lire) { @@ -103,15 +108,15 @@ if (!empty($conf->facture->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUST if (!empty($conf->supplier_proposal->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_PROPAL_DISABLED) && $user->rights->supplier_proposal->lire) { - $arrayresult['searchintosupplierpropal'] = array('position'=>100, 'img'=>'object_propal', 'label'=>$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'text'=>img_picto('', 'object_propal').' '.$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/supplier_proposal/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintosupplierpropal'] = array('position'=>100, 'img'=>'object_propal', 'label'=>$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_proposal').' '.$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/supplier_proposal/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if ((! empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_ORDER_DISABLED) || ! empty($conf->supplier_order->enabled)) && $user->rights->fournisseur->commande->lire) { - $arrayresult['searchintosupplierorder'] = array('position'=>110, 'img'=>'object_order', 'label'=>$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'text'=>img_picto('', 'object_order').' '.$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/commande/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintosupplierorder'] = array('position'=>110, 'img'=>'object_order', 'label'=>$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_order').' '.$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/commande/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } if ((! empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED) || ! empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire) { - $arrayresult['searchintosupplierinvoice'] = array('position'=>120, 'img'=>'object_bill', 'label'=>$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'text'=>img_picto('', 'object_bill').' '.$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/facture/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintosupplierinvoice'] = array('position'=>120, 'img'=>'object_bill', 'label'=>$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_invoice').' '.$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/facture/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->contrat->enabled) && empty($conf->global->MAIN_SEARCHFORM_CONTRACT_DISABLED) && $user->rights->contrat->lire) @@ -122,6 +127,10 @@ if (!empty($conf->ficheinter->enabled) && empty($conf->global->MAIN_SEARCHFORM_F { $arrayresult['searchintointervention'] = array('position'=>140, 'img'=>'object_intervention', 'label'=>$langs->trans("SearchIntoInterventions", $search_boxvalue), 'text'=>img_picto('', 'object_intervention').' '.$langs->trans("SearchIntoInterventions", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fichinter/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } +if (!empty($conf->ticket->enabled) && empty($conf->global->MAIN_SEARCHFORM_TICKET_DISABLED) && $user->rights->ticket->read) +{ + $arrayresult['searchintotickets'] = array('position'=>145, 'img'=>'object_ticket', 'label'=>$langs->trans("SearchIntoTickets", $search_boxvalue), 'text'=>img_picto('', 'object_ticket').' '.$langs->trans("SearchIntoTickets", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/ticket/list.php?mainmenu=ticket'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); +} // HR if (!empty($conf->user->enabled) && empty($conf->global->MAIN_SEARCHFORM_USER_DISABLED) && $user->rights->user->user->lire) @@ -136,10 +145,6 @@ if (!empty($conf->holiday->enabled) && empty($conf->global->MAIN_SEARCHFORM_HOLI { $arrayresult['searchintoleaves'] = array('position'=>220, 'img'=>'object_holiday', 'label'=>$langs->trans("SearchIntoLeaves", $search_boxvalue), 'text'=>img_picto('', 'object_holiday').' '.$langs->trans("SearchIntoLeaves", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/holiday/list.php?mainmenu=hrm'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->ticket->enabled) && empty($conf->global->MAIN_SEARCHFORM_TICKET_DISABLED) && $user->rights->ticket->read) -{ - $arrayresult['searchintotickets'] = array('position'=>220, 'img'=>'object_ticket', 'label'=>$langs->trans("SearchIntoTickets", $search_boxvalue), 'text'=>img_picto('', 'object_ticket').' '.$langs->trans("SearchIntoTickets", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/ticket/list.php?mainmenu=ticket'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); -} /* Do we really need this. We already have a select for users, and we should be able to filter into user list on employee flag diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 7cb9b21791a..38a4bcd2bad 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -953,6 +953,7 @@ SearchIntoMembers=Members SearchIntoUsers=Users SearchIntoProductsOrServices=Products or services SearchIntoProjects=Projects +SearchIntoMO=Manufacturing Orders SearchIntoTasks=Tasks SearchIntoCustomerInvoices=Customer invoices SearchIntoSupplierInvoices=Vendor invoices diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 18c0b1bda2b..a0fcb744bb1 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -108,7 +108,7 @@ if (!$sortfield) $sortfield = "t.".key($object->fields); // Set here default sea if (!$sortorder) $sortorder = "ASC"; // Initialize array of search criterias -$search_all = trim(GETPOST("search_all", 'alpha')); +$search_all = GETPOST('search_all', 'alphanohtml') ? trim(GETPOST('search_all', 'alphanohtml')) : trim(GETPOST('sall', 'alphanohtml')); $search = array(); foreach ($object->fields as $key => $val) { diff --git a/htdocs/mrp/mo_list.php b/htdocs/mrp/mo_list.php index b51171e6684..4807c47fb53 100644 --- a/htdocs/mrp/mo_list.php +++ b/htdocs/mrp/mo_list.php @@ -107,7 +107,7 @@ if ($user->socid > 0) // Protection if external user // Initialize array of search criterias -$search_all = trim(GETPOST("search_all", 'alpha')); +$search_all = GETPOST('search_all', 'alphanohtml') ? trim(GETPOST('search_all', 'alphanohtml')) : trim(GETPOST('sall', 'alphanohtml')); $search = array(); foreach ($object->fields as $key => $val) { From 358bc6d5df27ea701b5d3b6cfde6cd06ee9ea501 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 May 2020 14:29:25 +0200 Subject: [PATCH 331/780] Fix search on entities --- htdocs/website/index.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index ebfbc7a2ac3..0db6aad1d1c 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -282,6 +282,7 @@ $searchkey = GETPOST('searchstring', 'none'); if ($action == 'replacesiteconfirm') { $listofpages = getPagesFromSearchCriterias('', $algo, $searchkey, 1000, $sortfield, $sortorder); + var_dump($listofpages); } @@ -3531,9 +3532,10 @@ if ($action == 'replacesite' || $action == 'replacesiteconfirm' || $massaction = print $langs->trans("SearchString"); print ''; print '
'; - print ''; - print ''; + print ''; + + print ''; print '
'; print ''; From f6e055309360eb518754e1e84626d7385234f61c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 May 2020 14:29:57 +0200 Subject: [PATCH 332/780] fix var_dump --- htdocs/website/index.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 0db6aad1d1c..690dc0efe3b 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -282,7 +282,6 @@ $searchkey = GETPOST('searchstring', 'none'); if ($action == 'replacesiteconfirm') { $listofpages = getPagesFromSearchCriterias('', $algo, $searchkey, 1000, $sortfield, $sortorder); - var_dump($listofpages); } From f4a9490e7fa3c7bf54bb204cd2e73c742531524f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 May 2020 16:55:53 +0200 Subject: [PATCH 333/780] Fix a page with NOLOGIN const set to 1 must be into "public" dir. --- htdocs/takepos/admin/bar.php | 4 ++-- htdocs/takepos/{ => public}/auto_order.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) rename htdocs/takepos/{ => public}/auto_order.php (83%) diff --git a/htdocs/takepos/admin/bar.php b/htdocs/takepos/admin/bar.php index 672041d3bb3..7b6e1d9a98c 100644 --- a/htdocs/takepos/admin/bar.php +++ b/htdocs/takepos/admin/bar.php @@ -155,9 +155,9 @@ if ($conf->global->TAKEPOS_AUTO_ORDER) print '
'; print $langs->trans("Table")." ".$row['label']; print ''; - print "".$urlwithroot."/takepos/auto_order.php?key=".dol_encode($row['rowid']).""; + print "".$urlwithroot."/takepos/public/auto_order.php?key=".dol_encode($row['rowid']).""; print ''; - print ""; + print ""; print '
'; + print ''; $staticcontrat->ref = ($obj->ref ? $obj->ref : $obj->cid); $staticcontrat->id = $obj->cid; print $staticcontrat->getNomUrl(1, 16); @@ -425,7 +425,7 @@ if ($resql) $obj = $db->fetch_object($resql); print '
'; + print ''; $staticcontrat->ref = ($obj->ref ? $obj->ref : $obj->fk_contrat); $staticcontrat->id = $obj->fk_contrat; print $staticcontrat->getNomUrl(1, 16); @@ -506,7 +506,7 @@ if ($resql) print '
'; + print ''; $staticcontrat->ref = ($obj->ref ? $obj->ref : $obj->fk_contrat); $staticcontrat->id = $obj->fk_contrat; print $staticcontrat->getNomUrl(1, 16); @@ -586,7 +586,7 @@ if ($resql) print '
'; + print ''; $staticcontrat->ref = ($obj->ref ? $obj->ref : $obj->fk_contrat); $staticcontrat->id = $obj->fk_contrat; print $staticcontrat->getNomUrl(1, 16); diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 70ab37c0380..4b163480035 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2019 Laurent Destailleur + * Copyright (C) 2004-2020 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2014-2019 Juanjo Menent @@ -612,9 +612,11 @@ while ($i < min($num, $limit)) } print '
'; + print ''; print $contracttmp->getNomUrl(1); if ($obj->nb_late) print img_warning($langs->trans("Late")); if (!empty($obj->note_private) || !empty($obj->note_public)) { @@ -631,6 +633,7 @@ while ($i < min($num, $limit)) print ''.$contracttmp->getFormatedCustomerRef($obj->ref_customer).'
'; +print '
'; + +print ''; + + print '

'; +print '
'; +print ''; +print ''; + // Notification per contacts $title = $langs->trans("ListOfNotificationsPerUser"); if (!empty($conf->societe->enabled)) $title = $langs->trans("ListOfNotificationsPerUserOrContact"); @@ -211,7 +262,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { } $helptext = ''; - form_constantes($constantes, 0, $helptext); + form_constantes($constantes, 2, $helptext); } else { print ''; print ''; @@ -248,14 +299,18 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { print '
'; } -print '
'; -print '* '.$langs->trans("GoOntoUserCardToAddMore").'
'; -if (!empty($conf->societe->enabled)) print '** '.$langs->trans("GoOntoContactCardToAddMore").'
'; +print '
'; + +print ''; + -print '
'; print '

'; +print '
'; +print ''; +print ''; + print load_fiche_titre($langs->trans("ListOfFixedNotifications"), '', ''); print ''; @@ -333,6 +388,12 @@ foreach ($listofnotifiedevents as $notifiedevent) } print '
'; +print '
'; +print '* '.$langs->trans("GoOntoUserCardToAddMore").'
'; +if (!empty($conf->societe->enabled)) print '** '.$langs->trans("GoOntoContactCardToAddMore").'
'; + +print '
'; + print '
'; print '
'; diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index f2e8e94ab78..b78c0478370 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -1409,7 +1409,7 @@ function complete_elementList_with_modules(&$elementList) * * @param array $tableau Array of constants array('key'=>array('type'=>type, 'label'=>label) * where type can be 'string', 'text', 'textarea', 'html', 'yesno', 'emailtemplate:xxx', ... - * @param int $strictw3c 0=Include form into table (deprecated), 1=Form is outside table to respect W3C (no form into table), 2=No form nor button at all (form is output by caller, recommanded) + * @param int $strictw3c 0=Include form into table (deprecated), 1=Form is outside table to respect W3C (deprecated), 2=No form nor button at all (form is output by caller, recommended) * @param string $helptext Help * @return void */ @@ -1420,6 +1420,9 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '') $form = new Form($db); + if (empty($strictw3c)) { + dol_syslog("Warning: Function form_constantes is calle with parameter strictw3c = 0, this is deprecated. Value must be 2 now.", LOG_DEBUG); + } if (!empty($strictw3c) && $strictw3c == 1) { print "\n".''; @@ -1584,12 +1587,13 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '') //var_dump($modelmail); $moreonlabel = ''; if (!empty($arrayofmessagename[$modelmail->label])) $moreonlabel = ' ('.$langs->trans("SeveralLangugeVariatFound").')'; - $arrayofmessagename[$modelmail->label] = $langs->trans(preg_replace('/\(|\)/', '', $modelmail->label)).$moreonlabel; + // The 'label' is the key that is unique if we exclude the language + $arrayofmessagename[$modelmail->label.':'.$tmp[1]] = $langs->trans(preg_replace('/\(|\)/', '', $modelmail->label)).$moreonlabel; } } //var_dump($arraydefaultmessage); //var_dump($arrayofmessagename); - print $form->selectarray('constvalue_'.$obj->name, $arrayofmessagename, $obj->value, 'None', 1, 0, '', 0, 0, 0, '', '', 1); + print $form->selectarray('constvalue_'.$obj->name, $arrayofmessagename, $obj->value.':'.$tmp[1], 'None', 0, 0, '', 0, 0, 0, '', '', 1); } else // type = 'string' ou 'chaine' { From 2afd38e2f65c555579dd661dd728f15c98e0e3e0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 May 2020 21:59:31 +0200 Subject: [PATCH 338/780] FIX Combo list of available users to filter on the list of leaves. --- htdocs/core/class/html.form.class.php | 54 +++++++++++++-------------- htdocs/holiday/list.php | 8 ++-- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 39a006e0342..93061d200d8 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1574,16 +1574,16 @@ class Form // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** - * Return select list of users + * Return the HTML select list of users * - * @param string $selected Id user preselected - * @param string $htmlname Field name in form - * @param int $show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue - * @param array $exclude Array list of users id to exclude - * @param int $disabled If select list must be disabled - * @param array $include Array list of users id to include - * @param int $enableonly Array list of users id to be enabled. All other must be disabled - * @param string $force_entity '0' or Ids of environment to force + * @param string $selected Id user preselected + * @param string $htmlname Field name in form + * @param int $show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue + * @param array $exclude Array list of users id to exclude + * @param int $disabled If select list must be disabled + * @param array|string $include Array list of users id to include. User '' for all users or 'hierarchy' to have only supervised users or 'hierarchyme' to have supervised + me + * @param int $enableonly Array list of users id to be enabled. All other must be disabled + * @param string $force_entity '0' or Ids of environment to force * @return void * @deprecated Use select_dolusers instead * @see select_dolusers() @@ -1598,24 +1598,24 @@ class Form /** * Return select list of users * - * @param string $selected User id or user object of user preselected. If 0 or < -2, we use id of current user. If -1, keep unselected (if empty is allowed) - * @param string $htmlname Field name in form - * @param int $show_empty 0=list with no empty value, 1=add also an empty value into list - * @param array $exclude Array list of users id to exclude - * @param int $disabled If select list must be disabled - * @param array|string $include Array list of users id to include or 'hierarchy' to have only supervised users or 'hierarchyme' to have supervised + me - * @param array $enableonly Array list of users id to be enabled. If defined, it means that others will be disabled - * @param string $force_entity '0' or Ids of environment to force - * @param int $maxlength Maximum length of string into list (0=no limit) - * @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status - * @param string $morefilter Add more filters into sql request (Example: 'employee = 1') - * @param integer $show_every 0=default list, 1=add also a value "Everybody" at beginning of list - * @param string $enableonlytext If option $enableonlytext is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty. - * @param string $morecss More css - * @param int $noactive Show only active users (this will also happened whatever is this option if USER_HIDE_INACTIVE_IN_COMBOBOX is on). - * @param int $outputmode 0=HTML select string, 1=Array - * @param bool $multiple add [] in the name of element and add 'multiple' attribut - * @return string HTML select string + * @param string $selected User id or user object of user preselected. If 0 or < -2, we use id of current user. If -1, keep unselected (if empty is allowed) + * @param string $htmlname Field name in form + * @param int $show_empty 0=list with no empty value, 1=add also an empty value into list + * @param array $exclude Array list of users id to exclude + * @param int $disabled If select list must be disabled + * @param array|string $include Array list of users id to include. User '' for all users or 'hierarchy' to have only supervised users or 'hierarchyme' to have supervised + me + * @param array $enableonly Array list of users id to be enabled. If defined, it means that others will be disabled + * @param string $force_entity '0' or Ids of environment to force + * @param int $maxlength Maximum length of string into list (0=no limit) + * @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status + * @param string $morefilter Add more filters into sql request (Example: 'employee = 1') + * @param integer $show_every 0=default list, 1=add also a value "Everybody" at beginning of list + * @param string $enableonlytext If option $enableonlytext is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty. + * @param string $morecss More css + * @param int $noactive Show only active users (this will also happened whatever is this option if USER_HIDE_INACTIVE_IN_COMBOBOX is on). + * @param int $outputmode 0=HTML select string, 1=Array + * @param bool $multiple add [] in the name of element and add 'multiple' attribut + * @return string HTML select string * @see select_dolgroups() */ public function select_dolusers($selected = '', $htmlname = 'userid', $show_empty = 0, $exclude = null, $disabled = 0, $include = '', $enableonly = '', $force_entity = '0', $maxlength = 0, $showstatus = 0, $morefilter = '', $show_every = 0, $enableonlytext = '', $morecss = '', $noactive = 0, $outputmode = 0, $multiple = false) diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php index 2361edf8a27..2277563aaa0 100644 --- a/htdocs/holiday/list.php +++ b/htdocs/holiday/list.php @@ -1,9 +1,9 @@ - * Copyright (C) 2013-2018 Laurent Destailleur + * Copyright (C) 2013-2020 Laurent Destailleur * Copyright (C) 2012-2016 Regis Houssin * Copyright (C) 2018 Charlene Benke - * Copyright (C) 2019 Frédéric France + * Copyright (C) 2019 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 @@ -476,7 +476,7 @@ if ($resql) $include = ''; - if (!empty($user->rights->holiday->read_all)) $include = 'hierarchyme'; // Can see all + if (empty($user->rights->holiday->read_all)) $include = 'hierarchyme'; // Can see only its hierarchyl print '
'; print ''."\n"; @@ -488,7 +488,7 @@ if ($resql) if (!empty($arrayfields['cp.ref']['checked'])) { print ''; } From 93e69d515d66542609e281fa2293c82790d108b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 5 May 2020 06:38:24 +0200 Subject: [PATCH 339/780] nowtime is not defined --- htdocs/core/js/lib_notification.js.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index 769e0a36157..250eb0231a6 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -37,8 +37,9 @@ if (!($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root.'/' || $_SERVER['HTTP top_httphead('text/javascript; charset=UTF-8'); print 'var login = \''.$_SESSION['dol_login'].'\';'."\n"; + print 'var nowtime = Date.now();'; print 'var time_auto_update = '.$conf->global->MAIN_BROWSER_NOTIFICATION_FREQUENCY.';'."\n"; // Always defined - print 'var time_js_next_test = (Date.now() + time_auto_update);'."\n"; + print 'var time_js_next_test = (nowtime + time_auto_update);'."\n"; ?> /* Check if permission ok */ From c0b9fef22907d7cc747b28f142a345702e75ae79 Mon Sep 17 00:00:00 2001 From: Pierre Ardoin <32256817+mapiolca@users.noreply.github.com> Date: Tue, 5 May 2020 08:40:30 +0200 Subject: [PATCH 340/780] Fix issue in status name Before : $commandestatic->LibStatut($obj->nb) shows bad value because bad param Now : $commandestatic->LibStatut($obj->fk_statut) shows good value. --- htdocs/fourn/commande/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/index.php b/htdocs/fourn/commande/index.php index 78d6c01679f..dd50efc7591 100644 --- a/htdocs/fourn/commande/index.php +++ b/htdocs/fourn/commande/index.php @@ -189,7 +189,7 @@ if ($resql) $obj = $db->fetch_object($resql); print ''; - print ''; + print ''; print ''; print "\n"; From d6de46cc05abc417b72624534c84a8075642edf1 Mon Sep 17 00:00:00 2001 From: oscim Date: Tue, 5 May 2020 08:54:52 +0200 Subject: [PATCH 341/780] Update list.php Add massaction for payment invoice --- htdocs/compta/facture/list.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index ed773b038bb..7caef50c223 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -297,7 +297,16 @@ if (empty($reshook)) include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } -if ($massaction == 'withdrawrequest') +if($massaction == 'reglement'){ + + $arrayofselected=is_array($toselect)?$toselect:array(); + + $loc = dol_buildpath('/compta/paiement.php', 2).'?facids='.implode(',', $arrayofselected); + + header('Location: '.$loc); + exit; +} +elseif ($massaction == 'withdrawrequest') { $langs->load("withdrawals"); @@ -657,6 +666,7 @@ if ($resql) 'generate_doc'=>$langs->trans("ReGeneratePDF"), 'builddoc'=>$langs->trans("PDFMerge"), 'presend'=>$langs->trans("SendByMail"), + 'reglement'=>$langs->trans("InvoicePaymentsLimits"), ); if ($conf->prelevement->enabled) { $langs->load("withdrawals"); From 204c788dec7fae27cfe6e0da5d1a6afa34baba67 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 5 May 2020 06:56:54 +0000 Subject: [PATCH 342/780] Fixing style errors. --- htdocs/compta/facture/list.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 7caef50c223..a06230ab60b 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -298,7 +298,6 @@ if (empty($reshook)) } if($massaction == 'reglement'){ - $arrayofselected=is_array($toselect)?$toselect:array(); $loc = dol_buildpath('/compta/paiement.php', 2).'?facids='.implode(',', $arrayofselected); From c7753dd2e0198a5a0d8c08684aff391cf1e1571c Mon Sep 17 00:00:00 2001 From: oscim Date: Tue, 5 May 2020 09:44:46 +0200 Subject: [PATCH 343/780] Update list.php --- htdocs/compta/facture/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index a06230ab60b..3d7493312d1 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -300,7 +300,7 @@ if (empty($reshook)) if($massaction == 'reglement'){ $arrayofselected=is_array($toselect)?$toselect:array(); - $loc = dol_buildpath('/compta/paiement.php', 2).'?facids='.implode(',', $arrayofselected); + $loc = dol_buildpath('/compta/paiement.php', 2).'?action=create&facids='.implode(',', $arrayofselected); header('Location: '.$loc); exit; From c14b6884e3f71de24cd27dc4da3d1e0db04bb13d Mon Sep 17 00:00:00 2001 From: gauthier Date: Tue, 5 May 2020 10:02:36 +0200 Subject: [PATCH 344/780] FIX : missing hook init + table class + $page not set --- htdocs/compta/prelevement/bons.php | 1 + htdocs/compta/prelevement/list.php | 1 + htdocs/compta/prelevement/rejets.php | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/prelevement/bons.php b/htdocs/compta/prelevement/bons.php index 2b67b73c95b..27654de1ad0 100644 --- a/htdocs/compta/prelevement/bons.php +++ b/htdocs/compta/prelevement/bons.php @@ -53,6 +53,7 @@ $search_ref = GETPOST('search_ref', 'alpha'); $search_amount = GETPOST('search_amount', 'alpha'); $bon=new BonPrelevement($db, ""); +$hookmanager->initHooks(array('withdrawalsreceiptslist')); /* diff --git a/htdocs/compta/prelevement/list.php b/htdocs/compta/prelevement/list.php index 81e58e19cca..eb741b981d9 100644 --- a/htdocs/compta/prelevement/list.php +++ b/htdocs/compta/prelevement/list.php @@ -56,6 +56,7 @@ $search_company = GETPOST('search_company', 'alpha'); $statut = GETPOST('statut', 'int'); $bon=new BonPrelevement($db, ""); +$hookmanager->initHooks(array('withdrawalsreceiptslineslist')); $ligne=new LignePrelevement($db, $user); diff --git a/htdocs/compta/prelevement/rejets.php b/htdocs/compta/prelevement/rejets.php index 333d07a4617..7611945a40d 100644 --- a/htdocs/compta/prelevement/rejets.php +++ b/htdocs/compta/prelevement/rejets.php @@ -40,6 +40,7 @@ $result = restrictedArea($user, 'prelevement', '', '', 'bons'); // Get supervariables $page = GETPOST('page', 'int'); +if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 $sortorder = GETPOST('sortorder', 'alpha'); $sortfield = GETPOST('sortfield', 'alpha'); @@ -57,6 +58,7 @@ if ($sortorder == "") $sortorder="DESC"; if ($sortfield == "") $sortfield="p.datec"; $rej = new RejetPrelevement($db, $user); +$hookmanager->initHooks(array('withdrawalsreceiptsrejectedlist')); $ligne = new LignePrelevement($db, $user); /* @@ -85,7 +87,7 @@ if ($result) print_barre_liste($langs->trans("WithdrawsRefused"), $page, $_SERVER["PHP_SELF"], $urladd, $sortfield, $sortorder, '', $num); print"\n\n"; - print '
'; - print ''; + print ''; print '
'.$commandestatic->LibStatut($obj->nb).''.$commandestatic->LibStatut($obj->fk_statut).''.$obj->nb.' '.$commandestatic->LibStatut($obj->fk_statut, 3).'
'; + print '
'; print ''; print_liste_field_titre("Line", $_SERVER["PHP_SELF"], "p.ref", '', $urladd); print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", '', $urladd); From 78a427c9967a398e0fd8d3aaeaa4c1b723a487db Mon Sep 17 00:00:00 2001 From: atm-lena Date: Tue, 5 May 2020 14:35:03 +0200 Subject: [PATCH 345/780] FIX wrong user right's name to top menu "commercial" --- htdocs/core/menus/standard/eldy.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 84555ba23cf..f1859c0fcc5 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -234,7 +234,7 @@ function print_eldy_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout = ) ? 1 : 0, 'perms'=>(!empty($user->rights->propal->lire) || !empty($user->rights->commande->lire) || - !empty($user->rights->supplier_order->lire) || + !empty($user->rights->fournisseur->lire) || !empty($user->rights->supplier_proposal->lire) || !empty($user->rights->contrat->lire) || !empty($user->rights->ficheinter->lire) From db591cdcd8b9920455af51ce28267b075cbebf13 Mon Sep 17 00:00:00 2001 From: kamel Date: Tue, 5 May 2020 14:47:31 +0200 Subject: [PATCH 346/780] FIX: show value of the extrafields in the bank list --- htdocs/compta/bank/list.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index eaefdfb6573..457a5986dea 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -556,6 +556,12 @@ foreach ($accounts as $key=>$type) } // Extra fields + if (is_array($objecttmp->array_options)) { + $obj = new stdClass(); + foreach ($objecttmp->array_options as $k => $v) { + $obj->$k = $v; + } + } include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook $parameters = array('arrayfields'=>$arrayfields); From 7e6b5a384d00ea1d92a6b66f84f1a7e11c4df1a1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 15:16:30 +0200 Subject: [PATCH 347/780] Code comment --- htdocs/core/class/html.form.class.php | 36 +++++++++++++-------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index f48ce989a7a..7073fd41989 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1669,24 +1669,24 @@ class Form /** * Return select list of users * - * @param string $selected User id or user object of user preselected. If 0 or < -2, we use id of current user. If -1, keep unselected (if empty is allowed) - * @param string $htmlname Field name in form - * @param int $show_empty 0=list with no empty value, 1=add also an empty value into list - * @param array $exclude Array list of users id to exclude - * @param int $disabled If select list must be disabled - * @param array|string $include Array list of users id to include or 'hierarchy' to have only supervised users or 'hierarchyme' to have supervised + me - * @param array $enableonly Array list of users id to be enabled. If defined, it means that others will be disabled - * @param string $force_entity '0' or Ids of environment to force - * @param int $maxlength Maximum length of string into list (0=no limit) - * @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status - * @param string $morefilter Add more filters into sql request (Example: 'employee = 1') - * @param integer $show_every 0=default list, 1=add also a value "Everybody" at beginning of list - * @param string $enableonlytext If option $enableonlytext is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty. - * @param string $morecss More css - * @param int $noactive Show only active users (this will also happened whatever is this option if USER_HIDE_INACTIVE_IN_COMBOBOX is on). - * @param int $outputmode 0=HTML select string, 1=Array - * @param bool $multiple add [] in the name of element and add 'multiple' attribut - * @return string HTML select string + * @param string $selected User id or user object of user preselected. If 0 or < -2, we use id of current user. If -1, keep unselected (if empty is allowed) + * @param string $htmlname Field name in form + * @param int $show_empty 0=list with no empty value, 1=add also an empty value into list + * @param array $exclude Array list of users id to exclude + * @param int $disabled If select list must be disabled + * @param array|string $include Array list of users id to include. User '' for all users or 'hierarchy' to have only supervised users or 'hierarchyme' to have supervised + me + * @param array $enableonly Array list of users id to be enabled. If defined, it means that others will be disabled + * @param string $force_entity '0' or Ids of environment to force + * @param int $maxlength Maximum length of string into list (0=no limit) + * @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status + * @param string $morefilter Add more filters into sql request (Example: 'employee = 1') + * @param integer $show_every 0=default list, 1=add also a value "Everybody" at beginning of list + * @param string $enableonlytext If option $enableonlytext is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty. + * @param string $morecss More css + * @param int $noactive Show only active users (this will also happened whatever is this option if USER_HIDE_INACTIVE_IN_COMBOBOX is on). + * @param int $outputmode 0=HTML select string, 1=Array + * @param bool $multiple add [] in the name of element and add 'multiple' attribut + * @return string HTML select string * @see select_dolgroups() */ public function select_dolusers($selected = '', $htmlname = 'userid', $show_empty = 0, $exclude = null, $disabled = 0, $include = '', $enableonly = '', $force_entity = '0', $maxlength = 0, $showstatus = 0, $morefilter = '', $show_every = 0, $enableonlytext = '', $morecss = '', $noactive = 0, $outputmode = 0, $multiple = false) From 36a0780f148c684e3172a689e2d8e550d0473b52 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 15:20:40 +0200 Subject: [PATCH 348/780] More complete fix for #13817 --- htdocs/core/menus/standard/eldy.lib.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index f1859c0fcc5..17edca45676 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -227,19 +227,21 @@ function print_eldy_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout = $tmpentry = array( 'enabled'=>(!empty($conf->propal->enabled) || !empty($conf->commande->enabled) || - !empty($conf->supplier_order->enabled) || - !empty($conf->supplier_proposal->enabled) || - !empty($conf->contrat->enabled) || + !empty($conf->fournisseur->enabled) || + !empty($conf->supplier_proposal->enabled) || + !empty($conf->supplier_order->enabled) || + !empty($conf->contrat->enabled) || !empty($conf->ficheinter->enabled) ) ? 1 : 0, 'perms'=>(!empty($user->rights->propal->lire) || !empty($user->rights->commande->lire) || !empty($user->rights->fournisseur->lire) || !empty($user->rights->supplier_proposal->lire) || + !empty($user->rights->supplier_order->lire) || !empty($user->rights->contrat->lire) || !empty($user->rights->ficheinter->lire) ), - 'module'=>'propal|commande|supplier_order|supplier_proposal|contrat|ficheinter' + 'module'=>'propal|commande|supplier_proposal|supplier_order|contrat|ficheinter' ); $onlysupplierorder = ! empty($user->rights->fournisseur->commande->lire) && From 797beef79f7c351e59cb566f5909cafc81c23c92 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 15:26:41 +0200 Subject: [PATCH 349/780] Fix --- 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 3d7493312d1..c5a3d60f99c 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -297,7 +297,7 @@ if (empty($reshook)) include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } -if($massaction == 'reglement'){ +if ($massaction == 'makepayment'){ $arrayofselected=is_array($toselect)?$toselect:array(); $loc = dol_buildpath('/compta/paiement.php', 2).'?action=create&facids='.implode(',', $arrayofselected); @@ -665,7 +665,7 @@ if ($resql) 'generate_doc'=>$langs->trans("ReGeneratePDF"), 'builddoc'=>$langs->trans("PDFMerge"), 'presend'=>$langs->trans("SendByMail"), - 'reglement'=>$langs->trans("InvoicePaymentsLimits"), + //'makepayment'=>$langs->trans("InvoicePaymentsLimits"), TODO Blank page when using this ); if ($conf->prelevement->enabled) { $langs->load("withdrawals"); From 1b35380dda4b47606d4ee8172c4152770af65a63 Mon Sep 17 00:00:00 2001 From: atm-quentin Date: Mon, 4 May 2020 14:55:24 +0200 Subject: [PATCH 350/780] NEW stats invoice graph with 3 bars --- htdocs/compta/facture/stats/index.php | 4 ++-- htdocs/core/class/dolgraph.class.php | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index f5472196cc2..1a771c8e60b 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -58,8 +58,8 @@ if ($user->socid > 0) $nowyear = strftime("%Y", dol_now()); $year = GETPOST('year') > 0 ?GETPOST('year') : $nowyear; -//$startyear=$year-2; -$startyear = $year - 1; +if(!empty($conf->global->INVOICE_STATS_GRAPHS_SHOW_2_YEARS)) $startyear=$year-2; +else $startyear=$year-1; $endyear = $year; diff --git a/htdocs/core/class/dolgraph.class.php b/htdocs/core/class/dolgraph.class.php index 8af46154223..3f1bfa245fb 100644 --- a/htdocs/core/class/dolgraph.class.php +++ b/htdocs/core/class/dolgraph.class.php @@ -894,7 +894,15 @@ class DolGraph if ($i > $firstlot) $this->stringtoshow .= ', '."\n"; $color = sprintf("%02x%02x%02x", $this->datacolor[$i][0], $this->datacolor[$i][1], $this->datacolor[$i][2]); $this->stringtoshow .= '{ '; - if (!isset($this->type[$i]) || $this->type[$i] == 'bars') $this->stringtoshow .= 'bars: { lineWidth: 1, show: true, align: "'.($i == $firstlot ? 'center' : 'left').'", barWidth: 0.5 }, '; + if (! isset($this->type[$i]) || $this->type[$i] == 'bars') { + if($nblot == 3) { + if($i == $firstlot) $align = 'right'; + else if($i == $firstlot+1) $align = 'center'; + else $align = 'left'; + $this->stringtoshow.='bars: { lineWidth: 1, show: true, align: "'.$align.'", barWidth: 0.45 }, '; + } + else $this->stringtoshow.='bars: { lineWidth: 1, show: true, align: "'.($i==$firstlot?'center':'left').'", barWidth: 0.5 }, '; + } if (isset($this->type[$i]) && ($this->type[$i] == 'lines' || $this->type[$i] == 'linesnopoint')) $this->stringtoshow .= 'lines: { show: true, fill: false }, points: { show: '.($this->type[$i] == 'linesnopoint' ? 'false' : 'true').' }, '; $this->stringtoshow .= 'color: "#'.$color.'", label: "'.(isset($this->Legend[$i]) ? dol_escape_js($this->Legend[$i]) : '').'", data: d'.$i.' }'; $i++; From eab69c3a598e7d826ce1fbf31b8402ad0063d8b3 Mon Sep 17 00:00:00 2001 From: atm-quentin Date: Mon, 4 May 2020 15:19:45 +0200 Subject: [PATCH 351/780] NEW multiselect categorie client stats facturation --- htdocs/compta/facture/stats/index.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 1a771c8e60b..4c0d23c90e2 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -32,6 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facturestats.class.php'; +if(!empty($conf->category->enabled)) require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; $WIDTH = DolGraph::getDefaultGraphSizeForStats('width'); $HEIGHT = DolGraph::getDefaultGraphSizeForStats('height'); @@ -49,6 +50,7 @@ $categ_id = GETPOST('categ_id', 'categ_id'); $userid = GETPOST('userid', 'int'); $socid = GETPOST('socid', 'int'); +$custcats = GETPOST('custcats', 'array'); // Security check if ($user->socid > 0) { @@ -66,7 +68,7 @@ $endyear = $year; /* * View */ - +if(!empty($conf->category->enabled)) $langs->load('categories'); $form = new Form($db); $formcompany = new FormCompany($db); $formother = new FormOther($db); @@ -93,6 +95,10 @@ $stats = new FactureStats($db, $socid, $mode, ($userid > 0 ? $userid : 0), ($typ if ($mode == 'customer') { if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND f.fk_statut IN ('.$db->escape($object_status).')'; + if (is_array($custcats) && !empty($custcats)) { + $stats->from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_societe as cat ON (f.fk_soc = cat.fk_soc)'; + $stats->where .= ' AND cat.fk_categorie IN ('.implode(',', $custcats).')'; + } } if ($mode == 'supplier') { @@ -256,6 +262,13 @@ if ($mode == 'customer') $filter = 's.client in (1,2,3)'; if ($mode == 'supplier') $filter = 's.fournisseur = 1'; print $form->selectarray('socid', $companies, $socid, 1, 0, 0, 'style="width: 95%"', 0, 0, 0, '', '', 1); print ''; +if(!empty($conf->category->enabled) && $mode == 'customer') { + // Customer Category + print ''; + } // ThirdParty Type print ''; print ''; + // MO + if (!empty($conf->mrp->enabled) && $user->rights->mrp->read) + { + $nblines++; + //$ret = $product->load_stats_mo($socid); + if ($ret < 0) dol_print_error($db); + $langs->load("orders"); + print ''; + print ''; + } // Customer proposals if (!empty($conf->propal->enabled) && $user->rights->propale->lire) { @@ -379,7 +397,7 @@ function show_stats_for_company($product, $socid) if ($ret < 0) dol_print_error($db); $langs->load("propal"); print ''; print ''; } - // MO - if (!empty($conf->mrp->enabled) && $user->rights->mrp->read) - { - $nblines++; - //$ret = $product->load_stats_mo($socid); - if ($ret < 0) dol_print_error($db); - $langs->load("orders"); - print ''; - print ''; - } // Customer invoices if (!empty($conf->facture->enabled) && $user->rights->facture->lire) { @@ -469,7 +469,7 @@ function show_stats_for_company($product, $socid) if ($ret < 0) dol_print_error($db); $langs->load("bills"); print ''; - print ''; + print ''; print ''; if ($object->statut == Holiday::STATUS_REFUSED) From db8596743c7c081674420aa3a53edc68c75dd851 Mon Sep 17 00:00:00 2001 From: Vaadasch Date: Thu, 7 May 2020 22:09:55 +0200 Subject: [PATCH 394/780] Update facture.class.php Auto-update dates (if not empty) of services when cloning facture. Actual code is only for month by month. If empty (start or end) => do nothing If set, update for next month if there is only 1d between what had been set and the start (or end) of the month. If there is more than one day from start or end of the month => do nothing, because we're not sure the service is by month Worst case scenario : the facture is cloned, the service is updated with new unwanted dates User need to manually updates date : he would have done that either way --- htdocs/compta/facture/class/facture.class.php | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 90ed560b3cf..395de47d443 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1177,6 +1177,30 @@ class Facture extends CommonInvoice { unset($object->lines[$i]); unset($object->products[$i]); // Tant que products encore utilise + } + // Bloc to update dates of service (month by month only if previously filled at 1d near start or end of month) + // If it's a service with start and end dates + if ($line->product_type == 1 && !empty($line->date_start) && !empty($line->date_end) ) { + // Get the dates + $start = dol_getdate($line->date_start); + $end = dol_getdate($line->date_end); + + // Get the first and last day of the month + $first = dol_get_first_day($start['year'], $start['mon']); + $last = dol_get_first_day($end['year'], $end['mon']); + + // Get diff betweend start/end of month and previously filled + $diffFirst = num_between_day($first, dol_mktime($start['hours'], $start['minutes'], $start['seconds'], $start['mon'], $start['mday'], $start['year'], 'user')); + $diffLast = num_between_day(dol_mktime($end['hours'], $end['minutes'], $end['seconds'], $end['mon'], $end['mday'], $end['year'], 'user'), $last); + + // If there is <= 1d (or 2?) of start/or/end of month + if ($diffFirst <= 2 && $diffLast <= 2) { + $nextMonth = dol_get_next_month($end['mon'], $end['year']); + $newFirst = dol_get_first_day($nextMonth['year'],$nextMonth['month']); + $newLast = dol_get_last_day($nextMonth['year'],$nextMonth['month']); + $object->lines[$i]->date_start = $newFirst; + $object->lines[$i]->date_end = $newLast; + } } } From 7514a625fdb17a9226185ddc9a7fda64b84f625e Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 7 May 2020 20:11:59 +0000 Subject: [PATCH 395/780] Fixing style errors. --- htdocs/compta/facture/class/facture.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 395de47d443..ffa96fe5237 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1184,7 +1184,7 @@ class Facture extends CommonInvoice // Get the dates $start = dol_getdate($line->date_start); $end = dol_getdate($line->date_end); - + // Get the first and last day of the month $first = dol_get_first_day($start['year'], $start['mon']); $last = dol_get_first_day($end['year'], $end['mon']); @@ -1196,8 +1196,8 @@ class Facture extends CommonInvoice // If there is <= 1d (or 2?) of start/or/end of month if ($diffFirst <= 2 && $diffLast <= 2) { $nextMonth = dol_get_next_month($end['mon'], $end['year']); - $newFirst = dol_get_first_day($nextMonth['year'],$nextMonth['month']); - $newLast = dol_get_last_day($nextMonth['year'],$nextMonth['month']); + $newFirst = dol_get_first_day($nextMonth['year'], $nextMonth['month']); + $newLast = dol_get_last_day($nextMonth['year'], $nextMonth['month']); $object->lines[$i]->date_start = $newFirst; $object->lines[$i]->date_end = $newLast; } From 206b16410ebd615c87ed7fbf120804f53c5d980e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 May 2020 22:52:32 +0200 Subject: [PATCH 396/780] Revert the option to avoid to introduce a feature that is duplicate with already existing view "Events/Agenda". It also keeps a common behaviour between other tools. Maxi debug on messages of tickets --- htdocs/comm/action/class/actioncomm.class.php | 3 +- htdocs/comm/action/list.php | 39 +++++++----- htdocs/contrat/card.php | 5 +- htdocs/core/class/html.formactions.class.php | 63 +++++++++++-------- htdocs/core/lib/functions.lib.php | 6 +- htdocs/core/lib/ticket.lib.php | 2 +- .../install/mysql/migration/11.0.0-12.0.0.sql | 2 +- htdocs/langs/en_US/main.lang | 1 + htdocs/public/ticket/view.php | 2 +- htdocs/societe/card.php | 2 +- htdocs/theme/eldy/timeline.inc.php | 2 +- htdocs/ticket/card.php | 20 ++++-- htdocs/ticket/class/actions_ticket.class.php | 3 +- htdocs/ticket/class/ticket.class.php | 2 +- 14 files changed, 88 insertions(+), 64 deletions(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index fac4dc45715..7141d875567 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -405,7 +405,6 @@ class ActionComm extends CommonObject $this->userassigned[$tmpid] = array('id'=>$tmpid, 'transparency'=>$this->transparency); } - $userownerid = $this->userownerid; $userdoneid = $this->userdoneid; @@ -484,7 +483,7 @@ class ActionComm extends CommonObject $sql .= (strval($this->datef) != '' ? "'".$this->db->idate($this->datef)."'" : "null").", "; $sql .= ((isset($this->durationp) && $this->durationp >= 0 && $this->durationp != '') ? "'".$this->db->escape($this->durationp)."'" : "null").", "; // deprecated $sql .= (isset($this->type_id) ? $this->type_id : "null").","; - $sql .= ($code ? ("'".$code."'") : "null").", "; + $sql .= ($code ? ("'".$this->db->escape($code)."'") : "null").", "; $sql .= ($this->ref_ext ? ("'".$this->db->idate($this->ref_ext)."'") : "null").", "; $sql .= ((isset($this->socid) && $this->socid > 0) ? $this->socid : "null").", "; $sql .= ((isset($this->fk_project) && $this->fk_project > 0) ? $this->fk_project : "null").", "; diff --git a/htdocs/comm/action/list.php b/htdocs/comm/action/list.php index a4b1a9618fb..ef6e21c39cd 100644 --- a/htdocs/comm/action/list.php +++ b/htdocs/comm/action/list.php @@ -242,7 +242,7 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; $sql = "SELECT"; if ($usergroup > 0) $sql .= " DISTINCT"; $sql .= " s.nom as societe, s.rowid as socid, s.client, s.email as socemail,"; -$sql .= " a.id, a.label, a.note, a.datep as dp, a.datep2 as dp2, a.fulldayevent, a.location,"; +$sql .= " a.id, a.code, a.label, a.note, a.datep as dp, a.datep2 as dp2, a.fulldayevent, a.location,"; $sql .= ' a.fk_user_author,a.fk_user_action,'; $sql .= " a.fk_contact, a.note, a.percent as percent,"; $sql .= " a.fk_element, a.elementtype, a.datec, a.tms as datem,"; @@ -385,14 +385,8 @@ if ($resql) print ''; $nav = ''; - //if ($actioncode) $nav.=''; - //if ($resourceid) $nav.=''; if ($filter) $nav .= ''; - //if ($filtert) $nav.=''; - //if ($socid) $nav.=''; if ($showbirthday) $nav .= ''; - //if ($pid) $nav.=''; - //if ($usergroup) $nav.=''; print $nav; dol_fiche_head($head, $tabactive, $langs->trans('Agenda'), 0, 'action'); @@ -548,6 +542,7 @@ if ($resql) $actionstatic->id = $obj->id; $actionstatic->ref = $obj->id; + $actionstatic->code = $obj->code; $actionstatic->type_code = $obj->type_code; $actionstatic->type_label = $obj->type_label; $actionstatic->type_picto = $obj->type_picto; @@ -583,21 +578,31 @@ if ($resql) if (!empty($arrayfields['c.libelle']['checked'])) { print ''; } diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 52144d44d34..25857767e80 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -2227,13 +2227,12 @@ else $MAXEVENT = 10; - $morehtmlright = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-list-alt', DOL_URL_ROOT.'/contrat/agenda.php?id='.$object->id); + $morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-list-alt imgforviewmode', DOL_URL_ROOT.'/contrat/agenda.php?id='.$object->id); // List of actions on element include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; $formactions = new FormActions($db); - $somethingshown = $formactions->showactions($object, 'contract', $socid, 1, 'listactions', $MAXEVENT, '', $morehtmlright); - + $somethingshown = $formactions->showactions($object, 'contract', $socid, 1, 'listactions', $MAXEVENT, '', $morehtmlcenter); print ''; } diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index b06877c8c3b..352fcebb06b 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -165,13 +165,12 @@ class FormActions * @param string $morecss More css on table * @param int $max Max number of record * @param string $moreparambacktopage More param for the backtopage - * @param string $morehtmlright More html text on right of title line + * @param string $morehtmlcenter More html text on center of title line * @return int <0 if KO, >=0 if OK */ - public function showactions($object, $typeelement, $socid = 0, $forceshowtitle = 0, $morecss = 'listactions', $max = 0, $moreparambacktopage = '', $morehtmlright = '') + public function showactions($object, $typeelement, $socid = 0, $forceshowtitle = 0, $morecss = 'listactions', $max = 0, $moreparambacktopage = '', $morehtmlcenter = '') { global $langs, $conf, $user; - global $bc; require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; @@ -208,8 +207,9 @@ class FormActions $newcardbutton .= dolGetButtonTitle($langs->trans("AddEvent"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.dol_print_date(dol_now(), 'dayhourlog').'&origin='.$typeelement.'&originid='.$object->id.($object->socid > 0 ? '&socid='.$object->socid : ($socid > 0 ? '&socid='.$socid : '')).($projectid > 0 ? '&projectid='.$projectid : '').'&backtopage='.urlencode($urlbacktopage)); } + print ''."\n"; - print load_fiche_titre($title, $newcardbutton, '', 0, 0, '', $morehtmlright); + print load_fiche_titre($title, $newcardbutton, '', 0, 0, '', $morehtmlcenter); $page = 0; $param = ''; @@ -230,29 +230,29 @@ class FormActions $cacheusers = array(); $cursorevent = 0; - foreach ($listofactions as $action) + foreach ($listofactions as $actioncomm) { if ($max && $cursorevent >= $max) break; - $ref = $action->getNomUrl(1, -1); - $label = $action->getNomUrl(0, 38); + $ref = $actioncomm->getNomUrl(1, -1); + $label = $actioncomm->getNomUrl(0, 38); print ''; // Ref print ''; // Onwer print ''; + // Type print ''; // Label print ''; // Date - print ''; print ''; print ''; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 43cee63c1ed..bcf47a58eef 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3155,7 +3155,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'intervention', 'label', 'language', 'list', 'listlight', 'lot', 'map-marker-alt', 'money-bill-alt', 'mrp', 'note', 'object_accounting', 'object_action', 'object_account', 'object_barcode', 'object_bill', 'object_billa', 'object_billd', 'object_bom', - 'object_category', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', + 'object_category', 'object_conversation', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_donation', 'object_dynamicprice', 'object_holiday', 'object_hrm', 'object_invoice', 'object_intervention', 'object_label', @@ -3190,7 +3190,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $arrayconvpictotofa = array( 'account'=>'university', 'accountancy'=>'money-check-alt', 'action'=>'calendar-alt', 'address'=> 'address-book', 'bank_account'=>'university', 'bill'=>'file-invoice-dollar', 'billa'=>'file-excel', 'billd'=>'file-medical', 'bom'=>'cubes', - 'company'=>'building', 'contact'=>'address-book', 'contract'=>'suitcase', 'donation'=>'file-alt', 'dynamicprice'=>'hand-holding-usd', + 'company'=>'building', 'contact'=>'address-book', 'contract'=>'suitcase', 'conversation'=>'comments', 'donation'=>'file-alt', 'dynamicprice'=>'hand-holding-usd', 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accounting'=>'chart-line', 'category'=>'tag', 'dollyrevert'=>'dolly', 'hrm'=>'umbrella-beach', 'margin'=>'calculator', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode', @@ -3263,7 +3263,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $arrayconvpictotomorcess = array( 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'accountancy'=>'bg-infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', 'bill'=>'bg-infobox-commande', 'billa'=>'bg-infobox-commande', 'billd'=>'bg-infobox-commande', - 'cash-register'=>'bg-infobox-bank_account', 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', + 'cash-register'=>'bg-infobox-bank_account', 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'conversation'=>'bg-infobox-contrat', 'donation'=>'bg-infobox-commande', 'dollyrevert'=>'flip', 'ecm'=>'bg-infobox-action', 'hrm'=>'bg-infobox-adherent', 'group'=>'bg-infobox-adherent', 'intervention'=>'bg-infobox-contrat', 'multicurrency'=>'bg-infobox-bank_account', diff --git a/htdocs/core/lib/ticket.lib.php b/htdocs/core/lib/ticket.lib.php index e12531b3846..0a50eb7407f 100644 --- a/htdocs/core/lib/ticket.lib.php +++ b/htdocs/core/lib/ticket.lib.php @@ -709,7 +709,7 @@ function show_ticket_messaging($conf, $langs, $db, $filterobj, $objcon = '', $no $out .= $histo[$key]['id']; $out .= ' '; } else { - $out .= $actionstatic->getNomUrl(1, -1).' '; + $out .= $actionstatic->getNomUrl(1, -1, 'valignmiddle').' '; } //if ($user->rights->agenda->allactions->read || $actionstatic->authorid == $user->id) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 0730511ad99..38d0acb97fa 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -275,4 +275,4 @@ ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; ALTER TABLE llx_menu MODIFY COLUMN module varchar(255); - +ALTER TABLE llx_actioncomm SET fk_action = 50 where fk_action = 40 AND code = 'TICKET_MSG'; diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index fb0808e0953..8c992bf91ca 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -426,6 +426,7 @@ Modules=Modules/Applications Option=Option List=List FullList=Full list +FullConversation=Full conversation Statistics=Statistics OtherStatistics=Other statistics Status=Status diff --git a/htdocs/public/ticket/view.php b/htdocs/public/ticket/view.php index 1938c68de3e..af656e69ab0 100644 --- a/htdocs/public/ticket/view.php +++ b/htdocs/public/ticket/view.php @@ -370,7 +370,7 @@ if ($action == "view_ticket" || $action == "presend" || $action == "close" || $a } // Message list - print load_fiche_titre($langs->trans('TicketMessagesList'), '', 'messages@ticket'); + print load_fiche_titre($langs->trans('TicketMessagesList'), '', 'object_conversation'); $object->viewTicketMessages(false, true, $object->dao); } else diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index b5400db04b3..195d4df88bb 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -2826,7 +2826,7 @@ else $MAXEVENT = 10; - $morehtmlright = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-list-alt', DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id); + $morehtmlright = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-list-alt imgforviewmode', DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id); // List of actions on element include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; diff --git a/htdocs/theme/eldy/timeline.inc.php b/htdocs/theme/eldy/timeline.inc.php index 21e683e42f0..eb13821c221 100644 --- a/htdocs/theme/eldy/timeline.inc.php +++ b/htdocs/theme/eldy/timeline.inc.php @@ -154,7 +154,7 @@ a.timeline-btn:hover border-radius: 50%; text-align: center; left: 18px; - top: 0; + top: 5px; } .timeline > .time-label > span { font-weight: 600; diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index 7d5ab5fe228..6e400b3eeaa 100644 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -143,6 +143,7 @@ if (empty($reshook)) { $action = 'view'; } + // Action to add an action (not a message) if (GETPOST('add', 'alpha') && $user->rights->ticket->write) { $error = 0; @@ -381,6 +382,7 @@ if (empty($reshook)) { $action = 'view'; } + // Action to add an action (not a message) if ($action == 'add_message' && GETPOSTISSET('btn_add_message') && $user->rights->ticket->read) { $ret = $object->newMessage($user, $action, (GETPOST('private_message', 'alpha') == "on" ? 1 : 0)); @@ -1218,7 +1220,8 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd if (GETPOSTISSET('actionbis') && $action == 'presend') $action = 'presend_addmessage'; // add a message - if ($action == 'presend' || $action == 'presend_addmessage') { + if ($action == 'presend' || $action == 'presend_addmessage') + { $action = 'add_message'; // action to use to post the message $modelmail = 'ticket_send'; @@ -1293,8 +1296,8 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd print ''; } - // Show messages on card - if (empty($conf->global->TICKET_HIDE_MESSAGES_ON_CARD)) { + // Show messages on card (Note: this is a duplicate of the view Events/Agenda but on the main tab) + if (! empty($conf->global->TICKET_SHOW_MESSAGES_ON_CARD)) { $param = '&id='.$object->id; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.$limit; @@ -1337,16 +1340,23 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd print showDirectPublicLink($object).'
'; print ''; - if (!empty($conf->global->TICKET_HIDE_MESSAGES_ON_CARD)) { + if (empty($conf->global->TICKET_SHOW_MESSAGES_ON_CARD)) { print '
'; + $MAXEVENT = 10; + + $morehtmlcenter = dolGetButtonTitle($langs->trans('FullConversation'), '', 'fa fa-comments imgforviewmode', DOL_URL_ROOT.'/ticket/messaging.php?id='.$object->id); + $morehtmlcenter .= ' '; + $morehtmlcenter .= dolGetButtonTitle($langs->trans('FullList'), '', 'fa fa-list-alt imgforviewmode', DOL_URL_ROOT.'/ticket/agenda.php?id='.$object->id); + // List of actions on element include_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php'; $formactions = new FormActions($db); - $somethingshown = $formactions->showactions($object, 'ticket', $socid, 1); + $somethingshown = $formactions->showactions($object, 'ticket', $socid, 1, 'listactions', $MAXEVENT, '', $morehtmlcenter); print '
'; } + print ''; } } diff --git a/htdocs/ticket/class/actions_ticket.class.php b/htdocs/ticket/class/actions_ticket.class.php index 9a67c3dd574..9931b12ffa2 100644 --- a/htdocs/ticket/class/actions_ticket.class.php +++ b/htdocs/ticket/class/actions_ticket.class.php @@ -272,6 +272,7 @@ class ActionsTicket print $langs->trans('User'); print ''; } + print ''; foreach ($this->dao->cache_msgs_ticket as $id => $arraymsgs) { if (!$arraymsgs['private'] @@ -280,7 +281,7 @@ class ActionsTicket //print ''; print ''; print ''; if ($show_user) { print ''; } diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index 59fe85e66ef..85406c46faa 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -274,7 +274,7 @@ if (!empty($conf->service->enabled)) print '\n"; diff --git a/htdocs/takepos/genimg/qr.php b/htdocs/takepos/genimg/qr.php index f0c3bea82b9..c73e874a465 100644 --- a/htdocs/takepos/genimg/qr.php +++ b/htdocs/takepos/genimg/qr.php @@ -29,5 +29,5 @@ require '../../core/modules/barcode/doc/tcpdfbarcode.modules.php'; $key = GETPOST('key'); -$module = new modtcpdfbarcode($db); +$module = new modTcpdfbarcode($db); $result = $module->buildBarCode("http://www.takepos.com", 'QRCODE', 'Y'); diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index 80d67513bf2..eac1f40bfd1 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -31,14 +31,14 @@ if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); -require '../main.inc.php'; // Load $user and permissions +if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; -if ($_SESSION["publicterminal"]){ - // Decode place if is a order from customer phone +if (defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { + // Decode place if it is an order from customer phone $key = GETPOST('key'); $place=dol_decode($key); } @@ -53,7 +53,7 @@ if ($setterminal > 0) $langs->loadLangs(array("bills", "orders", "commercial", "cashdesk", "receiptprinter")); -if ($_SESSION["publicterminal"]) { +if (defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { $_SESSION["takeposterminal"] = 1; // Use Terminal 1 for public customers } elseif (empty($user->rights->takepos->run)) { diff --git a/htdocs/takepos/public/auto_order.php b/htdocs/takepos/public/auto_order.php index c97edfdc0e7..5b463959b69 100644 --- a/htdocs/takepos/public/auto_order.php +++ b/htdocs/takepos/public/auto_order.php @@ -24,6 +24,10 @@ if (!defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session) if (!defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip +require '../../main.inc.php'; + $_SESSION["basiclayout"] = 1; $_SESSION["publicterminal"] = true; // Is a public customer -require '../phone.php'; + +define('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE', 1); +include '../phone.php'; From 790bef98e5e271cc3750d2f9ff5749b590262ebb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 May 2020 23:45:33 +0200 Subject: [PATCH 403/780] Look and feel v12 --- htdocs/ticket/class/actions_ticket.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/ticket/class/actions_ticket.class.php b/htdocs/ticket/class/actions_ticket.class.php index 147f6228005..0fb5835cb4c 100644 --- a/htdocs/ticket/class/actions_ticket.class.php +++ b/htdocs/ticket/class/actions_ticket.class.php @@ -281,7 +281,7 @@ class ActionsTicket //print ''; print ''; print ''; if ($show_user) { print ''; @@ -531,8 +531,8 @@ if ($mode == 'searchkey') { $obj = $db->fetch_object($result); } - print ''.img_edit().''; - print '  '; + print ''.img_edit().''; + print ' '; print ''.img_delete().''; print '  '; $htmltext = $langs->trans("OriginalValueWas", $newlangfileonly->tab_translate[$key]); @@ -541,7 +541,7 @@ if ($mode == 'searchkey') elseif (!empty($conf->global->MAIN_ENABLE_OVERWRITE_TRANSLATION)) { //print $key.'-'.$val; - print ''.img_edit_add($langs->trans("Overwrite")).''; + print ''.img_edit_add($langs->trans("Overwrite")).''; } if (!empty($conf->global->MAIN_FEATURES_LEVEL)) diff --git a/htdocs/comm/action/list.php b/htdocs/comm/action/list.php index ef6e21c39cd..e804213cdce 100644 --- a/htdocs/comm/action/list.php +++ b/htdocs/comm/action/list.php @@ -625,7 +625,7 @@ if ($resql) $formatToUse = $obj->fulldayevent ? 'day' : 'dayhour'; // Start date if (!empty($arrayfields['a.datep']['checked'])) { - print ''; } diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index 8dc2e418cc8..474a4f03696 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -27,7 +27,7 @@ /** * Show filter form in agenda view * - * @param Object $form Form object + * @param Form $form Form object * @param int $canedit Can edit filter fields * @param int $status Status * @param int $year Year @@ -123,7 +123,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print $langs->trans("ThirdParty").'   '; print ''; } From a649dcecf767cd63a5b30234916b1c7b6613fac9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 May 2020 03:01:51 +0200 Subject: [PATCH 407/780] Look and field --- htdocs/takepos/admin/bar.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/admin/bar.php b/htdocs/takepos/admin/bar.php index 5c255dc89c7..2508ab56040 100644 --- a/htdocs/takepos/admin/bar.php +++ b/htdocs/takepos/admin/bar.php @@ -85,7 +85,7 @@ print ''; print '
'; print '
'.$langs->trans("CustomersProspectsCategoriesShort").''; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_CUSTOMER, null, 'parent', null, null, 1); + print $form->multiselectarray('custcats', $cate_arbo, GETPOST('custcats', 'array'), null, null, null, null, "90%"); + print '
'.$langs->trans("ThirdPartyType").''; $sortparam_typent = (empty($conf->global->SOCIETE_SORT_ON_TYPEENT) ? 'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT); // NONE means we keep sort of original array, so we sort on position. ASC, means next function will sort on label. From b2a9791dca9bd3872ba359a77439290167820ce9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 16:33:02 +0200 Subject: [PATCH 352/780] Fix pagination on pages "Related items" --- htdocs/core/lib/product.lib.php | 42 +++++++++---------- htdocs/product/stats/commande.php | 22 ++++------ htdocs/product/stats/commande_fournisseur.php | 20 ++++----- htdocs/product/stats/contrat.php | 21 ++++------ htdocs/product/stats/facture.php | 20 ++++----- htdocs/product/stats/facture_fournisseur.php | 22 ++++------ htdocs/product/stats/mo.php | 22 ++++------ htdocs/product/stats/propal.php | 20 ++++----- htdocs/product/stats/supplier_proposal.php | 22 ++++------ 9 files changed, 90 insertions(+), 121 deletions(-) diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index a6ee33e9a65..0615ff127b0 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -353,6 +353,24 @@ function show_stats_for_company($product, $socid) print ''.$langs->trans("TotalQuantity").'
'; + print ''.img_object('', 'mrp').' '.$langs->trans("MO").''; + print ''; + print $product->stats_mo['suppliers']; + print ''; + print $product->stats_mo['nb']; + print ''; + print $product->stats_mo['qty']; + print '
'; - print ''.img_object('', 'propal').' '.$langs->trans("SupplierProposals").''; + print ''.img_object('', 'supplier_proposal').' '.$langs->trans("SupplierProposals").''; print ''; print $product->stats_proposal_supplier['suppliers']; print ''; @@ -415,7 +433,7 @@ function show_stats_for_company($product, $socid) if ($ret < 0) dol_print_error($db); $langs->load("orders"); print '
'; - print ''.img_object('', 'order').' '.$langs->trans("SuppliersOrders").''; + print ''.img_object('', 'supplier_order').' '.$langs->trans("SuppliersOrders").''; print ''; print $product->stats_commande_fournisseur['suppliers']; print ''; @@ -425,24 +443,6 @@ function show_stats_for_company($product, $socid) print '
'; - print ''.img_object('', 'mrp').' '.$langs->trans("MO").''; - print ''; - print $product->stats_mo['suppliers']; - print ''; - print $product->stats_mo['nb']; - print ''; - print $product->stats_mo['qty']; - print '
'; - print ''.img_object('', 'bill').' '.$langs->trans("SuppliersInvoices").''; + print ''.img_object('', 'supplier_invoice').' '.$langs->trans("SuppliersInvoices").''; print ''; print $product->stats_facture_fournisseur['suppliers']; print ''; diff --git a/htdocs/product/stats/commande.php b/htdocs/product/stats/commande.php index 71c1b0f1ef7..9898c13f21b 100644 --- a/htdocs/product/stats/commande.php +++ b/htdocs/product/stats/commande.php @@ -164,26 +164,22 @@ if ($id > 0 || !empty($ref)) { $num = $db->num_rows($result); - if (!empty($id)) - $option .= '&id='.$product->id; - if (!empty($search_month)) - $option .= '&search_month='.$search_month; - if (!empty($search_year)) - $option .= '&search_year='.$search_year; - if ($limit > 0 && $limit != $conf->liste_limit) $option .= '&limit='.urlencode($limit); + if ($limit > 0 && $limit != $conf->liste_limit) $option .= '&limit='.urlencode($limit); + if (!empty($id)) $option .= '&id='.$product->id; + if (!empty($search_month)) $option .= '&search_month='.urlencode($search_month); + if (!empty($search_year)) $option .= '&search_year='.urlencode($search_year); print ''."\n"; if (!empty($sortfield)) print ''; if (!empty($sortorder)) print ''; - if (!empty($page)) { - print ''; - $option .= '&page='.$page; - } - print_barre_liste($langs->trans("CustomersOrders"), $page, $_SERVER["PHP_SELF"], "&id=".$product->id, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit); - print '
'; + print_barre_liste($langs->trans("CustomersOrders"), $page, $_SERVER["PHP_SELF"], $option, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit, 0, 0, 1); + + if (!empty($page)) $option .= '&page='.urlencode($page); + + print '
'; print '
'; print $langs->trans('Period').' ('.$langs->trans("OrderDate").') - '; print $langs->trans('Month').': '; diff --git a/htdocs/product/stats/commande_fournisseur.php b/htdocs/product/stats/commande_fournisseur.php index 7a5b88000e1..61024cdd7ff 100644 --- a/htdocs/product/stats/commande_fournisseur.php +++ b/htdocs/product/stats/commande_fournisseur.php @@ -172,26 +172,22 @@ if ($id > 0 || !empty($ref)) { if ($result) { $num = $db->num_rows($result); - if (!empty($id)) - $option .= '&id='.$product->id; - if (!empty($search_month)) - $option .= '&search_month='.$search_month; - if (!empty($search_year)) - $option .= '&search_year='.$search_year; if ($limit > 0 && $limit != $conf->liste_limit) $option .= '&limit='.urlencode($limit); + if (!empty($id)) $option .= '&id='.$product->id; + if (!empty($search_month)) $option .= '&search_month='.urlencode($search_month); + if (!empty($search_year)) $option .= '&search_year='.urlencode($search_year); print ''."\n"; if (!empty($sortfield)) print ''; if (!empty($sortorder)) print ''; - if (!empty($page)) { - print ''; - $option .= '&page='.$page; - } - print_barre_liste($langs->trans("SuppliersOrders"), $page, $_SERVER["PHP_SELF"], "&id=".$product->id, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit); - print '
'; + print_barre_liste($langs->trans("SuppliersOrders"), $page, $_SERVER["PHP_SELF"], $option, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit, 0, 0, 1); + + if (!empty($page)) $option .= '&page='.urlencode($page); + + print '
'; print '
'; print $langs->trans('Period').' ('.$langs->trans("OrderDate").') - '; print $langs->trans('Month').': '; diff --git a/htdocs/product/stats/contrat.php b/htdocs/product/stats/contrat.php index 8e61446a834..8f88044d913 100644 --- a/htdocs/product/stats/contrat.php +++ b/htdocs/product/stats/contrat.php @@ -153,27 +153,24 @@ if ($id > 0 || !empty($ref)) if ($result) { $num = $db->num_rows($result); - if (!empty($id)) - $option .= '&id='.$product->id; - if (!empty($search_month)) - $option .= '&search_month='.$search_month; - if (!empty($search_year)) - $option .= '&search_year='.$search_year; + if ($limit > 0 && $limit != $conf->liste_limit) $option .= '&limit='.urlencode($limit); + if (!empty($id)) $option .= '&id='.$product->id; + if (!empty($search_month)) $option .= '&search_month='.urlencode($search_month); + if (!empty($search_year)) $option .= '&search_year='.urlencode($search_year); print ''."\n"; + if (!empty($sortfield)) print ''; if (!empty($sortorder)) print ''; - if (!empty($page)) { - print ''; - $option .= '&page='.$page; - } - print_barre_liste($langs->trans("Contrats"), $page, $_SERVER["PHP_SELF"], "&id=".$product->id, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit); + print_barre_liste($langs->trans("Contrats"), $page, $_SERVER["PHP_SELF"], $option, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit, 0, 0, 1); - $i = 0; + if (!empty($page)) $option .= '&page='.urlencode($page); + + $i = 0; print '
'; print ''; diff --git a/htdocs/product/stats/facture.php b/htdocs/product/stats/facture.php index e42afd9f28c..342cd3058a2 100644 --- a/htdocs/product/stats/facture.php +++ b/htdocs/product/stats/facture.php @@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; // Load translation files required by the page -$langs->loadLangs(array('companies', 'bills', 'products')); +$langs->loadLangs(array('companies', 'bills', 'products', 'supplier_proposal')); $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); @@ -185,25 +185,21 @@ if ($id > 0 || !empty($ref)) { $num = $db->num_rows($result); - if (!empty($id)) - $option .= '&id='.$product->id; - if (!empty($search_month)) - $option .= '&search_month='.$search_month; - if (!empty($search_year)) - $option .= '&search_year='.$search_year; if ($limit > 0 && $limit != $conf->liste_limit) $option .= '&limit='.urlencode($limit); + if (!empty($id)) $option .= '&id='.$product->id; + if (!empty($search_month)) $option .= '&search_month='.urlencode($search_month); + if (!empty($search_year)) $option .= '&search_year='.urlencode($search_year); print ''."\n"; if (!empty($sortfield)) print ''; if (!empty($sortorder)) print ''; - if (!empty($page)) { - print ''; - $option .= '&page='.$page; - } - print_barre_liste($langs->trans("CustomersInvoices"), $page, $_SERVER["PHP_SELF"], "&id=".$product->id, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit); + print_barre_liste($langs->trans("CustomersInvoices"), $page, $_SERVER["PHP_SELF"], $option, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit, 0, 0, 1); + + if (!empty($page)) $option .= '&page='.urlencode($page); + print '
'; print '
'; print $langs->trans('Period').' ('.$langs->trans("DateInvoice").') - '; diff --git a/htdocs/product/stats/facture_fournisseur.php b/htdocs/product/stats/facture_fournisseur.php index 29774709e5e..f39d4ab73b3 100644 --- a/htdocs/product/stats/facture_fournisseur.php +++ b/htdocs/product/stats/facture_fournisseur.php @@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; // Load translation files required by the page -$langs->loadLangs(array('companies', 'bills', 'products', 'companies')); +$langs->loadLangs(array('companies', 'bills', 'products', 'companies', 'supplier_proposal')); $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); @@ -165,26 +165,22 @@ if ($id > 0 || !empty($ref)) { $num = $db->num_rows($result); - if (!empty($id)) - $option .= '&id='.$product->id; - if (!empty($search_month)) - $option .= '&search_month='.$search_month; - if (!empty($search_year)) - $option .= '&search_year='.$search_year; if ($limit > 0 && $limit != $conf->liste_limit) $option .= '&limit='.urlencode($limit); + if (!empty($id)) $option .= '&id='.$product->id; + if (!empty($search_month)) $option .= '&search_month='.urlencode($search_month); + if (!empty($search_year)) $option .= '&search_year='.urlencode($search_year); print ''."\n"; if (!empty($sortfield)) print ''; if (!empty($sortorder)) print ''; - if (!empty($page)) { - print ''; - $option .= '&page='.$page; - } - print_barre_liste($langs->trans("SuppliersInvoices"), $page, $_SERVER["PHP_SELF"], "&id=$product->id", $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit); - print '
'; + print_barre_liste($langs->trans("SuppliersInvoices"), $page, $_SERVER["PHP_SELF"], $option, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit, 0, 0, 1); + + if (!empty($page)) $option .= '&page='.urlencode($page); + + print '
'; print '
'; print $langs->trans('Period').' ('.$langs->trans("DateInvoice").') - '; print $langs->trans('Month').': '; diff --git a/htdocs/product/stats/mo.php b/htdocs/product/stats/mo.php index 0a148ad2c8a..51e91aeaaac 100644 --- a/htdocs/product/stats/mo.php +++ b/htdocs/product/stats/mo.php @@ -150,27 +150,23 @@ if ($id > 0 || !empty($ref)) if ($result) { $num = $db->num_rows($result); - if (!empty($id)) - $option .= '&id='.$product->id; - if (!empty($search_month)) - $option .= '&search_month='.urlencode($search_month); - if (!empty($search_year)) - $option .= '&search_year='.urlencode($search_year); - if ($limit > 0 && $limit != $conf->liste_limit) $option .= '&limit='.urlencode($limit); + + if ($limit > 0 && $limit != $conf->liste_limit) $option .= '&limit='.urlencode($limit); + if (!empty($id)) $option .= '&id='.$product->id; + if (!empty($search_month)) $option .= '&search_month='.urlencode($search_month); + if (!empty($search_year)) $option .= '&search_year='.urlencode($search_year); print ''."\n"; if (!empty($sortfield)) print ''; if (!empty($sortorder)) print ''; - if (!empty($page)) { - print ''; - $option .= '&page='.$page; - } - print_barre_liste($langs->trans("Mos"), $page, $_SERVER["PHP_SELF"], "&id=".$product->id, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit); + print_barre_liste($langs->trans("Mos"), $page, $_SERVER["PHP_SELF"], $option, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit, 0, 0, 1); - $i = 0; + if (!empty($page)) $option .= '&page='.urlencode($page); + + $i = 0; print '
'; print '
'; diff --git a/htdocs/product/stats/propal.php b/htdocs/product/stats/propal.php index d65b88ccabc..35b93cac8b9 100644 --- a/htdocs/product/stats/propal.php +++ b/htdocs/product/stats/propal.php @@ -169,26 +169,22 @@ if ($id > 0 || !empty($ref)) { $num = $db->num_rows($result); - if (!empty($id)) - $option .= '&id='.$product->id; - if (!empty($search_month)) - $option .= '&search_month='.$search_month; - if (!empty($search_year)) - $option .= '&search_year='.$search_year; if ($limit > 0 && $limit != $conf->liste_limit) $option .= '&limit='.urlencode($limit); + if (!empty($id)) $option .= '&id='.$product->id; + if (!empty($search_month)) $option .= '&search_month='.urlencode($search_month); + if (!empty($search_year)) $option .= '&search_year='.urlencode($search_year); print ''."\n"; if (!empty($sortfield)) print ''; if (!empty($sortorder)) print ''; - if (!empty($page)) { - print ''; - $option .= '&page='.$page; - } - print_barre_liste($langs->trans("Proposals"), $page, $_SERVER["PHP_SELF"], "&id=".$product->id, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit); - print '
'; + print_barre_liste($langs->trans("Proposals"), $page, $_SERVER["PHP_SELF"], $option, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit, 0, 0, 1); + + if (!empty($page)) $option .= '&page='.urlencode($page); + + print '
'; print '
'; print $langs->trans('Period').' ('.$langs->trans("DatePropal").') - '; print $langs->trans('Month').': '; diff --git a/htdocs/product/stats/supplier_proposal.php b/htdocs/product/stats/supplier_proposal.php index a7fede51aa1..5a59cbb9c83 100644 --- a/htdocs/product/stats/supplier_proposal.php +++ b/htdocs/product/stats/supplier_proposal.php @@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; // Load translation files required by the page -$langs->loadLangs(array('products', 'companies')); +$langs->loadLangs(array('products', 'companies', 'supplier_proposal')); $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); @@ -169,26 +169,22 @@ if ($id > 0 || !empty($ref)) { $num = $db->num_rows($result); - if (!empty($id)) - $option .= '&id='.$product->id; - if (!empty($search_month)) - $option .= '&search_month='.$search_month; - if (!empty($search_year)) - $option .= '&search_year='.$search_year; if ($limit > 0 && $limit != $conf->liste_limit) $option .= '&limit='.urlencode($limit); + if (!empty($id)) $option .= '&id='.$product->id; + if (!empty($search_month)) $option .= '&search_month='.urlencode($search_month); + if (!empty($search_year)) $option .= '&search_year='.urlencode($search_year); print ''."\n"; if (!empty($sortfield)) print ''; if (!empty($sortorder)) print ''; - if (!empty($page)) { - print ''; - $option .= '&page='.$page; - } - print_barre_liste($langs->trans("Proposals"), $page, $_SERVER["PHP_SELF"], "&id=".$product->id, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit); - print '
'; + print_barre_liste($langs->trans("Proposals"), $page, $_SERVER["PHP_SELF"], $option, $sortfield, $sortorder, '', $num, $totalofrecords, '', 0, '', '', $limit, 0, 0, 1); + + if (!empty($page)) $option .= '&page='.urlencode($page); + + print '
'; print '
'; print $langs->trans('Period').' ('.$langs->trans("DatePropal").') - '; print $langs->trans('Month').': '; From e871e736ebc18b39473b2227b631160444b07498 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 17:54:01 +0200 Subject: [PATCH 353/780] Fix for #5824 --- htdocs/modulebuilder/template/myobject_card.php | 2 +- htdocs/mrp/class/mo.class.php | 2 +- htdocs/mrp/mo_card.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index 336b410022a..c0b33be2bf8 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -533,7 +533,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea */ // Delete (need delete permission, or if draft, just need create/modify permission) - if ($permissiontodelete) + if ($permissiontodelete || ($object->status == $object::STATUS_DRAFT && $permissiontoadd)) { print ''.$langs->trans('Delete').''."\n"; } diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 42d97ee81d9..07c6eae52a1 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -1008,7 +1008,7 @@ class Mo extends CommonObject } $url = dol_buildpath('/mrp/mo_card.php', 1).'?id='.$this->id; - if ($option = 'production') $url = dol_buildpath('/mrp/mo_production.php', 1).'?id='.$this->id; + if ($option == 'production') $url = dol_buildpath('/mrp/mo_production.php', 1).'?id='.$this->id; if ($option != 'nolink') { diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php index 59dd5ed7a7c..92f68785856 100644 --- a/htdocs/mrp/mo_card.php +++ b/htdocs/mrp/mo_card.php @@ -639,7 +639,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } // Delete (need delete permission, or if draft, just need create/modify permission) - if ($permissiontodelete) + if ($permissiontodelete || ($object->status == $object::STATUS_DRAFT && $permissiontoadd)) { print ''.$langs->trans('Delete').''."\n"; } From ea145188b90b5515e6d1fd4bcb5c0de9c1cc3729 Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Tue, 5 May 2020 18:14:38 +0200 Subject: [PATCH 354/780] fix filter on date service contrat with hour --- htdocs/contrat/services_list.php | 33 ++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/htdocs/contrat/services_list.php b/htdocs/contrat/services_list.php index b8ab4cfe1ce..b250ea23378 100644 --- a/htdocs/contrat/services_list.php +++ b/htdocs/contrat/services_list.php @@ -247,22 +247,31 @@ if ($search_name) $sql .= " AND s.nom LIKE '%".$db->escape($search_name)."%' if ($search_contract) $sql .= " AND c.ref LIKE '%".$db->escape($search_contract)."%' "; if ($search_service) $sql .= " AND (p.ref LIKE '%".$db->escape($search_service)."%' OR p.description LIKE '%".$db->escape($search_service)."%' OR cd.description LIKE '%".$db->escape($search_service)."%')"; if ($socid > 0) $sql .= " AND s.rowid = ".$socid; -$filter_dateouvertureprevue = dol_mktime(0, 0, 0, $opouvertureprevuemonth, $opouvertureprevueday, $opouvertureprevueyear); -if ($filter_dateouvertureprevue != '' && $filter_opouvertureprevue == -1) $filter_opouvertureprevue = '='; -$filter_date1 = dol_mktime(0, 0, 0, $op1month, $op1day, $op1year); -if ($filter_date1 != '' && $filter_op1 == -1) $filter_op1 = '='; +$filter_dateouvertureprevue_start=dol_mktime(0, 0, 0, $opouvertureprevuemonth, $opouvertureprevueday, $opouvertureprevueyear); +$filter_dateouvertureprevue_end=dol_mktime(23, 59, 59, $opouvertureprevuemonth, $opouvertureprevueday, $opouvertureprevueyear); +if ($filter_dateouvertureprevue_start != '' && $filter_opouvertureprevue == -1) $filter_opouvertureprevue = ' BETWEEN '; -$filter_date2 = dol_mktime(0, 0, 0, $op2month, $op2day, $op2year); -if ($filter_date2 != '' && $filter_op2 == -1) $filter_op2 = '='; +$filter_date1_start =dol_mktime(0, 0, 0, $op1month, $op1day, $op1year); +$filter_date1_end =dol_mktime(23, 59, 59, $op1month, $op1day, $op1year); +if ($filter_date1_start != '' && $filter_op1 == -1) $filter_op1 = ' BETWEEN '; -$filter_datecloture = dol_mktime(0, 0, 0, $opcloturemonth, $opclotureday, $opclotureyear); -if ($filter_datecloture != '' && $filter_opcloture == -1) $filter_opcloture = '='; +$filter_date2_start=dol_mktime(0, 0, 0, $op2month, $op2day, $op2year); +$filter_date2_end=dol_mktime(23, 59, 59, $op2month, $op2day, $op2year); +if ($filter_date2_start != '' && $filter_op2 == -1) $filter_op2 = ' BETWEEN '; -if (!empty($filter_opouvertureprevue) && $filter_opouvertureprevue != -1 && $filter_dateouvertureprevue != '') $sql .= " AND cd.date_ouverture_prevue ".$filter_opouvertureprevue." '".$db->idate($filter_dateouvertureprevue)."'"; -if (!empty($filter_op1) && $filter_op1 != -1 && $filter_date1 != '') $sql .= " AND cd.date_ouverture ".$filter_op1." '".$db->idate($filter_date1)."'"; -if (!empty($filter_op2) && $filter_op2 != -1 && $filter_date2 != '') $sql .= " AND cd.date_fin_validite ".$filter_op2." '".$db->idate($filter_date2)."'"; -if (!empty($filter_opcloture) && $filter_opcloture != -1 && $filter_datecloture != '') $sql .= " AND cd.date_cloture ".$filter_opcloture." '".$db->idate($filter_datecloture)."'"; +$filter_datecloture_start=dol_mktime(0, 0, 0, $opcloturemonth, $opclotureday, $opclotureyear); +$filter_datecloture_end=dol_mktime(23, 59, 59, $opcloturemonth, $opclotureday, $opclotureyear); +if ($filter_datecloture_start != '' && $filter_opcloture == -1) $filter_opcloture = ' BETWEEN '; + +if (! empty($filter_opouvertureprevue) && $filter_opouvertureprevue != -1 && $filter_opouvertureprevue != ' BETWEEN ' && $filter_dateouvertureprevue_start != '') $sql.= " AND cd.date_ouverture_prevue ".$filter_opouvertureprevue." '".$db->idate($filter_dateouvertureprevue_start)."'"; +if (! empty($filter_opouvertureprevue) && $filter_opouvertureprevue == ' BETWEEN ') $sql.= " AND '".$db->idate($filter_dateouvertureprevue_end)."'"; +if (! empty($filter_op1) && $filter_op1 != -1 && $filter_op1 != ' BETWEEN ' && $filter_date1_start != '') $sql.= " AND cd.date_ouverture ".$filter_op1." '".$db->idate($filter_date1_start)."'"; +if (! empty($filter_op1) && $filter_op1==' BETWEEN ') $sql.= " AND '".$db->idate($filter_date1_end)."'"; +if (! empty($filter_op2) && $filter_op2 != -1 && $filter_op2 != ' BETWEEN ' && $filter_date2_start != '') $sql.= " AND cd.date_fin_validite ".$filter_op2." '".$db->idate($filter_date2_start)."'"; +if (! empty($filter_op2) && $filter_op2==' BETWEEN ') $sql.= " AND '".$db->idate($filter_date2_end)."'"; +if (! empty($filter_opcloture) && $filter_opcloture != ' BETWEEN ' && $filter_opcloture != -1 && $filter_datecloture_start != '') $sql.= " AND cd.date_cloture ".$filter_opcloture." '".$db->idate($filter_datecloture_start)."'"; +if (! empty($filter_opcloture) && $filter_opcloture==' BETWEEN ') $sql.= " AND '".$db->idate($filter_datecloture_end)."'"; // Add where from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; $sql .= $db->order($sortfield, $sortorder); From 49f9e88cc179162ffcc510a82f95011eefd9f126 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 18:16:30 +0200 Subject: [PATCH 355/780] Look and feel v12 --- htdocs/core/lib/usergroups.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 3be6a5b44ba..f25d8058e8f 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -745,7 +745,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLELINK, $langs->trans("Default")); } - print '   ('.$langs->trans("Default").': '.$default.') '; + print '   '.$langs->trans("Default").': '.$default.' '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; print ''; From e354e714256ab661736b2edd7f1ef6376d640b35 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 18:19:48 +0200 Subject: [PATCH 356/780] Fix link to themes on dolistore --- htdocs/core/lib/usergroups.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index f25d8058e8f..9ac9383e516 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -359,7 +359,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print $form->textwithpicto($langs->trans("DefaultSkin"), $langs->trans("ThemeDir").' : '.$dirthemestring); print ''; print '
'; } + /* + * Various Payments + */ + + if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->banque->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) + { + $subtotal_ht = 0; + $subtotal_ttc = 0; + + print ''; + + // Debit + $sql = "SELECT SUM(p.amount) AS amount FROM ".MAIN_DB_PREFIX."payment_various as p"; + $sql .= ' WHERE 1 = 1'; + if (!empty($date_start) && !empty($date_end)) + $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; + $sql .= ' GROUP BY p.sens'; + $sql .= ' ORDER BY p.sens'; + + dol_syslog('get various payments', LOG_DEBUG); + $result = $db->query($sql); + if ($result) + { + + // Debit + $obj = $db->fetch_object($result); + if (isset($obj->amount)) + { + $subtotal_ht += -$obj->amount; + $subtotal_ttc += -$obj->amount; + } + print ''; + print "\n"; + if ($modecompta == 'CREANCES-DETTES') print ''; + print '\n"; + print "\n"; + + // Credit + $obj = $db->fetch_object($result); + if (isset($obj->amount)) + { + $subtotal_ht += $obj->amount; + $subtotal_ttc += $obj->amount; + } + print ''; + print "\n"; + if ($modecompta == 'CREANCES-DETTES') print ''; + print '\n"; + print "\n"; + + // Total + $total_ht += $subtotal_ht; + $total_ttc += $subtotal_ttc; + print ''; + if ($modecompta == 'CREANCES-DETTES') + print ''; + print ''; + print ''; + + } + else dol_print_error($db); + } + + /* + * Payement Loan + */ + + if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_LOAN) && !empty($conf->loan->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) + { + $subtotal_ht = 0; + $subtotal_ttc = 0; + + print ''; + + $sql = 'SELECT l.rowid as id, l.label AS label, SUM(p.amount_capital + p.amount_insurance + p.amount_interest) as amount FROM '.MAIN_DB_PREFIX.'payment_loan as p'; + $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'loan AS l ON l.rowid = p.fk_loan'; + $sql .= ' WHERE 1 = 1'; + if (!empty($date_start) && !empty($date_end)) + $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; + $sql .= ' GROUP BY p.fk_loan'; + $sql .= ' ORDER BY p.fk_loan'; + + dol_syslog('get loan payments', LOG_DEBUG); + $result = $db->query($sql); + if ($result) + { + require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; + $loan_static = new Loan($db); + while ($obj = $db->fetch_object($result)) + { + $loan_static->id = $obj->id; + $loan_static->ref = $obj->id; + $loan_static->label = $obj->label; + print ''; + print "\n"; + if ($modecompta == 'CREANCES-DETTES') print ''; + print '\n"; + print "\n"; + $subtotal_ht -= $obj->amount; + $subtotal_ttc -= $obj->amount; + } + + $total_ht += $subtotal_ht; + $total_ttc += $subtotal_ttc; + print ''; + if ($modecompta == 'CREANCES-DETTES') + print ''; + print ''; + print ''; + } + else dol_print_error($db); + } + /* * VAT diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index d462007d273..ed3befce56c 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -6,6 +6,7 @@ * Copyright (C) 2014 Juanjo Menent * Copyright (C) 2014 Florian Henry * Copyright (C) 2018 Frédéric France + * Copyright (C) 2020 Maxime DEMAREST * * 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 @@ -794,6 +795,117 @@ elseif ($modecompta == 'BOOKKEEPING') { // Nothing from this table } +/* + * Various Payments + */ + +if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->banque->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) +{ + + // decaiss + + $sql = "SELECT date_format(p.datep, '%Y-%m') AS dm, SUM(p.amount) AS amount FROM ".MAIN_DB_PREFIX."payment_various as p"; + $sql .= ' WHERE p.sens = 0'; + if (!empty($date_start) && !empty($date_end)) + $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; + $sql .= ' GROUP BY dm'; + + dol_syslog("get various payments"); + $result = $db->query($sql); + if ($result) + { + $num = $db->num_rows($result); + $i = 0; + if ($num) + { + while ($i < $num) + { + $obj = $db->fetch_object($result); + if (!isset($decaiss_ttc[$obj->dm])) $decaiss_ttc[$obj->dm] = 0; + if (isset($obj->amount)) $decaiss_ttc[$obj->dm] += $obj->amount; + $i++; + } + } + } + else + { + dol_print_error($db); + } + + // encaiss + + $sql = "SELECT date_format(p.datep, '%Y-%m') AS dm, SUM(p.amount) AS amount FROM ".MAIN_DB_PREFIX."payment_various AS p"; + $sql .= ' WHERE p.sens = 1'; + if (!empty($date_start) && !empty($date_end)) + $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; + $sql .= ' GROUP BY dm'; + + dol_syslog("get various payments"); + $result = $db->query($sql); + if ($result) + { + $num = $db->num_rows($result); + $i = 0; + if ($num) + { + while ($i < $num) + { + $obj = $db->fetch_object($result); + if (!isset($encaiss_ttc[$obj->dm])) $encaiss_ttc[$obj->dm] = 0; + if (isset($obj->amount)) $encaiss_ttc[$obj->dm] += $obj->amount; + $i++; + } + } + } + else + { + dol_print_error($db); + } + +} +elseif ($modecompta == 'BOOKKEEPING') { + // Useless with BOOKKEEPING +} + +/* + * Payement Loan + */ + +if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_LOAN) && !empty($conf->loan->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) +{ + + $sql = "SELECT date_format(p.datep, '%Y-%m') AS dm, SUM(p.amount_capital + p.amount_insurance + p.amount_interest) AS amount FROM ".MAIN_DB_PREFIX."payment_loan AS p"; + $sql .= ' WHERE 1 = 1'; + if (!empty($date_start) && !empty($date_end)) + $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; + $sql .= ' GROUP BY dm'; + + dol_syslog("get loan payments"); + $result = $db->query($sql); + if ($result) + { + $num = $db->num_rows($result); + $i = 0; + if ($num) + { + while ($i < $num) + { + $obj = $db->fetch_object($result); + if (!isset($decaiss_ttc[$obj->dm])) $decaiss_ttc[$obj->dm] = 0; + if (isset($obj->amount)) $decaiss_ttc[$obj->dm] += $obj->amount; + $i++; + } + } + } + else + { + dol_print_error($db); + } + +} +elseif ($modecompta == 'BOOKKEEPING') { + // Not use with BOOKKEEPING +} /* diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index 6cd046c5607..8a8c837ac87 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -262,3 +262,5 @@ RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices don RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. ReportPurchaseTurnover=Purchase turnover invoiced ReportPurchaseTurnoverCollected=Purchase turnover collected +IncludeVarpaysInResults = Include various payments in reports +IncludeLoansInResults = Include loans in reports diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang index c60c79513c5..d4c59754898 100644 --- a/htdocs/langs/fr_FR/compta.lang +++ b/htdocs/langs/fr_FR/compta.lang @@ -262,3 +262,5 @@ RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices don RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. ReportPurchaseTurnover=Purchase turnover invoiced ReportPurchaseTurnoverCollected=Purchase turnover collected +IncludeVarpaysInResults = Inclure les payments divers dans les rapports +IncludeLoansInResults = Inclure les emprunts dans les rapports From bf8cd51a5aaf32db3dd66bf73c1021ce08f38f4b Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" Date: Wed, 6 May 2020 13:37:24 +0200 Subject: [PATCH 373/780] Fix somes code formating errors --- htdocs/compta/resultat/clientfourn.php | 8 ++------ htdocs/compta/resultat/index.php | 14 ++++++-------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 59b7999e4ef..27bc4526a3e 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -977,7 +977,6 @@ else $result = $db->query($sql); if ($result) { - // Debit $obj = $db->fetch_object($result); if (isset($obj->amount)) @@ -987,7 +986,7 @@ else } print ''; print "\n"; - if ($modecompta == 'CREANCES-DETTES') print ''; + if ($modecompta == 'CREANCES-DETTES') print ''; print '\n"; print "\n"; @@ -1000,7 +999,7 @@ else } print ''; print "\n"; - if ($modecompta == 'CREANCES-DETTES') print ''; + if ($modecompta == 'CREANCES-DETTES') print ''; print '\n"; print "\n"; @@ -1012,7 +1011,6 @@ else print ''; print ''; print ''; - } else dol_print_error($db); } @@ -1055,7 +1053,6 @@ else $subtotal_ht -= $obj->amount; $subtotal_ttc -= $obj->amount; } - $total_ht += $subtotal_ht; $total_ttc += $subtotal_ttc; print ''; @@ -1067,7 +1064,6 @@ else else dol_print_error($db); } - /* * VAT */ diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index ed3befce56c..10d0f31fe72 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -801,7 +801,6 @@ elseif ($modecompta == 'BOOKKEEPING') { if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->banque->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) { - // decaiss $sql = "SELECT date_format(p.datep, '%Y-%m') AS dm, SUM(p.amount) AS amount FROM ".MAIN_DB_PREFIX."payment_various as p"; @@ -863,9 +862,9 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->ba } } -elseif ($modecompta == 'BOOKKEEPING') { - // Useless with BOOKKEEPING -} +// Useless with BOOKKEEPING +//elseif ($modecompta == 'BOOKKEEPING') { +//} /* * Payement Loan @@ -873,7 +872,6 @@ elseif ($modecompta == 'BOOKKEEPING') { if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_LOAN) && !empty($conf->loan->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) { - $sql = "SELECT date_format(p.datep, '%Y-%m') AS dm, SUM(p.amount_capital + p.amount_insurance + p.amount_interest) AS amount FROM ".MAIN_DB_PREFIX."payment_loan AS p"; $sql .= ' WHERE 1 = 1'; if (!empty($date_start) && !empty($date_end)) @@ -903,9 +901,9 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_LOAN) && !empty($conf->loan } } -elseif ($modecompta == 'BOOKKEEPING') { - // Not use with BOOKKEEPING -} +// Useless with BOOKKEEPING +//elseif ($modecompta == 'BOOKKEEPING') { +//} /* From 7bf037ab2ff568e45096d86b5de1d64df7b0239c Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" Date: Wed, 6 May 2020 13:46:24 +0200 Subject: [PATCH 374/780] Fix blank line at end of control structure --- htdocs/compta/resultat/index.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index 10d0f31fe72..ad81a3943c1 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -860,7 +860,6 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->ba { dol_print_error($db); } - } // Useless with BOOKKEEPING //elseif ($modecompta == 'BOOKKEEPING') { @@ -899,7 +898,6 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_LOAN) && !empty($conf->loan { dol_print_error($db); } - } // Useless with BOOKKEEPING //elseif ($modecompta == 'BOOKKEEPING') { From 889e5db4fbbf8e081f9ab4f6fe34e581bd6477a2 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" Date: Wed, 6 May 2020 13:55:38 +0200 Subject: [PATCH 375/780] Fix use Form::selectyesno() for added options in admin/compta.php --- htdocs/admin/compta.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/htdocs/admin/compta.php b/htdocs/admin/compta.php index b3c66af76ca..3ccc2a213ac 100644 --- a/htdocs/admin/compta.php +++ b/htdocs/admin/compta.php @@ -177,20 +177,14 @@ foreach ($list as $key) print ''."\n"; print ''."\n"; print ''; // Option to include loan in results print ''."\n"; print ''."\n"; print ''; print "
'; - $url = 'https://www.dolistore.com/4-skins'; + $url = 'https://www.dolistore.com/9-skins'; print ''; print $langs->trans('DownloadMoreSkins'); print ''; From 41aaf5363dd3b4807bc52e86a568a94f7d78d825 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 18:53:41 +0200 Subject: [PATCH 357/780] Fix templates --- .../template/myobject_agenda.php | 70 +++++++++-------- .../modulebuilder/template/myobject_card.php | 72 +++++++++--------- .../template/myobject_document.php | 40 ++++++++++ .../modulebuilder/template/myobject_note.php | 76 +++++++++---------- htdocs/mrp/mo_agenda.php | 2 +- htdocs/mrp/mo_card.php | 5 +- htdocs/mrp/mo_document.php | 2 +- htdocs/mrp/mo_note.php | 2 +- 8 files changed, 153 insertions(+), 116 deletions(-) diff --git a/htdocs/modulebuilder/template/myobject_agenda.php b/htdocs/modulebuilder/template/myobject_agenda.php index 559c5ed47b0..9b71971b6cf 100644 --- a/htdocs/modulebuilder/template/myobject_agenda.php +++ b/htdocs/modulebuilder/template/myobject_agenda.php @@ -148,44 +148,42 @@ if ($object->id > 0) $morehtmlref = '
'; /* - // Ref customer - $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); - $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); - // Thirdparty - $morehtmlref.='
'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1); - // Project - if (! empty($conf->projet->enabled)) - { - $langs->load("projects"); - $morehtmlref.='
'.$langs->trans('Project') . ' '; - if ($permissiontoadd) - { - if ($action != 'classify') - //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; - $morehtmlref.=' : '; - if ($action == 'classify') { - //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.=''; + // Ref customer + $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); + $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); + // Thirdparty + $morehtmlref.='
'.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); + // Project + if (! empty($conf->projet->enabled)) + { + $langs->load("projects"); + $morehtmlref.='
'.$langs->trans('Project') . ' '; + if ($permissiontoadd) + { + if ($action != 'classify') + //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; + $morehtmlref.=' : '; + if ($action == 'classify') { + //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); + $morehtmlref.='
'; + $morehtmlref.=''; + $morehtmlref.=''; + $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref.=''; + $morehtmlref.='
'; + } else { + $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + } } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + if (! empty($object->fk_project)) { + $proj = new Project($db); + $proj->fetch($object->fk_project); + $morehtmlref .= ': '.$proj->getNomUrl(); + } else { + $morehtmlref .= ''; + } } - } else { - if (! empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref.=''; - $morehtmlref.=$proj->ref; - $morehtmlref.=''; - } else { - $morehtmlref.=''; - } - } - }*/ + }*/ $morehtmlref .= '
'; diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index c0b33be2bf8..e92c88f1364 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -331,42 +331,42 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $morehtmlref = '
'; /* - // Ref bis - $morehtmlref.=$form->editfieldkey("RefBis", 'ref_client', $object->ref_client, $object, $user->rights->mymodule->myobject->creer, 'string', '', 0, 1); - $morehtmlref.=$form->editfieldval("RefBis", 'ref_client', $object->ref_client, $object, $user->rights->mymodule->myobject->creer, 'string', '', null, null, '', 1); - // Thirdparty - $morehtmlref.='
'.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); - // Project - if (! empty($conf->projet->enabled)) - { - $langs->load("projects"); - $morehtmlref.='
'.$langs->trans('Project') . ' '; - if ($permissiontoadd) - { - if ($action != 'classify') - $morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; - if ($action == 'classify') { - //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
'; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', 0, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.='
'; - } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); - } - } else { - if (! empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref.=$proj->getNomUrl(); - } else { - $morehtmlref.=''; - } - } - } - */ + // Ref customer + $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); + $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); + // Thirdparty + $morehtmlref.='
'.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); + // Project + if (! empty($conf->projet->enabled)) + { + $langs->load("projects"); + $morehtmlref.='
'.$langs->trans('Project') . ' '; + if ($permissiontoadd) + { + if ($action != 'classify') + //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; + $morehtmlref.=' : '; + if ($action == 'classify') { + //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); + $morehtmlref.='
'; + $morehtmlref.=''; + $morehtmlref.=''; + $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref.=''; + $morehtmlref.='
'; + } else { + $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + } + } else { + if (! empty($object->fk_project)) { + $proj = new Project($db); + $proj->fetch($object->fk_project); + $morehtmlref .= ': '.$proj->getNomUrl(); + } else { + $morehtmlref .= ''; + } + } + }*/ $morehtmlref .= '
'; diff --git a/htdocs/modulebuilder/template/myobject_document.php b/htdocs/modulebuilder/template/myobject_document.php index 5f3cdf02684..63b114ffc10 100644 --- a/htdocs/modulebuilder/template/myobject_document.php +++ b/htdocs/modulebuilder/template/myobject_document.php @@ -129,6 +129,46 @@ if ($object->id) // ------------------------------------------------------------ $linkback = ''.$langs->trans("BackToList").''; + $morehtmlref = '
'; + /* + // Ref customer + $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); + $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); + // Thirdparty + $morehtmlref.='
'.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); + // Project + if (! empty($conf->projet->enabled)) + { + $langs->load("projects"); + $morehtmlref.='
'.$langs->trans('Project') . ' '; + if ($permissiontoadd) + { + if ($action != 'classify') + //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; + $morehtmlref.=' : '; + if ($action == 'classify') { + //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); + $morehtmlref.='
'; + $morehtmlref.=''; + $morehtmlref.=''; + $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref.=''; + $morehtmlref.='
'; + } else { + $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + } + } else { + if (! empty($object->fk_project)) { + $proj = new Project($db); + $proj->fetch($object->fk_project); + $morehtmlref .= ': '.$proj->getNomUrl(); + } else { + $morehtmlref .= ''; + } + } + }*/ + $morehtmlref .= '
'; + dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); print '
'; diff --git a/htdocs/modulebuilder/template/myobject_note.php b/htdocs/modulebuilder/template/myobject_note.php index f116bf51f5b..aece1f98f29 100644 --- a/htdocs/modulebuilder/template/myobject_note.php +++ b/htdocs/modulebuilder/template/myobject_note.php @@ -103,45 +103,43 @@ if ($id > 0 || !empty($ref)) $morehtmlref = '
'; /* - // Ref customer - $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); - $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); - // Thirdparty - $morehtmlref.='
'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1); - // Project - if (! empty($conf->projet->enabled)) - { - $langs->load("projects"); - $morehtmlref.='
'.$langs->trans('Project') . ' '; - if ($permissiontoadd) - { - if ($action != 'classify') - //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; - $morehtmlref.=' : '; - if ($action == 'classify') { - //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
'; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.='
'; - } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); - } - } else { - if (! empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref.=''; - $morehtmlref.=$proj->ref; - $morehtmlref.=''; - } else { - $morehtmlref.=''; - } - } - }*/ - $morehtmlref .= '
'; + // Ref customer + $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); + $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); + // Thirdparty + $morehtmlref.='
'.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); + // Project + if (! empty($conf->projet->enabled)) + { + $langs->load("projects"); + $morehtmlref.='
'.$langs->trans('Project') . ' '; + if ($permissiontoadd) + { + if ($action != 'classify') + //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; + $morehtmlref.=' : '; + if ($action == 'classify') { + //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); + $morehtmlref.='
'; + $morehtmlref.=''; + $morehtmlref.=''; + $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref.=''; + $morehtmlref.='
'; + } else { + $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + } + } else { + if (! empty($object->fk_project)) { + $proj = new Project($db); + $proj->fetch($object->fk_project); + $morehtmlref .= ': '.$proj->getNomUrl(); + } else { + $morehtmlref .= ''; + } + } + }*/ + $morehtmlref .= '
'; dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); diff --git a/htdocs/mrp/mo_agenda.php b/htdocs/mrp/mo_agenda.php index 6da02f8d5bd..eee839c8a83 100644 --- a/htdocs/mrp/mo_agenda.php +++ b/htdocs/mrp/mo_agenda.php @@ -169,7 +169,7 @@ if ($object->id > 0) if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); - $morehtmlref .= $proj->getNomUrl(); + $morehtmlref .= ': '.$proj->getNomUrl(); } else { $morehtmlref .= ''; } diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php index 92f68785856..86b2b886dea 100644 --- a/htdocs/mrp/mo_card.php +++ b/htdocs/mrp/mo_card.php @@ -427,7 +427,8 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $morehtmlref.=$form->editfieldkey("RefBis", 'ref_client', $object->ref_client, $object, $user->rights->mrp->creer, 'string', '', 0, 1); $morehtmlref.=$form->editfieldval("RefBis", 'ref_client', $object->ref_client, $object, $user->rights->mrp->creer, 'string', '', null, null, '', 1);*/ // Thirdparty - $morehtmlref .= $langs->trans('ThirdParty').' : '.(is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); + $morehtmlref .= $langs->trans('ThirdParty').' '; + $morehtmlref .= ': '.(is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); // Project if (!empty($conf->projet->enabled)) { @@ -452,7 +453,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); - $morehtmlref .= $proj->getNomUrl(); + $morehtmlref .= ' : '.$proj->getNomUrl(); } else { $morehtmlref .= ''; } diff --git a/htdocs/mrp/mo_document.php b/htdocs/mrp/mo_document.php index a7baa2d9144..48031b6f372 100644 --- a/htdocs/mrp/mo_document.php +++ b/htdocs/mrp/mo_document.php @@ -147,7 +147,7 @@ if ($object->id) if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); - $morehtmlref .= $proj->getNomUrl(); + $morehtmlref .= ': '.$proj->getNomUrl(); } else { $morehtmlref .= ''; } diff --git a/htdocs/mrp/mo_note.php b/htdocs/mrp/mo_note.php index e22d3e4b610..d8b72fc348c 100644 --- a/htdocs/mrp/mo_note.php +++ b/htdocs/mrp/mo_note.php @@ -122,7 +122,7 @@ if ($id > 0 || !empty($ref)) if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); - $morehtmlref .= $proj->getNomUrl(); + $morehtmlref .= ' : '.$proj->getNomUrl(); } else { $morehtmlref .= ''; } From d6c8988cec406432a4aa45834bbef5745a5074a4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 19:29:47 +0200 Subject: [PATCH 358/780] Look and field v12 --- htdocs/contrat/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 21d46fb2974..52144d44d34 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1644,13 +1644,13 @@ else } if ($user->rights->contrat->creer && ($object->statut >= 0)) { - print ''; + print ''; print img_edit(); print ''; } if ($user->rights->contrat->creer && ($object->statut >= 0)) { - print ''; + print ''; print img_delete(); print ''; } From ebe169b9ef0b97282cf1c2f9c254ae72ca57355a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 20:51:29 +0200 Subject: [PATCH 359/780] Fix objects used for profit calculation. --- htdocs/projet/element.php | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 34dace09e93..23fa6551656 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -526,6 +526,32 @@ $listofreferent = array( */ ); +// Change rules for benefit calculation +if (! empty($conf->global->PROJECT_ELEMENTS_FOR_PLUS_MARGIN)) { + foreach($listofreferent as $key => $element) { + if ($listofreferent[$key]['margin'] == 'add') { + unset($listofreferent[$key]['margin']); + } + } + $newelementforplusmargin = explode(',', $conf->global->PROJECT_ELEMENTS_FOR_PLUS_MARGIN); + foreach($newelementforplusmargin as $value) { + $listofreferent[$value]['margin']='add'; + } +} +if (! empty($conf->global->PROJECT_ELEMENTS_FOR_MINUS_MARGIN)) { + foreach($listofreferent as $key => $element) { + if ($listofreferent[$key]['margin'] == 'add') { + unset($listofreferent[$key]['margin']); + } + } + $newelementforplusmargin = explode(',', $conf->global->PROJECT_ELEMENTS_FOR_MINUS_MARGIN); + foreach($newelementforplusmargin as $value) { + $listofreferent[$value]['margin']='minus'; + } +} + + + $parameters = array('listofreferent'=>$listofreferent); $resHook = $hookmanager->executeHooks('completeListOfReferent', $parameters, $object, $action); From 07178fb6c09458801bad16e4e0618e77e96fc583 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 20:52:50 +0200 Subject: [PATCH 360/780] Fix look and feel --- htdocs/admin/const.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/const.php b/htdocs/admin/const.php index 9f3accfe549..bc22a2020fb 100644 --- a/htdocs/admin/const.php +++ b/htdocs/admin/const.php @@ -328,10 +328,10 @@ if ($conf->use_javascript_ajax) { print '
'; print '
'; - print ''; + print ''; print '
'; print '
'; - print ''; + print ''; print '
'; } From 650096ea0f4a95b4dd5542f7b2e801e9e94fedcd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 21:27:40 +0200 Subject: [PATCH 361/780] Fix look and feel v12 --- htdocs/modulebuilder/index.php | 49 +++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 5b90f2a8f98..1be2ac09971 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -2122,7 +2122,7 @@ elseif (!empty($module)) print '
'; print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; + print ' '.img_picto($langs->trans("Edit"), 'edit').''; print '
'; print ' '.$langs->trans("LanguageFile").' : '; if (!is_array($dicts) || empty($dicts)) print ''.$langs->trans("NoDictionaries").''; @@ -2867,7 +2867,7 @@ elseif (!empty($module)) print '
'; print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; + print ' '.img_picto($langs->trans("Edit"), 'edit').''; print '
'; print '
'; @@ -3007,7 +3007,7 @@ elseif (!empty($module)) print '
'; print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; + print ' '.img_picto($langs->trans("Edit"), 'edit').''; print '
'; print '
'; @@ -3099,12 +3099,13 @@ elseif (!empty($module)) print ''.$langs->trans("HooksDefDesc").'
'; print '
'; - print ''; + print ''; print ''; } else @@ -3279,7 +3292,7 @@ elseif (!empty($module)) if (dol_is_file($dirins.'/'.$pathtohook)) { print ''.$pathtohook.''; - print ''; + print ''; print ''; } else @@ -3335,7 +3348,7 @@ elseif (!empty($module)) $pathtofile = $widget['relpath']; print ''; print ''; } @@ -3473,7 +3486,7 @@ elseif (!empty($module)) print '
'; print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; + print ' '.img_picto($langs->trans("Edit"), 'edit').''; print '
'; print '
'; @@ -3602,7 +3615,7 @@ elseif (!empty($module)) if (preg_match('/\.md$/i', $spec['name'])) $format = 'markdown'; print ''; + print ''; print ''; print ''; } @@ -3657,7 +3670,7 @@ elseif (!empty($module)) // HTML print ' '.$langs->trans("PathToModuleDocumentation", "HTML").' : '; - if (!dol_is_file($outputfiledoc)) print ''.$langs->trans("FileNotYetGenerated").''; + if (!dol_is_file($outputfiledoc)) print ''.$langs->trans("FileNotYetGenerated").''; else { print ''; print ''; @@ -3670,7 +3683,7 @@ elseif (!empty($module)) // PDF print ' '.$langs->trans("PathToModuleDocumentation", "PDF").' : '; - if (!dol_is_file($outputfiledocpdf)) print ''.$langs->trans("FileNotYetGenerated").''; + if (!dol_is_file($outputfiledocpdf)) print ''.$langs->trans("FileNotYetGenerated").''; else { print ''; print ''; @@ -3744,7 +3757,7 @@ elseif (!empty($module)) print '
'; print ' '.$langs->trans("PathToModulePackage").' : '; - if (!dol_is_file($outputfilezip)) print ''.$langs->trans("FileNotYetGenerated").''; + if (!dol_is_file($outputfilezip)) print ''.$langs->trans("FileNotYetGenerated").''; else { $relativepath = $modulelowercase.'/bin/'.$FILENAMEZIP; print '
'.$outputfilezip.''; From 489a2cd0cc9b0182bc7267982a45cbef11e63abb Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Tue, 5 May 2020 21:35:03 +0200 Subject: [PATCH 362/780] NEW: Add quick dropdown menu in top right menu --- htdocs/langs/en_US/main.lang | 4 +- htdocs/main.inc.php | 225 +++++++++++++++++++++++++++++ htdocs/theme/eldy/dropdown.inc.php | 79 +++++++++- htdocs/theme/eldy/global.inc.php | 2 +- htdocs/theme/eldy/style.css.php | 2 +- 5 files changed, 307 insertions(+), 5 deletions(-) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index fb0808e0953..a7044861bf7 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -187,6 +187,8 @@ ShowCardHere=Show card Search=Search SearchOf=Search SearchMenuShortCut=Ctrl + shift + f +QuickAdd=Quick add +QuickAddMenuShortCut=Ctrl + shift + l Valid=Valid Approve=Approve Disapprove=Disapprove @@ -1031,4 +1033,4 @@ DeleteFileHeader=Confirm file delete DeleteFileText=Do you really want delete this file? ShowOtherLanguages=Show other languages SwitchInEditModeToAddTranslation=Switch in edit mode to add translations for this language -NotUsedForThisCustomer=Not used for this customer \ No newline at end of file +NotUsedForThisCustomer=Not used for this customer diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 6533b4bfe54..5e6b616dc26 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1722,6 +1722,11 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead $toprightmenu .= top_menu_search(); } + if (!empty($conf->global->MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN)) { + // Add search dropdown + $toprightmenu .= top_menu_quickadd(); + } + // Add bookmark dropdown $toprightmenu .= top_menu_bookmark(); @@ -1934,6 +1939,226 @@ function top_menu_user($hideloginname = 0, $urllogout = '') return $btnUser; } +/** + * Build the tooltip on top menu quick add + * + * @return string HTML content + */ +function top_menu_quickadd() +{ + global $langs, $conf, $db, $hookmanager, $user; + global $menumanager; + $html = ''; + // Define $dropDownQuickAddHtml + $dropDownQuickAddHtml = ''; + + $dropDownQuickAddHtml.= ''; + + $html.= ' + '; + $html .= ' + + + '; + return $html; +} /** * Build the tooltip on top menu bookmark diff --git a/htdocs/theme/eldy/dropdown.inc.php b/htdocs/theme/eldy/dropdown.inc.php index 49f910f50da..479bb3f889b 100644 --- a/htdocs/theme/eldy/dropdown.inc.php +++ b/htdocs/theme/eldy/dropdown.inc.php @@ -9,7 +9,7 @@ button.dropdown-item.global-search-item { outline: none; } -.open>.dropdown-search, .open>.dropdown-bookmark, .open>.dropdown-menu, .dropdown dd ul.open { +.open>.dropdown-search, .open>.dropdown-bookmark, .open>.dropdown-quickadd, .open>.dropdown-menu, .dropdown dd ul.open { display: block; } @@ -59,6 +59,29 @@ button.dropdown-item.global-search-item { -webkit-box-shadow: 0 6px 12px rgba(0,0,0,.175); box-shadow: 0 6px 12px rgba(0,0,0,.175); } +.dropdown-quickadd { + border-color: #eee; + + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 240px; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0,0,0,.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0,0,0,.175); + box-shadow: 0 6px 12px rgba(0,0,0,.175); +} .dropdown-menu { border-color: #eee; @@ -163,7 +186,7 @@ button.dropdown-item.global-search-item { max-width: 100%; } -div#topmenu-global-search-dropdown, div#topmenu-bookmark-dropdown { +div#topmenu-global-search-dropdown, div#topmenu-bookmark-dropdown, div#topmenu-quickadd-dropdown { global->THEME_TOPMENU_DISABLE_IMAGE)) { ?> line-height: 46px; @@ -383,6 +406,58 @@ a.top-menu-dropdown-link { display: none !important; } +/* + * QUICK ADD + */ +#topmenu-quickadd-dropdown .dropdown-menu { + width: 300px !important; + color: #444; +} + +.quickadd-header { + color: #444 !important; +} + +div.quickadd { + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-content: center; + -ms-flex-line-pack: center; + align-content: center; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; +} + +div.quickadd a { + color: #444; +} + +div.quickadd a:hover, div.quickadd a:active { + color: #000000; +} + +div.quickaddblock { + width: 80px; + display: block ruby; +} + +div.quickaddblock:hover, +div.quickaddblock:active, +div.quickaddblock:focus { + background: ; +} + /* smartphone */ @media only screen and (max-width: 767px) { diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 28fa0ecfa65..4a3c2523ecc 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1304,7 +1304,7 @@ td.showDragHandle { #id-left { padding-top: 20px; padding-bottom: 5px; - global->MAIN_USE_TOP_MENU_SEARCH_DROPDOWN)) { ?> + global->MAIN_USE_TOP_MENU_SEARCH_DROPDOWN) && ! empty($conf->global->MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN)) { ?> padding-top: 8px; } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 39fcd003335..0409ca5830e 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -202,7 +202,7 @@ $disableimages = 0; $maxwidthloginblock = 180; if (!empty($conf->global->THEME_TOPMENU_DISABLE_IMAGE)) { $disableimages = 1; $maxwidthloginblock = $maxwidthloginblock + 50; $minwidthtmenu = 0; } - +if (!empty($conf->global->MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN)) { $maxwidthloginblock = $maxwidthloginblock + 55; } if (!empty($conf->global->MAIN_USE_TOP_MENU_SEARCH_DROPDOWN)) { $maxwidthloginblock = $maxwidthloginblock + 55; } if (!empty($conf->bookmark->enabled)) { $maxwidthloginblock = $maxwidthloginblock + 55; } From eacb1b3b2e399d365bab45e58e3cf184b3d42af7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 21:45:10 +0200 Subject: [PATCH 363/780] Debug modulebuilder --- htdocs/core/lib/files.lib.php | 11 ++++++++++- htdocs/modulebuilder/index.php | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 941cb03d6c4..dbea182fb9b 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -761,8 +761,17 @@ function dolCopyDir($srcfile, $destfile, $newmask, $overwriteifexists, $arrayrep if (is_dir($ossrcfile."/".$file)) { if (empty($excludesubdir) || ($excludesubdir == 2 && strlen($file) == 2)) { + $newfile = $file; + // Replace destination filename with a new one + if (is_array($arrayreplacement)) + { + foreach ($arrayreplacement as $key => $val) + { + $newfile = str_replace($key, $val, $newfile); + } + } //var_dump("xxx dolCopyDir $srcfile/$file, $destfile/$file, $newmask, $overwriteifexists"); - $tmpresult = dolCopyDir($srcfile."/".$file, $destfile."/".$file, $newmask, $overwriteifexists, $arrayreplacement, $excludesubdir); + $tmpresult = dolCopyDir($srcfile."/".$file, $destfile."/".$newfile, $newmask, $overwriteifexists, $arrayreplacement, $excludesubdir); } } else diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 1be2ac09971..d813c3b291b 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -180,8 +180,10 @@ if ($dirins && $action == 'initmodule' && $modulename) dol_delete_file($destdir.'/sql/llx_'.strtolower($modulename).'_myobject.sql'); dol_delete_file($destdir.'/sql/llx_'.strtolower($modulename).'_myobject_extrafields.sql'); dol_delete_file($destdir.'/sql/llx_'.strtolower($modulename).'_myobject.key.sql'); + dol_delete_file($destdir.'/sql/llx_'.strtolower($modulename).'_myobject_extrafields.key.sql'); dol_delete_file($destdir.'/img/object_myobject.png'); dol_delete_file($destdir.'/class/myobject.class.php'); + dol_delete_dir($destdir.'/class'); dol_delete_dir($destdir.'/sql'); } From fa305fdaca1b7b32e51c8f80233693a2625eec4e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 May 2020 21:49:46 +0200 Subject: [PATCH 364/780] Prepare version 11.0.4 --- ChangeLog | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/ChangeLog b/ChangeLog index 3b81e0555d5..a7d0282fba5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,84 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 11.0.4 compared to 11.0.3 ***** +FIX: #13749 +FIX: #7594 +FIX: #7594 Expense report multi pagebreak +FIX: Access to undeclared static property: Contact::$table_element +FIX: actions on supplier proposal not saved (bad trigger name) +FIX: Add function "completeTabsHead" to "addreplace" type hook. +FIX: All forms must use newToken() +FIX: Another "Access to undeclared static property: Contact::$table_element" && "Societe::$table_element" +FIX: author search supplier proposal list +FIX: A variable was erased by a temporary variable +FIX: Avoid infinite loop when a fetch is inside a compute field. +FIX: Backto link +FIX: Bad position of total in column +FIX: bad value in currency into discount created from down payment +FIX: buyprice extrafield langfile and tooltip +FIX: Buyprice was updated only if min price for this qty had same qty +FIX: Can switch from double to price type for extrafields +FIX: Can use decimal value in virtual products +FIX: child categories only with good entity rights +FIX: cloning of emailing when no content selected +FIX: closing tags +FIX: Combo list of available users to filter on the list of leaves. +FIX: Compatibility with multicompany, bad numerotation of task. +FIX: consistency of price w/wo vat wrong when price entered with tax +FIX: default value of selectMasssAction broken +FIX: draftordered replenish virtual stock +FIX: Error update SQL into stock reception +FIX: expensereport status in generated pdf +FIX: extra date field incorrect check +FIX: Extrafields of type price must be '' and not '0' if not defined +FIX: Foreign currency lost when splitting a discount +FIX: get remain to pay with rounding decimals +FIX: gzip and bzip2 must use option -f +FIX: IHM, unexpected quote +FIX: keep viewstatut for doli 3.5 +FIX: Link missing into email of some notification +FIX: Look and feel v11 +FIX: md stylesheet to be included by external modules like eldy +FIX: missing array option +FIX: missing default accountancy product buy code +FIX: missing fk_bank during export of suppliers invoices +FIX: missing member entity +FIX: missing selectedlines on supplier order but checkbox are displayed +FIX: Missing token and take into account max date when it can. +FIX: model export list must be sorted by label +FIX: multicurrency manage on hidden conf SUPPLIER_PROPOSAL_UPDATE_PRICE_ON_SUPPlIER_PROPOSAL +FIX: Must escape shell +FIX: Must exclude logs and some dirs for compressed backup +FIX: ordered stock already in $stock +FIX: picture migration script from doli 9.0 +FIX: print pictures on shipment docs +FIX: product get purchase prices +FIX: product purchase prices +FIX: Protection when database has a corrupted product id +FIX: remove unused var, $usercancreate can be change by Multicompany +FIX: replenish stock to buy +FIX: Sanitizing menu parameter +FIX: Send email from bulk action of list of thirdparties +FIX: setup of suggested payment mode on proposals and orders +FIX: Several pb in export of documents +FIX: Situation invoice take into account the credit notes. +FIX: some others modules (like subtotal) use other product_type than 0 or 1 AND must not be considered in this report +FIX: sort by default role makes no sense +FIX: sort on company on member list +FIX: TakePOS buying price +FIX: text version of html emailing (removed the body style) +FIX: The "test smtp connectivity" failed on page to setup mass emailing +FIX: Error logs an Orderline::delete error, but this is an Orderline::insert error +FIX: Translation of tooltips of extrafields +FIX: Use getNomURL instead of hard coded link. Fix limit. +FIX: Use of image into free text for PDF if DOL_DATA_DIR is outside of +FIX: viewstatut to search status +FIX: we must export company mail address on contact vcard only if contact email address is empty +FIX: when we filter a list on a view status, we want this filter to be on bookmark that we create +FIX: Wrong Sql on getListOfTowns api method +FIX: wrong user right's name to top menu "commercial" +FIX: XSS Vulnerability ***** ChangeLog for 11.0.3 compared to 11.0.2 ***** FIX: unit price for selected supplier products not set. NaN was used. From 9f176c5e2d8733114ed712f7d2f8ba8b3b69801a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 01:41:10 +0200 Subject: [PATCH 365/780] Fix trans --- htdocs/langs/en_US/companies.lang | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index f8b3d0354e2..0fad58c9389 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -325,7 +325,8 @@ CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses ListOfContactsAddresses=List of contacts/addresses ListOfThirdParties=List of Third Parties -ShowContact=Show contact +ShowCompany=Third Party +ShowContact=Contact-Address ContactsAllShort=All (No filter) ContactType=Contact type ContactForOrders=Order's contact From d9cef1c8d79ac971641fc4304355f5cb44d5b5f3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 01:49:19 +0200 Subject: [PATCH 366/780] Fix packager to publish on new web site --- 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 c6b8cd330c8..933c5b8f994 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -19,7 +19,7 @@ use Term::ANSIColor; # Change this to defined target for option 98 and 99 $PROJECT="dolibarr"; $PUBLISHSTABLE="eldy,dolibarr\@frs.sourceforge.net:/home/frs/project/dolibarr"; -$PUBLISHBETARC="dolibarr\@vmprod1.dolibarr.org:/home/dolibarr/dolibarr.org/httpdocs/files"; +$PUBLISHBETARC="dolibarr\@vmprod1.dolibarr.org:/home/dolibarr/asso.dolibarr.org/dolibarr_documents/website/www.dolibarr.org/files"; #@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","EXEDOLIWAMP","SNAPSHOT"); # Possible packages From 247acdd27446434927a8727506cacdd58985fc8f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 03:47:28 +0200 Subject: [PATCH 367/780] Fix position of custom groups of modules --- htdocs/admin/company.php | 2 +- htdocs/admin/modules.php | 10 ++++++---- htdocs/core/lib/functions.lib.php | 1 + htdocs/core/modules/DolibarrModules.class.php | 2 +- htdocs/theme/eldy/info-box.inc.php | 5 +++++ htdocs/theme/eldy/progress.inc.php | 2 +- htdocs/theme/md/info-box.inc.php | 4 ++++ 7 files changed, 19 insertions(+), 7 deletions(-) diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index d4664a13de1..f33a3ea6f93 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -693,7 +693,7 @@ print '
'; // Sales taxes (VAT, IRPF, ...) -print load_fiche_titre($langs->trans("TypeOfSaleTaxes")); +print load_fiche_titre($langs->trans("TypeOfSaleTaxes"), '', 'object_payment'); print '
'; + print ''; $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; + print ''; print ''; - print ''; + print ''; + print ''; } else { print ''.$langs->trans("FileNotYetGenerated").''; - print ''; + print ''; + print ''; } print ''; } @@ -3163,6 +3166,14 @@ elseif (!empty($module)) print '
'; print '
'; print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; print ''; - print ''.img_picto($langs->trans("Edit"), 'edit').''; + print ''.img_picto($langs->trans("Edit"), 'edit').''; print '
'; @@ -3113,13 +3114,15 @@ elseif (!empty($module)) if (dol_is_file($dirins.'/'.$pathtohook)) { print ''.$pathtohook.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').''.img_picto($langs->trans("Edit"), 'edit').' '; + print ''.img_picto($langs->trans("Delete"), 'delete').'
'; + + $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; + print ''; + if (!empty($triggers)) { foreach ($triggers as $trigger) @@ -3171,7 +3182,7 @@ elseif (!empty($module)) print ''; + print ''; print ''; print ''; } @@ -3180,9 +3191,11 @@ elseif (!empty($module)) { print ''; + print ''; + print ''; print ''; } + print '
'; + print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; + print ''; + print ''.img_picto($langs->trans("Edit"), 'edit').''; + print '
'; print ' '.$langs->trans("TriggersFile").' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
'; print ' '.$langs->trans("NoTrigger"); - print '
'; } else @@ -3227,7 +3240,7 @@ elseif (!empty($module)) if (dol_is_file($dirins.'/'.$pathtohook)) { print ''.$pathtohook.''; - print '
'.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
'.$langs->trans("WidgetFile").' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''; + print ''.img_picto($langs->trans("Edit"), 'edit').''; print ''.img_picto($langs->trans("Delete"), 'delete').'
'; print ' '.$langs->trans("SpecificationFile").' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
'; print ''; diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 926a4c34f70..6a0ff450346 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -412,11 +412,13 @@ foreach ($modulesdir as $dir) } $familyposition = $familyinfo[$familykey]['position']; - if ($external) + $listOfOfficialModuleGroups = array('hr', 'technic', 'interface', 'technic', 'portal', 'financial', 'crm', 'base', 'products', 'srm', 'ecm', 'projects', 'other'); + if ($external && ! in_array($familykey, $listOfOfficialModuleGroups)) { - // TODO Find a solution so modules with their own family are always at end - //var_dump($familyposition); - //$familyposition += 100; + // If module is extern and into a custom group (not into an official predefined one), it must appear at end (custom groups should not be before official groups). + if (is_numeric($familyposition)) { + $familyposition = sprintf("%03d", (int) $familyposition + 100); + } } $orders[$i] = $familyposition."_".$familykey."_".$moduleposition."_".$j; // Sort by family, then by module position then number diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 14531947574..f456ec311ac 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3268,6 +3268,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'payment'=>'bg-infobox-bank_account', 'poll'=>'bg-infobox-adherent', 'project'=>'bg-infobox-project', 'projecttask'=>'bg-infobox-project', 'propal'=>'bg-infobox-propal', 'resource'=>'bg-infobox-action', 'supplier_invoice'=>'bg-infobox-order_supplier', 'supplier_order'=>'bg-infobox-order_supplier', 'supplier_proposal'=>'bg-infobox-supplier_proposal', 'ticket'=>'bg-infobox-contrat', 'title_accountancy'=>'bg-infobox-bank_account', 'title_hrm'=>'bg-infobox-holiday', 'trip'=>'bg-infobox-expensereport', 'title_agenda'=>'bg-infobox-action', + //'title_setup'=>'bg-infobox-action', 'tools'=>'bg-infobox-action', 'list-alt'=>'imgforviewmode', 'calendar'=>'imgforviewmode', 'calendarweek'=>'imgforviewmode', 'calendarmonth'=>'imgforviewmode', 'calendarday'=>'imgforviewmode', 'calendarperuser'=>'imgforviewmode' ); if (!empty($arrayconvpictotomorcess[$pictowithouttext])) { diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index cd3fe7922ee..c592cb69959 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -2279,7 +2279,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($this))); print ' -
+
'; diff --git a/htdocs/theme/eldy/info-box.inc.php b/htdocs/theme/eldy/info-box.inc.php index 028039f6c8b..7f62fe39689 100644 --- a/htdocs/theme/eldy/info-box.inc.php +++ b/htdocs/theme/eldy/info-box.inc.php @@ -6,6 +6,11 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> * Component: Info Box * ------------------- */ + +.info-box-module-external span.info-box-icon-version { + background: #999; +} + .info-box { display: block; position: relative; diff --git a/htdocs/theme/eldy/progress.inc.php b/htdocs/theme/eldy/progress.inc.php index b0bd96df1d2..71f25ff35ba 100644 --- a/htdocs/theme/eldy/progress.inc.php +++ b/htdocs/theme/eldy/progress.inc.php @@ -123,7 +123,7 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> width: 3px; } .progress-group .progress-text { - font-weight: 600; + /* font-weight: 600; */ } .progress-group .progress-number { float: right; diff --git a/htdocs/theme/md/info-box.inc.php b/htdocs/theme/md/info-box.inc.php index d9b467f130b..d866cab96a6 100644 --- a/htdocs/theme/md/info-box.inc.php +++ b/htdocs/theme/md/info-box.inc.php @@ -7,6 +7,10 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> * ------------------- */ +.info-box-module-external span.info-box-icon-version { + background: #999; +} + span.info-box-icon-text { /* hide box text number due to problems */ display: none; } From 30fede216c7cb7b95e5db3d26cf338b88ad62b61 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 04:03:07 +0200 Subject: [PATCH 368/780] Fix Add '_pw' var as var sensibles. --- htdocs/api/class/api_setup.class.php | 2 +- htdocs/core/class/commondocgenerator.class.php | 2 +- htdocs/core/lib/functions.lib.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index ec7a6b89596..fd6432b553f 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -1429,7 +1429,7 @@ class Setup extends DolibarrApi if (!preg_match('/^[a-zA-Z0-9_]+$/', $constantname) || !isset($conf->global->$constantname)) { throw new RestException(500, 'Error Bad or unknown value for constantname'); } - if (preg_match('/(_pass|password|secret|_key|key$)/i', $constantname)) { + if (preg_match('/(_pass|_pw|password|secret|_key|key$)/i', $constantname)) { throw new RestException(403, 'Forbidden'); } diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index 1f5ef0a5a9e..df80aab7a1f 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -325,7 +325,7 @@ abstract class CommonDocGenerator foreach ($conf->global as $key => $val) { - if (preg_match('/(_pass|password|secret|_key|key$)/i', $key)) $newval = '*****forbidden*****'; + if (preg_match('/(_pass|_pw|password|secret|_key|key$)/i', $key)) $newval = '*****forbidden*****'; else $newval = $val; $array_other['__['.$key.']__'] = $newval; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index f456ec311ac..28a44562b28 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -6523,7 +6523,7 @@ function make_substitutions($text, $substitutionarray, $outputlangs = null) if (dol_textishtml($text, 1)) $msgishtml = 1; $keyfound = $reg[1]; - if (preg_match('/(_pass|password|secret|_key|key$)/i', $keyfound)) $newval = '*****forbidden*****'; + if (preg_match('/(_pass|_pw|password|secret|_key|key$)/i', $keyfound)) $newval = '*****forbidden*****'; else $newval = empty($conf->global->$keyfound) ? '' : $conf->global->$keyfound; $text = preg_replace('/__\['.preg_quote($keyfound, '/').'\]__/', $msgishtml ?dol_htmlentitiesbr($newval) : $newval, $text); } From b09f179a16759ee8213c51ebf0726f57decf3a3c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 04:32:48 +0200 Subject: [PATCH 369/780] NEW Website logs are now into a separated log file. --- htdocs/core/lib/functions.lib.php | 7 +++++++ htdocs/core/lib/website2.lib.php | 5 ++++- htdocs/core/website.inc.php | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 28a44562b28..1a4ab00b7d6 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1078,6 +1078,13 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename = // If syslog module enabled if (empty($conf->syslog->enabled)) return; + // Check if we are into execution of code of a website + if (defined('USEEXTERNALSERVER') && ! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { + global $website, $websitekey; + if (is_object($website) && ! empty($website->ref)) $suffixinfilename.='_website_'.$website->ref; + elseif (! empty($websitekey)) $suffixinfilename.='_website_'.$websitekey; + } + if ($ident < 0) { foreach ($conf->loghandlers as $loghandlerinstance) diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php index 6ef17220283..fc56a489d75 100644 --- a/htdocs/core/lib/website2.lib.php +++ b/htdocs/core/lib/website2.lib.php @@ -39,7 +39,10 @@ function dolSaveMasterFile($filemaster) $mastercontent = ''."\n"; $result = file_put_contents($filemaster, $mastercontent); if (!empty($conf->global->MAIN_UMASK)) diff --git a/htdocs/core/website.inc.php b/htdocs/core/website.inc.php index b90da632fac..3e54f6ec2ad 100644 --- a/htdocs/core/website.inc.php +++ b/htdocs/core/website.inc.php @@ -19,7 +19,7 @@ /** * \file htdocs/core/website.inc.php * \brief Common file loaded by all website pages (after master.inc.php). It set the new object $weblangs, using parameter 'l'. - * This file is included in top of all container pages. + * This file is included in top of all container pages and is run only when a web page is called. * The global variable $websitekey must be defined. */ From a8222c2651591a657767b8bf95cc04fa37752866 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 05:10:42 +0200 Subject: [PATCH 370/780] Look and feel v12 --- htdocs/admin/menus/index.php | 4 ++-- htdocs/admin/tools/purge.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php index 56251e48f7b..97f0246ac88 100644 --- a/htdocs/admin/menus/index.php +++ b/htdocs/admin/menus/index.php @@ -277,8 +277,8 @@ print '
'; print ''; print ''; -print ''; +print ''; print ''; print ''; diff --git a/htdocs/admin/tools/purge.php b/htdocs/admin/tools/purge.php index 43cf81b41ba..9898e290ddc 100644 --- a/htdocs/admin/tools/purge.php +++ b/htdocs/admin/tools/purge.php @@ -78,7 +78,7 @@ $form = new Form($db); print load_fiche_titre($langs->trans("Purge"), '', 'title_setup'); -print $langs->trans("PurgeAreaDesc", $dolibarr_main_data_root).'
'; +print ''.$langs->trans("PurgeAreaDesc", $dolibarr_main_data_root).'
'; print '
'; From b6aa766c72078988a0e74d8b5305b96eb9d6d509 Mon Sep 17 00:00:00 2001 From: atm-quentin Date: Wed, 6 May 2020 09:37:17 +0200 Subject: [PATCH 371/780] FIX stickler --- htdocs/compta/facture/stats/index.php | 14 +++++++------- htdocs/core/class/dolgraph.class.php | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 4c0d23c90e2..8606e619740 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -262,13 +262,13 @@ if ($mode == 'customer') $filter = 's.client in (1,2,3)'; if ($mode == 'supplier') $filter = 's.fournisseur = 1'; print $form->selectarray('socid', $companies, $socid, 1, 0, 0, 'style="width: 95%"', 0, 0, 0, '', '', 1); print '
'; -if(!empty($conf->category->enabled) && $mode == 'customer') { - // Customer Category - print ''; - } +if(! empty($conf->category->enabled) && $mode == 'customer') { + // Customer Category + print ''; +} // ThirdParty Type print ''; } +// Option to include various payment in results +print ''."\n"; +print ''."\n"; +print ''; + +// Option to include loan in results +print ''."\n"; +print ''."\n"; +print ''; + print "
'.$langs->trans("TreeMenuPersonalized").'
'.$langs->trans("CustomersProspectsCategoriesShort").''; - $cate_arbo = $form->select_all_categories(Categorie::TYPE_CUSTOMER, null, 'parent', null, null, 1); - print $form->multiselectarray('custcats', $cate_arbo, GETPOST('custcats', 'array'), null, null, null, null, "90%"); - print '
'.$langs->trans("CustomersProspectsCategoriesShort").''; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_CUSTOMER, null, 'parent', null, null, 1); + print $form->multiselectarray('custcats', $cate_arbo, GETPOST('custcats', 'array'), null, null, null, null, "90%"); + print '
'.$langs->trans("ThirdPartyType").''; $sortparam_typent = (empty($conf->global->SOCIETE_SORT_ON_TYPEENT) ? 'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT); // NONE means we keep sort of original array, so we sort on position. ASC, means next function will sort on label. diff --git a/htdocs/core/class/dolgraph.class.php b/htdocs/core/class/dolgraph.class.php index 3f1bfa245fb..551fe2b82c0 100644 --- a/htdocs/core/class/dolgraph.class.php +++ b/htdocs/core/class/dolgraph.class.php @@ -895,11 +895,11 @@ class DolGraph $color = sprintf("%02x%02x%02x", $this->datacolor[$i][0], $this->datacolor[$i][1], $this->datacolor[$i][2]); $this->stringtoshow .= '{ '; if (! isset($this->type[$i]) || $this->type[$i] == 'bars') { - if($nblot == 3) { - if($i == $firstlot) $align = 'right'; - else if($i == $firstlot+1) $align = 'center'; - else $align = 'left'; - $this->stringtoshow.='bars: { lineWidth: 1, show: true, align: "'.$align.'", barWidth: 0.45 }, '; + if($nblot == 3) { + if($i == $firstlot) $align = 'right'; + elseif($i == $firstlot + 1) $align = 'center'; + else $align = 'left'; + $this->stringtoshow .= 'bars: { lineWidth: 1, show: true, align: "'.$align.'", barWidth: 0.45 }, '; } else $this->stringtoshow.='bars: { lineWidth: 1, show: true, align: "'.($i==$firstlot?'center':'left').'", barWidth: 0.5 }, '; } From 128ec6fd78fa91569f80636a83f90dd8171ad1a1 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" Date: Wed, 6 May 2020 08:38:36 +0200 Subject: [PATCH 372/780] Add include various payments and loans in accounting report For simplified accouning, behaviour not enable by default and must be enabed in simplified accounting module admin page (or by global settings ACCOUNTING_REPORTS_INCLUDE_VARPAY and ACCOUNTING_REPORTS_INCLUDE_LOAN). --- htdocs/admin/compta.php | 35 ++++++++ htdocs/compta/resultat/clientfourn.php | 116 ++++++++++++++++++++++++- htdocs/compta/resultat/index.php | 112 ++++++++++++++++++++++++ htdocs/langs/en_US/compta.lang | 2 + htdocs/langs/fr_FR/compta.lang | 2 + 5 files changed, 266 insertions(+), 1 deletion(-) diff --git a/htdocs/admin/compta.php b/htdocs/admin/compta.php index cdfa15d9069..b3c66af76ca 100644 --- a/htdocs/admin/compta.php +++ b/htdocs/admin/compta.php @@ -5,6 +5,7 @@ * Copyright (C) 2011-2013 Juanjo Menent * Copyright (C) 2013-2017 Philippe Grand * Copyright (C) 2014 Marcos García + * Copyright (C) 2020 Maxime DEMAREST * * 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 @@ -83,6 +84,20 @@ if ($action == 'update') } } + $report_include_varpay = GETPOST('ACCOUNTING_REPORTS_INCLUDE_VARPAY', 'alpha'); + if (!empty($report_include_varpay)) + if ($report_include_varpay == 'yes') + if (!dolibarr_set_const($db, 'ACCOUNTING_REPORTS_INCLUDE_VARPAY', 1, 'chaine', 0, '', $conf->entity)) $error++; + if ($report_include_varpay == 'no') + if (!dolibarr_del_const($db, 'ACCOUNTING_REPORTS_INCLUDE_VARPAY', $conf->entity)) $error++; + + $report_include_loan = GETPOST('ACCOUNTING_REPORTS_INCLUDE_LOAN', 'alpha'); + if (!empty($report_include_loan)) + if ($report_include_loan == 'yes') + if (!dolibarr_set_const($db, 'ACCOUNTING_REPORTS_INCLUDE_LOAN', 1, 'chaine', 0, '', $conf->entity)) $error++; + if ($report_include_loan == 'no') + if (!dolibarr_del_const($db, 'ACCOUNTING_REPORTS_INCLUDE_LOAN', $conf->entity)) $error++; + if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); @@ -158,6 +173,26 @@ foreach ($list as $key) print '
'."\n"; +print ''."\n"; +print '
'."\n"; +print ''."\n"; +print '
\n"; print '

'; diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 44be66a2218..59b7999e4ef 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -8,6 +8,7 @@ * Copyright (C) 2014 Juanjo Menent * Copyright (C) 2014 Florian Henry * Copyright (C) 2018 Frédéric France + * Copyright (C) 2020 Maxime DEMAREST * * 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 +39,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancycategory.class.php'; // Load translation files required by the page -$langs->loadLangs(array('compta', 'bills', 'donation', 'salaries', 'accountancy')); +$langs->loadLangs(array('compta', 'bills', 'donation', 'salaries', 'accountancy', 'loan')); $date_startmonth = GETPOST('date_startmonth', 'int'); $date_startday = GETPOST('date_startday', 'int'); @@ -953,6 +954,119 @@ else print '
'.$langs->trans("VariousPayment").'
 ".$langs->trans("Debit")."'.price(-$obj->amount).''.price(-$obj->amount)."
 ".$langs->trans("Credit")."'.price($obj->amount).''.price($obj->amount)."
'.price($subtotal_ht).''.price($subtotal_ttc).'
'.$langs->trans("PaymentLoan").'
 ".$loan_static->getNomUrl(1).' - '.$obj->label."'.price(-$obj->amount).''.price(-$obj->amount)."
'.price($subtotal_ht).''.price($subtotal_ttc).'
 ".$langs->trans("Debit")."'.price(-$obj->amount).''.price(-$obj->amount).''.price(-$obj->amount)."
 ".$langs->trans("Credit")."'.price($obj->amount).''.price($obj->amount).''.price($obj->amount)."
'.price($subtotal_ht).''.price($subtotal_ttc).'
'."\n"; -print ''."\n"; +print $form->selectyesno('ACCOUNTING_REPORTS_INCLUDE_VARPAY', (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY))); print '
'."\n"; -print ''."\n"; +print $form->selectyesno('ACCOUNTING_REPORTS_INCLUDE_LOAN', (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_LOAN))); print '
\n"; From 3dbe9a4af1d18cdf3a9c8404b25d1209d94d07d9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 13:59:15 +0200 Subject: [PATCH 376/780] Fix label --- htdocs/product/admin/stock_extrafields.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/admin/stock_extrafields.php b/htdocs/product/admin/stock_extrafields.php index 0e8f7289b77..22ad53cd0e8 100644 --- a/htdocs/product/admin/stock_extrafields.php +++ b/htdocs/product/admin/stock_extrafields.php @@ -68,7 +68,7 @@ print load_fiche_titre($langs->trans("StockSetup"), $linkback, 'title_setup'); $head = stock_admin_prepare_head(); -dol_fiche_head($head, 'attributes', $langs->trans("Warehouses"), -1, 'stock'); +dol_fiche_head($head, 'attributes', $langs->trans("StockSetup"), -1, 'stock'); require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_view.tpl.php'; From bfd4ebd49d40942d8cf8bfa2a2cbd2ff6f5f125e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 14:28:24 +0200 Subject: [PATCH 377/780] FIX Changing password message not visible if a background is set --- htdocs/user/passwordforgotten.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index 461ab8e7b4a..0afa158ec58 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -133,7 +133,7 @@ if ($action == 'buildnewpassword' && $username) // Success if ($edituser->send_password($edituser, $newpassword, 1) > 0) { - $message = '
'.$langs->trans("PasswordChangeRequestSent", $edituser->login, dolObfuscateEmail($edituser->email)).'
'; + $message = ''; $username = ''; } else From e7ae9c752ea54a59d0ae9406d1043d4d0afb6cf5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 14:48:02 +0200 Subject: [PATCH 378/780] Fix missing trackid --- htdocs/user/class/user.class.php | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 23d42ba3e65..09f78a7d044 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1972,12 +1972,12 @@ class User extends CommonObject /** * Send new password by email * - * @param User $user Object user that send email + * @param User $fuser Object user that send email * @param string $password New password * @param int $changelater 0=Send clear passwod into email, 1=Change password only after clicking on confirm email. @todo Add method 2 = Send link to reset password * @return int < 0 si erreur, > 0 si ok */ - public function send_password($user, $password = '', $changelater = 0) + public function send_password($fuser, $password = '', $changelater = 0) { // phpcs:enable global $conf, $langs; @@ -1997,8 +1997,8 @@ class User extends CommonObject { // If user has defined its own language (rare because in most cases, auto is used) $outputlangs->getDefaultLang($this->conf->MAIN_LANG_DEFAULT); } - if ($user->conf->MAIN_LANG_DEFAULT) { - $outputlangs->setDefaultLang($user->conf->MAIN_LANG_DEFAULT); + if ($fuser->conf->MAIN_LANG_DEFAULT) { + $outputlangs->setDefaultLang($fuser->conf->MAIN_LANG_DEFAULT); } else { // If user has not defined its own language, we used current language @@ -2028,7 +2028,7 @@ class User extends CommonObject $mesg .= $outputlangs->transnoentitiesnoconv("ClickHereToGoTo", $appli).': '.$url."\n\n"; $mesg .= "--\n"; - $mesg .= $user->getFullName($outputlangs); // Username that make then sending + $mesg .= $fuser->getFullName($outputlangs); // Username that make then sending dol_syslog(get_class($this)."::send_password changelater is off, url=".$url); } @@ -2048,6 +2048,8 @@ class User extends CommonObject dol_syslog(get_class($this)."::send_password changelater is on, url=".$url); } + $trackid = 'use'.$fuser->id; + $mailfile = new CMailFile( $subject, $this->email, @@ -2059,7 +2061,10 @@ class User extends CommonObject '', '', 0, - $msgishtml + $msgishtml, + '', + '', + $trackid ); if ($mailfile->sendfile()) From abdb0cc8c025359c8eb05cc705cd36820bbd46e0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 15:03:57 +0200 Subject: [PATCH 379/780] Fix use correct trackid --- htdocs/user/class/user.class.php | 13 +++++++------ htdocs/user/passwordforgotten.php | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 09f78a7d044..e20c1ca527b 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1972,12 +1972,12 @@ class User extends CommonObject /** * Send new password by email * - * @param User $fuser Object user that send email + * @param User $user Object user that send the email (not the user we send too) * @param string $password New password * @param int $changelater 0=Send clear passwod into email, 1=Change password only after clicking on confirm email. @todo Add method 2 = Send link to reset password * @return int < 0 si erreur, > 0 si ok */ - public function send_password($fuser, $password = '', $changelater = 0) + public function send_password($user, $password = '', $changelater = 0) { // phpcs:enable global $conf, $langs; @@ -1997,8 +1997,9 @@ class User extends CommonObject { // If user has defined its own language (rare because in most cases, auto is used) $outputlangs->getDefaultLang($this->conf->MAIN_LANG_DEFAULT); } - if ($fuser->conf->MAIN_LANG_DEFAULT) { - $outputlangs->setDefaultLang($fuser->conf->MAIN_LANG_DEFAULT); + + if ($this->conf->MAIN_LANG_DEFAULT) { + $outputlangs->setDefaultLang($this->conf->MAIN_LANG_DEFAULT); } else { // If user has not defined its own language, we used current language @@ -2028,7 +2029,7 @@ class User extends CommonObject $mesg .= $outputlangs->transnoentitiesnoconv("ClickHereToGoTo", $appli).': '.$url."\n\n"; $mesg .= "--\n"; - $mesg .= $fuser->getFullName($outputlangs); // Username that make then sending + $mesg .= $user->getFullName($outputlangs); // Username that send email dol_syslog(get_class($this)."::send_password changelater is off, url=".$url); } @@ -2048,7 +2049,7 @@ class User extends CommonObject dol_syslog(get_class($this)."::send_password changelater is on, url=".$url); } - $trackid = 'use'.$fuser->id; + $trackid = 'use'.$this->id; $mailfile = new CMailFile( $subject, diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index 0afa158ec58..81e6779b80b 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -131,7 +131,7 @@ if ($action == 'buildnewpassword' && $username) else { // Success - if ($edituser->send_password($edituser, $newpassword, 1) > 0) + if ($edituser->send_password($user, $newpassword, 1) > 0) { $message = ''; $username = ''; From 1ec8b31e46e7ef1d1036f08b4814170ed501618c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 15:15:12 +0200 Subject: [PATCH 380/780] Fix remove action param in url to allow a second try without the error message --- htdocs/core/tpl/passwordforgotten.tpl.php | 1 + htdocs/user/class/user.class.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/tpl/passwordforgotten.tpl.php b/htdocs/core/tpl/passwordforgotten.tpl.php index ab12b48aa08..63ff6a8a0a7 100644 --- a/htdocs/core/tpl/passwordforgotten.tpl.php +++ b/htdocs/core/tpl/passwordforgotten.tpl.php @@ -40,6 +40,7 @@ if (!empty($conf->dol_use_jmobile)) $conf->use_javascript_ajax = 1; $php_self = $_SERVER['PHP_SELF']; $php_self .= dol_escape_htmltag($_SERVER["QUERY_STRING"]) ? '?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]) : ''; +$php_self = str_replace('action=validatenewpassword', '', $php_self); $titleofpage = $langs->trans('SendNewPassword'); diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index e20c1ca527b..11d0cec3654 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1838,7 +1838,7 @@ class User extends CommonObject /** * Change password of a user * - * @param User $user Object user of user making change + * @param User $user Object user of user requesting the change (not the user for who we change the password). May be unknown. * @param string $password New password in clear text (to generate if not provided) * @param int $changelater 1=Change password only after clicking on confirm email * @param int $notrigger 1=Does not launch triggers @@ -2029,7 +2029,7 @@ class User extends CommonObject $mesg .= $outputlangs->transnoentitiesnoconv("ClickHereToGoTo", $appli).': '.$url."\n\n"; $mesg .= "--\n"; - $mesg .= $user->getFullName($outputlangs); // Username that send email + $mesg .= $user->getFullName($outputlangs); // Username that send the email (not the user for who we want to reset password) dol_syslog(get_class($this)."::send_password changelater is off, url=".$url); } From 485896614b4e1cb831b8fcbd84e6e1ce56737bb0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 15:30:00 +0200 Subject: [PATCH 381/780] Add message during password reset --- htdocs/langs/en_US/users.lang | 1 + htdocs/user/passwordforgotten.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index aea4e7676e4..9b75a2ff37e 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -78,6 +78,7 @@ UserWillBeExternalUser=Created user will be an external user (because linked to IdPhoneCaller=Id phone caller NewUserCreated=User %s created NewUserPassword=Password change for %s +NewPasswordValidated=Your new password have been validated and must be used now to login. EventUserModified=User %s modified UserDisabled=User %s disabled UserEnabled=User %s activated diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index 81e6779b80b..f8c035779d2 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -77,7 +77,8 @@ if ($action == 'validatenewpassword' && $username && $passwordhash) { if (dol_verifyHash($edituser->pass_temp, $passwordhash)) { - $newpassword = $edituser->setPassword($user, $edituser->pass_temp, 0); + setEventMessages('NewPasswordValidated', null, 'mesgs'); + $newpassword = $edituser->setPassword($user, $edituser->pass_temp, 0); dol_syslog("passwordforgotten.php new password for user->id=".$edituser->id." validated in database"); header("Location: ".DOL_URL_ROOT.'/'); exit; From 5e6b7fb6b4cb598e5ff1980d2a20b43cf7f01c3c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 15:36:14 +0200 Subject: [PATCH 382/780] Show message after pass reset --- htdocs/user/passwordforgotten.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index f8c035779d2..7f8ad45a06d 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -77,7 +77,10 @@ if ($action == 'validatenewpassword' && $username && $passwordhash) { if (dol_verifyHash($edituser->pass_temp, $passwordhash)) { - setEventMessages('NewPasswordValidated', null, 'mesgs'); + // Clear session + $_SESSION['dol_login'] = ''; + $_SESSION['dol_loginmesg'] = $langs->trans('NewPasswordValidated'); // Save message for the session page + $newpassword = $edituser->setPassword($user, $edituser->pass_temp, 0); dol_syslog("passwordforgotten.php new password for user->id=".$edituser->id." validated in database"); header("Location: ".DOL_URL_ROOT.'/'); From 4c04ace9d8305da6e4bdca000ae8d333f2ba5217 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 15:39:07 +0200 Subject: [PATCH 383/780] fix reset of session --- htdocs/user/passwordforgotten.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index 7f8ad45a06d..b0f3a5aab6c 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -78,7 +78,7 @@ if ($action == 'validatenewpassword' && $username && $passwordhash) if (dol_verifyHash($edituser->pass_temp, $passwordhash)) { // Clear session - $_SESSION['dol_login'] = ''; + unset($_SESSION['dol_login']); $_SESSION['dol_loginmesg'] = $langs->trans('NewPasswordValidated'); // Save message for the session page $newpassword = $edituser->setPassword($user, $edituser->pass_temp, 0); From b3a064d309e2533c911bbf45f246f98309a1e2b8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2020 16:02:34 +0200 Subject: [PATCH 384/780] Fix dup --- ChangeLog | 1 - 1 file changed, 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a7d0282fba5..bcbfb1a959c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,6 @@ English Dolibarr ChangeLog ***** ChangeLog for 11.0.4 compared to 11.0.3 ***** FIX: #13749 -FIX: #7594 FIX: #7594 Expense report multi pagebreak FIX: Access to undeclared static property: Contact::$table_element FIX: actions on supplier proposal not saved (bad trigger name) From 326dc7d36743779fde215dc23a63ea03796dcf1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Wed, 6 May 2020 17:59:40 +0200 Subject: [PATCH 385/780] fix html file:///home/fred/Images/S%C3%A9lection_078.png --- htdocs/bookmarks/bookmarks.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/bookmarks/bookmarks.lib.php b/htdocs/bookmarks/bookmarks.lib.php index 46e9ca315a5..93283cab815 100644 --- a/htdocs/bookmarks/bookmarks.lib.php +++ b/htdocs/bookmarks/bookmarks.lib.php @@ -60,7 +60,7 @@ function printDropdownBookmarksList() } $searchForm = ''."\n"; - $searchForm .= '
global->MAIN_OPTIMIZEFORTEXTBROWSER) ? 'onsubmit="return false"' : '').'>'; + $searchForm .= 'global->MAIN_OPTIMIZEFORTEXTBROWSER) ? ' onsubmit="return false"' : '').'>'; $searchForm .= ''; From 91dcf103757d4c8d5898af031bed620b7c186c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Wed, 6 May 2020 23:56:02 +0200 Subject: [PATCH 386/780] session_cache_limiter before starting session --- htdocs/modulebuilder/template/css/mymodule.css.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/modulebuilder/template/css/mymodule.css.php b/htdocs/modulebuilder/template/css/mymodule.css.php index a7ce9fce677..af1566c0869 100644 --- a/htdocs/modulebuilder/template/css/mymodule.css.php +++ b/htdocs/modulebuilder/template/css/mymodule.css.php @@ -32,6 +32,11 @@ if (!defined('NOLOGIN')) define('NOLOGIN', 1); // File must be accessed if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); +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 Dolibarr environment $res = 0; // Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) @@ -48,10 +53,6 @@ if (!$res) die("Include of main fails"); require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -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'])) { From d4400cf80fce889f4836338ca40a8bff0080ee2e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 May 2020 11:39:32 +0200 Subject: [PATCH 387/780] FIX links into emails of notifications --- htdocs/core/class/notify.class.php | 56 ++++++++++++++---------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index 6c0ec1ec62b..8a03196beef 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -416,34 +416,34 @@ class Notify switch ($notifcode) { case 'BILL_VALIDATE': - $link='/compta/facture/card.php?facid='.$object->id; + $link = '' . $newref . ''; $dir_output = $conf->facture->dir_output; $object_type = 'facture'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextInvoiceValidated", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextInvoiceValidated", $link); break; case 'BILL_PAYED': - $link='/compta/facture/card.php?facid='.$object->id; + $link ='' . $newref . ''; $dir_output = $conf->facture->dir_output; $object_type = 'facture'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextInvoicePayed", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextInvoicePayed", $link); break; case 'ORDER_VALIDATE': - $link='/commande/card.php?id='.$object->id; + $link = '' . $newref . ''; $dir_output = $conf->commande->dir_output; $object_type = 'order'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextOrderValidated", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextOrderValidated", $link); break; case 'PROPAL_VALIDATE': - $link='/comm/propal/card.php?id='.$object->id; + $link = '' . $newref . ''; $dir_output = $conf->propal->multidir_output[$object->entity]; $object_type = 'propal'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextProposalValidated", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextProposalValidated", $link); break; case 'PROPAL_CLOSE_SIGNED': - $link='/comm/propal/card.php?id='.$object->id; + $link = '' . $newref . ''; $dir_output = $conf->propal->multidir_output[$object->entity]; $object_type = 'propal'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextProposalClosedSigned", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextProposalClosedSigned", $link); break; case 'FICHINTER_ADD_CONTACT': $link='/fichinter/card.php?id='.$object->id; @@ -452,17 +452,17 @@ class Notify $mesg = $outputlangs->transnoentitiesnoconv("EMailTextInterventionAddedContact", $newref); break; case 'FICHINTER_VALIDATE': - $link='/fichinter/card.php?id='.$object->id; + $link = '' . $newref . ''; $dir_output = $conf->ficheinter->dir_output; $object_type = 'ficheinter'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextInterventionValidated", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextInterventionValidated", $link); break; case 'ORDER_SUPPLIER_VALIDATE': $link='/fourn/commande/card.php?id='.$object->id; $dir_output = $conf->fournisseur->commande->dir_output; $object_type = 'order_supplier'; $mesg = $outputlangs->transnoentitiesnoconv("Hello").",\n\n"; - $mesg.= $outputlangs->transnoentitiesnoconv("EMailTextOrderValidatedBy", $newref, $user->getFullName($outputlangs)); + $mesg.= $outputlangs->transnoentitiesnoconv("EMailTextOrderValidatedBy", $link, $user->getFullName($outputlangs)); $mesg.= "\n\n".$outputlangs->transnoentitiesnoconv("Sincerely").".\n\n"; break; case 'ORDER_SUPPLIER_APPROVE': @@ -470,46 +470,46 @@ class Notify $dir_output = $conf->fournisseur->commande->dir_output; $object_type = 'order_supplier'; $mesg = $outputlangs->transnoentitiesnoconv("Hello").",\n\n"; - $mesg.= $outputlangs->transnoentitiesnoconv("EMailTextOrderApprovedBy", $newref, $user->getFullName($outputlangs)); + $mesg.= $outputlangs->transnoentitiesnoconv("EMailTextOrderApprovedBy", $link, $user->getFullName($outputlangs)); $mesg.= "\n\n".$outputlangs->transnoentitiesnoconv("Sincerely").".\n\n"; break; case 'ORDER_SUPPLIER_REFUSE': - $link='/fourn/commande/card.php?id='.$object->id; + $link = '' . $newref . ''; $dir_output = $conf->fournisseur->commande->dir_output; $object_type = 'order_supplier'; $mesg = $outputlangs->transnoentitiesnoconv("Hello").",\n\n"; - $mesg.= $outputlangs->transnoentitiesnoconv("EMailTextOrderRefusedBy", $newref, $user->getFullName($outputlangs)); + $mesg.= $outputlangs->transnoentitiesnoconv("EMailTextOrderRefusedBy", $link, $user->getFullName($outputlangs)); $mesg.= "\n\n".$outputlangs->transnoentitiesnoconv("Sincerely").".\n\n"; break; case 'SHIPPING_VALIDATE': $link = ''.$newref.''; $dir_output = $conf->expedition->dir_output.'/sending/'; $object_type = 'expedition'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextExpeditionValidated", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextExpeditionValidated", $link); break; case 'EXPENSE_REPORT_VALIDATE': $link = ''.$newref.''; $dir_output = $conf->expensereport->dir_output; $object_type = 'expensereport'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextExpenseReportValidated", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextExpenseReportValidated", $link); break; case 'EXPENSE_REPORT_APPROVE': $link = ''.$newref.''; $dir_output = $conf->expensereport->dir_output; $object_type = 'expensereport'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextExpenseReportApproved", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextExpenseReportApproved", $link); break; case 'HOLIDAY_VALIDATE': $link = ''.$newref.''; $dir_output = $conf->holiday->dir_output; $object_type = 'holiday'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextHolidayValidated", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextHolidayValidated", $link); break; case 'HOLIDAY_APPROVE': $link = ''.$newref.''; $dir_output = $conf->holiday->dir_output; $object_type = 'holiday'; - $mesg = $outputlangs->transnoentitiesnoconv("EMailTextHolidayApproved", $newref); + $mesg = $outputlangs->transnoentitiesnoconv("EMailTextHolidayApproved", $link); break; } $ref = dol_sanitizeFileName($newref); @@ -528,7 +528,6 @@ class Notify $message.= $outputlangs->transnoentities("YouReceiveMailBecauseOfNotification2", $application, $mysoc->name)."\n"; $message.= "\n"; $message.= $mesg; - if ($link) $message.= "\n" . $urlwithroot . $link; // if link is already added around the ref into the translation text, then $link must be set to '' $parameters = array('notifcode'=>$notifcode, 'sendto'=>$sendto, 'replyto'=>$replyto, 'file'=>$filename_list, 'mimefile'=>$mimetype_list, 'filename'=>$mimefilename_list); if (!isset($action)) $action = ''; @@ -655,7 +654,7 @@ class Notify break; case 'FICHINTER_ADD_CONTACT': $link = '' . $newref . ''; - $dir_output = $conf->facture->dir_output; + $dir_output = $conf->ficheinter->dir_output; $object_type = 'ficheinter'; $mesg = $langs->transnoentitiesnoconv("EMailTextInterventionAddedContact", $link); break; @@ -701,31 +700,31 @@ class Notify $link = ''.$newref.''; $dir_output = $conf->expedition->dir_output.'/sending/'; $object_type = 'order_supplier'; - $mesg = $langs->transnoentitiesnoconv("EMailTextExpeditionValidated", $newref); + $mesg = $langs->transnoentitiesnoconv("EMailTextExpeditionValidated", $link); break; case 'EXPENSE_REPORT_VALIDATE': $link = ''.$newref.''; $dir_output = $conf->expensereport->dir_output; $object_type = 'expensereport'; - $mesg = $langs->transnoentitiesnoconv("EMailTextExpenseReportValidated", $newref); + $mesg = $langs->transnoentitiesnoconv("EMailTextExpenseReportValidated", $link); break; case 'EXPENSE_REPORT_APPROVE': $link = ''.$newref.''; $dir_output = $conf->expensereport->dir_output; $object_type = 'expensereport'; - $mesg = $langs->transnoentitiesnoconv("EMailTextExpenseReportApproved", $newref); + $mesg = $langs->transnoentitiesnoconv("EMailTextExpenseReportApproved", $link); break; case 'HOLIDAY_VALIDATE': $link = ''.$newref.''; $dir_output = $conf->holiday->dir_output; $object_type = 'holiday'; - $mesg = $langs->transnoentitiesnoconv("EMailTextHolidayValidated", $newref); + $mesg = $langs->transnoentitiesnoconv("EMailTextHolidayValidated", $link); break; case 'HOLIDAY_APPROVE': $link = ''.$newref.''; $dir_output = $conf->holiday->dir_output; $object_type = 'holiday'; - $mesg = $langs->transnoentitiesnoconv("EMailTextHolidayApproved", $newref); + $mesg = $langs->transnoentitiesnoconv("EMailTextHolidayApproved", $link); break; } $ref = dol_sanitizeFileName($newref); @@ -744,7 +743,6 @@ class Notify $message.= $langs->transnoentities("YouReceiveMailBecauseOfNotification2", $application, $mysoc->name)."\n"; $message.= "\n"; $message.= $mesg; - if ($link) $message.= "\n" . $urlwithroot . $link; // if link is already added around the ref into the translation text, then $link must be set to '' $message = nl2br($message); From 03fddd48af55363089ad6082be122d407922ced5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 May 2020 12:14:45 +0200 Subject: [PATCH 388/780] Clean some constructors --- htdocs/compta/prelevement/bons.php | 2 +- htdocs/compta/prelevement/card.php | 4 ++-- .../compta/prelevement/class/bonprelevement.class.php | 10 ++++------ .../prelevement/class/ligneprelevement.class.php | 4 +--- .../prelevement/class/rejetprelevement.class.php | 3 ++- htdocs/compta/prelevement/factures.php | 2 +- htdocs/compta/prelevement/fiche-rejet.php | 2 +- htdocs/compta/prelevement/fiche-stat.php | 4 ++-- htdocs/compta/prelevement/line.php | 4 ++-- htdocs/compta/prelevement/list.php | 4 ++-- htdocs/compta/prelevement/rejets.php | 2 +- htdocs/compta/prelevement/stats.php | 2 +- 12 files changed, 20 insertions(+), 23 deletions(-) diff --git a/htdocs/compta/prelevement/bons.php b/htdocs/compta/prelevement/bons.php index 7f0bd46c450..c7c717e702b 100644 --- a/htdocs/compta/prelevement/bons.php +++ b/htdocs/compta/prelevement/bons.php @@ -54,7 +54,7 @@ $statut = GETPOST('statut', 'int'); $search_ref = GETPOST('search_ref', 'alpha'); $search_amount = GETPOST('search_amount', 'alpha'); -$bon = new BonPrelevement($db, ""); +$bon = new BonPrelevement($db); $hookmanager->initHooks(array('withdrawalsreceiptslist')); diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php index 68f40999aa7..4dcd9f33388 100644 --- a/htdocs/compta/prelevement/card.php +++ b/htdocs/compta/prelevement/card.php @@ -58,7 +58,7 @@ $pagenext = $page + 1; if (!$sortfield) $sortfield = 'pl.fk_soc'; if (!$sortorder) $sortorder = 'DESC'; -$object = new BonPrelevement($db, ""); +$object = new BonPrelevement($db); // Load object include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals @@ -321,7 +321,7 @@ if ($id > 0 || $ref) } - $ligne = new LignePrelevement($db, $user); + $ligne = new LignePrelevement($db); /* * Lines into withdraw request diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 0a033e2df53..0c21a3e6d2b 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -83,18 +83,16 @@ class BonPrelevement extends CommonObject * Constructor * * @param DoliDB $db Database handler - * @param string $filename Filename of withdraw receipt */ - public function __construct($db, $filename = '') + public function __construct($db) { global $conf, $langs; - $error = 0; $this->db = $db; - $this->filename = $filename; + $this->filename = ''; - $this->date_echeance = time(); + $this->date_echeance = dol_now(); $this->raison_sociale = ""; $this->reference_remise = ""; @@ -892,7 +890,7 @@ class BonPrelevement extends CommonObject if ($bac->verif() >= 1) { $factures_prev[$i] = $fac; - /* second tableau necessaire pour BonPrelevement */ + /* second array necessary for BonPrelevement */ $factures_prev_id[$i] = $fac[0]; $i++; //dol_syslog(__METHOD__."::RIB is ok", LOG_DEBUG); diff --git a/htdocs/compta/prelevement/class/ligneprelevement.class.php b/htdocs/compta/prelevement/class/ligneprelevement.class.php index dd24ad9522c..88b612554df 100644 --- a/htdocs/compta/prelevement/class/ligneprelevement.class.php +++ b/htdocs/compta/prelevement/class/ligneprelevement.class.php @@ -48,14 +48,12 @@ class LignePrelevement * Constructor * * @param DoliDb $db Database handler - * @param User $user Objet user */ - public function __construct($db, $user) + public function __construct($db) { global $conf, $langs; $this->db = $db; - $this->user = $user; // List of language codes for status diff --git a/htdocs/compta/prelevement/class/rejetprelevement.class.php b/htdocs/compta/prelevement/class/rejetprelevement.class.php index 74626baed13..8c033353637 100644 --- a/htdocs/compta/prelevement/class/rejetprelevement.class.php +++ b/htdocs/compta/prelevement/class/rejetprelevement.class.php @@ -247,6 +247,7 @@ class RejetPrelevement $sendto = $emuser->getFullName($langs)." <".$emuser->email.">"; $from = $this->user->getFullName($langs)." <".$this->user->email.">"; $msgishtml = 1; + $trackid = 'use'.$emuser->id; $arr_file = array(); $arr_mime = array(); @@ -258,7 +259,7 @@ class RejetPrelevement $message = $langs->trans("InfoRejectMessage", $facref, $socname, $amount, $userinfo); - $mailfile = new CMailFile($subject, $sendto, $from, $message, $arr_file, $arr_mime, $arr_name, '', '', 0, $msgishtml, $this->user->email); + $mailfile = new CMailFile($subject, $sendto, $from, $message, $arr_file, $arr_mime, $arr_name, '', '', 0, $msgishtml, $this->user->email, '', $trackid); $result = $mailfile->sendfile(); if ($result) diff --git a/htdocs/compta/prelevement/factures.php b/htdocs/compta/prelevement/factures.php index ec004717946..fb0a5548426 100644 --- a/htdocs/compta/prelevement/factures.php +++ b/htdocs/compta/prelevement/factures.php @@ -53,7 +53,7 @@ $pagenext = $page + 1; if (!$sortfield) $sortfield = 'p.ref'; if (!$sortorder) $sortorder = 'DESC'; -$object = new BonPrelevement($db, ""); +$object = new BonPrelevement($db); diff --git a/htdocs/compta/prelevement/fiche-rejet.php b/htdocs/compta/prelevement/fiche-rejet.php index 44be3d1cd01..1cc454a3d4d 100644 --- a/htdocs/compta/prelevement/fiche-rejet.php +++ b/htdocs/compta/prelevement/fiche-rejet.php @@ -51,7 +51,7 @@ $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -$object = new BonPrelevement($db, ""); +$object = new BonPrelevement($db); diff --git a/htdocs/compta/prelevement/fiche-stat.php b/htdocs/compta/prelevement/fiche-stat.php index 6e8e8390ae8..18028e2059a 100644 --- a/htdocs/compta/prelevement/fiche-stat.php +++ b/htdocs/compta/prelevement/fiche-stat.php @@ -50,7 +50,7 @@ $pageprev = $page - 1; $pagenext = $page + 1; -$object = new BonPrelevement($db, ""); +$object = new BonPrelevement($db); /* @@ -142,7 +142,7 @@ if ($prev_id > 0 || $ref) /* * Stats */ - $ligne = new LignePrelevement($db, $user); + $ligne = new LignePrelevement($db); $sql = "SELECT sum(pl.amount), pl.statut"; $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_lignes as pl"; diff --git a/htdocs/compta/prelevement/line.php b/htdocs/compta/prelevement/line.php index 6eef29d1e3e..29bb5c435e3 100644 --- a/htdocs/compta/prelevement/line.php +++ b/htdocs/compta/prelevement/line.php @@ -90,7 +90,7 @@ if ($action == 'confirm_rejet') if (!$error) { - $lipre = new LignePrelevement($db, $user); + $lipre = new LignePrelevement($db); if ($lipre->fetch($id) == 0) @@ -132,7 +132,7 @@ $h++; if ($id) { - $lipre = new LignePrelevement($db, $user); + $lipre = new LignePrelevement($db); if ($lipre->fetch($id) == 0) { diff --git a/htdocs/compta/prelevement/list.php b/htdocs/compta/prelevement/list.php index bebb838652d..48f9bcc7c54 100644 --- a/htdocs/compta/prelevement/list.php +++ b/htdocs/compta/prelevement/list.php @@ -64,8 +64,8 @@ $search_code = GETPOST('search_code', 'alpha'); $search_company = GETPOST('search_company', 'alpha'); $statut = GETPOST('statut', 'int'); -$bon = new BonPrelevement($db, ""); -$line = new LignePrelevement($db, $user); +$bon = new BonPrelevement($db); +$line = new LignePrelevement($db); $company = new Societe($db); $hookmanager->initHooks(array('withdrawalsreceiptslineslist')); diff --git a/htdocs/compta/prelevement/rejets.php b/htdocs/compta/prelevement/rejets.php index 928aaba51b1..6d1994b7a4b 100644 --- a/htdocs/compta/prelevement/rejets.php +++ b/htdocs/compta/prelevement/rejets.php @@ -57,7 +57,7 @@ if ($sortorder == "") $sortorder = "DESC"; if ($sortfield == "") $sortfield = "p.datec"; $rej = new RejetPrelevement($db, $user); -$line = new LignePrelevement($db, $user); +$line = new LignePrelevement($db); $hookmanager->initHooks(array('withdrawalsreceiptsrejectedlist')); diff --git a/htdocs/compta/prelevement/stats.php b/htdocs/compta/prelevement/stats.php index c19603df967..c6d1962ff46 100644 --- a/htdocs/compta/prelevement/stats.php +++ b/htdocs/compta/prelevement/stats.php @@ -73,7 +73,7 @@ if ($resql) print '
'; print load_fiche_titre($langs->trans("WithdrawStatistics"), '', ''); -$ligne = new LignePrelevement($db, $user); +$ligne = new LignePrelevement($db); $sql = "SELECT sum(pl.amount), count(pl.amount), pl.statut"; $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_lignes as pl"; From ad489ab1b409b11f2e39552d63e2fb6cff603115 Mon Sep 17 00:00:00 2001 From: VESSILLER Date: Thu, 7 May 2020 12:22:13 +0200 Subject: [PATCH 389/780] NEW show messages on ticket card --- htdocs/ticket/card.php | 919 +++++++++++++++++++++-------------------- 1 file changed, 479 insertions(+), 440 deletions(-) diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index b9459a0e161..3d37c46eb90 100644 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -55,6 +55,17 @@ $action = GETPOST('action', 'aZ09'); $notifyTiers = GETPOST("notify_tiers_at_create", 'alpha'); +$sortfield = GETPOST('sortfield', 'alpha'); +$sortorder = GETPOST('sortorder', 'alpha'); + +if (GETPOST('actioncode', 'array')) { + $actioncode = GETPOST('actioncode', 'array', 3); + if (!count($actioncode)) $actioncode = '0'; +} else { + $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); +} +$search_agenda_label = GETPOST('search_agenda_label'); + // Initialize technical object to manage hooks of ticket. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('ticketcard', 'globalcard')); @@ -116,493 +127,486 @@ $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 ($cancel) -{ - if (!empty($backtopage)) +if (empty($reshook)) { + // Purge search criteria + if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All test are required to be compatible with all browsers{ { - header("Location: ".$backtopage); - exit; - } - $action = 'view'; -} - -if (GETPOST('add', 'alpha') && $user->rights->ticket->write) { - $error = 0; - - if (!GETPOST("subject", 'alpha')) { - $error++; - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Subject")), null, 'errors'); - $action = 'create'; - } elseif (!GETPOST("message", 'alpha')) { - $error++; - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Message")), null, 'errors'); - $action = 'create'; + $actioncode = ''; + $search_agenda_label = ''; } - if (!$error) { - $db->begin(); + if ($cancel) { + if (!empty($backtopage)) { + header("Location: " . $backtopage); + exit; + } + $action = 'view'; + } - $object->ref = GETPOST("ref", 'alpha'); - $object->fk_soc = GETPOST("socid", 'int') > 0 ? GETPOST("socid", 'int') : 0; - $object->subject = GETPOST("subject", 'alpha'); - $object->message = GETPOST("message", 'none'); + if (GETPOST('add', 'alpha') && $user->rights->ticket->write) { + $error = 0; - $object->type_code = GETPOST("type_code", 'alpha'); - $object->category_code = GETPOST("category_code", 'alpha'); - $object->severity_code = GETPOST("severity_code", 'alpha'); - $notifyTiers = GETPOST("notify_tiers_at_create", 'alpha'); - $object->notify_tiers_at_create = empty($notifyTiers) ? 0 : 1; - - $object->fk_project = GETPOST('projectid', 'int'); - - $ret = $extrafields->setOptionalsFromPost(null, $object); - - $id = $object->create($user); - if ($id <= 0) { + if (!GETPOST("subject", 'alpha')) { $error++; - setEventMessage($object->error, $object->errors, 'errors'); + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Subject")), null, 'errors'); + $action = 'create'; + } elseif (!GETPOST("message", 'alpha')) { + $error++; + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Message")), null, 'errors'); $action = 'create'; } - if (!$error) - { - // Add contact - $contactid = GETPOST('contactid', 'int'); - $type_contact = GETPOST("type", 'alpha'); + if (!$error) { + $db->begin(); - if ($contactid > 0 && $type_contact) { - $result = $object->add_contact($contactid, GETPOST("type"), 'external'); + $object->ref = GETPOST("ref", 'alpha'); + $object->fk_soc = GETPOST("socid", 'int') > 0 ? GETPOST("socid", 'int') : 0; + $object->subject = GETPOST("subject", 'alpha'); + $object->message = GETPOST("message", 'none'); + + $object->type_code = GETPOST("type_code", 'alpha'); + $object->category_code = GETPOST("category_code", 'alpha'); + $object->severity_code = GETPOST("severity_code", 'alpha'); + $notifyTiers = GETPOST("notify_tiers_at_create", 'alpha'); + $object->notify_tiers_at_create = empty($notifyTiers) ? 0 : 1; + + $object->fk_project = GETPOST('projectid', 'int'); + + $ret = $extrafields->setOptionalsFromPost(null, $object); + + $id = $object->create($user); + if ($id <= 0) { + $error++; + setEventMessage($object->error, $object->errors, 'errors'); + $action = 'create'; } - // altairis: link ticket to project - if (GETPOST('projectid') > 0) { - $object->setProject(GETPOST('projectid')); - } + if (!$error) { + // Add contact + $contactid = GETPOST('contactid', 'int'); + $type_contact = GETPOST("type", 'alpha'); - // Auto assign user - if ($conf->global->TICKET_AUTO_ASSIGN_USER_CREATE) { - $result = $object->assignUser($user, $user->id, 1); - $object->add_contact($user->id, "SUPPORTTEC", 'internal'); - } + if ($contactid > 0 && $type_contact) { + $result = $object->add_contact($contactid, GETPOST("type"), 'external'); + } - // Auto assign contrat - $contractid = 0; - if ($conf->global->TICKET_AUTO_ASSIGN_CONTRACT_CREATE) { - $contrat = new Contrat($db); - $contrat->socid = $object->fk_soc; - $list = $contrat->getListOfContracts(); + // altairis: link ticket to project + if (GETPOST('projectid') > 0) { + $object->setProject(GETPOST('projectid')); + } - if (is_array($list) && !empty($list)) { - if (count($list) == 1) { - $contractid = $list[0]->id; - $object->setContract($contractid); - } else { + // Auto assign user + if ($conf->global->TICKET_AUTO_ASSIGN_USER_CREATE) { + $result = $object->assignUser($user, $user->id, 1); + $object->add_contact($user->id, "SUPPORTTEC", 'internal'); + } + + // Auto assign contrat + $contractid = 0; + if ($conf->global->TICKET_AUTO_ASSIGN_CONTRACT_CREATE) { + $contrat = new Contrat($db); + $contrat->socid = $object->fk_soc; + $list = $contrat->getListOfContracts(); + + if (is_array($list) && !empty($list)) { + if (count($list) == 1) { + $contractid = $list[0]->id; + $object->setContract($contractid); + } else { + } + } + } + + // Auto create fiche intervention + if ($conf->global->TICKET_AUTO_CREATE_FICHINTER_CREATE) { + $fichinter = new Fichinter($db); + $fichinter->socid = $object->fk_soc; + $fichinter->fk_project = GETPOST('projectid', 'int'); + $fichinter->fk_contrat = $contractid; + $fichinter->author = $user->id; + $fichinter->modelpdf = 'soleil'; + $fichinter->origin = $object->element; + $fichinter->origin_id = $object->id; + + // Extrafields + $extrafields->fetch_name_optionals_label($fichinter->table_element); + $array_options = $extrafields->getOptionalsFromPost($fichinter->table_element); + $fichinter->array_options = $array_options; + + $id = $fichinter->create($user); + if ($id <= 0) { + setEventMessages($fichinter->error, null, 'errors'); } } } - // Auto create fiche intervention - if ($conf->global->TICKET_AUTO_CREATE_FICHINTER_CREATE) - { - $fichinter = new Fichinter($db); - $fichinter->socid = $object->fk_soc; - $fichinter->fk_project = GETPOST('projectid', 'int'); - $fichinter->fk_contrat = $contractid; - $fichinter->author = $user->id; - $fichinter->modelpdf = 'soleil'; - $fichinter->origin = $object->element; - $fichinter->origin_id = $object->id; + if (!$error) { + // File transfer + $object->copyFilesForTicket(); + } - // Extrafields - $extrafields->fetch_name_optionals_label($fichinter->table_element); - $array_options = $extrafields->getOptionalsFromPost($fichinter->table_element); - $fichinter->array_options = $array_options; + if (!$error) { + $db->commit(); - $id = $fichinter->create($user); - if ($id <= 0) { - setEventMessages($fichinter->error, null, 'errors'); + if (!empty($backtopage)) { + $url = $backtopage; + } else { + $url = 'card.php?track_id=' . $object->track_id; } - } - } - if (!$error) - { - // File transfer - $object->copyFilesForTicket(); - } - - if (!$error) - { - $db->commit(); - - if (!empty($backtopage)) { - $url = $backtopage; + header("Location: " . $url); + exit; } else { - $url = 'card.php?track_id='.$object->track_id; + $db->rollback(); + setEventMessages($object->error, $object->errors, 'errors'); } - - header("Location: ".$url); - exit; } else { - $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } - } else { - setEventMessages($object->error, $object->errors, 'errors'); - } -} - -if ($action == 'edit' && $user->rights->ticket->write) { - $error = 0; - - if ($object->fetch(GETPOST('id', 'int')) < 0) { - $error++; - array_push($object->errors, $langs->trans("ErrorTicketIsNotValid")); - $_GET["action"] = $_POST["action"] = ''; - } -} - -if (GETPOST('update', 'alpha') && GETPOST('id', 'int') && $user->rights->ticket->write) { - $error = 0; - - $ret = $object->fetch(GETPOST('id', 'int')); - if ($ret < 0) { - $error++; - array_push($object->errors, $langs->trans("ErrorTicketIsNotValid")); - $action = ''; - } elseif (!GETPOST("label")) { - $error++; - array_push($object->errors, $langs->trans("ErrorFieldRequired", $langs->transnoentities("Label"))); - $action = 'edit'; - } elseif (!GETPOST("subject")) { - $error++; - array_push($object->errors, $langs->trans("ErrorFieldRequired", $langs->transnoentities("Subject"))); - $action = 'edit'; } - if (!$error) { - $db->begin(); + if ($action == 'edit' && $user->rights->ticket->write) { + $error = 0; - $object->label = GETPOST("label", 'alphanohtml'); - $object->description = GETPOST("description", 'none'); - - //... - $ret = $object->update($user); - if ($ret <= 0) { + if ($object->fetch(GETPOST('id', 'int')) < 0) { $error++; - setEventMessage($object->error, $object->errors, 'errors'); + array_push($object->errors, $langs->trans("ErrorTicketIsNotValid")); + $_GET["action"] = $_POST["action"] = ''; + } + } + + if (GETPOST('update', 'alpha') && GETPOST('id', 'int') && $user->rights->ticket->write) { + $error = 0; + + $ret = $object->fetch(GETPOST('id', 'int')); + if ($ret < 0) { + $error++; + array_push($object->errors, $langs->trans("ErrorTicketIsNotValid")); + $action = ''; + } elseif (!GETPOST("label")) { + $error++; + array_push($object->errors, $langs->trans("ErrorFieldRequired", $langs->transnoentities("Label"))); + $action = 'edit'; + } elseif (!GETPOST("subject")) { + $error++; + array_push($object->errors, $langs->trans("ErrorFieldRequired", $langs->transnoentities("Subject"))); $action = 'edit'; } - if (!$error && $ret > 0) { - $db->commit(); - } else { - $db->rollback(); - } - } -} + if (!$error) { + $db->begin(); -// Mark as Read -if ($action == "mark_ticket_read" && $user->rights->ticket->write) { - $object->fetch('', '', GETPOST("track_id", 'alpha')); + $object->label = GETPOST("label", 'alphanohtml'); + $object->description = GETPOST("description", 'none'); - if ($object->markAsRead($user) > 0) - { - setEventMessages($langs->trans('TicketMarkedAsRead'), null, 'mesgs'); + //... + $ret = $object->update($user); + if ($ret <= 0) { + $error++; + setEventMessage($object->error, $object->errors, 'errors'); + $action = 'edit'; + } - header("Location: card.php?track_id=".$object->track_id."&action=view"); - exit; - } else { - setEventMessages($object->error, $object->errors, 'errors'); - } - $action = 'view'; -} - -// Assign to someone -if ($action == "assign_user" && GETPOST('btn_assign_user', 'alpha') && $user->rights->ticket->write) { - $object->fetch('', '', GETPOST("track_id", 'alpha')); - $useroriginassign = $object->fk_user_assign; - $usertoassign = GETPOST('fk_user_assign', 'int'); - - /*if (! ($usertoassign > 0)) { - $error++; - array_push($object->errors, $langs->trans("ErrorFieldRequired", $langs->transnoentities("AssignedTo"))); - $action = 'view'; - }*/ - - if (!$error) - { - $ret = $object->assignUser($user, $usertoassign); - if ($ret < 0) $error++; - } - - if (!$error) // Update list of contacts - { - // Si déjà un user assigné on le supprime des contacts - if ($useroriginassign > 0) { - $internal_contacts = $object->listeContact(-1, 'internal'); - - foreach ($internal_contacts as $key => $contact) { - if ($contact['code'] == "SUPPORTTEC" && $contact['id'] == $useroriginassign) { - } - { - //print "user à effacer : ".$useroriginassign; - $object->delete_contact($contact['rowid']); - } + if (!$error && $ret > 0) { + $db->commit(); + } else { + $db->rollback(); } } - - if ($usertoassign > 0) $object->add_contact($usertoassign, "SUPPORTTEC", 'internal', $notrigger = 0); } - if (!$error) - { - // Log action in ticket logs table - $object->fetch_user($usertoassign); - $log_action = $langs->trans('TicketLogAssignedTo', $object->user->getFullName($langs)); + // Mark as Read + if ($action == "mark_ticket_read" && $user->rights->ticket->write) { + $object->fetch('', '', GETPOST("track_id", 'alpha')); - setEventMessages($langs->trans('TicketAssigned'), null, 'mesgs'); + if ($object->markAsRead($user) > 0) { + setEventMessages($langs->trans('TicketMarkedAsRead'), null, 'mesgs'); - header("Location: card.php?track_id=".$object->track_id."&action=view"); - exit; - } else { - array_push($object->errors, $object->error); - } - $action = 'view'; -} - -if ($action == 'add_message' && GETPOSTISSET('btn_add_message') && $user->rights->ticket->read) { - $ret = $object->newMessage($user, $action, (GETPOST('private_message', 'alpha') == "on" ? 1 : 0)); - - if ($ret > 0) { - if (!empty($backtopage)) { - $url = $backtopage; - } else { - $url = 'card.php?action=view&track_id='.$object->track_id; - } - - header("Location: ".$url); - exit; - } else { - setEventMessages($object->error, null, 'errors'); - $action = 'presend'; - } -} - -if ($action == "confirm_close" && GETPOST('confirm', 'alpha') == 'yes' && $user->rights->ticket->write) -{ - $object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')); - - if ($object->close($user)) { - setEventMessages($langs->trans('TicketMarkedAsClosed'), null, 'mesgs'); - - $url = 'card.php?action=view&track_id='.GETPOST('track_id', 'alpha'); - header("Location: ".$url); - } else { - $action = ''; - setEventMessages($object->error, $object->errors, 'errors'); - } -} - -if ($action == "confirm_public_close" && GETPOST('confirm', 'alpha') == 'yes') { - $object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')); - if ($_SESSION['email_customer'] == $object->origin_email || $_SESSION['email_customer'] == $object->thirdparty->email) { - $object->close($user); - - // Log action in ticket logs table - $log_action = $langs->trans('TicketLogClosedBy', $_SESSION['email_customer']); - - setEventMessages('
'.$langs->trans('TicketMarkedAsClosed').'
', null, 'mesgs'); - - $url = 'card.php?action=view_ticket&track_id='.GETPOST('track_id', 'alpha'); - header("Location: ".$url); - } else { - setEventMessages($object->error, $object->errors, 'errors'); - $action = ''; - } -} - -if ($action == 'confirm_delete_ticket' && GETPOST('confirm', 'alpha') == "yes" && $user->rights->ticket->delete) { - if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { - if ($object->delete($user) > 0) { - setEventMessages('
'.$langs->trans('TicketDeletedSuccess').'
', null, 'mesgs'); - Header("Location: ".DOL_URL_ROOT."/ticket/list.php"); + header("Location: card.php?track_id=" . $object->track_id . "&action=view"); exit; } else { - $langs->load("errors"); - $mesg = '
'.$langs->trans($object->error).'
'; + setEventMessages($object->error, $object->errors, 'errors'); + } + $action = 'view'; + } + + // Assign to someone + if ($action == "assign_user" && GETPOST('btn_assign_user', 'alpha') && $user->rights->ticket->write) { + $object->fetch('', '', GETPOST("track_id", 'alpha')); + $useroriginassign = $object->fk_user_assign; + $usertoassign = GETPOST('fk_user_assign', 'int'); + + /*if (! ($usertoassign > 0)) { + $error++; + array_push($object->errors, $langs->trans("ErrorFieldRequired", $langs->transnoentities("AssignedTo"))); + $action = 'view'; + }*/ + + if (!$error) { + $ret = $object->assignUser($user, $usertoassign); + if ($ret < 0) $error++; + } + + if (!$error) // Update list of contacts + { + // Si déjà un user assigné on le supprime des contacts + if ($useroriginassign > 0) { + $internal_contacts = $object->listeContact(-1, 'internal'); + + foreach ($internal_contacts as $key => $contact) { + if ($contact['code'] == "SUPPORTTEC" && $contact['id'] == $useroriginassign) { + } + { + //print "user à effacer : ".$useroriginassign; + $object->delete_contact($contact['rowid']); + } + } + } + + if ($usertoassign > 0) $object->add_contact($usertoassign, "SUPPORTTEC", 'internal', $notrigger = 0); + } + + if (!$error) { + // Log action in ticket logs table + $object->fetch_user($usertoassign); + $log_action = $langs->trans('TicketLogAssignedTo', $object->user->getFullName($langs)); + + setEventMessages($langs->trans('TicketAssigned'), null, 'mesgs'); + + header("Location: card.php?track_id=" . $object->track_id . "&action=view"); + exit; + } else { + array_push($object->errors, $object->error); + } + $action = 'view'; + } + + if ($action == 'add_message' && GETPOSTISSET('btn_add_message') && $user->rights->ticket->read) { + $ret = $object->newMessage($user, $action, (GETPOST('private_message', 'alpha') == "on" ? 1 : 0)); + + if ($ret > 0) { + if (!empty($backtopage)) { + $url = $backtopage; + } else { + $url = 'card.php?action=view&track_id=' . $object->track_id; + } + + header("Location: " . $url); + exit; + } else { + setEventMessages($object->error, null, 'errors'); + $action = 'presend'; + } + } + + if ($action == "confirm_close" && GETPOST('confirm', 'alpha') == 'yes' && $user->rights->ticket->write) { + $object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')); + + if ($object->close($user)) { + setEventMessages($langs->trans('TicketMarkedAsClosed'), null, 'mesgs'); + + $url = 'card.php?action=view&track_id=' . GETPOST('track_id', 'alpha'); + header("Location: " . $url); + } else { + $action = ''; + setEventMessages($object->error, $object->errors, 'errors'); + } + } + + if ($action == "confirm_public_close" && GETPOST('confirm', 'alpha') == 'yes') { + $object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')); + if ($_SESSION['email_customer'] == $object->origin_email || $_SESSION['email_customer'] == $object->thirdparty->email) { + $object->close($user); + + // Log action in ticket logs table + $log_action = $langs->trans('TicketLogClosedBy', $_SESSION['email_customer']); + + setEventMessages('
' . $langs->trans('TicketMarkedAsClosed') . '
', null, 'mesgs'); + + $url = 'card.php?action=view_ticket&track_id=' . GETPOST('track_id', 'alpha'); + header("Location: " . $url); + } else { + setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } } -} -// Set parent company -if ($action == 'set_thirdparty' && $user->rights->societe->creer) { - if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { - $result = $object->setCustomer(GETPOST('editcustomer', 'int')); - $url = 'card.php?action=view&track_id='.GETPOST('track_id', 'alpha'); - header("Location: ".$url); - exit(); - } -} - -if ($action == 'set_progression' && $user->rights->ticket->write) { - if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { - $result = $object->setProgression(GETPOST('progress', 'alpha')); - - $url = 'card.php?action=view&track_id='.$object->track_id; - header("Location: ".$url); - exit(); - } -} - -if ($action == 'setsubject') { - if ($object->fetch(GETPOST('id', 'int'))) { - if ($action == 'setsubject') { - $object->subject = trim(GETPOST('subject', 'alpha')); - } - - if ($action == 'setsubject' && empty($object->subject)) { - $mesg .= ($mesg ? '
' : '').$langs->trans("ErrorFieldRequired", $langs->transnoentities("Subject")); - } - - if (!$mesg) { - if ($object->update($user) >= 0) { - header("Location: ".$_SERVER['PHP_SELF']."?track_id=".$object->track_id); + if ($action == 'confirm_delete_ticket' && GETPOST('confirm', 'alpha') == "yes" && $user->rights->ticket->delete) { + if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { + if ($object->delete($user) > 0) { + setEventMessages('
' . $langs->trans('TicketDeletedSuccess') . '
', null, 'mesgs'); + Header("Location: " . DOL_URL_ROOT . "/ticket/list.php"); exit; + } else { + $langs->load("errors"); + $mesg = '
' . $langs->trans($object->error) . '
'; + $action = ''; } - $mesg = $object->error; } } -} -if ($action == 'confirm_reopen' && $user->rights->ticket->manage && !GETPOST('cancel')) { - if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { - // prevent browser refresh from reopening ticket several times - if ($object->fk_statut == Ticket::STATUS_CLOSED) { - $res = $object->setStatut(Ticket::STATUS_ASSIGNED); + // Set parent company + if ($action == 'set_thirdparty' && $user->rights->societe->creer) { + if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { + $result = $object->setCustomer(GETPOST('editcustomer', 'int')); + $url = 'card.php?action=view&track_id=' . GETPOST('track_id', 'alpha'); + header("Location: " . $url); + exit(); + } + } + + if ($action == 'set_progression' && $user->rights->ticket->write) { + if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { + $result = $object->setProgression(GETPOST('progress', 'alpha')); + + $url = 'card.php?action=view&track_id=' . $object->track_id; + header("Location: " . $url); + exit(); + } + } + + if ($action == 'setsubject') { + if ($object->fetch(GETPOST('id', 'int'))) { + if ($action == 'setsubject') { + $object->subject = trim(GETPOST('subject', 'alpha')); + } + + if ($action == 'setsubject' && empty($object->subject)) { + $mesg .= ($mesg ? '
' : '') . $langs->trans("ErrorFieldRequired", $langs->transnoentities("Subject")); + } + + if (!$mesg) { + if ($object->update($user) >= 0) { + header("Location: " . $_SERVER['PHP_SELF'] . "?track_id=" . $object->track_id); + exit; + } + $mesg = $object->error; + } + } + } + + if ($action == 'confirm_reopen' && $user->rights->ticket->manage && !GETPOST('cancel')) { + if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { + // prevent browser refresh from reopening ticket several times + if ($object->fk_statut == Ticket::STATUS_CLOSED) { + $res = $object->setStatut(Ticket::STATUS_ASSIGNED); + if ($res) { + // Log action in ticket logs table + $log_action = $langs->trans('TicketLogReopen'); + + $url = 'card.php?action=view&track_id=' . $object->track_id; + header("Location: " . $url); + exit(); + } + } + } + } // Categorisation dans projet + elseif ($action == 'classin' && $user->rights->ticket->write) { + if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { + $object->setProject(GETPOST('projectid', 'int')); + $url = 'card.php?action=view&track_id=' . $object->track_id; + header("Location: " . $url); + exit(); + } + } // Categorisation dans contrat + elseif ($action == 'setcontract' && $user->rights->ticket->write) { + if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { + $object->setContract(GETPOST('contractid', 'int')); + $url = 'card.php?action=view&track_id=' . $object->track_id; + header("Location: " . $url); + exit(); + } + } elseif ($action == "set_message" && $user->rights->ticket->manage) { + // altairis: manage cancel button + if (!GETPOST('cancel')) { + $object->fetch('', '', GETPOST('track_id', 'alpha')); + $oldvalue_message = $object->message; + $fieldtomodify = GETPOST('message_initial'); + + $object->message = $fieldtomodify; + $ret = $object->update($user); + if ($ret > 0) { + $log_action = $langs->trans('TicketInitialMessageModified') . " \n"; + // include the Diff class + dol_include_once('/ticket/class/utils_diff.class.php'); + // output the result of comparing two files as plain text + $log_action .= Diff::toString(Diff::compare(strip_tags($oldvalue_message), strip_tags($object->message))); + + setEventMessages($langs->trans('TicketMessageSuccesfullyUpdated'), null, 'mesgs'); + } + } + + $action = 'view'; + } // Reopen ticket + elseif ($action == 'confirm_set_status' && $user->rights->ticket->write && !GETPOST('cancel')) { + if ($object->fetch(GETPOST('id', 'int'), GETPOST('track_id', 'alpha')) >= 0) { + $new_status = GETPOST('new_status', 'int'); + $old_status = $object->fk_statut; + $res = $object->setStatut($new_status); if ($res) { // Log action in ticket logs table - $log_action = $langs->trans('TicketLogReopen'); + $log_action = $langs->trans('TicketLogStatusChanged', $langs->transnoentities($object->statuts_short[$old_status]), $langs->transnoentities($object->statuts_short[$new_status])); - $url = 'card.php?action=view&track_id='.$object->track_id; - header("Location: ".$url); + $url = 'card.php?action=view&track_id=' . $object->track_id; + header("Location: " . $url); exit(); } } } -} // Categorisation dans projet -elseif ($action == 'classin' && $user->rights->ticket->write) { - if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { - $object->setProject(GETPOST('projectid', 'int')); - $url = 'card.php?action=view&track_id='.$object->track_id; - header("Location: ".$url); - exit(); - } -} // Categorisation dans contrat -elseif ($action == 'setcontract' && $user->rights->ticket->write) { - if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { - $object->setContract(GETPOST('contractid', 'int')); - $url = 'card.php?action=view&track_id='.$object->track_id; - header("Location: ".$url); - exit(); - } -} elseif ($action == "set_message" && $user->rights->ticket->manage) { - // altairis: manage cancel button - if (!GETPOST('cancel')) { - $object->fetch('', '', GETPOST('track_id', 'alpha')); - $oldvalue_message = $object->message; - $fieldtomodify = GETPOST('message_initial'); - $object->message = $fieldtomodify; + // Action to update one extrafield + if ($action == "update_extras" && !empty($permissiontoadd)) { + $object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')); + $attributekey = GETPOST('attribute', 'alpha'); + $attributekeylong = 'options_' . $attributekey; + $object->array_options['options_' . $attributekey] = GETPOST($attributekeylong, ' alpha'); + + $result = $object->insertExtraFields(empty($triggermodname) ? '' : $triggermodname, $user); + if ($result > 0) { + setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); + $action = 'view'; + } else { + setEventMessages($object->error, $object->errors, 'errors'); + $action = 'edit_extras'; + } + } + + if ($action == "change_property" && GETPOST('btn_update_ticket_prop', 'alpha') && $user->rights->ticket->write) { + $object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')); + + $object->type_code = GETPOST('update_value_type', 'aZ09'); + $object->severity_code = GETPOST('update_value_severity', 'aZ09'); + $object->category_code = GETPOST('update_value_category', 'aZ09'); + $ret = $object->update($user); if ($ret > 0) { - $log_action = $langs->trans('TicketInitialMessageModified')." \n"; - // include the Diff class - dol_include_once('/ticket/class/utils_diff.class.php'); - // output the result of comparing two files as plain text - $log_action .= Diff::toString(Diff::compare(strip_tags($oldvalue_message), strip_tags($object->message))); + $log_action = $langs->trans('TicketLogPropertyChanged', $oldvalue_label, $newvalue_label); - setEventMessages($langs->trans('TicketMessageSuccesfullyUpdated'), null, 'mesgs'); + setEventMessages($langs->trans('TicketUpdated'), null, 'mesgs'); } - } - - $action = 'view'; -} // Reopen ticket -elseif ($action == 'confirm_set_status' && $user->rights->ticket->write && !GETPOST('cancel')) { - if ($object->fetch(GETPOST('id', 'int'), GETPOST('track_id', 'alpha')) >= 0) { - $new_status = GETPOST('new_status', 'int'); - $old_status = $object->fk_statut; - $res = $object->setStatut($new_status); - if ($res) { - // Log action in ticket logs table - $log_action = $langs->trans('TicketLogStatusChanged', $langs->transnoentities($object->statuts_short[$old_status]), $langs->transnoentities($object->statuts_short[$new_status])); - - $url = 'card.php?action=view&track_id='.$object->track_id; - header("Location: ".$url); - exit(); - } - } -} - -// Action to update one extrafield -if ($action == "update_extras" && !empty($permissiontoadd)) -{ - $object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')); - $attributekey = GETPOST('attribute', 'alpha'); - $attributekeylong = 'options_'.$attributekey; - $object->array_options['options_'.$attributekey] = GETPOST($attributekeylong, ' alpha'); - - $result = $object->insertExtraFields(empty($triggermodname) ? '' : $triggermodname, $user); - if ($result > 0) - { - setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); $action = 'view'; } - else - { - setEventMessages($object->error, $object->errors, 'errors'); - $action = 'edit_extras'; - } + + + $permissiondellink = $user->rights->ticket->write; + include DOL_DOCUMENT_ROOT . '/core/actions_dellink.inc.php'; // Must be include, not include_once + + // Actions to build doc + $upload_dir = $conf->ticket->dir_output; + $permissiontoadd = $user->rights->ticket->write; + include DOL_DOCUMENT_ROOT . '/core/actions_builddoc.inc.php'; + + // Actions to send emails + $triggersendname = 'TICKET_SENTBYMAIL'; + $paramname = 'id'; + $autocopy = 'MAIN_MAIL_AUTOCOPY_TICKET_TO'; // used to know the automatic BCC to add + $trackid = 'tic' . $object->id; + include DOL_DOCUMENT_ROOT . '/core/actions_sendmails.inc.php'; + + // Set $action to correct value for the case we used presend action to add a message + if (GETPOSTISSET('actionbis') && $action == 'presend') $action = 'presend_addmessage'; } -if ($action == "change_property" && GETPOST('btn_update_ticket_prop', 'alpha') && $user->rights->ticket->write) -{ - $object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')); - - $object->type_code = GETPOST('update_value_type', 'aZ09'); - $object->severity_code = GETPOST('update_value_severity', 'aZ09'); - $object->category_code = GETPOST('update_value_category', 'aZ09'); - - $ret = $object->update($user); - if ($ret > 0) { - $log_action = $langs->trans('TicketLogPropertyChanged', $oldvalue_label, $newvalue_label); - - setEventMessages($langs->trans('TicketUpdated'), null, 'mesgs'); - } - $action = 'view'; -} - - -$permissiondellink = $user->rights->ticket->write; -include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; // Must be include, not include_once - -// Actions to build doc -$upload_dir = $conf->ticket->dir_output; -$permissiontoadd = $user->rights->ticket->write; -include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php'; - -// Actions to send emails -$triggersendname = 'TICKET_SENTBYMAIL'; -$paramname = 'id'; -$autocopy = 'MAIN_MAIL_AUTOCOPY_TICKET_TO'; // used to know the automatic BCC to add -$trackid = 'tic'.$object->id; -include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php'; - -// Set $action to correct value for the case we used presend action to add a message -if (GETPOSTISSET('actionbis') && $action == 'presend') $action = 'presend_addmessage'; - - /* * View */ @@ -1213,30 +1217,8 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd // Set $action to correct value for the case we used presend action to add a message if (GETPOSTISSET('actionbis') && $action == 'presend') $action = 'presend_addmessage'; - if ($action != 'presend' && $action != 'presend_addmessage') - { - print '
'; - print ''; // ancre - - // Show links to link elements - $linktoelem = $form->showLinkToObjectBlock($object, null, array('ticket')); - $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); - - // Show direct link to public interface - print '
'."\n"; - print showDirectPublicLink($object).'
'; - - print '
'; - - // List of actions on element - include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; - $formactions = new FormActions($db); - $somethingshown = $formactions->showactions($object, 'ticket', $socid, 1); - - print '
'; - } - else - { + // add a message + if ($action == 'presend' || $action == 'presend_addmessage') { $action = 'add_message'; // action to use to post the message $modelmail = 'ticket_send'; @@ -1310,6 +1292,63 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd $formticket->showMessageForm('100%'); print '
'; } + + // Show messages on card + if (empty($conf->global->TICKET_HIDE_MESSAGES_ON_CARD)) { + $param = '&id='.$object->id; + if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.$contextpage; + if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.$limit; + if ($actioncode) $param .= '&actioncode='.urlencode($actioncode); + if ($search_agenda_label) $param .= '&search_agenda_label='.urlencode($search_agenda_label); + + $morehtmlright = ''; + + $messagingUrl = DOL_URL_ROOT . '/ticket/agenda.php?track_id=' . $object->track_id; + $morehtmlright .= dolGetButtonTitle($langs->trans('MessageListViewType'), '', 'fal fa-list-alt imgforviewmode', $messagingUrl, '', 1); + + // Show link to add a message (if read and not closed) + $btnstatus = $object->fk_statut < Ticket::STATUS_CLOSED && $action != "presend" && $action != "presend_addmessage" && $action != "add_message"; + $url = 'card.php?track_id=' . $object->track_id . '&action=presend_addmessage&mode=init'; + $morehtmlright .= dolGetButtonTitle($langs->trans('TicketAddMessage'), '', 'fal fa-comment-dots', $url, 'add-new-ticket-title-button', $btnstatus); + + // Show link to add event (if read and not closed) + $btnstatus = $object->fk_statut < Ticket::STATUS_CLOSED && $action != "presend" && $action != "presend_addmessage" && $action != "add_message";; + $url = dol_buildpath('/comm/action/card.php', 1) . '?action=create&datep=' . date('YmdHi') . '&origin=ticket&originid=' . $object->id . '&projectid=' . $object->fk_project . '&backtopage=' . urlencode($_SERVER["PHP_SELF"] . '?track_id=' . $object->track_id); + $morehtmlright .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fal fa-plus-circle', $url, 'add-new-ticket-even-button', $btnstatus); + + print_barre_liste($langs->trans("ActionsOnTicket"), 0, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', 0, -1, '', 0, $morehtmlright, '', 0, 1, 1); + + // List of all actions + $filters = array(); + $filters['search_agenda_label'] = $search_agenda_label; + show_ticket_messaging($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder); + } + + if ($action != 'presend' && $action != 'presend_addmessage') { + print '
'; + print ''; // ancre + + // Show links to link elements + $linktoelem = $form->showLinkToObjectBlock($object, null, array('ticket')); + $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); + + // Show direct link to public interface + print '
'."\n"; + print showDirectPublicLink($object).'
'; + print '
'; + + if (!empty($conf->global->TICKET_HIDE_MESSAGES_ON_CARD)) { + print '
'; + + // List of actions on element + include_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php'; + $formactions = new FormActions($db); + $somethingshown = $formactions->showactions($object, 'ticket', $socid, 1); + + print '
'; + } + print '
'; + } } } From 7e8cd565f482fcc7e58fa64f67fe4107c63b21cc Mon Sep 17 00:00:00 2001 From: VESSILLER Date: Thu, 7 May 2020 14:35:04 +0200 Subject: [PATCH 390/780] NEW not show linked table on add message action --- htdocs/ticket/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index 3d37c46eb90..7d5ab5fe228 100644 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -1324,7 +1324,7 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd show_ticket_messaging($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder); } - if ($action != 'presend' && $action != 'presend_addmessage') { + if ($action != 'presend' && $action != 'presend_addmessage' && $action != 'add_message') { print '
'; print ''; // ancre From dd1d29f983c4625b4866fb1c61a80f1907cf5f54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 7 May 2020 15:37:32 +0200 Subject: [PATCH 391/780] add some substitutions for date datetime --- htdocs/core/lib/functions.lib.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 1a4ab00b7d6..c3da7d0ade4 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -6358,6 +6358,17 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, { foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label) { $substitutionarray['__EXTRAFIELD_'.strtoupper($key).'__'] = $object->array_options['options_'.$key]; + if ($extrafields->attribute_type[$key] == 'date') { + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '__'] = dol_print_date($object->array_options['options_' . $key], 'day'); + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_LOCALE__'] = dol_print_date($object->array_options['options_' . $key], 'day', 'tzserver', $outputlangs); + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_RFC__'] = dol_print_date($object->array_options['options_' . $key],'dayrfc'); + } elseif ($extrafields->attribute_type[$key] == 'datetime') { + $datetime = $object->array_options['options_'.$key]; + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '__'] = ($datetime!="0000-00-00 00:00:00" ? dol_print_date($datetime,'dayhour') : ''); + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_LOCALE__'] = ($datetime!="0000-00-00 00:00:00" ? dol_print_date($datetime, 'dayhour', 'tzserver', $outputlangs) : ''); + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_DAY_LOCALE__'] = ($datetime != "0000-00-00 00:00:00" ? dol_print_date($datetime, 'day', 'tzserver', $outputlangs) : ''); + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_RFC__'] = ($datetime != "0000-00-00 00:00:00" ? dol_print_date($datetime, 'dayhourrfc') : ''); + } } } } From c28e6630bb9bf6fe4a3020e01f8fbb640ce2347f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 7 May 2020 15:41:21 +0200 Subject: [PATCH 392/780] Update functions.lib.php --- 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 c3da7d0ade4..43cee63c1ed 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -6361,11 +6361,11 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, if ($extrafields->attribute_type[$key] == 'date') { $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '__'] = dol_print_date($object->array_options['options_' . $key], 'day'); $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_LOCALE__'] = dol_print_date($object->array_options['options_' . $key], 'day', 'tzserver', $outputlangs); - $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_RFC__'] = dol_print_date($object->array_options['options_' . $key],'dayrfc'); + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_RFC__'] = dol_print_date($object->array_options['options_' . $key], 'dayrfc'); } elseif ($extrafields->attribute_type[$key] == 'datetime') { $datetime = $object->array_options['options_'.$key]; - $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '__'] = ($datetime!="0000-00-00 00:00:00" ? dol_print_date($datetime,'dayhour') : ''); - $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_LOCALE__'] = ($datetime!="0000-00-00 00:00:00" ? dol_print_date($datetime, 'dayhour', 'tzserver', $outputlangs) : ''); + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '__'] = ($datetime != "0000-00-00 00:00:00" ? dol_print_date($datetime, 'dayhour') : ''); + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_LOCALE__'] = ($datetime != "0000-00-00 00:00:00" ? dol_print_date($datetime, 'dayhour', 'tzserver', $outputlangs) : ''); $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_DAY_LOCALE__'] = ($datetime != "0000-00-00 00:00:00" ? dol_print_date($datetime, 'day', 'tzserver', $outputlangs) : ''); $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '_RFC__'] = ($datetime != "0000-00-00 00:00:00" ? dol_print_date($datetime, 'dayhourrfc') : ''); } From 0cd05887ce95de5496924a941a92f31155a0ed2e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 May 2020 17:21:27 +0200 Subject: [PATCH 393/780] FIX count of open day when date and start are not open should be 0 --- htdocs/core/lib/date.lib.php | 10 +++++++++- htdocs/holiday/card.php | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 123e3297f11..56dfee3988c 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -896,15 +896,23 @@ function num_open_day($timestampStart, $timestampEnd, $inhour = 0, $lastday = 0, if ($timestampStart < $timestampEnd) { $numdays = num_between_day($timestampStart, $timestampEnd, $lastday); + $numholidays = num_public_holiday($timestampStart, $timestampEnd, $country_code, $lastday); $nbOpenDay = $numdays - $numholidays; - $nbOpenDay.= " " . $langs->trans("Days"); + $nbOpenDay.= ' '.$langs->trans("Days"); if ($inhour == 1 && $nbOpenDay <= 3) $nbOpenDay = $nbOpenDay*24 . $langs->trans("HourShort"); return $nbOpenDay - (($inhour == 1 ? 12 : 0.5) * abs($halfday)); } elseif ($timestampStart == $timestampEnd) { + $numholidays = 0; + if ($lastday) { + $numholidays = num_public_holiday($timestampStart, $timestampEnd, $country_code, $lastday); + if ($numholidays == 1) return 0; + } + $nbOpenDay=$lastday; + if ($inhour == 1) $nbOpenDay = $nbOpenDay*24 . $langs->trans("HourShort"); return $nbOpenDay - (($inhour == 1 ? 12 : 0.5) * abs($halfday)); } diff --git a/htdocs/holiday/card.php b/htdocs/holiday/card.php index 9cc287cd28a..6dd218255e5 100644 --- a/htdocs/holiday/card.php +++ b/htdocs/holiday/card.php @@ -1291,7 +1291,9 @@ else if ($includesunday) $htmlhelp.='
'.$langs->trans("DayIsANonWorkingDay", $langs->trans("Sunday")); print $form->textwithpicto($langs->trans('NbUseDaysCP'), $htmlhelp); print '
'.num_open_day($object->date_debut_gmt, $object->date_fin_gmt, 0, 1, $object->halfday).''; + print num_open_day($object->date_debut_gmt, $object->date_fin_gmt, 0, 1, $object->halfday); + print '
'; + $actioncomm = $actionstatic; + // TODO Code common with code into showactions + $imgpicto = ''; if (!empty($conf->global->AGENDA_USE_EVENT_TYPE)) { - if ($actionstatic->type_picto) print img_picto('', $actionstatic->type_picto); - else { - if ($actionstatic->type_code == 'AC_RDV') print img_picto('', 'object_group', '', false, 0, 0, '', '').' '; - elseif ($actionstatic->type_code == 'AC_TEL') print img_picto('', 'object_phoning', '', false, 0, 0, '', '').' '; - elseif ($actionstatic->type_code == 'AC_FAX') print img_picto('', 'object_phoning_fax', '', false, 0, 0, '', '').' '; - elseif ($actionstatic->type_code == 'AC_EMAIL') print img_picto('', 'object_email', '', false, 0, 0, '', '').' '; - elseif ($actionstatic->type_code == 'AC_INT') print img_picto('', 'object_intervention', '', false, 0, 0, '', '').' '; - elseif (!preg_match('/_AUTO/', $actionstatic->type_code)) print img_picto('', 'object_other', '', false, 0, 0, '', '').' '; - } + if ($actioncomm->type_picto) { + $imgpicto = img_picto('', $actioncomm->type_picto); + } + else { + if ($actioncomm->type_code == 'AC_RDV') $imgpicto = img_picto('', 'object_group', '', false, 0, 0, '', 'paddingright').' '; + elseif ($actioncomm->type_code == 'AC_TEL') $imgpicto = img_picto('', 'object_phoning', '', false, 0, 0, '', 'paddingright').' '; + elseif ($actioncomm->type_code == 'AC_FAX') $imgpicto = img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'paddingright').' '; + elseif ($actioncomm->type_code == 'AC_EMAIL') $imgpicto = img_picto('', 'object_email', '', false, 0, 0, '', 'paddingright').' '; + elseif ($actioncomm->type_code == 'AC_INT') $imgpicto = img_picto('', 'object_intervention', '', false, 0, 0, '', 'paddingright').' '; + elseif ($actioncomm->type_code == 'AC_OTH' && $actioncomm->code == 'TICKET_MSG') $imgpicto = img_picto('', 'object_conversation', '', false, 0, 0, '', 'paddingright').' '; + elseif (!preg_match('/_AUTO/', $actioncomm->type_code)) $imgpicto = img_picto('', 'object_other', '', false, 0, 0, '', 'paddingright').' '; + } } + print $imgpicto; + $labeltype = $obj->type_code; if (empty($conf->global->AGENDA_USE_EVENT_TYPE) && empty($arraylist[$labeltype])) $labeltype = 'AC_OTH'; - if (!empty($arraylist[$labeltype])) $labeltype = $arraylist[$labeltype]; + if ($actioncomm->type_code == 'AC_OTH' && $actioncomm->code == 'TICKET_MSG') { + $labeltype = $langs->trans("Message"); + } elseif (!empty($arraylist[$labeltype])) $labeltype = $arraylist[$labeltype]; print dol_trunc($labeltype, 28); print '
'.$ref.''; - if (!empty($action->userownerid)) + if (!empty($actioncomm->userownerid)) { - if (is_object($cacheusers[$action->userownerid])) + if (is_object($cacheusers[$actioncomm->userownerid])) { - $tmpuser = $cacheusers[$action->userownerid]; + $tmpuser = $cacheusers[$actioncomm->userownerid]; } else { $tmpuser = new User($this->db); - $tmpuser->fetch($action->userownerid); - $cacheusers[$action->userownerid] = $tmpuser; + $tmpuser->fetch($actioncomm->userownerid); + $cacheusers[$actioncomm->userownerid] = $tmpuser; } if ($tmpuser->id > 0) { @@ -260,41 +260,50 @@ class FormActions } } print ''; + // TODO Code common with code into comm/action/list.php $imgpicto = ''; if (!empty($conf->global->AGENDA_USE_EVENT_TYPE)) { - if ($action->type_picto) $imgpicto = img_picto('', $action->type_picto); + if ($actioncomm->type_picto) { + $imgpicto = img_picto('', $actioncomm->type_picto); + } else { - if ($action->type_code == 'AC_RDV') $imgpicto = img_picto('', 'object_group', '', false, 0, 0, '', 'paddingright').' '; - elseif ($action->type_code == 'AC_TEL') $imgpicto = img_picto('', 'object_phoning', '', false, 0, 0, '', 'paddingright').' '; - elseif ($action->type_code == 'AC_FAX') $imgpicto = img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'paddingright').' '; - elseif ($action->type_code == 'AC_EMAIL') $imgpicto = img_picto('', 'object_email', '', false, 0, 0, '', 'paddingright').' '; - elseif ($action->type_code == 'AC_INT') $imgpicto = img_picto('', 'object_intervention', '', false, 0, 0, '', 'paddingright').' '; - elseif (!preg_match('/_AUTO/', $action->type_code)) $imgpicto = img_picto('', 'object_action', '', false, 0, 0, '', 'paddingright').' '; + if ($actioncomm->type_code == 'AC_RDV') $imgpicto = img_picto('', 'object_group', '', false, 0, 0, '', 'paddingright').' '; + elseif ($actioncomm->type_code == 'AC_TEL') $imgpicto = img_picto('', 'object_phoning', '', false, 0, 0, '', 'paddingright').' '; + elseif ($actioncomm->type_code == 'AC_FAX') $imgpicto = img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'paddingright').' '; + elseif ($actioncomm->type_code == 'AC_EMAIL') $imgpicto = img_picto('', 'object_email', '', false, 0, 0, '', 'paddingright').' '; + elseif ($actioncomm->type_code == 'AC_INT') $imgpicto = img_picto('', 'object_intervention', '', false, 0, 0, '', 'paddingright').' '; + elseif ($actioncomm->type_code == 'AC_OTH' && $actioncomm->code == 'TICKET_MSG') $imgpicto = img_picto('', 'object_conversation', '', false, 0, 0, '', 'paddingright').' '; + elseif (!preg_match('/_AUTO/', $actioncomm->type_code)) $imgpicto = img_picto('', 'object_action', '', false, 0, 0, '', 'paddingright').' '; } } print $imgpicto; - print $action->type_short ? $action->type_short : $action->type; + if ($actioncomm->type_code == 'AC_OTH' && $actioncomm->code == 'TICKET_MSG') { + print $langs->trans("Message"); + } else { + print $actioncomm->type_short ? $actioncomm->type_short : $actioncomm->type; + } print ''.$label.''.dol_print_date($action->datep, 'dayhour', 'tzuserrel'); - if ($action->datef) + print ''.dol_print_date($actioncomm->datep, 'dayhour', 'tzuserrel'); + if ($actioncomm->datef) { - $tmpa = dol_getdate($action->datep); - $tmpb = dol_getdate($action->datef); + $tmpa = dol_getdate($actioncomm->datep); + $tmpb = dol_getdate($actioncomm->datef); if ($tmpa['mday'] == $tmpb['mday'] && $tmpa['mon'] == $tmpb['mon'] && $tmpa['year'] == $tmpb['year']) { - if ($tmpa['hours'] != $tmpb['hours'] || $tmpa['minutes'] != $tmpb['minutes'] && $tmpa['seconds'] != $tmpb['seconds']) print '-'.dol_print_date($action->datef, 'hour', 'tzuserrel'); + if ($tmpa['hours'] != $tmpb['hours'] || $tmpa['minutes'] != $tmpb['minutes'] && $tmpa['seconds'] != $tmpb['seconds']) print '-'.dol_print_date($actioncomm->datef, 'hour', 'tzuserrel'); } - else print '-'.dol_print_date($action->datef, 'dayhour', 'tzuserrel'); + else print '-'.dol_print_date($actioncomm->datef, 'dayhour', 'tzuserrel'); } print ''; - print $action->getLibStatut(3); + print $actioncomm->getLibStatut(3); print '
'; - print dol_print_date($arraymsgs['datec'], 'dayhour'); + print img_picto('', 'actioncomm', 'class="paddingright"').dol_print_date($arraymsgs['datec'], 'dayhour'); print ''; diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index f94599153f0..4db98cfe7ad 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -1559,7 +1559,7 @@ class Ticket extends CommonObject // Insert entry into agenda with code 'TICKET_MSG' include_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; $actioncomm = new ActionComm($this->db); - $actioncomm->type_code = 'AC_OTH_AUTO'; + $actioncomm->type_code = 'AC_OTH'; $actioncomm->code = 'TICKET_MSG'; if ($this->private) { $actioncomm->code = 'TICKET_MSG_PRIVATE'; From 7e7a10f8d2140ff2ca0eae2a3818bb2da35435b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 7 May 2020 22:55:21 +0200 Subject: [PATCH 397/780] clean --- htdocs/core/class/html.formmail.class.php | 9 --------- 1 file changed, 9 deletions(-) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 45c40a8bc72..6007dd1dbaa 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -669,15 +669,8 @@ class FormMail extends Form } else { - // The free input of email - // if (!empty($this->withtofree)) - // { - // $out .= 'withto) : "")).'" />'; - // } - // The select combo if (!empty($this->withto) && is_array($this->withto)) { - //if (!empty($this->withtofree)) $out .= " ".$langs->trans("and")."/".$langs->trans("or")." "; // multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time $tmparray = $this->withto; foreach ($tmparray as $key => $val) @@ -744,10 +737,8 @@ class FormMail extends Form } else { - //$out .= 'withtocc) && !is_numeric($this->withtocc)) ? $this->withtocc : '')).'" />'; if (!empty($this->withtocc) && is_array($this->withtocc)) { - //$out .= " ".$langs->trans("and")."/".$langs->trans("or")." "; // multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time $tmparray = $this->withtocc; foreach ($tmparray as $key => $val) From b88a84323b34d47c81b1929b3f1d6fb8354434b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 7 May 2020 22:59:34 +0200 Subject: [PATCH 398/780] clean --- htdocs/core/actions_sendmails.inc.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index f647bd5418e..d6c4c0a6313 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -265,7 +265,6 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST } } $sendtocc = implode(',', $tmparray); - //var_dump($sendto, $sendtocc);exit; if (dol_strlen($sendto)) { From dca3f3b31f2075c4a65056a0d5ca0dfe5941615b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 May 2020 22:59:40 +0200 Subject: [PATCH 399/780] Look adn feel v12 --- htdocs/ticket/class/actions_ticket.class.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/htdocs/ticket/class/actions_ticket.class.php b/htdocs/ticket/class/actions_ticket.class.php index 9931b12ffa2..147f6228005 100644 --- a/htdocs/ticket/class/actions_ticket.class.php +++ b/htdocs/ticket/class/actions_ticket.class.php @@ -380,8 +380,7 @@ class ActionsTicket global $langs; print '
'; - print '
'; - print '
'; + print '
'; // Exclude status which requires specific method $exclude_status = array(Ticket::STATUS_CLOSED, Ticket::STATUS_CANCELED); // Exclude actual status @@ -392,7 +391,7 @@ class ActionsTicket foreach ($object->statuts_short as $status => $status_label) { if (!in_array($status, $exclude_status)) { - print '
'; + print '
'; if ($status == 1) { @@ -403,13 +402,13 @@ class ActionsTicket $urlforbutton = $_SERVER['PHP_SELF'].'?track_id='.$object->track_id.'&action=set_status&new_status='.$status; } - print ''; + print ''; print img_picto($langs->trans($object->statuts_short[$status]), 'statut'.$status.'.png@ticket').' '.$langs->trans($object->statuts_short[$status]); print ''; print '
'; } } - print '

'; + print '

'; } /** From f23451e1c986143235b7aea6750293b878f0e1f7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 May 2020 23:04:52 +0200 Subject: [PATCH 400/780] Update facture.class.php --- htdocs/compta/facture/class/facture.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index ffa96fe5237..fd6a6d32642 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1180,7 +1180,7 @@ class Facture extends CommonInvoice } // Bloc to update dates of service (month by month only if previously filled at 1d near start or end of month) // If it's a service with start and end dates - if ($line->product_type == 1 && !empty($line->date_start) && !empty($line->date_end) ) { + if (!empty($line->date_start) && !empty($line->date_end) ) { // Get the dates $start = dol_getdate($line->date_start); $end = dol_getdate($line->date_end); From 8f9ee3250dba03aea88cfd5188253383c866e2fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 7 May 2020 23:28:32 +0200 Subject: [PATCH 401/780] clean --- htdocs/core/class/html.formmail.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 6007dd1dbaa..8881b93349f 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -669,6 +669,7 @@ class FormMail extends Form } else { + // The select combo if (!empty($this->withto) && is_array($this->withto)) { // multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time From 830a117aa7ae799cd93021b68408aa177b733cc4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 May 2020 23:39:03 +0200 Subject: [PATCH 402/780] Suggest fix for #13824 --- htdocs/bom/class/bom.class.php | 5 ++++- htdocs/takepos/admin/bar.php | 2 +- htdocs/takepos/admin/setup.php | 2 +- htdocs/takepos/genimg/qr.php | 2 +- htdocs/takepos/phone.php | 8 ++++---- htdocs/takepos/public/auto_order.php | 6 +++++- 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index c2c18dae6e5..3e522b3c11f 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -1004,6 +1004,7 @@ class BOM extends CommonObject /** * BOM costs calculation based on cost_price or pmp of each BOM line + * * @return void */ public function calculateCosts() @@ -1022,7 +1023,9 @@ class BOM extends CommonObject } $this->total_cost = price2num($this->total_cost, 'MT'); - $this->unit_cost = price2num($this->total_cost / $this->qty, 'MU'); + if ($this->qty) { + $this->unit_cost = price2num($this->total_cost / $this->qty, 'MU'); + } } } diff --git a/htdocs/takepos/admin/bar.php b/htdocs/takepos/admin/bar.php index 7b6e1d9a98c..5c255dc89c7 100644 --- a/htdocs/takepos/admin/bar.php +++ b/htdocs/takepos/admin/bar.php @@ -157,7 +157,7 @@ if ($conf->global->TAKEPOS_AUTO_ORDER) print '
'; print "".$urlwithroot."/takepos/public/auto_order.php?key=".dol_encode($row['rowid']).""; print ''; - print ""; + print ""; print '
'; print $form->textwithpicto($langs->trans("RootCategoryForProductsToSell"), $langs->trans("RootCategoryForProductsToSellDesc")); print ''; -print $form->select_all_categories(Categorie::TYPE_PRODUCT, $conf->global->TAKEPOS_ROOT_CATEGORY_ID, 'TAKEPOS_ROOT_CATEGORY_ID', 64, 0, 0); +print img_object('', 'category', 'class="paddingright"').$form->select_all_categories(Categorie::TYPE_PRODUCT, $conf->global->TAKEPOS_ROOT_CATEGORY_ID, 'TAKEPOS_ROOT_CATEGORY_ID', 64, 0, 0); print ajax_combobox('TAKEPOS_ROOT_CATEGORY_ID'); print "
'; - print img_picto('', 'actioncomm', 'class="paddingright"').dol_print_date($arraymsgs['datec'], 'dayhour'); + print img_picto('', 'object_action', 'class="paddingright"').dol_print_date($arraymsgs['datec'], 'dayhour'); print ''; From d9a0edcf2b83aa9e9f6e35fefa8e740f1c36ab14 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 8 May 2020 00:01:56 +0200 Subject: [PATCH 404/780] FIX missing file manifest.json.php --- htdocs/theme/md/manifest.json.php | 57 +++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 htdocs/theme/md/manifest.json.php diff --git a/htdocs/theme/md/manifest.json.php b/htdocs/theme/md/manifest.json.php new file mode 100644 index 00000000000..f8d059752a6 --- /dev/null +++ b/htdocs/theme/md/manifest.json.php @@ -0,0 +1,57 @@ + + * Copyright (C) 2006 Rodolphe Quiedeville + * Copyright (C) 2007-2017 Regis Houssin + * Copyright (C) 2011 Philippe Grand + * Copyright (C) 2012 Juanjo Menent + * Copyright (C) 2018 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 + * 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 FI8TNESS 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/theme/md/manifest.json.php + * \brief File for The Web App + */ + +if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); +if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); +if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); +if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); +if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); +if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); +if (! defined('NOLOGIN')) define('NOLOGIN', '1'); +if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); +if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); +if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); + +require_once __DIR__.'/../../main.inc.php'; + +$appli=constant('DOL_APPLICATION_TITLE'); +if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $appli=$conf->global->MAIN_APPLICATION_TITLE; + +?> +{ + "name": "", + "icons": [ + { + "src": "", + "sizes": "256x256", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} \ No newline at end of file From 1a9afe6b203b1224ae0e4a641dcefe3c2073eb0a Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 8 May 2020 01:40:25 +0200 Subject: [PATCH 405/780] Fix missing hook params for printFieldListValue --- htdocs/accountancy/bookkeeping/list.php | 2 +- htdocs/adherents/list.php | 2 +- htdocs/adherents/subscription/list.php | 2 +- htdocs/admin/emailcollector_list.php | 2 +- htdocs/asset/list.php | 2 +- htdocs/comm/action/list.php | 2 +- htdocs/comm/propal/list.php | 2 +- htdocs/commande/list.php | 2 +- htdocs/compta/bank/list.php | 2 +- htdocs/compta/cashcontrol/cashcontrol_list.php | 2 +- htdocs/compta/facture/list.php | 2 +- htdocs/contact/list.php | 2 +- htdocs/contrat/list.php | 2 +- htdocs/contrat/services_list.php | 2 +- htdocs/expedition/list.php | 2 +- htdocs/expensereport/list.php | 2 +- htdocs/fichinter/list.php | 2 +- htdocs/fourn/facture/list.php | 2 +- htdocs/holiday/list.php | 2 +- htdocs/product/list.php | 2 +- htdocs/product/stock/list.php | 2 +- htdocs/product/stock/productlot_list.php | 2 +- htdocs/projet/list.php | 2 +- htdocs/projet/tasks/list.php | 2 +- htdocs/projet/tasks/time.php | 2 +- htdocs/reception/list.php | 2 +- htdocs/societe/list.php | 2 +- htdocs/societe/website.php | 2 +- htdocs/supplier_proposal/list.php | 2 +- htdocs/ticket/list.php | 2 +- htdocs/user/list.php | 2 +- htdocs/zapier/hook_list.php | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index d8fe9975da5..129fedf3867 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -966,7 +966,7 @@ while ($i < min($num, $limit)) } // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index c9b7ee42fcf..838e7cd9a5c 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -872,7 +872,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index a582584ae7f..fa47d01cd41 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -524,7 +524,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/admin/emailcollector_list.php b/htdocs/admin/emailcollector_list.php index 53d9fd8d1f1..9c76c176414 100644 --- a/htdocs/admin/emailcollector_list.php +++ b/htdocs/admin/emailcollector_list.php @@ -479,7 +479,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Action column diff --git a/htdocs/asset/list.php b/htdocs/asset/list.php index fb8c4066a10..ae307bf1a42 100644 --- a/htdocs/asset/list.php +++ b/htdocs/asset/list.php @@ -459,7 +459,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Action column diff --git a/htdocs/comm/action/list.php b/htdocs/comm/action/list.php index 95a3e6dbe09..410d31fb07e 100644 --- a/htdocs/comm/action/list.php +++ b/htdocs/comm/action/list.php @@ -718,7 +718,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index dcc9c7a54c7..eaeea9e3d43 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -1065,7 +1065,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index e2b6aa06136..8a023cf7e80 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -1075,7 +1075,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index e0d7f7d5c29..ac2caaf94eb 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -529,7 +529,7 @@ foreach ($accounts as $key=>$type) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters=array('arrayfields'=>$arrayfields); + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters, $objecttmp); // Note that $action and $objecttmpect may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/compta/cashcontrol/cashcontrol_list.php b/htdocs/compta/cashcontrol/cashcontrol_list.php index 6c59276d600..c13528224c4 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_list.php +++ b/htdocs/compta/cashcontrol/cashcontrol_list.php @@ -496,7 +496,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Action column diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index f5ab943d831..c3bfe93bf30 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -1313,7 +1313,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 9903e37cd5e..d51399d21a9 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -936,7 +936,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index c32e45c1b42..857f9609d36 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -744,7 +744,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/contrat/services_list.php b/htdocs/contrat/services_list.php index 29501ddee88..85579d65980 100644 --- a/htdocs/contrat/services_list.php +++ b/htdocs/contrat/services_list.php @@ -687,7 +687,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index d5cda3e2ebb..c3db317c9de 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -591,7 +591,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 5604ee77dc3..7f5e86d9c98 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -761,7 +761,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index 03000bdb44d..fd45d2daecb 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -562,7 +562,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index b895bf63513..ddb2ce853b1 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -1058,7 +1058,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php index 2277563aaa0..18df214f4c6 100644 --- a/htdocs/holiday/list.php +++ b/htdocs/holiday/list.php @@ -744,7 +744,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; diff --git a/htdocs/product/list.php b/htdocs/product/list.php index ce3f8f1cd81..cc12bc73349 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -1148,7 +1148,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index e4ad265c793..057735c49cc 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -571,7 +571,7 @@ if ($num) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; diff --git a/htdocs/product/stock/productlot_list.php b/htdocs/product/stock/productlot_list.php index 527afee2607..154ede71956 100644 --- a/htdocs/product/stock/productlot_list.php +++ b/htdocs/product/stock/productlot_list.php @@ -476,7 +476,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 650c14c5ee2..f3a8900a148 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -895,7 +895,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index 3fd85f4082e..7d995965294 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -836,7 +836,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index f9069f7efa7..3a5e3c89ae3 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -1332,7 +1332,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) */ // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$task_time); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$task_time, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; diff --git a/htdocs/reception/list.php b/htdocs/reception/list.php index fea2662b93f..7566edfc610 100644 --- a/htdocs/reception/list.php +++ b/htdocs/reception/list.php @@ -885,7 +885,7 @@ if ($resql) include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index e480d68eca4..4e033e5f35e 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -1279,7 +1279,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/societe/website.php b/htdocs/societe/website.php index 5d248ec16fd..d5e89459771 100644 --- a/htdocs/societe/website.php +++ b/htdocs/societe/website.php @@ -481,7 +481,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $objectwebsiteaccount); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Action column diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index a133d781337..91ef70c7b94 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -779,7 +779,7 @@ if ($resql) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index 8d76ef5c5eb..08419e5c46d 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -669,7 +669,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Action column diff --git a/htdocs/user/list.php b/htdocs/user/list.php index eb14f61e982..1ceec68a622 100644 --- a/htdocs/user/list.php +++ b/htdocs/user/list.php @@ -655,7 +655,7 @@ while ($i < min($num, $limit)) // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Date creation diff --git a/htdocs/zapier/hook_list.php b/htdocs/zapier/hook_list.php index 56a68ad7300..dbd9239e752 100644 --- a/htdocs/zapier/hook_list.php +++ b/htdocs/zapier/hook_list.php @@ -519,7 +519,7 @@ while ($i < min($num, $limit)) { // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Action column From 42ee755ea5189842673d8d1f374efef088404bfe Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 May 2020 02:52:55 +0200 Subject: [PATCH 406/780] Look and feel v12 --- htdocs/admin/translation.php | 10 +++++----- htdocs/comm/action/list.php | 4 ++-- htdocs/core/lib/agenda.lib.php | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/admin/translation.php b/htdocs/admin/translation.php index 520cee44913..c17c2bdcee6 100644 --- a/htdocs/admin/translation.php +++ b/htdocs/admin/translation.php @@ -365,9 +365,9 @@ if ($mode == 'overwrite') } else { - print ''.img_edit().''; + print ''.img_edit().''; print '   '; - print ''.img_delete().''; + print ''.img_delete().''; } print ''; + print ''; print dol_print_date($db->jdate($obj->dp), $formatToUse); $late = 0; if ($obj->percent == 0 && $obj->dp && $db->jdate($obj->dp) < ($now - $delay_warning)) $late = 1; @@ -638,7 +638,7 @@ if ($resql) // End date if (!empty($arrayfields['a.datep2']['checked'])) { - print ''; + print ''; print dol_print_date($db->jdate($obj->dp2), $formatToUse); print ''; print img_picto('', 'company'); - print $form->select_company($socid, 'search_socid', '', 'SelectThirdParty', 0, 0, null, 0); + print $form->select_company($socid, 'search_socid', '', ' ', 0, 0, null, 0); print '
'; print ''; -print ''; +print ''; print "\n"; if ($conf->global->TAKEPOS_BAR_RESTAURANT && $conf->global->TAKEPOS_PRINT_METHOD != "browser") { From e55d9ed3b89c8f9e477e523e856419f8e8a62765 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 May 2020 03:02:53 +0200 Subject: [PATCH 408/780] Trans --- htdocs/langs/en_US/cashdesk.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index b22a7b83166..52c2004c1c7 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -95,7 +95,7 @@ PrintMethod=Print method ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud. ByTerminal=By terminal TakeposNumpadUsePaymentIcon=Use payment icon on numpad -CashDeskRefNumberingModules=Numbering module for cash desk +CashDeskRefNumberingModules=Numbering module for POS sales CashDeskGenericMaskCodes6 =
{TN} tag is used to add the terminal number TakeposGroupSameProduct=Group same products lines StartAParallelSale=Start a new parallel sale From a49635a825360a8cb92acecb92dae14d389693b0 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Fri, 8 May 2020 07:45:01 +0200 Subject: [PATCH 409/780] NEW Bookkeeping by account - Add selectfields & hook --- .../accountancy/bookkeeping/listbyaccount.php | 453 ++++++++++++------ 1 file changed, 318 insertions(+), 135 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index 78f29e97595..582e54442a5 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -70,6 +70,13 @@ $pagenext = $page + 1; if ($sortorder == "") $sortorder = "ASC"; if ($sortfield == "") $sortfield = "t.doc_date,t.rowid"; +// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context +$object = new BookKeeping($db); +$hookmanager->initHooks(array('bookkeepingbyaccountlist')); + +$formaccounting = new FormAccounting($db); +$form = new Form($db); + if (empty($search_date_start) && empty($search_date_end) && GETPOSTISSET('search_date_startday') && GETPOSTISSET('search_date_startmonth') && GETPOSTISSET('search_date_starthour')) { $sql = "SELECT date_start, date_end from ".MAIN_DB_PREFIX."accounting_fiscalyear "; $sql .= " where date_start < '".$db->idate(dol_now())."' and date_end > '".$db->idate(dol_now())."'"; @@ -96,87 +103,112 @@ if (empty($search_date_start) && empty($search_date_end) && GETPOSTISSET('search } } +$arrayfields = array( + // 't.subledger_account'=>array('label'=>$langs->trans("SubledgerAccount"), 'checked'=>1), + 't.piece_num'=>array('label'=>$langs->trans("TransactionNumShort"), 'checked'=>1), + 't.doc_date'=>array('label'=>$langs->trans("Docdate"), 'checked'=>1), + 't.doc_ref'=>array('label'=>$langs->trans("Piece"), 'checked'=>1), + 't.label_operation'=>array('label'=>$langs->trans("Label"), 'checked'=>1), + 't.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1), + 't.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1), + 't.lettering_code'=>array('label'=>$langs->trans("LetteringCode"), 'checked'=>1), + 't.code_journal'=>array('label'=>$langs->trans("Codejournal"), 'checked'=>1), + // 't.date_creation'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0), + // 't.tms'=>array('label'=>$langs->trans("DateModification"), 'checked'=>0), + // 't.date_export'=>array('label'=>$langs->trans("DateExport"), 'checked'=>1), +); + +if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) unset($arrayfields['t.lettering_code']); + + $object = new BookKeeping($db); /* * Action */ -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_doc_date = ''; - $search_accountancy_code = ''; - $search_accountancy_code_start = ''; - $search_accountancy_code_end = ''; - $search_label_account = ''; - $search_doc_ref = ''; - $search_label_operation = ''; - $search_direction = ''; - $search_ledger_code = ''; - $search_date_start = ''; - $search_date_end = ''; - $search_date_startyear = ''; - $search_date_startmonth = ''; - $search_date_startday = ''; - $search_date_endyear = ''; - $search_date_endmonth = ''; - $search_date_endday = ''; - $search_debit = ''; - $search_credit = ''; -} +$parameters = array('socid'=>$socid); +$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'); -// Must be after the remove filter action, before the export. -$param = ''; -$filter = array(); +if (empty($reshook)) { + include DOL_DOCUMENT_ROOT . '/core/actions_changeselectedfields.inc.php'; -if (!empty($search_date_start)) { - $filter['t.doc_date>='] = $search_date_start; - $param .= '&search_date_startmonth='.GETPOST('search_date_startmonth', 'int').'&search_date_startday='.GETPOST('search_date_startday', 'int').'&search_date_startyear='.GETPOST('search_date_startyear', 'int'); -} -if (!empty($search_date_end)) { - $filter['t.doc_date<='] = $search_date_end; - $param .= '&search_date_endmonth='.GETPOST('search_date_endmonth', 'int').'&search_date_endday='.GETPOST('search_date_endday', 'int').'&search_date_endyear='.GETPOST('search_date_endyear', 'int'); -} -if (!empty($search_doc_date)) { - $filter['t.doc_date'] = $search_doc_date; - $param .= '&doc_datemonth='.GETPOST('doc_datemonth', 'int').'&doc_dateday='.GETPOST('doc_dateday', 'int').'&doc_dateyear='.GETPOST('doc_dateyear', 'int'); -} -if (!empty($search_accountancy_code_start)) { - $filter['t.numero_compte>='] = $search_accountancy_code_start; - $param .= '&search_accountancy_code_start='.urlencode($search_accountancy_code_start); -} -if (!empty($search_accountancy_code_end)) { - $filter['t.numero_compte<='] = $search_accountancy_code_end; - $param .= '&search_accountancy_code_end='.urlencode($search_accountancy_code_end); -} -if (!empty($search_label_account)) { - $filter['t.label_compte'] = $search_label_account; - $param .= '&search_label_compte='.urlencode($search_label_account); -} -if (!empty($search_doc_ref)) { - $filter['t.doc_ref'] = $search_doc_ref; - $param .= '&search_doc_ref='.urlencode($search_doc_ref); -} -if (!empty($search_label_operation)) { - $filter['t.label_operation'] = $search_label_operation; - $param .= '&search_label_operation='.urlencode($search_label_operation); -} -if (!empty($search_direction)) { - $filter['t.sens'] = $search_direction; - $param .= '&search_direction='.urlencode($search_direction); -} -if (!empty($search_ledger_code)) { - $filter['t.code_journal'] = $search_ledger_code; - $param .= '&search_ledger_code='.urlencode($search_ledger_code); -} -if (!empty($search_debit)) { - $filter['t.debit'] = $search_debit; - $param .= '&search_debit='.urlencode($search_debit); -} -if (!empty($search_credit)) { - $filter['t.credit'] = $search_credit; - $param .= '&search_credit='.urlencode($search_credit); -} + 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_doc_date = ''; + $search_accountancy_code = ''; + $search_accountancy_code_start = ''; + $search_accountancy_code_end = ''; + $search_label_account = ''; + $search_doc_ref = ''; + $search_label_operation = ''; + $search_direction = ''; + $search_ledger_code = ''; + $search_date_start = ''; + $search_date_end = ''; + $search_date_startyear = ''; + $search_date_startmonth = ''; + $search_date_startday = ''; + $search_date_endyear = ''; + $search_date_endmonth = ''; + $search_date_endday = ''; + $search_debit = ''; + $search_credit = ''; + } + // Must be after the remove filter action, before the export. + $param = ''; + $filter = array(); + + if (!empty($search_date_start)) { + $filter['t.doc_date>='] = $search_date_start; + $param .= '&search_date_startmonth=' . GETPOST('search_date_startmonth', 'int') . '&search_date_startday=' . GETPOST('search_date_startday', 'int') . '&search_date_startyear=' . GETPOST('search_date_startyear', 'int'); + } + if (!empty($search_date_end)) { + $filter['t.doc_date<='] = $search_date_end; + $param .= '&search_date_endmonth=' . GETPOST('search_date_endmonth', 'int') . '&search_date_endday=' . GETPOST('search_date_endday', 'int') . '&search_date_endyear=' . GETPOST('search_date_endyear', 'int'); + } + if (!empty($search_doc_date)) { + $filter['t.doc_date'] = $search_doc_date; + $param .= '&doc_datemonth=' . GETPOST('doc_datemonth', 'int') . '&doc_dateday=' . GETPOST('doc_dateday', 'int') . '&doc_dateyear=' . GETPOST('doc_dateyear', 'int'); + } + if (!empty($search_accountancy_code_start)) { + $filter['t.numero_compte>='] = $search_accountancy_code_start; + $param .= '&search_accountancy_code_start=' . urlencode($search_accountancy_code_start); + } + if (!empty($search_accountancy_code_end)) { + $filter['t.numero_compte<='] = $search_accountancy_code_end; + $param .= '&search_accountancy_code_end=' . urlencode($search_accountancy_code_end); + } + if (!empty($search_label_account)) { + $filter['t.label_compte'] = $search_label_account; + $param .= '&search_label_compte=' . urlencode($search_label_account); + } + if (!empty($search_doc_ref)) { + $filter['t.doc_ref'] = $search_doc_ref; + $param .= '&search_doc_ref=' . urlencode($search_doc_ref); + } + if (!empty($search_label_operation)) { + $filter['t.label_operation'] = $search_label_operation; + $param .= '&search_label_operation=' . urlencode($search_label_operation); + } + if (!empty($search_direction)) { + $filter['t.sens'] = $search_direction; + $param .= '&search_direction=' . urlencode($search_direction); + } + if (!empty($search_ledger_code)) { + $filter['t.code_journal'] = $search_ledger_code; + $param .= '&search_ledger_code=' . urlencode($search_ledger_code); + } + if (!empty($search_debit)) { + $filter['t.debit'] = $search_debit; + $param .= '&search_debit=' . urlencode($search_debit); + } + if (!empty($search_credit)) { + $filter['t.credit'] = $search_credit; + $param .= '&search_credit=' . urlencode($search_credit); + } +} if ($action == 'delmouvconfirm') { $mvt_num = GETPOST('mvt_num', 'int'); @@ -267,14 +299,25 @@ if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($l print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $result, $nbtotalofrecords, 'title_accountancy', 0, $viewflat.$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); + +$parameters = array(); +$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook +if (empty($reshook)) $moreforfilter .= $hookmanager->resPrint; +else $moreforfilter = $hookmanager->resPrint; + // Reverse sort order if (preg_match('/^asc/i', $sortorder)) $sortorder = "asc"; else $sortorder = "desc"; print '
'; -print '
'.$langs->trans("Parameters").''.$langs->trans("Value").''.$langs->trans("Parameters").''.$langs->trans("Value").'
'; +print '
'; -print ''; +// Filters lines +print ''; +// Accountancy account print ''; -print ''; +// Date document +if (!empty($arrayfields['t.doc_date']['checked'])) { + print ''; + print ''; +} +// Ref document +if (!empty($arrayfields['t.doc_ref']['checked'])) { + print ''; +} +// Label operation +if (!empty($arrayfields['t.label_operation']['checked'])) { + print ''; +} +// Debit +if (!empty($arrayfields['t.debit']['checked'])) { + print ''; +} +// Credit +if (!empty($arrayfields['t.credit']['checked'])) { + print ''; +} +// Code journal +if (!empty($arrayfields['t.code_journal']['checked'])) { + print ''; +} + +// 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; + +// Action column print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; +print "\n"; print ''; print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF']); -print_liste_field_titre("TransactionNumShort", $_SERVER['PHP_SELF'], "t.piece_num", "", $param, '', $sortfield, $sortorder, 'right '); -print_liste_field_titre("Docdate", $_SERVER['PHP_SELF'], "t.doc_date", "", $param, '', $sortfield, $sortorder, 'center '); -print_liste_field_titre("Piece", $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder); -print_liste_field_titre("Label"); -print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $param, '', $sortfield, $sortorder, 'right '); -print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $param, '', $sortfield, $sortorder, 'right '); -print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $param, '', $sortfield, $sortorder, 'center '); -print_liste_field_titre('', $_SERVER["PHP_SELF"], "", $param, "", 'width="60"', $sortfield, $sortorder, 'center '); +if (!empty($arrayfields['t.piece_num']['checked'])) print_liste_field_titre($arrayfields['t.piece_num']['label'], $_SERVER['PHP_SELF'], "t.piece_num", "", $param, '', $sortfield, $sortorder, 'right '); +if (!empty($arrayfields['t.doc_date']['checked'])) print_liste_field_titre($arrayfields['t.doc_date']['label'], $_SERVER['PHP_SELF'], "t.doc_date", "", $param, '', $sortfield, $sortorder, 'center '); +if (!empty($arrayfields['t.doc_ref']['checked'])) print_liste_field_titre($arrayfields['t.doc_ref']['label'], $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder); +if (!empty($arrayfields['t.label_operation']['checked'])) print_liste_field_titre($arrayfields['t.label_operation']['label'], $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder); +if (!empty($arrayfields['t.debit']['checked'])) print_liste_field_titre($arrayfields['t.debit']['label'], $_SERVER['PHP_SELF'], "t.debit", "", $param, '', $sortfield, $sortorder, 'right '); +if (!empty($arrayfields['t.credit']['checked'])) print_liste_field_titre($arrayfields['t.credit']['label'], $_SERVER['PHP_SELF'], "t.credit", "", $param, '', $sortfield, $sortorder, 'right '); +if (!empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre($arrayfields['t.code_journal']['label'], $_SERVER['PHP_SELF'], "t.code_journal", "", $param, '', $sortfield, $sortorder, 'center '); +// 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; +print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); print "\n"; @@ -323,7 +395,10 @@ $sous_total_debit = 0; $sous_total_credit = 0; $displayed_account_number = null; // Start with undefined to be able to distinguish with empty +// Loop on record +// -------------------------------------------------------------------- $i = 0; +$totalarray = array(); while ($i < min($num, $limit)) { $line = $object->lines[$i]; @@ -362,38 +437,149 @@ while ($i < min($num, $limit)) print ''; print ''; print ''; - print ''; - // TODO Add a link according to doc_type and fk_doc - print ''; + if (!$i) $totalarray['nbfield']++; + } + + // Document ref + if (!empty($arrayfields['t.doc_ref']['checked'])) + { + if ($line->doc_type == 'customer_invoice') + { + $langs->loadLangs(array('bills')); + + require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; + $objectstatic = new Facture($db); + $objectstatic->fetch($line->fk_doc); + //$modulepart = 'facture'; + + $filename = dol_sanitizeFileName($line->doc_ref); + $filedir = $conf->facture->dir_output.'/'.dol_sanitizeFileName($line->doc_ref); + $urlsource = $_SERVER['PHP_SELF'].'?id='.$objectstatic->id; + $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir); + } + elseif ($line->doc_type == 'supplier_invoice') + { + $langs->loadLangs(array('bills')); + + require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; + $objectstatic = new FactureFournisseur($db); + $objectstatic->fetch($line->fk_doc); + //$modulepart = 'invoice_supplier'; + + $filename = dol_sanitizeFileName($line->doc_ref); + $filedir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref); + $subdir = get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref); + $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir); + } + elseif ($line->doc_type == 'expense_report') + { + $langs->loadLangs(array('trips')); + + require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; + $objectstatic = new ExpenseReport($db); + $objectstatic->fetch($line->fk_doc); + //$modulepart = 'expensereport'; + + $filename = dol_sanitizeFileName($line->doc_ref); + $filedir = $conf->expensereport->dir_output.'/'.dol_sanitizeFileName($line->doc_ref); + $urlsource = $_SERVER['PHP_SELF'].'?id='.$objectstatic->id; + $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir); + } + else + { + // Other type + } + + print '\n"; + if (!$i) $totalarray['nbfield']++; + } + + // Label operation + if (!empty($arrayfields['t.label_operation']['checked'])) { + // Affiche un lien vers la facture client/fournisseur + $doc_ref = preg_replace('/\(.*\)/', '', $line->doc_ref); + print strlen(length_accounta($line->subledger_account)) == 0 ? '' : ''; + if (!$i) $totalarray['nbfield']++; + } + + // Amount debit + if (!empty($arrayfields['t.debit']['checked'])) + { + print ''; + if (!$i) $totalarray['nbfield']++; + if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'totaldebit'; + $totalarray['val']['totaldebit'] += $line->debit; + } + + // Amount credit + if (!empty($arrayfields['t.credit']['checked'])) { + print ''; + if (!$i) $totalarray['nbfield']++; + if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'totalcredit'; + $totalarray['val']['totalcredit'] += $line->credit; + } + + // Lettering code + if (!empty($arrayfields['t.lettering_code']['checked'])) + { + print ''; + if (!$i) $totalarray['nbfield']++; + } + + // Journal code + if (!empty($arrayfields['t.code_journal']['checked'])) + { + $accountingjournal = new AccountingJournal($db); + $result = $accountingjournal->fetch('', $line->code_journal); + $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0, '', 0) : $line->code_journal); + print ''; + } + + // 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; + + // Action column + print ''; - // Affiche un lien vers la facture client/fournisseur - $doc_ref = preg_replace('/\(.*\)/', '', $line->doc_ref); - print strlen(length_accounta($line->subledger_account)) == 0 ? '' : ''; - - - print ''; - print ''; - - $accountingjournal = new AccountingJournal($db); - $result = $accountingjournal->fetch('', $line->code_journal); - $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0, '', 0) : $line->code_journal); - print ''; - - print ''; - print "\n"; - // Comptabilise le sous-total $sous_total_debit += $line->debit; $sous_total_credit += $line->credit; + if (!$i) $totalarray['nbfield']++; + + print "\n"; + $i++; } @@ -406,23 +592,20 @@ print ''; print ''; print ''; +// Show total line +include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; -// Show total -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; print "
'; print '
'; print $langs->trans('From').' '; @@ -285,35 +328,64 @@ print $langs->trans('to').' '; print $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array(), 1, 1, 'maxwidth200'); print '
'; print '
'; + print $langs->trans('From') . ': '; + print $form->selectDate($search_date_start, 'search_date_start', 0, 0, 1); + print '
'; + print $langs->trans('to') . ': '; + print $form->selectDate($search_date_end, 'search_date_end', 0, 0, 1); + print '
'; -print $langs->trans('From').': '; -print $form->selectDate($search_date_start, 'search_date_start', 0, 0, 1); -print '
'; -print $langs->trans('to').': '; -print $form->selectDate($search_date_end, 'search_date_end', 0, 0, 1); -print '
'; -$searchpicto = $form->showFilterAndCheckAddButtons(0); +$searchpicto = $form->showFilterButtons(); print $searchpicto; print '
 '.$line->piece_num.''.dol_print_date($line->doc_date, 'day').''; - //if ($line->doc_type == 'supplier_invoice') - //if ($line->doc_type == 'customer_invoice') - print $line->doc_ref; + // Document date + if (!empty($arrayfields['t.doc_date']['checked'])) + { + print ''.dol_print_date($line->doc_date, 'day').''; + + print ''; + // Picto + Ref + print '
'; + + if ($line->doc_type == 'customer_invoice' || $line->doc_type == 'supplier_invoice' || $line->doc_type == 'expense_report') + { + print $objectstatic->getNomUrl(1, '', 0, 0, '', 0, -1, 1); + print $documentlink; + } else { + print $line->doc_ref; + } + print '
'; + + print "
' . $line->label_operation . '' . $line->label_operation . '
(' . length_accounta($line->subledger_account) . ')
'.($line->debit ? price($line->debit) : '').'' . ($line->credit ? price($line->credit) : '') . ''.$line->lettering_code.''.$journaltoshow.''; + if (empty($line->date_export)) { + if ($user->rights->accounting->mouvements->creer) { + print ''.img_edit().''; + } + if ($user->rights->accounting->mouvements->supprimer) { + print ' '.img_delete().''; + } + } print ''.$line->label_operation.''.$line->label_operation.'
('.length_accounta($line->subledger_account).')
'.($line->debit ? price($line->debit) : '').''.($line->credit ? price($line->credit) : '').''.$journaltoshow.''; - print ''.img_edit().' '; - print ''.img_delete().''; - print '
'.$langs->trans("Total").':'; -print price($total_debit); -print ''; -print price($total_credit); -print '
"; print '
'; +// TODO Replace this with mass delete action +if ($user->rights->accounting->mouvements->supprimer_tous) { + print '
'."\n"; + print ''.$langs->trans("DeleteMvt").''; + print '
'; +} + print ''; // End of page From 40ffbbe61653f7a5bfea122b1d028b5cc297fcba Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Fri, 8 May 2020 13:28:56 +0200 Subject: [PATCH 410/780] Debug --- .../accountancy/bookkeeping/listbyaccount.php | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index 582e54442a5..ff742c356c4 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -120,17 +120,18 @@ $arrayfields = array( if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) unset($arrayfields['t.lettering_code']); - -$object = new BookKeeping($db); - /* * Action */ +if (GETPOST('cancel', 'alpha')) { $action = 'list'; $massaction = ''; } +if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction = ''; } + $parameters = array('socid'=>$socid); $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)) { +if (empty($reshook)) +{ include DOL_DOCUMENT_ROOT . '/core/actions_changeselectedfields.inc.php'; 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 @@ -328,15 +329,22 @@ print $langs->trans('to').' '; print $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array(), 1, 1, 'maxwidth200'); print '
'; print ''; +// Movement number +if (!empty($arrayfields['t.piece_num']['checked'])) +{ + print ''; +} // Date document if (!empty($arrayfields['t.doc_date']['checked'])) { - print ''; print ''; + print '
'; print $langs->trans('From') . ': '; print $form->selectDate($search_date_start, 'search_date_start', 0, 0, 1); - print '
'; + print '
'; + print '
'; print $langs->trans('to') . ': '; print $form->selectDate($search_date_end, 'search_date_end', 0, 0, 1); + print '
'; print ''; } // Ref document @@ -374,7 +382,7 @@ print "\n"; print ''; print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF']); -if (!empty($arrayfields['t.piece_num']['checked'])) print_liste_field_titre($arrayfields['t.piece_num']['label'], $_SERVER['PHP_SELF'], "t.piece_num", "", $param, '', $sortfield, $sortorder, 'right '); +if (!empty($arrayfields['t.piece_num']['checked'])) print_liste_field_titre($arrayfields['t.piece_num']['label'], $_SERVER['PHP_SELF'], "t.piece_num", "", $param, '', $sortfield, $sortorder); if (!empty($arrayfields['t.doc_date']['checked'])) print_liste_field_titre($arrayfields['t.doc_date']['label'], $_SERVER['PHP_SELF'], "t.doc_date", "", $param, '', $sortfield, $sortorder, 'center '); if (!empty($arrayfields['t.doc_ref']['checked'])) print_liste_field_titre($arrayfields['t.doc_ref']['label'], $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder); if (!empty($arrayfields['t.label_operation']['checked'])) print_liste_field_titre($arrayfields['t.label_operation']['label'], $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder); @@ -436,7 +444,18 @@ while ($i < min($num, $limit)) print ''; print ' '; - print ''.$line->piece_num.''; + if (!$i) $totalarray['nbfield']++; + + // Piece number + if (!empty($arrayfields['t.piece_num']['checked'])) + { + print ''; + $object->id = $line->id; + $object->piece_num = $line->piece_num; + print $object->getNomUrl(1, '', 0, '', 1); + print ''; + if (!$i) $totalarray['nbfield']++; + } // Document date if (!empty($arrayfields['t.doc_date']['checked'])) @@ -553,6 +572,7 @@ while ($i < min($num, $limit)) $result = $accountingjournal->fetch('', $line->code_journal); $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0, '', 0) : $line->code_journal); print ''.$journaltoshow.''; + if (!$i) $totalarray['nbfield']++; } // Fields from hook @@ -585,7 +605,7 @@ while ($i < min($num, $limit)) // Show sub-total of last shown account print ''; -print ''.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).''; +print ''.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).''; print ''; print price($sous_total_debit - $sous_total_credit); print ''; From 640158ea4caa3ffc94a0af63494fd509c768dbf0 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Fri, 8 May 2020 13:50:26 +0200 Subject: [PATCH 411/780] NEW Accountancy - Add Fiducial Winfic eWinfic WinSis Compta --- ...ncy-format_Winfic-eWinfic-WinSisCompta.pdf | Bin 0 -> 173394 bytes .../class/accountancyexport.class.php | 96 +++++++++++++++++- htdocs/langs/en_US/accountancy.lang | 3 +- 3 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 dev/resources/iso-normes/Accountancy-format_Winfic-eWinfic-WinSisCompta.pdf diff --git a/dev/resources/iso-normes/Accountancy-format_Winfic-eWinfic-WinSisCompta.pdf b/dev/resources/iso-normes/Accountancy-format_Winfic-eWinfic-WinSisCompta.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2fbaad04699b50eed31cf1373164693fda111714 GIT binary patch literal 173394 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

6gnen?77w`*g-le>y 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 literal 0 HcmV?d00001 diff --git a/htdocs/accountancy/class/accountancyexport.class.php b/htdocs/accountancy/class/accountancyexport.class.php index 1e641564de4..37b00ff43a6 100644 --- a/htdocs/accountancy/class/accountancyexport.class.php +++ b/htdocs/accountancy/class/accountancyexport.class.php @@ -5,11 +5,12 @@ * Copyright (C) 2015 Florian Henry * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2016 Pierre-Henry Favre - * Copyright (C) 2016-2019 Alexandre Spangaro + * Copyright (C) 2016-2020 Alexandre Spangaro * Copyright (C) 2013-2017 Olivier Geffroy * Copyright (C) 2017 Elarifr. Ari Elbaz * Copyright (C) 2017-2019 Frédéric France * Copyright (C) 2017 André Schild + * Copyright (C) 2020 Guillaume Alexandre * * 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 @@ -52,6 +53,7 @@ class AccountancyExport public static $EXPORT_TYPE_SAGE50_SWISS = 45; public static $EXPORT_TYPE_CHARLEMAGNE = 50; public static $EXPORT_TYPE_QUADRATUS = 60; + public static $EXPORT_TYPE_WINFIC = 70; public static $EXPORT_TYPE_OPENCONCERTO = 100; public static $EXPORT_TYPE_LDCOMPTA = 110; public static $EXPORT_TYPE_LDCOMPTA10 = 120; @@ -105,6 +107,7 @@ class AccountancyExport self::$EXPORT_TYPE_BOB50 => $langs->trans('Modelcsv_bob50'), self::$EXPORT_TYPE_CIEL => $langs->trans('Modelcsv_ciel'), self::$EXPORT_TYPE_QUADRATUS => $langs->trans('Modelcsv_quadratus'), + self::$EXPORT_TYPE_WINFIC => $langs->trans('Modelcsv_winfic'), self::$EXPORT_TYPE_EBP => $langs->trans('Modelcsv_ebp'), self::$EXPORT_TYPE_COGILOG => $langs->trans('Modelcsv_cogilog'), self::$EXPORT_TYPE_AGIRIS => $langs->trans('Modelcsv_agiris'), @@ -136,6 +139,7 @@ class AccountancyExport self::$EXPORT_TYPE_BOB50 => 'bob50', self::$EXPORT_TYPE_CIEL => 'ciel', self::$EXPORT_TYPE_QUADRATUS => 'quadratus', + self::$EXPORT_TYPE_WINFIC => 'winfic', self::$EXPORT_TYPE_EBP => 'ebp', self::$EXPORT_TYPE_COGILOG => 'cogilog', self::$EXPORT_TYPE_AGIRIS => 'agiris', @@ -184,6 +188,10 @@ class AccountancyExport 'label' => $langs->trans('Modelcsv_quadratus'), 'ACCOUNTING_EXPORT_FORMAT' => 'txt', ), + self::$EXPORT_TYPE_WINFIC => array( + 'label' => $langs->trans('Modelcsv_winfic'), + 'ACCOUNTING_EXPORT_FORMAT' => 'txt', + ), self::$EXPORT_TYPE_EBP => array( 'label' => $langs->trans('Modelcsv_ebp'), ), @@ -246,7 +254,7 @@ class AccountancyExport $filename = 'general_ledger-'.$this->getFormatCode($formatexportset); $type_export = 'general_ledger'; - global $db; // The tpl file use $db + global $db; // The tpl file use $db include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php'; @@ -269,6 +277,9 @@ class AccountancyExport case self::$EXPORT_TYPE_QUADRATUS : $this->exportQuadratus($TData); break; + case self::$EXPORT_TYPE_WINFIC : + $this->exportWinfic($TData); + break; case self::$EXPORT_TYPE_EBP : $this->exportEbp($TData); break; @@ -548,6 +559,85 @@ class AccountancyExport } } + /** + * Export format : WinFic - eWinfic - WinSis Compta + * + * + * @param array $TData data + * @return void + */ + public function exportWinfic(&$TData) + { + global $conf; + + $end_line = "\r\n"; + + //We should use dol_now function not time however this is wrong date to transfert in accounting + //$date_ecriture = dol_print_date(dol_now(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy + //$date_ecriture = dol_print_date(time(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy + foreach ($TData as $data) { + $code_compta = $data->numero_compte; + if (!empty($data->subledger_account)) + $code_compta = $data->subledger_account; + + $Tab = array(); + //$Tab['type_ligne'] = 'M'; + $Tab['code_journal'] = str_pad(self::trunc($data->code_journal, 2), 2); + + //We use invoice date $data->doc_date not $date_ecriture which is the transfert date + //maybe we should set an option for customer who prefer to keep in accounting software the tranfert date instead of invoice date ? + //$Tab['date_ecriture'] = $date_ecriture; + $Tab['date_operation'] = dol_print_date($data->doc_date, '%d%m%Y'); + + $Tab['folio'] = ' 1'; + + $Tab['num_ecriture'] = str_pad(self::trunc($data->piece_num, 6), 6, ' ', STR_PAD_LEFT); + + $Tab['jour_ecriture'] = dol_print_date($data->doc_date, '%d%m%y'); + + $Tab['num_compte'] = str_pad(self::trunc($code_compta, 6), 6, '0'); + + if($data->sens == 'D'){ + $Tab['montant_debit'] = str_pad(number_format(abs($data->montant), 2, ',', ''), 13, ' ', STR_PAD_LEFT); + + $Tab['montant_crebit'] = str_pad(number_format(0, 2, ',', ''), 13, ' ', STR_PAD_LEFT); + } + else{ + $Tab['montant_debit'] = str_pad(number_format(0, 2, ',', ''), 13, ' ', STR_PAD_LEFT); + + $Tab['montant_crebit'] = str_pad(number_format(abs($data->montant), 2, ',', ''), 13, ' ', STR_PAD_LEFT); + } + + $Tab['libelle_ecriture'] = str_pad(self::trunc(dol_string_unaccent($data->doc_ref).' '.dol_string_unaccent($data->label_operation), 30), 30); + + $Tab['lettrage'] = str_repeat(' ', 2); + + $Tab['code_piece'] = str_repeat(' ', 5); + + $Tab['code_stat'] = str_repeat(' ', 4); + + if (!empty($data->date_echeance)) + //$Tab['date_echeance'] = dol_print_date($data->date_echeance, $conf->global->ACCOUNTING_EXPORT_DATE); + $Tab['date_echeance'] = dol_print_date($data->date_echeance, '%d%m%Y'); + else + $Tab['date_echeance'] = dol_print_date($data->doc_date, '%d%m%Y'); + + $Tab['monnaie'] = '1'; + + $Tab['filler'] = ' '; + + $Tab['ind_compteur'] = ' '; + + $Tab['quantite'] = '0,000000000'; + + $Tab['code_pointage'] = str_repeat(' ', 2); + + $Tab['end_line'] = $end_line; + + print implode('|', $Tab); + } + } + /** * Export format : EBP @@ -930,7 +1020,7 @@ class AccountancyExport } /** - * Export format : LD Compta version 9 & higher + * Export format : LD Compta version 9 * http://www.ldsysteme.fr/fileadmin/telechargement/np/ldcompta/Documentation/IntCptW9.pdf * * @param array $objectLines data diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index ba34d38f36e..eb3229efaee 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -314,12 +314,13 @@ Modelcsv_quadratus=Export for Quadratus QuadraCompta Modelcsv_ebp=Export for EBP Modelcsv_cogilog=Export for Cogilog Modelcsv_agiris=Export for Agiris -Modelcsv_LDCompta=Export for LD Compta (v9 & higher) (Test) +Modelcsv_LDCompta=Export for LD Compta (v9) (Test) Modelcsv_LDCompta10=Export for LD Compta (v10 & higher) Modelcsv_openconcerto=Export for OpenConcerto (Test) Modelcsv_configurable=Export CSV Configurable Modelcsv_FEC=Export FEC Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland +Modelcsv_winfic=Export Winfic - eWinfic - WinSis Compta ChartofaccountsId=Chart of accounts Id ## Tools - Init accounting account on product / service From 7ad80c9bf623a88d215baa7dce03e4446c8b7db2 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Fri, 8 May 2020 11:53:11 +0000 Subject: [PATCH 412/780] Fixing style errors. --- htdocs/accountancy/class/accountancyexport.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/class/accountancyexport.class.php b/htdocs/accountancy/class/accountancyexport.class.php index 37b00ff43a6..3bf41e6326f 100644 --- a/htdocs/accountancy/class/accountancyexport.class.php +++ b/htdocs/accountancy/class/accountancyexport.class.php @@ -561,7 +561,7 @@ class AccountancyExport /** * Export format : WinFic - eWinfic - WinSis Compta - * + * * * @param array $TData data * @return void From 94d47c2acd4a53ba4ad69f914ac87212983b9ac4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 May 2020 14:04:17 +0200 Subject: [PATCH 413/780] Fix sql --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 38d0acb97fa..238c98b2f6e 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -275,4 +275,4 @@ ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; ALTER TABLE llx_menu MODIFY COLUMN module varchar(255); -ALTER TABLE llx_actioncomm SET fk_action = 50 where fk_action = 40 AND code = 'TICKET_MSG'; +UPDATE TABLE llx_actioncomm SET fk_action = 50 where fk_action = 40 AND code = 'TICKET_MSG'; From c98663be4a491e133c914972891af7cde7e4ac84 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 May 2020 14:05:04 +0200 Subject: [PATCH 414/780] Fix sql --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 238c98b2f6e..470d48bbf26 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -275,4 +275,4 @@ ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; ALTER TABLE llx_menu MODIFY COLUMN module varchar(255); -UPDATE TABLE llx_actioncomm SET fk_action = 50 where fk_action = 40 AND code = 'TICKET_MSG'; +UPDATE llx_actioncomm SET fk_action = 50 where fk_action = 40 AND code = 'TICKET_MSG'; From 0138ab3f7c85eb7fb1319f1ec568da8299d9eed8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 May 2020 14:25:49 +0200 Subject: [PATCH 415/780] Fix $weblangs must be initialized with language of page --- htdocs/core/website.inc.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/htdocs/core/website.inc.php b/htdocs/core/website.inc.php index 3e54f6ec2ad..5ea21e19fda 100644 --- a/htdocs/core/website.inc.php +++ b/htdocs/core/website.inc.php @@ -33,11 +33,6 @@ if (!is_object($website)) $website = new Website($db); $website->fetch(0, $websitekey); } -// Define $weblangs -if (!is_object($weblangs)) -{ - $weblangs = dol_clone($langs); // TODO Use an object lang from a language set into $website object instead of backoffice -} // Define $websitepage if we have $websitepagefile defined if (!$pageid && !empty($websitepagefile)) { @@ -48,10 +43,17 @@ if (!is_object($websitepage)) { $websitepage = new WebsitePage($db); } +// Define $weblangs +if (!is_object($weblangs)) +{ + $weblangs = new Translate($db); +} if ($pageid > 0) { $websitepage->fetch($pageid); + $weblangs->setDefaultLang($websitepage->lang ? $websitepage->lang : 'auto'); + if (!defined('USEDOLIBARREDITOR') && in_array($websitepage->type_container, array('menu', 'other'))) { $weblangs->load("website"); From 6a2bb08107a15da3a4d3ccc640be071a7c3d7d80 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 May 2020 14:34:02 +0200 Subject: [PATCH 416/780] Fix constructor --- htdocs/core/website.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/website.inc.php b/htdocs/core/website.inc.php index 5ea21e19fda..18744fec7a8 100644 --- a/htdocs/core/website.inc.php +++ b/htdocs/core/website.inc.php @@ -46,7 +46,7 @@ if (!is_object($websitepage)) // Define $weblangs if (!is_object($weblangs)) { - $weblangs = new Translate($db); + $weblangs = new Translate($db, $conf); } if ($pageid > 0) { From c28a3e85a35cb4df9a6cc4828bcfc82eb035955b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 May 2020 14:35:03 +0200 Subject: [PATCH 417/780] Fix constructor --- htdocs/core/website.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/website.inc.php b/htdocs/core/website.inc.php index 18744fec7a8..b5053fcc814 100644 --- a/htdocs/core/website.inc.php +++ b/htdocs/core/website.inc.php @@ -46,7 +46,7 @@ if (!is_object($websitepage)) // Define $weblangs if (!is_object($weblangs)) { - $weblangs = new Translate($db, $conf); + $weblangs = new Translate('', $conf); } if ($pageid > 0) { From b93a3ceb297b7722229ecfbfe6d0eedb16c2f5cc Mon Sep 17 00:00:00 2001 From: "jove@bisquerra.com" Date: Fri, 8 May 2020 17:25:48 +0200 Subject: [PATCH 418/780] TakePOS Auto Order improvements --- htdocs/takepos/css/phone.css | 28 +++++ htdocs/takepos/genimg/qr.php | 7 +- htdocs/takepos/invoice.php | 20 ++-- htdocs/takepos/phone.php | 162 ++++++++++++++++++++++----- htdocs/takepos/public/auto_order.php | 7 +- 5 files changed, 185 insertions(+), 39 deletions(-) diff --git a/htdocs/takepos/css/phone.css b/htdocs/takepos/css/phone.css index 49d833ade17..0f3606071f0 100644 --- a/htdocs/takepos/css/phone.css +++ b/htdocs/takepos/css/phone.css @@ -79,3 +79,31 @@ button.phonebutton { height:90%; font-weight: bold; } + +button.publicphonebutton { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ + width:33%; + height:90%; + font-weight: bold; +} + +button.publicphonebutton2 { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ + width:33%; + font-weight: bold; + padding: 8px 16px; +} diff --git a/htdocs/takepos/genimg/qr.php b/htdocs/takepos/genimg/qr.php index c73e874a465..553f5165a0d 100644 --- a/htdocs/takepos/genimg/qr.php +++ b/htdocs/takepos/genimg/qr.php @@ -29,5 +29,8 @@ require '../../core/modules/barcode/doc/tcpdfbarcode.modules.php'; $key = GETPOST('key'); -$module = new modTcpdfbarcode($db); -$result = $module->buildBarCode("http://www.takepos.com", 'QRCODE', 'Y'); +$urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); +$urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file + +$module = new modtcpdfbarcode($db); +$result = $module->buildBarCode($urlwithroot."/takepos/auto_order.php?key=".dol_encode($key), 'QRCODE', 'Y'); diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index b1641072829..236b302406d 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -32,7 +32,7 @@ if (!defined('NOREQUIREMENU')) { define('NOREQUIREMENU', '1'); } if (!defined('NOREQUIREHTML')) { define('NOREQUIREHTML', '1'); } if (!defined('NOREQUIREAJAX')) { define('NOREQUIREAJAX', '1'); } -require '../main.inc.php'; +if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; @@ -47,16 +47,11 @@ $idproduct = GETPOST('idproduct', 'int'); $place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Bar or Restaurant $placeid = 0; // $placeid is ID of invoice -if ($_SESSION["publicterminal"]) { - $_SESSION["takeposterminal"] = 1; // Use Terminal 1 for public customers -} -elseif (empty($user->rights->takepos->run)) { +if (empty($user->rights->takepos->run) && !defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { accessforbidden(); } - - -if (($conf->global->TAKEPOS_PHONE_BASIC_LAYOUT == 1 && $conf->browser->layout == 'phone') || $_SESSION["publicterminal"]) +if (($conf->global->TAKEPOS_PHONE_BASIC_LAYOUT == 1 && $conf->browser->layout == 'phone') || defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { // DIRECT LINK TO THIS PAGE FROM MOBILE AND NO TERMINAL SELECTED if ($_SESSION["takeposterminal"] == "") @@ -629,6 +624,12 @@ $(document).ready(function() { if (selectedline==this.id) return; // If is already selected else selectedline=this.id; selectedtext=$('#'+selectedline).find("td:first").html(); + }); /* Autoselect the line */ @@ -913,7 +914,7 @@ if ($_SESSION["basiclayout"] == 1) $htmlforlines .= '" onclick="AddProduct(\''.$place.'\', '.$row->id.')">'; $htmlforlines .= ''; $htmlforlines .= $row->label; - $htmlforlines .= ''; + $htmlforlines .= '

'.price($row->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).'
'; $htmlforlines .= ''."\n"; } $htmlforlines .= ''; @@ -990,6 +991,7 @@ if ($placeid > 0) } $htmlforlines .= '" id="'.$line->id.'">'; $htmlforlines .= ''; + if ($_SESSION["basiclayout"] == 1) $htmlforlines .= $line->qty." x "; //if ($line->product_label) $htmlforlines.= ''.$line->product_label.''; if (isset($line->product_type)) { diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index eac1f40bfd1..6e912d988dc 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -31,7 +31,7 @@ if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); -if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) require '../main.inc.php'; +if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE') && isset($_GET['key'])) require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; @@ -45,6 +45,7 @@ if (defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { else $place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Ba or Restaurant $action = GETPOST('action', 'alpha'); $setterminal = GETPOST('setterminal', 'int'); +$idproduct = GETPOST('idproduct', 'int'); if ($setterminal > 0) { @@ -53,14 +54,10 @@ if ($setterminal > 0) $langs->loadLangs(array("bills", "orders", "commercial", "cashdesk", "receiptprinter")); -if (defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { - $_SESSION["takeposterminal"] = 1; // Use Terminal 1 for public customers -} -elseif (empty($user->rights->takepos->run)) { +if (empty($user->rights->takepos->run) && !defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { accessforbidden(); } - /* * View */ @@ -75,7 +72,42 @@ $head = ' top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); ?> - + +fetch($idproduct); + print "".$prod->label."
"; + print ''; + print "
".$prod->description; + print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; + print '
'; + print ''; +} +elseif ($action=="editline"){ + $placeid = GETPOST('placeid', 'int'); + $selectedline = GETPOST('selectedline', 'int'); + $invoice = new Facture($db); + $invoice->fetch($placeid); + foreach ($invoice->lines as $line) + { + if ($line->id == $selectedline) + { + $prod = new Product($db); + $prod->fetch($line->fk_product); + print "".$prod->label."
"; + print ''; + print "
".$prod->description; + print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; + print '
'; + print ''; + print ''; + print ''; + } + } +} +else { +?> -global->TAKEPOS_NUM_TERMINALS != "1" && $_SESSION["takeposterminal"] == "") print '
'.$langs->trans('TerminalSelect').'
'; -?> + global->TAKEPOS_NUM_TERMINALS != "1" && $_SESSION["takeposterminal"] == "") print '
'.$langs->trans('TerminalSelect').'
'; + ?>
global->TAKEPOS_NUM_TERMINALS != "1" && $_SESSION["takeposterminal"]
- Date: Fri, 8 May 2020 18:04:38 +0200 Subject: [PATCH 420/780] Fix URLs --- htdocs/takepos/phone.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index 7e454a734a3..8714173e45f 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -31,7 +31,7 @@ if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); -if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE') && isset($_GET['key'])) require '../main.inc.php'; +if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; @@ -71,14 +71,13 @@ $head = ' '; top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); -?> - -'; + if ($action=="productinfo"){ $prod = new Product($db); $prod->fetch($idproduct); print "".$prod->label."
"; - print ''; + print ''; print "
".$prod->description; print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; print '
'; From b89b6d7679546811e13826e74262fa67cd10be75 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Fri, 8 May 2020 18:51:49 +0200 Subject: [PATCH 421/780] Name fix --- htdocs/takepos/genimg/qr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/genimg/qr.php b/htdocs/takepos/genimg/qr.php index 553f5165a0d..99f7fced1d0 100644 --- a/htdocs/takepos/genimg/qr.php +++ b/htdocs/takepos/genimg/qr.php @@ -32,5 +32,5 @@ $key = GETPOST('key'); $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file -$module = new modtcpdfbarcode($db); +$module = new modTcpdfbarcode($db); $result = $module->buildBarCode($urlwithroot."/takepos/auto_order.php?key=".dol_encode($key), 'QRCODE', 'Y'); From bba8ab657eea7ae7f28e5369ea59b06b1f3f5937 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 May 2020 18:57:15 +0200 Subject: [PATCH 422/780] Fix add missing migration --- htdocs/install/mysql/migration/10.0.0-11.0.0.sql | 11 +++++++++++ htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 9 +++++++++ 2 files changed, 20 insertions(+) diff --git a/htdocs/install/mysql/migration/10.0.0-11.0.0.sql b/htdocs/install/mysql/migration/10.0.0-11.0.0.sql index bc4b562711b..2a7a8963e9f 100644 --- a/htdocs/install/mysql/migration/10.0.0-11.0.0.sql +++ b/htdocs/install/mysql/migration/10.0.0-11.0.0.sql @@ -582,3 +582,14 @@ create table llx_commande_fournisseur_dispatch_extrafields ALTER TABLE llx_commande_fournisseur_dispatch_extrafields ADD INDEX idx_commande_fournisseur_dispatch_extrafields (fk_object); + +create table llx_facturedet_rec_extrafields +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + tms timestamp, + fk_object integer NOT NULL, -- object id + import_key varchar(14) -- import key +)ENGINE=innodb; + +ALTER TABLE llx_facturedet_rec_extrafields ADD INDEX idx_facturedet_rec_extrafields (fk_object); + diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 470d48bbf26..8a68e763160 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -54,6 +54,15 @@ create table llx_c_shipment_package_type entity integer DEFAULT 1 NOT NULL -- Multi company id )ENGINE=innodb; +create table llx_facturedet_rec_extrafields +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + tms timestamp, + fk_object integer NOT NULL, -- object id + import_key varchar(14) -- import key +)ENGINE=innodb; + +ALTER TABLE llx_facturedet_rec_extrafields ADD INDEX idx_facturedet_rec_extrafields (fk_object); -- For v12 From a87d9cd740f2399f5d24e13e0f7791eadde19976 Mon Sep 17 00:00:00 2001 From: Anthony Berton Date: Fri, 8 May 2020 22:41:49 +0200 Subject: [PATCH 423/780] Update list.php --- htdocs/product/list.php | 68 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 90464742839..0b1c0d19aff 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -211,6 +211,17 @@ $arrayfields = array( 'p.tosell'=>array('label'=>$langs->trans("Status").' ('.$langs->trans("Sell").')', 'checked'=>1, 'position'=>1000), 'p.tobuy'=>array('label'=>$langs->trans("Status").' ('.$langs->trans("Buy").')', 'checked'=>1, 'position'=>1000) ); + +// MultiPrices +if ($conf->global->PRODUIT_MULTIPRICES){ + for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) + { + $arrayfields['p.sellprice'.$i] = array('label'=>$langs->trans("SellingPrice")." ".$i, 'checked'=>1, 'enabled'=>$conf->global->PRODUIT_MULTIPRICES, 'position'=>40); + $arraypricelevel[$i] = array($i); + } +} + +//var_dump($arraypricelevel); // Extra fields if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) { @@ -733,6 +744,19 @@ if ($resql) print ''; print ''; } + + // Multiprice + if ($conf->global->PRODUIT_MULTIPRICES){ + foreach ($arraypricelevel as $key => $value) + { + if (!empty($arrayfields['p.sellprice'.$key]['checked'])) + { + print ''; + print ''; + } + } + } + // Minimum buying Price if (!empty($arrayfields['p.minbuyprice']['checked'])) { @@ -865,6 +889,18 @@ if ($resql) if (!empty($arrayfields['p.sellprice']['checked'])) { print_liste_field_titre($arrayfields['p.sellprice']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); } + + // Multiprices + if ($conf->global->PRODUIT_MULTIPRICES){ + foreach ($arraypricelevel as $key => $value) + { + if (!empty($arrayfields['p.sellprice'.$key]['checked'])) + { + print_liste_field_titre($arrayfields['p.sellprice'.$key]['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); + } + } + } + if (!empty($arrayfields['p.minbuyprice']['checked'])) { print_liste_field_titre($arrayfields['p.minbuyprice']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); } @@ -1200,6 +1236,38 @@ if ($resql) if (!$i) $totalarray['nbfield']++; } + + // Multiprices + if ($conf->global->PRODUIT_MULTIPRICES){ + foreach ($arraypricelevel as $key => $value) + { + if (!empty($arrayfields['p.sellprice'.$key]['checked'])) + { + $resultp = "SELECT p.rowid, p.fk_product, p.price, p.price_ttc, p.price_level, p.date_price"; + $resultp .= " FROM ".MAIN_DB_PREFIX."product_price as p"; + $resultp .= " WHERE fk_product = ".$obj->rowid; + if (!empty($conf->global->PRODUIT_MULTIPRICES)) $resultp .= " AND p.price_level = ".$key; + $resultp .= " ORDER BY p.date_price DESC, p.rowid DESC, p.price_level ASC"; + $resultp = $db->query($resultp); + if ($resultp) + { + $objp = $db->fetch_object($resultp); + print ''; + if ($obj->tosell) + { + if ($obj->price_base_type == 'TTC') print price($objp->price_ttc).' '.$langs->trans("TTC"); + else print price($objp->price).' '.$langs->trans("HT"); + } + print ''; + $db->free($resultp); + } else { + dol_print_error($db); + } + if (!$i) $totalarray['nbfield']++; + } + } + } + // Better buy price if (!empty($arrayfields['p.minbuyprice']['checked'])) { From c2dff7dfed6077cba99165aa9dcc1ee86eab0785 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Fri, 8 May 2020 20:46:06 +0000 Subject: [PATCH 424/780] Fixing style errors. --- htdocs/product/list.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 0b1c0d19aff..d666caad80c 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -1253,11 +1253,11 @@ if ($resql) { $objp = $db->fetch_object($resultp); print ''; - if ($obj->tosell) + if ($obj->tosell) { - if ($obj->price_base_type == 'TTC') print price($objp->price_ttc).' '.$langs->trans("TTC"); - else print price($objp->price).' '.$langs->trans("HT"); - } + if ($obj->price_base_type == 'TTC') print price($objp->price_ttc).' '.$langs->trans("TTC"); + else print price($objp->price).' '.$langs->trans("HT"); + } print ''; $db->free($resultp); } else { From 52b47fd5988832725fd75c50d38e208a0095bcff Mon Sep 17 00:00:00 2001 From: Anthony Berton Date: Sat, 9 May 2020 00:28:23 +0200 Subject: [PATCH 425/780] Update list.php --- htdocs/product/list.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index d666caad80c..f818d2f475a 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -216,7 +216,16 @@ $arrayfields = array( if ($conf->global->PRODUIT_MULTIPRICES){ for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) { - $arrayfields['p.sellprice'.$i] = array('label'=>$langs->trans("SellingPrice")." ".$i, 'checked'=>1, 'enabled'=>$conf->global->PRODUIT_MULTIPRICES, 'position'=>40); + $keyforlabel = 'PRODUIT_MULTIPRICES_LABEL'.$i; + if (!empty($conf->global->$keyforlabel)) + { + $labelp = $i.' - '.$langs->trans($conf->global->$keyforlabel); + } + else + { + $labelp = $langs->trans("SellingPrice")." ".$i; + } + $arrayfields['p.sellprice'.$i] = array('label'=>$labelp, 'checked'=>1, 'enabled'=>$conf->global->PRODUIT_MULTIPRICES, 'position'=>40); $arraypricelevel[$i] = array($i); } } From 3644a718d8b7fd21deec36617724c9a30e119c15 Mon Sep 17 00:00:00 2001 From: Anthony Berton Date: Sat, 9 May 2020 01:02:51 +0200 Subject: [PATCH 426/780] 1 --- htdocs/admin/user.php | 24 ++++++++++++++++++++++++ htdocs/langs/en_US/admin.lang | 1 + htdocs/langs/fr_FR/admin.lang | 1 + 3 files changed, 26 insertions(+) diff --git a/htdocs/admin/user.php b/htdocs/admin/user.php index fb15a57a87e..60cbadcdd3a 100644 --- a/htdocs/admin/user.php +++ b/htdocs/admin/user.php @@ -177,6 +177,30 @@ else } print ''; +// user hide inactive + +print ''; +print ''.$langs->trans("UserHideInactive").''; +print ' '; + +print ''; +if ($conf->use_javascript_ajax) +{ + print ajax_constantonoff('USER_HIDE_INACTIVE_IN_COMBOBOX'); +} +else +{ + if (empty($conf->global->USER_HIDE_INACTIVE_IN_COMBOBOX)) + { + print ''.img_picto($langs->trans("Disabled"), 'off').''; + } + else + { + print ''.img_picto($langs->trans("Enabled"), 'on').''; + } +} +print ''; + print ''; print '
'; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 3cf6e6044db..e97ed8dbc54 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1272,6 +1272,7 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user +UserHideInactive=Hide inactive users UsersDocModules=Document templates for documents generated from user record GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 6545b71ede3..172153852e3 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1272,6 +1272,7 @@ RuleForGeneratedPasswords=Règle pour la génération des mots de passe proposé DisableForgetPasswordLinkOnLogonPage=Cacher le lien "Mot de passe oublié" sur la page de connexion UsersSetup=Configuration du module utilisateurs UserMailRequired=Email requis pour créer un nouvel utilisateur +UserHideInactive=Cacher les utilisateurs inactifs UsersDocModules=Modèles de documents pour les documents générés à partir de la fiche utilisateur GroupsDocModules=Modèles de documents pour les documents générés à partir de la fiche d'un groupe ##### HRM setup ##### From 53eb891a88d9727591ada4601c1f03fed7c22370 Mon Sep 17 00:00:00 2001 From: Anthony Berton Date: Sat, 9 May 2020 18:48:01 +0200 Subject: [PATCH 427/780] Update list.php --- htdocs/product/stock/list.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index 15b92c83acc..c13243fc9cb 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -549,6 +549,11 @@ if ($num) { print ''; if ($key == 'statut') print $warehouse->getLibStatut(5); + if ($key == 'phone') + { + print dol_print_phone($obj->phone, '', 0, $obj->rowid, 'AC_TEL'); + } + elseif ($key == 'fax') print dol_print_phone($obj->fax, '', 0, $obj->rowid, 'AC_FAX'); else print $warehouse->showOutputField($val, $key, $warehouse->$key, ''); print ''; if (!$i) $totalarray['nbfield']++; From fe241ea321982b4b7ee30cf6ea03e7e5c7a7b3e7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 9 May 2020 21:49:12 +0200 Subject: [PATCH 428/780] Fix removed not reliabled info in PHP info --- htdocs/admin/system/phpinfo.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/htdocs/admin/system/phpinfo.php b/htdocs/admin/system/phpinfo.php index ce21c1f3ad8..04439d11710 100644 --- a/htdocs/admin/system/phpinfo.php +++ b/htdocs/admin/system/phpinfo.php @@ -143,7 +143,7 @@ $loadedExtensions = array_map('strtolower', get_loaded_extensions(false)); print ''; print ''; print ''; -print ''; +//print ''; print ''; print ''; print ''; @@ -154,7 +154,7 @@ $name = "GD"; print ""; print ""; -print getTableColumn($name, $activatedExtensions); +//print getTableColumn($name, $activatedExtensions); print getTableColumn($name, $loadedExtensions); print getTableColumnFunction($functions); print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions); @@ -165,7 +165,7 @@ $name = "Curl"; print ""; print ""; -print getTableColumn($name, $activatedExtensions); +//print getTableColumn($name, $activatedExtensions); print getTableColumn($name, $loadedExtensions); print getTableColumnFunction($functions); print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions); @@ -178,7 +178,7 @@ if (empty($_SERVER["SERVER_ADMIN"]) || $_SERVER["SERVER_ADMIN"] != 'doliwamp@loc print ""; print ""; - print getTableColumn($name, $activatedExtensions); + //print getTableColumn($name, $activatedExtensions); print getTableColumn($name, $loadedExtensions); print getTableColumnFunction($functions); print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions); @@ -191,7 +191,7 @@ $name = "xDebug"; print ""; print ""; -print getTableColumn($name, $activatedExtensions); +//print getTableColumn($name, $activatedExtensions); print getTableColumn($name, $loadedExtensions); print getTableColumnFunction($functions); print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions); @@ -208,7 +208,6 @@ foreach ($phparray as $key => $value) print '
'; print '
'.$langs->trans("Extension").''.$langs->trans("EnabledInSetup").''.$langs->trans("EnabledInSetup").''.$langs->trans("Loaded").''.$langs->trans("FunctionTest").''.$langs->trans("Result").'
".$name."
".$name."
".$name."
".$name."
'; print ''; - //print ''; print ''; print ''; print "\n"; @@ -408,7 +407,7 @@ function getResultColumn($name, array $activated, array $loaded, array $function global $langs; $result = true; - $result = $result && in_array(strtolower($name), $activated); + //$result = $result && in_array(strtolower($name), $activated); $result = $result && in_array(strtolower($name), $loaded); foreach ($functions as $function) From 310c5f9eb665ac0331f3b727c81bf65b668da569 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 9 May 2020 21:56:51 +0200 Subject: [PATCH 429/780] Fix size of field --- htdocs/install/mysql/migration/8.0.0-9.0.0.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 61f4dc544ba..b7fe131c3f9 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 @@ -200,7 +200,7 @@ CREATE TABLE llx_emailcollector_emailcollectorfilter( rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL, fk_emailcollector INTEGER NOT NULL, type varchar(128) NOT NULL, - rulevalue varchar(255) NULL, + rulevalue varchar(128) NULL, date_creation datetime NOT NULL, tms timestamp NOT NULL, fk_user_creat integer NOT NULL, From f40e978475751664c2b4cb1245f5c185b890613c Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 10 May 2020 06:28:50 +0200 Subject: [PATCH 430/780] Fix delbookkeepingyear - add hook printFieldPreListTitle - Look & Feel v12 --- .../accountancy/bookkeeping/listbyaccount.php | 282 +++++++++++++----- htdocs/langs/en_US/accountancy.lang | 1 + 2 files changed, 213 insertions(+), 70 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index ff742c356c4..49dbb81e77d 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -57,6 +57,12 @@ $search_direction = GETPOST('search_direction', 'alpha'); $search_ledger_code = GETPOST('search_ledger_code', 'alpha'); $search_debit = GETPOST('search_debit', 'alpha'); $search_credit = GETPOST('search_credit', 'alpha'); +$search_lettering_code = GETPOST('search_lettering_code', 'alpha'); +$search_not_reconciled = GETPOST('search_reconciled_option', 'alpha'); + +if (GETPOST("button_delmvt_x") || GETPOST("button_delmvt.x") || GETPOST("button_delmvt")) { + $action = 'delbookkeepingyear'; +} // Load variable for pagination $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION); @@ -105,6 +111,7 @@ if (empty($search_date_start) && empty($search_date_end) && GETPOSTISSET('search $arrayfields = array( // 't.subledger_account'=>array('label'=>$langs->trans("SubledgerAccount"), 'checked'=>1), + 't.code_journal'=>array('label'=>$langs->trans("Codejournal"), 'checked'=>1), 't.piece_num'=>array('label'=>$langs->trans("TransactionNumShort"), 'checked'=>1), 't.doc_date'=>array('label'=>$langs->trans("Docdate"), 'checked'=>1), 't.doc_ref'=>array('label'=>$langs->trans("Piece"), 'checked'=>1), @@ -112,10 +119,6 @@ $arrayfields = array( 't.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1), 't.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1), 't.lettering_code'=>array('label'=>$langs->trans("LetteringCode"), 'checked'=>1), - 't.code_journal'=>array('label'=>$langs->trans("Codejournal"), 'checked'=>1), - // 't.date_creation'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0), - // 't.tms'=>array('label'=>$langs->trans("DateModification"), 'checked'=>0), - // 't.date_export'=>array('label'=>$langs->trans("DateExport"), 'checked'=>1), ); if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) unset($arrayfields['t.lettering_code']); @@ -155,6 +158,8 @@ if (empty($reshook)) $search_date_endday = ''; $search_debit = ''; $search_credit = ''; + $search_lettering_code = ''; + $search_not_reconciled = ''; } // Must be after the remove filter action, before the export. @@ -209,9 +214,62 @@ if (empty($reshook)) $filter['t.credit'] = $search_credit; $param .= '&search_credit=' . urlencode($search_credit); } + if (!empty($search_lettering_code)) { + $filter['t.lettering_code'] = $search_lettering_code; + $param .= '&search_lettering_code='.urlencode($search_lettering_code); + } + if (!empty($search_not_reconciled)) { + $filter['t.reconciled_option'] = $search_not_reconciled; + $param .= '&search_not_reconciled='.urlencode($search_not_reconciled); + } } -if ($action == 'delmouvconfirm') { +if ($action == 'delbookkeeping' && $user->rights->accounting->mouvements->supprimer) { + $import_key = GETPOST('importkey', 'alpha'); + + if (!empty($import_key)) { + $result = $object->deleteByImportkey($import_key); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + } + + // Make a redirect to avoid to launch the delete later after a back button + header("Location: listbyaccount.php".($param ? '?'.$param : '')); + exit; + } +} +if ($action == 'delbookkeepingyearconfirm' && $user->rights->accounting->mouvements->supprimer_tous) { + $delmonth = GETPOST('delmonth', 'int'); + $delyear = GETPOST('delyear', 'int'); + if ($delyear == -1) { + $delyear = 0; + } + $deljournal = GETPOST('deljournal', 'alpha'); + if ($deljournal == -1) { + $deljournal = 0; + } + + if (!empty($delmonth) || !empty($delyear) || !empty($deljournal)) + { + $result = $object->deleteByYearAndJournal($delyear, $deljournal, '', ($delmonth > 0 ? $delmonth : 0)); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + } + else + { + setEventMessages("RecordDeleted", null, 'mesgs'); + } + + // Make a redirect to avoid to launch the delete later after a back button + header("Location: listbyaccount.php".($param ? '?'.$param : '')); + exit; + } + else + { + setEventMessages("NoRecordDeleted", null, 'warnings'); + } +} +if ($action == 'delmouvconfirm' && $user->rights->accounting->mouvements->supprimer) { $mvt_num = GETPOST('mvt_num', 'int'); if (!empty($mvt_num)) { @@ -219,8 +277,13 @@ if ($action == 'delmouvconfirm') { if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } - Header("Location: listbyaccount.php"); - exit(); + else + { + setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs'); + } + + header("Location: listbyaccount.php?noreset=1".($param ? '&'.$param : '')); + exit; } } @@ -262,22 +325,42 @@ if ($action == 'delmouv') { } if ($action == 'delbookkeepingyear') { $form_question = array(); - $delyear = GETPOST('delyear'); + $delyear = GETPOST('delyear', 'int'); + $deljournal = GETPOST('deljournal', 'alpha'); if (empty($delyear)) { $delyear = dol_print_date(dol_now(), '%Y'); } + $month_array = array(); + for ($i = 1; $i <= 12; $i++) { + $month_array[$i] = $langs->trans("Month".sprintf("%02d", $i)); + } $year_array = $formaccounting->selectyear_accountancy_bookkepping($delyear, 'delyear', 0, 'array'); + $journal_array = $formaccounting->select_journal($deljournal, 'deljournal', '', 1, 1, 1, '', 0, 1); + $form_question['delmonth'] = array( + 'name' => 'delmonth', + 'type' => 'select', + 'label' => $langs->trans('DelMonth'), + 'values' => $month_array, + 'default' => '' + ); $form_question['delyear'] = array( - 'name' => 'delyear', - 'type' => 'select', - 'label' => $langs->trans('DelYear'), - 'values' => $year_array, - 'default' => $delyear + 'name' => 'delyear', + 'type' => 'select', + 'label' => $langs->trans('DelYear'), + 'values' => $year_array, + 'default' => $delyear + ); + $form_question['deljournal'] = array( + 'name' => 'deljournal', + 'type' => 'other', // We don't use select here, the journal_array is already a select html component + 'label' => $langs->trans('DelJournal'), + 'value' => $journal_array, + 'default' => $deljournal ); - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans('DeleteMvt'), $langs->trans('ConfirmDeleteMvt'), 'delbookkeepingyearconfirm', $form_question, 0, 1, 250); + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?'.$param, $langs->trans('DeleteMvt'), $langs->trans('ConfirmDeleteMvt'), 'delbookkeepingyearconfirm', $form_question, '', 1, 300); print $formconfirm; } @@ -304,35 +387,41 @@ $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); +// Reverse sort order +if (preg_match('/^asc/i', $sortorder)) $sortorder = "asc"; +else $sortorder = "desc"; + +$moreforfilter = ''; + +// Accountancy account +$moreforfilter .= '
'; +$moreforfilter .= $langs->trans('AccountAccounting').': '; +$moreforfilter .= '
'; +$moreforfilter .= $langs->trans('From').' '; +$moreforfilter .= $formaccounting->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array(), 1, 1, 'maxwidth200'); +$moreforfilter .= $langs->trans('to').' '; +$moreforfilter .= $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array(), 1, 1, 'maxwidth200'); +$moreforfilter .= '
'; +$moreforfilter .= '
'; + $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook if (empty($reshook)) $moreforfilter .= $hookmanager->resPrint; else $moreforfilter = $hookmanager->resPrint; -// Reverse sort order -if (preg_match('/^asc/i', $sortorder)) $sortorder = "asc"; -else $sortorder = "desc"; +print '
'; +print $moreforfilter; +print '
'; print '
'; print '
'.$langs->trans("Parameter").''.$key.''.$langs->trans("Value").'
'; // Filters lines print ''; -// Accountancy account -print ''; -// Movement number -if (!empty($arrayfields['t.piece_num']['checked'])) -{ - print ''; + +// Code journal +if (!empty($arrayfields['t.code_journal']['checked'])) { + print ''; } // Date document if (!empty($arrayfields['t.doc_date']['checked'])) { @@ -347,6 +436,11 @@ if (!empty($arrayfields['t.doc_date']['checked'])) { print ''; print ''; } +// Movement number +if (!empty($arrayfields['t.piece_num']['checked'])) +{ + print ''; +} // Ref document if (!empty($arrayfields['t.doc_ref']['checked'])) { print ''; @@ -363,9 +457,13 @@ if (!empty($arrayfields['t.debit']['checked'])) { if (!empty($arrayfields['t.credit']['checked'])) { print ''; } -// Code journal -if (!empty($arrayfields['t.code_journal']['checked'])) { - print ''; +// Lettering code +if (!empty($arrayfields['t.lettering_code']['checked'])) +{ + print ''; } // Fields from hook @@ -381,14 +479,14 @@ print ''; print "\n"; print ''; -print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF']); -if (!empty($arrayfields['t.piece_num']['checked'])) print_liste_field_titre($arrayfields['t.piece_num']['label'], $_SERVER['PHP_SELF'], "t.piece_num", "", $param, '', $sortfield, $sortorder); +if (!empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre($arrayfields['t.code_journal']['label'], $_SERVER['PHP_SELF'], "t.code_journal", "", $param, '', $sortfield, $sortorder, 'center '); if (!empty($arrayfields['t.doc_date']['checked'])) print_liste_field_titre($arrayfields['t.doc_date']['label'], $_SERVER['PHP_SELF'], "t.doc_date", "", $param, '', $sortfield, $sortorder, 'center '); +if (!empty($arrayfields['t.piece_num']['checked'])) print_liste_field_titre($arrayfields['t.piece_num']['label'], $_SERVER['PHP_SELF'], "t.piece_num", "", $param, '', $sortfield, $sortorder); if (!empty($arrayfields['t.doc_ref']['checked'])) print_liste_field_titre($arrayfields['t.doc_ref']['label'], $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder); if (!empty($arrayfields['t.label_operation']['checked'])) print_liste_field_titre($arrayfields['t.label_operation']['label'], $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder); if (!empty($arrayfields['t.debit']['checked'])) print_liste_field_titre($arrayfields['t.debit']['label'], $_SERVER['PHP_SELF'], "t.debit", "", $param, '', $sortfield, $sortorder, 'right '); if (!empty($arrayfields['t.credit']['checked'])) print_liste_field_titre($arrayfields['t.credit']['label'], $_SERVER['PHP_SELF'], "t.credit", "", $param, '', $sortfield, $sortorder, 'right '); -if (!empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre($arrayfields['t.code_journal']['label'], $_SERVER['PHP_SELF'], "t.code_journal", "", $param, '', $sortfield, $sortorder, 'center '); +if (!empty($arrayfields['t.lettering_code']['checked'])) print_liste_field_titre($arrayfields['t.lettering_code']['label'], $_SERVER['PHP_SELF'], "t.lettering_code", "", $param, '', $sortfield, $sortorder, 'center '); // 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 @@ -419,18 +517,42 @@ while ($i < min($num, $limit)) // Is it a break ? if ($accountg != $displayed_account_number || !isset($displayed_account_number)) { - // Affiche un Sous-Total par compte comptable + + $colspan = $totalarray['nbfield'] - 3; + $colspanend = $totalarray['nbfield'] - 7; + // Show a subtotal by accounting account if (isset($displayed_account_number)) { - print ''; - print "\n"; - print "\n"; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + // Show balance of last shown account + $balance = $sous_total_debit - $sous_total_credit; + print ''; + print ''; + if ($balance > 0 ) + { + print ''; + print ''; + } + else + { + print ''; + print ''; + } + print ''; print ''; } // Show the break account - $colspan = 9; print ""; - print ''; @@ -440,11 +562,28 @@ while ($i < min($num, $limit)) //if (empty($displayed_account_number)) $displayed_account_number='-'; $sous_total_debit = 0; $sous_total_credit = 0; + + $colspan = 0; } print ''; - print ''; - if (!$i) $totalarray['nbfield']++; + + // Journal code + if (!empty($arrayfields['t.code_journal']['checked'])) + { + $accountingjournal = new AccountingJournal($db); + $result = $accountingjournal->fetch('', $line->code_journal); + $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0, '', 0) : $line->code_journal); + print ''; + if (!$i) $totalarray['nbfield']++; + } + + // Document date + if (!empty($arrayfields['t.doc_date']['checked'])) + { + print ''; + if (!$i) $totalarray['nbfield']++; + } // Piece number if (!empty($arrayfields['t.piece_num']['checked'])) @@ -457,13 +596,6 @@ while ($i < min($num, $limit)) if (!$i) $totalarray['nbfield']++; } - // Document date - if (!empty($arrayfields['t.doc_date']['checked'])) - { - print ''; - if (!$i) $totalarray['nbfield']++; - } - // Document ref if (!empty($arrayfields['t.doc_ref']['checked'])) { @@ -565,16 +697,6 @@ while ($i < min($num, $limit)) if (!$i) $totalarray['nbfield']++; } - // Journal code - if (!empty($arrayfields['t.code_journal']['checked'])) - { - $accountingjournal = new AccountingJournal($db); - $result = $accountingjournal->fetch('', $line->code_journal); - $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0, '', 0) : $line->code_journal); - print ''; - if (!$i) $totalarray['nbfield']++; - } - // 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 @@ -591,25 +713,45 @@ while ($i < min($num, $limit)) } } print ''; + if (!$i) $totalarray['nbfield']++; // Comptabilise le sous-total $sous_total_debit += $line->debit; $sous_total_credit += $line->credit; - if (!$i) $totalarray['nbfield']++; - print "\n"; $i++; } // Show sub-total of last shown account +$colspan = $totalarray['nbfield'] - 3; +$colspanend = $totalarray['nbfield'] - 8; print ''; -print ''; -print ''; -print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +// Show balance of last shown account +$balance = $sous_total_debit - $sous_total_credit; +print ''; +print ''; +if ($balance > 0 ) +{ + print ''; + print ''; +} +else +{ + print ''; + print ''; +} +print ''; print ''; // Show total line diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index eb3229efaee..adf2309ad07 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -121,6 +121,7 @@ InvoiceLinesDone=Bound lines of invoices ExpenseReportLines=Lines of expense reports to bind ExpenseReportLinesDone=Bound lines of expense reports IntoAccount=Bind line with the accounting account +TotalForAccount=Total for accounting account Ventilate=Bind From ff578198d63c4e8f4b852c96c4380f264e38b74c Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Sun, 10 May 2020 04:35:52 +0000 Subject: [PATCH 431/780] Fixing style errors. --- htdocs/accountancy/bookkeeping/listbyaccount.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index 49dbb81e77d..25f664d955e 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -517,7 +517,6 @@ while ($i < min($num, $limit)) // Is it a break ? if ($accountg != $displayed_account_number || !isset($displayed_account_number)) { - $colspan = $totalarray['nbfield'] - 3; $colspanend = $totalarray['nbfield'] - 7; // Show a subtotal by accounting account From 04480847df1ca79066567d41c58e613ed03a4189 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 10 May 2020 08:28:03 +0200 Subject: [PATCH 432/780] NEW Accountancy balance - Add a button ShowSubtotalByGroup --- htdocs/accountancy/bookkeeping/balance.php | 61 ++++++++++++++-------- htdocs/langs/en_US/accountancy.lang | 1 + 2 files changed, 39 insertions(+), 23 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index b2a25b00ce2..7b99057f73a 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -55,7 +55,7 @@ $pagenext = $page + 1; //if (! $sortfield) $sortfield="p.date_fin"; //if (! $sortorder) $sortorder="DESC"; - +$show_subgroup = GETPOST('show_subgroup', 'alpha'); $search_date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int')); $search_date_end = dol_mktime(23, 59, 59, GETPOST('date_endmonth', 'int'), GETPOST('date_endday', 'int'), GETPOST('date_endyear', 'int')); @@ -130,10 +130,11 @@ if (!empty($search_accountancy_code_end)) { 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_accountancy_code_start = ''; - $search_accountancy_code_end = ''; + $show_subgroup = ''; $search_date_start = ''; $search_date_end = ''; + $search_accountancy_code_start = ''; + $search_accountancy_code_end = ''; $filter = array(); } @@ -223,6 +224,12 @@ if ($action != 'export_csv') $moreforfilter .= $form->selectDate($search_date_start ? $search_date_start : -1, 'date_start', 0, 0, 1, '', 1, 0); $moreforfilter .= $langs->trans('DateEnd').': '; $moreforfilter .= $form->selectDate($search_date_end ? $search_date_end : -1, 'date_end', 0, 0, 1, '', 1, 0); + + $moreforfilter .= ' - '; + $moreforfilter .= $langs->trans('ShowSubtotalByGroup').': '; + $moreforfilter .= ''; + + $moreforfilter .= ''; if (!empty($moreforfilter)) { @@ -289,26 +296,31 @@ if ($action != 'export_csv') } print ''; - // Permet d'afficher le compte comptable - if (empty($displayed_account) || $root_account_description != $displayed_account) + if(!empty($show_subgroup)) { - // Affiche un Sous-Total par compte comptable - if ($displayed_account != "") { - print ''; - print "\n"; + // Permet d'afficher le compte comptable + if (empty($displayed_account) || $root_account_description != $displayed_account) { + // Affiche un Sous-Total par compte comptable + if ($displayed_account != "") { + print ''; + print ''; + print ''; + print ''; + print "\n"; + print "\n"; + print ''; + } + + // Show first line of a break + print ''; + print ''; print ''; + + $displayed_account = $root_account_description; + $sous_total_debit = 0; + $sous_total_credit = 0; } - - // Show first line of a break - print ''; - print ''; - print ''; - - $displayed_account = $root_account_description; - $sous_total_debit = 0; - $sous_total_credit = 0; } - // $object->get_compte_racine($line->numero_compte); print ''; @@ -326,12 +338,15 @@ if ($action != 'export_csv') $sous_total_credit += $line->credit; } - print ''; - print "\n"; - print ''; + if(!empty($show_subgroup)) + { + print ''; + print "\n"; + print ''; + } print ''; - print "\n"; + print "\n"; print ''; print "
'; -print '
'; -print $langs->trans('From').' '; -print $formaccounting->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array(), 1, 1, 'maxwidth200'); -print '
'; -print '
'; -print $langs->trans('to').' '; -print $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array(), 1, 1, 'maxwidth200'); -print '
'; -print '
'; + print ''; + print '
'.$langs->trans("NotReconciled").''; + print '
'.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).'  
'.$langs->trans("TotalForAccount").' '.length_accountg($displayed_account_number).':'.price($sous_total_debit).''.price($sous_total_credit).'
'.$langs->trans("Balance").':'; + print price($sous_total_debit - $sous_total_credit); + print ''; + print price($sous_total_credit - $sous_total_debit); + print '
'; + print ''; if ($line->numero_compte != "" && $line->numero_compte != '-1') print length_accountg($line->numero_compte).' : '.$object->get_compte_desc($line->numero_compte); else print ''.$langs->trans("Unknown").''; print '
 '.$journaltoshow.''.dol_print_date($line->doc_date, 'day').''.dol_print_date($line->doc_date, 'day').''.$journaltoshow.'
'.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).''; -print price($sous_total_debit - $sous_total_credit); -print ''.$langs->trans("TotalForAccount").' '.$accountg.':'.price($sous_total_debit).''.price($sous_total_credit).'
'.$langs->trans("Balance").':'; + print price($sous_total_debit - $sous_total_credit); + print ''; + print price($sous_total_credit - $sous_total_debit); + print '
'.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).''.price(price2num($sous_total_credit - $sous_total_debit)).' 
' . $langs->trans("SubTotal") . ':' . price($sous_total_debit) . '' . price($sous_total_credit) . '' . price(price2num($sous_total_credit - $sous_total_debit)) . '
' . $line->numero_compte . ($root_account_description ? ' - ' . $root_account_description : '') . '
'.$line->numero_compte.($root_account_description ? ' - '.$root_account_description : '').'
'.length_accountg($line->numero_compte).'
'.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).''.price(price2num($sous_total_debit - $sous_total_credit)).' 
' . $langs->trans("SubTotal") . ':' . price($sous_total_debit) . '' . price($sous_total_credit) . '' . price(price2num($sous_total_debit - $sous_total_credit)) . '
'.$langs->trans("AccountBalance").':'.price($total_debit).''.price($total_credit).''.price(price2num($total_debit - $total_credit)).' 
"; diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index eb3229efaee..a3d4437b043 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -235,6 +235,7 @@ UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third-par PaymentsNotLinkedToProduct=Payment not linked to any product / service ShowOpeningBalance=Show opening balance HideOpeningBalance=Hide opening balance +ShowSubtotalByGroup=Show subtotal by group Pcgtype=Group of account PcgtypeDesc=Group 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. From 796f97c6715e16b162c9d23952c63a34d728ee8f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 10 May 2020 15:08:01 +0200 Subject: [PATCH 433/780] Support tag $capture in input of files --- htdocs/core/class/html.formfile.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 98d781a51c1..26abcf2e721 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -78,9 +78,10 @@ class FormFile * @param string $accept Specifies the types of files accepted (This is not a security check but an user interface facility. eg '.pdf,image/*' or '.png,.jpg' or 'video/*') * @param string $sectiondir If upload must be done inside a particular directory (if sectiondir defined, sectionid must not be) * @param int $usewithoutform 0=Default, 1=Disable
and style to use in existing area + * @param int $capture 1=Add tag capture="capture" to force use of micro or video recording to generate file. When setting this to 1, you must also provide a value for $accept. * @return int <0 if KO, >0 if OK */ - public function form_attach_new_file($url, $title = '', $addcancel = 0, $sectionid = 0, $perm = 1, $size = 50, $object = '', $options = '', $useajax = 1, $savingdocmask = '', $linkfiles = 1, $htmlname = 'formuserfile', $accept = '', $sectiondir = '', $usewithoutform = 0) + public function form_attach_new_file($url, $title = '', $addcancel = 0, $sectionid = 0, $perm = 1, $size = 50, $object = '', $options = '', $useajax = 1, $savingdocmask = '', $linkfiles = 1, $htmlname = 'formuserfile', $accept = '', $sectiondir = '', $usewithoutform = 0, $capture = 0) { // phpcs:enable global $conf, $langs, $hookmanager; @@ -170,6 +171,7 @@ class FormFile $out .= ((!empty($conf->global->MAIN_DISABLE_MULTIPLE_FILEUPLOAD) || $conf->browser->layout != 'classic') ? ' name="userfile"' : ' name="userfile[]" multiple'); $out .= (empty($conf->global->MAIN_UPLOAD_DOC) || empty($perm) ? ' disabled' : ''); $out .= (!empty($accept) ? ' accept="'.$accept.'"' : ' accept=""'); + $out .= (!empty($capture) ? ' capture="capture"' : ''); $out .= '>'; $out .= ' '; if ($sectionid) { // Show overwrite if exists for ECM module only From 501f1ba2c403f12c90c8a76810bec39540581e64 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 10 May 2020 15:45:07 +0200 Subject: [PATCH 434/780] Fix look and feel v12 --- htdocs/contrat/document.php | 1 - htdocs/core/ajax/selectsearchbox.php | 2 +- htdocs/core/lib/functions.lib.php | 9 +++++---- htdocs/main.inc.php | 8 ++++---- htdocs/theme/eldy/global.inc.php | 6 +++++- htdocs/theme/md/style.css.php | 2 ++ 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/htdocs/contrat/document.php b/htdocs/contrat/document.php index 7d47b5102ac..fd3b3f66e4a 100644 --- a/htdocs/contrat/document.php +++ b/htdocs/contrat/document.php @@ -179,7 +179,6 @@ if ($object->id) print '
'; print '
'; - print ''; print ''; print ''; diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php index 2f8ad4ab5f7..31a95d1e02c 100644 --- a/htdocs/core/ajax/selectsearchbox.php +++ b/htdocs/core/ajax/selectsearchbox.php @@ -99,7 +99,7 @@ if (!empty($conf->commande->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUS } if (!empty($conf->expedition->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_SHIPMENT_DISABLED) && $user->rights->expedition->lire) { - $arrayresult['searchintoshipment'] = array('position'=>80, 'img'=>'object_sending', 'label'=>$langs->trans("SearchIntoCustomerShipments", $search_boxvalue), 'text'=>img_picto('', 'object_sending').' '.$langs->trans("SearchIntoCustomerShipments", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/expedition/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintoshipment'] = array('position'=>80, 'img'=>'object_shipment', 'label'=>$langs->trans("SearchIntoCustomerShipments", $search_boxvalue), 'text'=>img_picto('', 'object_shipment').' '.$langs->trans("SearchIntoCustomerShipments", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/expedition/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->facture->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_INVOICE_DISABLED) && $user->rights->facture->lire) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index bcf47a58eef..89e76156448 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3162,7 +3162,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'object_margin', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', 'object_lot', 'object_mrp', 'object_payment', 'object_product', 'object_propal', 'object_other', 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', - 'object_supplier_invoice', 'object_supplier_order', 'object_supplier_proposal', 'object_service', 'object_stock', + 'object_shipment', 'object_supplier_invoice', 'object_supplier_order', 'object_supplier_proposal', 'object_service', 'object_stock', 'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member', 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', 'off', 'on', 'order', @@ -3209,7 +3209,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'resize'=>'crop', 'supplier_order'=>'dol-order_supplier', 'supplier_proposal'=>'file-signature', 'payment'=>'money-check-alt', 'phoning'=>'phone', 'phoning_mobile'=>'mobile-alt', 'phoning_fax'=>'fax', 'printer'=>'print', 'product'=>'cube', 'service'=>'concierge-bell', 'resource'=>'laptop-house', - 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'supplier_invoice'=>'file-invoice-dollar', 'technic'=>'cogs', 'ticket'=>'ticket-alt', + 'shipment'=>'dolly', 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'supplier_invoice'=>'file-invoice-dollar', 'technic'=>'cogs', 'ticket'=>'ticket-alt', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach', 'title_agenda'=>'calendar-alt', 'uparrow'=>'mail-forward', @@ -3273,7 +3273,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'error'=>'pictoerror', 'warning'=>'pictowarning', 'switch_on'=>'font-status4', 'holiday'=>'bg-infobox-holiday', 'invoice'=>'bg-infobox-commande', 'payment'=>'bg-infobox-bank_account', 'poll'=>'bg-infobox-adherent', 'project'=>'bg-infobox-project', 'projecttask'=>'bg-infobox-project', 'propal'=>'bg-infobox-propal', - 'resource'=>'bg-infobox-action', 'supplier_invoice'=>'bg-infobox-order_supplier', 'supplier_order'=>'bg-infobox-order_supplier', 'supplier_proposal'=>'bg-infobox-supplier_proposal', + 'resource'=>'bg-infobox-action', + 'supplier_invoice'=>'bg-infobox-order_supplier', 'supplier_order'=>'bg-infobox-order_supplier', 'supplier_proposal'=>'bg-infobox-supplier_proposal', 'ticket'=>'bg-infobox-contrat', 'title_accountancy'=>'bg-infobox-bank_account', 'title_hrm'=>'bg-infobox-holiday', 'trip'=>'bg-infobox-expensereport', 'title_agenda'=>'bg-infobox-action', //'title_setup'=>'bg-infobox-action', 'tools'=>'bg-infobox-action', 'list-alt'=>'imgforviewmode', 'calendar'=>'imgforviewmode', 'calendarweek'=>'imgforviewmode', 'calendarmonth'=>'imgforviewmode', 'calendarday'=>'imgforviewmode', 'calendarperuser'=>'imgforviewmode' @@ -3291,7 +3292,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'map-marker-alt'=>'#aaa', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944', 'other'=>'#ddd', 'playdisabled'=>'#ccc', 'printer'=>'#444', 'projectpub'=>'#986c6a', 'resize'=>'#444', 'rss'=>'#cba', - 'stats'=>'#444', 'switch_off'=>'#999', 'uparrow'=>'#555', 'globe-americas'=>'#aaa' + 'shipment'=>'#a69944', 'stats'=>'#444', 'switch_off'=>'#999', 'uparrow'=>'#555', 'globe-americas'=>'#aaa' ); if (isset($arrayconvpictotocolor[$pictowithouttext])) { $facolor = $arrayconvpictotocolor[$pictowithouttext]; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 6533b4bfe54..8ebd68631cb 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -2180,7 +2180,7 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_ } else { if (is_array($arrayresult)) { foreach ($arrayresult as $key => $val) { - $searchform .= printSearchForm($val['url'], $val['url'], $val['label'], 'maxwidth125', 'sall', $val['shortcut'], 'searchleft'.$key, img_picto('', $val['img'], '', false, 1, 1)); + $searchform .= printSearchForm($val['url'], $val['url'], $val['label'], 'maxwidth125', 'sall', $val['shortcut'], 'searchleft'.$key, $val['img']); } } } @@ -2453,14 +2453,14 @@ function printSearchForm($urlaction, $urlobject, $title, $htmlmorecss, $htmlinpu $ret .= ''; if ($showtitlebefore) $ret .= '
'.$title.'
'; $ret .= '
'; + $ret .= img_picto('', $img, '', false, 0, 0, '', 'paddingright width20'); $ret .= ''; - //$ret.=''; - $ret .= ''; $ret .= '
'; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 9e099c6953d..4ec62c217a5 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1027,6 +1027,7 @@ table[summary="list_of_modules"] .fa-cog { /* rule for not too small screen only */ @media only screen and (min-width: global->THEME_ELDY_WITDHOFFSET_FOR_REDUC3) ? round($nbtopmenuentries * 47, 0) + 130 : $conf->global->THEME_ELDY_WITDHOFFSET_FOR_REDUC3; ?>px) { + .width20 { width: 20px; } .width25 { width: 25px; } .width50 { width: 50px; } .width75 { width: 75px; } @@ -1048,6 +1049,7 @@ table[summary="list_of_modules"] .fa-cog { .minwidth500imp { min-width: 500px !important; } } .widthauto { width: auto; } +.width20 { width: 20px; } .width25 { width: 25px; } .width50 { width: 50px; } .width75 { width: 75px; } @@ -6309,7 +6311,9 @@ div.tabsElem a.tab { div.login_block_user, div.login_block_other { clear: both; } .atoplogin, .atoplogin:hover { - color: #000 !important; + color:unset !important; + padding-left: 4px; + padding-right: 4px; } .login_block_elem { padding: 0 !important; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index c995426edd9..71fbb6f50da 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1122,6 +1122,7 @@ table[summary="list_of_modules"] .fa-cog { /* rule for not too small screen only */ @media only screen and (min-width: px) { + .width20 { width: 20px; } .width25 { width: 25px; } .width50 { width: 50px; } .width75 { width: 75px; } @@ -1143,6 +1144,7 @@ table[summary="list_of_modules"] .fa-cog { .minwidth500imp { min-width: 500px !important; } } .widthauto { width: auto; } +.width20 { width: 20px; } .width25 { width: 25px; } .width50 { width: 50px; } .width75 { width: 75px; } From fbbb898d528e526b9ff9b8a7e47d4a027718d96b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 10 May 2020 18:31:55 +0200 Subject: [PATCH 435/780] Better log --- scripts/cron/cron_run_jobs.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/cron/cron_run_jobs.php b/scripts/cron/cron_run_jobs.php index 24e92c79d0b..79d52c49445 100755 --- a/scripts/cron/cron_run_jobs.php +++ b/scripts/cron/cron_run_jobs.php @@ -227,11 +227,13 @@ if (is_array($qualifiedjobs) && (count($qualifiedjobs) > 0)) { echo "You can also enable module Log if not yet enabled, run again and take a look into dolibarr.log file\n"; dol_syslog("cron_run_jobs.php::run_jobs Error ".$cronjob->error, LOG_ERR); $nbofjobslaunchedko++; + $resultstring = 'KO'; } else { $nbofjobslaunchedok++; + $resultstring = 'OK'; } - echo " - result of run_jobs = ".$result; + echo " - run_jobs ".$resultstring." result = ".$result; // We re-program the next execution and stores the last execution time for this job $result = $cronjob->reprogram_jobs($userlogin, $now); From c511af69fe31ec911679f93de77aeffbc541a952 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 10 May 2020 21:07:49 +0200 Subject: [PATCH 436/780] Debug look and feel v12 --- htdocs/core/class/html.form.class.php | 5 ++- htdocs/core/class/html.formactions.class.php | 5 ++- htdocs/core/lib/agenda.lib.php | 44 ++++++++++--------- htdocs/core/modules/DolibarrModules.class.php | 2 +- .../class/html.formresource.class.php | 5 ++- htdocs/theme/eldy/global.inc.php | 31 +++++++++---- 6 files changed, 55 insertions(+), 37 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index ee24af9f307..5fe411c6260 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -7676,10 +7676,11 @@ class Form * @param int $enableonly Array list of groups id to be enabled. All other must be disabled * @param string $force_entity '0' or Ids of environment to force * @param bool $multiple add [] in the name of element and add 'multiple' attribut (not working with ajax_autocompleter) + * @param string $morecss More css to add to html component * @return string * @see select_dolusers() */ - public function select_dolgroups($selected = '', $htmlname = 'groupid', $show_empty = 0, $exclude = '', $disabled = 0, $include = '', $enableonly = '', $force_entity = '0', $multiple = false) + public function select_dolgroups($selected = '', $htmlname = 'groupid', $show_empty = 0, $exclude = '', $disabled = 0, $include = '', $enableonly = '', $force_entity = '0', $multiple = false, $morecss = '') { // phpcs:enable global $conf, $user, $langs; @@ -7722,7 +7723,7 @@ class Form include_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php'; $out .= ajax_combobox($htmlname); - $out .= ''; $num = $this->db->num_rows($resql); $i = 0; diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index 352fcebb06b..8aa51a66ab7 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -339,9 +339,10 @@ class FormActions * @param int $hideinfohelp 1=Do not show info help, 0=Show, -1=Show+Add info to tell how to set default value * @param int $multiselect 1=Allow multiselect of action type * @param int $nooutput 1=No output + * @param string $morecss More css to add to SELECT component. * @return string */ - public function select_type_actions($selected = '', $htmlname = 'actioncode', $excludetype = '', $onlyautoornot = 0, $hideinfohelp = 0, $multiselect = 0, $nooutput = 0) + public function select_type_actions($selected = '', $htmlname = 'actioncode', $excludetype = '', $onlyautoornot = 0, $hideinfohelp = 0, $multiselect = 0, $nooutput = 0, $morecss = '') { // phpcs:enable global $langs, $user, $form, $conf; @@ -371,7 +372,7 @@ class FormActions } else { - $out .= $form->selectarray($htmlname, $arraylist, $selected, 0, 0, 0, '', 0, 0, 0, '', 'minwidth200', 1); + $out .= $form->selectarray($htmlname, $arraylist, $selected, 0, 0, 0, '', 0, 0, 0, '', 'minwidth200'.($morecss ? ' '.$morecss : ''), 1); } if ($user->admin && empty($onlyautoornot) && $hideinfohelp <= 0) diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index 474a4f03696..532ef091698 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -77,27 +77,29 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh { // Type print ''; - print ''; // Assigned to print ''; - print ''; if ($conf->resource->enabled) @@ -109,9 +111,9 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print ''; print ''; } } @@ -119,11 +121,11 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh if (!empty($conf->societe->enabled) && $user->rights->societe->lire) { print ''; - print ''; } @@ -133,10 +135,10 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh $formproject = new FormProjets($db); print ''; - print ''; } @@ -145,9 +147,9 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh { // Status print ''; - print ''; } diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index c592cb69959..9543cf74442 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -2314,7 +2314,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it print '
'.$this->getName().' - '.nl2br($this->getDesc()).''; + '.nl2br($this->getDesc()).''; /*print 'getVersion(1).'">'; print $this->getVersion(1); diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php index 3c0bb36116e..36d3fc854cc 100644 --- a/htdocs/resource/class/html.formresource.class.php +++ b/htdocs/resource/class/html.formresource.class.php @@ -74,9 +74,10 @@ class FormResource * @param string $filterkey Filter on key value * @param int $outputmode 0=HTML select string, 1=Array, 2=without form tag * @param int $limit Limit number of answers + * @param string $morecss More css * @return string HTML string with */ - public function select_resource_list($selected = '', $htmlname = 'fk_resource', $filter = '', $showempty = 0, $showtype = 0, $forcecombo = 0, $event = array(), $filterkey = '', $outputmode = 0, $limit = 20) + public function select_resource_list($selected = '', $htmlname = 'fk_resource', $filter = '', $showempty = 0, $showtype = 0, $forcecombo = 0, $event = array(), $filterkey = '', $outputmode = 0, $limit = 20, $morecss = '') { // phpcs:enable global $conf, $user, $langs; @@ -103,7 +104,7 @@ class FormResource } // Construct $out and $outarray - $out .= ''."\n"; if ($showempty) $out .= ''."\n"; $num = 0; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 4ec62c217a5..dc0c77ed67d 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -670,7 +670,9 @@ body[class*="colorblind-"] .text-success{ .editfielda span.fa-pencil-alt:hover, .editfielda span.fa-trash:hover, .editfieldlang:hover { color: var(--colortexttitle) !important; } - +.fawidth30 { + width: 20px; +} .floatnone { float: none !important; } @@ -1137,6 +1139,19 @@ table[summary="list_of_modules"] .fa-cog { .hideonsmartphone { display: none; } .hideonsmartphoneimp { display: none !important; } + + span.pictotitle { + margin-: 0 !important; + } + div.fiche>table.table-fiche-title { + margin-top: 7px !important; + margin-bottom: 15px !important; + } + + select.minwidth100imp, select.minwidth100, select.minwidth200, .widthcentpercentminusx { + width: calc(100% - 30px) !important; + display: inline-block; + } } /* Force values for small screen 570 */ @@ -1145,6 +1160,10 @@ table[summary="list_of_modules"] .fa-cog { body { font-size: ; } + + .box-flex-item { + margin: 3px 2px 3px 2px !important; + } div.refidno { font-size: !important; } @@ -1472,10 +1491,10 @@ body.onlinepaymentbody div.fiche { /* For online payment page */ margin: 20px !important; } div.fiche>table:first-child { - margin-bottom: 15px !important; + margin-bottom: 15px; } div.fiche>table.table-fiche-title { - margin-bottom: 7px !important; + margin-bottom: 7px; } div.fichecenter { width: 100%; @@ -1607,12 +1626,6 @@ td.nobordernopadding.widthpictotitle.col-picto { margin-: 8px; /* margin-bottom: 4px; */ } -@media only screen and (max-width: 767px) -{ - span.pictotitle { - margin-: 0 !important; - } -} .pictoobjectwidth { width: 14px; } From a83af075aa7867a404f5fb125515c120a042756f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 May 2020 00:35:05 +0200 Subject: [PATCH 437/780] Fix responsive --- htdocs/admin/index.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/index.php b/htdocs/admin/index.php index 1a55fbc04ee..1a27d61e55d 100644 --- a/htdocs/admin/index.php +++ b/htdocs/admin/index.php @@ -67,12 +67,12 @@ if (!empty($conf->global->MAIN_MOTD_SETUPPAGE)) } } -print ''; -print $langs->trans("SetupDescription1"); +print ''; +print $langs->trans("SetupDescription1").' '; print $langs->trans("AreaForAdminOnly").' '; print $langs->trans("SetupDescription2", $langs->transnoentities("MenuCompanySetup"), $langs->transnoentities("Modules")); -print ''; print "

"; +print '
'; print '
'; From 7300b45bcd9af35dc206830d71708853615eed60 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 May 2020 01:19:33 +0200 Subject: [PATCH 438/780] Responsive --- htdocs/adherents/index.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/adherents/index.php b/htdocs/adherents/index.php index 44fcb397ddc..6d069386592 100644 --- a/htdocs/adherents/index.php +++ b/htdocs/adherents/index.php @@ -1,9 +1,9 @@ * Copyright (C) 2003 Jean-Louis Bergamo - * Copyright (C) 2004-2017 Laurent Destailleur + * Copyright (C) 2004-2020 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2019 Nicolas ZABOURI + * Copyright (C) 2019 Nicolas ZABOURI * * 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 @@ -22,7 +22,7 @@ /** * \file htdocs/adherents/index.php * \ingroup member - * \brief Page accueil module adherents + * \brief Home page of membership module */ require '../main.inc.php'; @@ -339,7 +339,7 @@ if ($resql) $staticmember->ref = $staticmember->getFullName($langs); $statictype->id = $obj->typeid; $statictype->label = $obj->label; - print '
'; + print ''; print ''; print ''; print ''; @@ -399,12 +399,12 @@ if ($resql) $staticmember->name = $obj->company; } $staticmember->ref = $staticmember->getFullName($langs); - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; print ''; //print ''; - print ''; + print ''; print ''; $i++; } From 02ec28281296c16044ecd714230ad935625eb3f0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 May 2020 03:34:30 +0200 Subject: [PATCH 439/780] 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 3cf6e6044db..9ad7d2cf55a 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1015,7 +1015,7 @@ LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. -RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps des not provide any reporting. Only few countries uses this type of tax. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps does not provide any reporting. Only few countries uses this type of tax. UseRevenueStamp=Use a tax stamp UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) CalcLocaltax=Reports on local taxes From a8dcd2d09b2a933f1e5525340e4db31786aece88 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 May 2020 11:53:13 +0200 Subject: [PATCH 440/780] Clean code --- htdocs/core/class/conf.class.php | 2 -- htdocs/core/lib/functions.lib.php | 26 +++++++------------------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 0a52301e608..dee4edc3298 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -690,8 +690,6 @@ class Conf $this->global->AGENDA_DEFAULT_FILTER_TYPE = '0'; // 'AC_NON_AUTO' does not exists when AGENDA_DEFAULT_FILTER_TYPE is not on. } - if (!isset($this->global->MAIN_USE_OLD_TITLE_BUTTON)) $this->global->MAIN_USE_OLD_TITLE_BUTTON = 0; - if (!isset($this->global->MAIN_JS_GRAPH)) $this->global->MAIN_JS_GRAPH = 'chart'; // Use chart.js library if (empty($this->global->MAIN_MODULE_DOLISTORE_API_SRV)) $this->global->MAIN_MODULE_DOLISTORE_API_SRV = 'https://www.dolistore.com'; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 89e76156448..5f31b07214c 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4523,15 +4523,17 @@ function print_fleche_navigation($page, $file, $options = '', $nextpage = 0, $be } if ($page > 0) { - print ''; + print ''; } if ($betweenarrows) { + print ''; print $betweenarrows; + print ''; } if ($nextpage > 0) { - print ''; + print ''; } if ($afterarrows) { @@ -8623,11 +8625,8 @@ function dolGetButtonTitle($label, $helpText = '', $iconClass = 'fa fa-file', $u } $class = 'btnTitle'; + if ($iconClass == 'fa fa-plus-circle') $class .= ' btnTitlePlus'; - // hidden conf keep during button transition TODO: remove this block - if (!empty($conf->global->MAIN_USE_OLD_TITLE_BUTTON)) { - $class = 'butActionNew'; - } if (!empty($params['morecss'])) $class .= ' '.$params['morecss']; $attr = array( @@ -8642,11 +8641,6 @@ function dolGetButtonTitle($label, $helpText = '', $iconClass = 'fa fa-file', $u if ($status <= 0) { $attr['class'] .= ' refused'; - // hidden conf keep during button transition TODO: remove this block - if (!empty($conf->global->MAIN_USE_OLD_TITLE_BUTTON)) { - $attr['class'] = 'butActionNewRefused'; - } - $attr['href'] = ''; if ($status == -1) { // disable @@ -8698,18 +8692,12 @@ function dolGetButtonTitle($label, $helpText = '', $iconClass = 'fa fa-file', $u $tag = (empty($attr['href']) ? 'span' : 'a'); - $button = '<'.$tag.' '.$compiledAttributes.' >'; + $button = ''; + $button .= '<'.$tag.' '.$compiledAttributes.' >'; $button .= ''; $button .= ''.$label.''; $button .= ''; - // hidden conf keep during button transition TODO: remove this block - if (!empty($conf->global->MAIN_USE_OLD_TITLE_BUTTON)) { - $button = '<'.$tag.' '.$compiledAttributes.' >'.$label.''; - $button .= ''; - $button .= ''; - } - return $button; } From a2bc46f1c012346c5c0ee5f006c5bd59ccd988ea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 May 2020 12:50:24 +0200 Subject: [PATCH 441/780] CSS --- htdocs/core/ajax/ajaxdirtree.php | 4 ++-- htdocs/core/lib/agenda.lib.php | 6 +++--- htdocs/resource/class/html.formresource.class.php | 5 +++-- htdocs/theme/eldy/global.inc.php | 12 +++++++++--- htdocs/theme/eldy/info-box.inc.php | 11 +++++------ 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/htdocs/core/ajax/ajaxdirtree.php b/htdocs/core/ajax/ajaxdirtree.php index 04687b77829..3e54532668a 100644 --- a/htdocs/core/ajax/ajaxdirtree.php +++ b/htdocs/core/ajax/ajaxdirtree.php @@ -428,11 +428,11 @@ function treeOutputForAbsoluteDir($sqltree, $selecteddir, $fullpathselecteddir, print (isset($val['cachenbofdoc']) && $val['cachenbofdoc'] >= 0) ? $val['cachenbofdoc'] : ' '; print ''; print ''; // Edit link - print ''; diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index 532ef091698..5d450aa4b04 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -109,9 +109,9 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh // Resource print ''; - print ''; @@ -158,7 +158,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh { // Filter on hours print ''; - print ''; + print ''; print "'; } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 8f2e0973ab3..44fb0865682 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -5387,11 +5387,11 @@ class Product extends CommonObject $label_type = 'short_label'; } - $sql = 'select '.$label_type.' from '.MAIN_DB_PREFIX.'c_units where rowid='.$this->fk_unit; + $sql = 'select '.$label_type.', code from '.MAIN_DB_PREFIX.'c_units where rowid='.$this->fk_unit; $resql = $this->db->query($sql); if ($resql && $this->db->num_rows($resql) > 0) { $res = $this->db->fetch_array($resql); - $label = $res[$label_type]; + $label = $label_type == 'short' ? $res[$label_type] : $langs->trans('unit' . $res['code']); $this->db->free($resql); return $label; } From 64d2f906bc7cdf2c4bbcb733ca4668ce7eae868e Mon Sep 17 00:00:00 2001 From: atm-greg Date: Mon, 11 May 2020 16:35:58 +0200 Subject: [PATCH 443/780] fix visibility of extrafields in public interface --- htdocs/public/ticket/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/public/ticket/list.php b/htdocs/public/ticket/list.php index 1a18954994f..a7f9b49fd58 100644 --- a/htdocs/public/ticket/list.php +++ b/htdocs/public/ticket/list.php @@ -235,7 +235,7 @@ if ($action == "view_ticketlist") if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) { foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { if ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate') { - $arrayfields["ef.".$key] = array('label' => $extrafields->attributes[$object->table_element]['label'][$key], 'checked' => $extrafields->attributes[$object->table_element]['list'][$key], 'position' => $extrafields->attributes[$object->table_element]['pos'][$key], 'enabled' => $extrafields->attributes[$object->table_element]['perms'][$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]); } } } From 097de7b3cd934e67a00cb0a9c82bc02e6c47d838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 11 May 2020 18:34:54 +0200 Subject: [PATCH 444/780] Only add empty select if no multiselect --- htdocs/core/class/html.formactions.class.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index 8aa51a66ab7..398e2b8a235 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -353,10 +353,13 @@ class FormActions require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; $caction = new CActionComm($this->db); - // Suggest a list with manual events or all auto events - $arraylist = $caction->liste_array(1, 'code', $excludetype, $onlyautoornot); - array_unshift($arraylist, ' '); // Add empty line at start - //asort($arraylist); + // Suggest a list with manual events or all auto events + $arraylist = $caction->liste_array(1, 'code', $excludetype, $onlyautoornot); + if (empty($multiselect)) { + // Add empty line at start only if no multiselect + array_unshift($arraylist, ' '); + } + //asort($arraylist); if ($selected == 'manual') $selected = 'AC_OTH'; if ($selected == 'auto') $selected = 'AC_OTH_AUTO'; From 3a46d5a3dddaf7b581f11867cbbd4ee1cd74d9b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 11 May 2020 18:46:54 +0200 Subject: [PATCH 445/780] Update agenda_other.php --- htdocs/admin/agenda_other.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/agenda_other.php b/htdocs/admin/agenda_other.php index 10bfa13d1ce..c5b196146d5 100644 --- a/htdocs/admin/agenda_other.php +++ b/htdocs/admin/agenda_other.php @@ -81,8 +81,10 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) } if ($action == 'set') { + $getDefaultFilter = GETPOST('AGENDA_DEFAULT_FILTER_TYPE'); + $defaultfilter = (is_array($getDefaultFilter)) ? implode(',', $getDefaultFilter) : $getDefaultFilter; dolibarr_set_const($db, 'AGENDA_USE_EVENT_TYPE_DEFAULT', GETPOST('AGENDA_USE_EVENT_TYPE_DEFAULT'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, 'AGENDA_DEFAULT_FILTER_TYPE', GETPOST('AGENDA_DEFAULT_FILTER_TYPE'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, 'AGENDA_DEFAULT_FILTER_TYPE', $defaultfilter, 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, 'AGENDA_DEFAULT_FILTER_STATUS', GETPOST('AGENDA_DEFAULT_FILTER_STATUS'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, 'AGENDA_DEFAULT_VIEW', GETPOST('AGENDA_DEFAULT_VIEW'), 'chaine', 0, '', $conf->entity); } @@ -377,7 +379,12 @@ print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; // AGENDA_DEFAULT_FILTER_STATUS From 44d36815bd88eff1960f560de635a37f1cfcbfc7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 May 2020 19:00:27 +0200 Subject: [PATCH 446/780] Look and feel v12 --- htdocs/comm/mailing/card.php | 2 +- htdocs/comm/mailing/list.php | 2 +- htdocs/core/lib/functions.lib.php | 10 ++++++---- htdocs/core/modules/modCollab.class.php | 2 +- htdocs/core/modules/modWebsite.class.php | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php index 68a6b8db331..e3cb5a9ad97 100644 --- a/htdocs/comm/mailing/card.php +++ b/htdocs/comm/mailing/card.php @@ -742,7 +742,7 @@ if ($action == 'create') // Print mail form - print load_fiche_titre($langs->trans("NewMailing"), $availablelink, 'generic'); + print load_fiche_titre($langs->trans("NewMailing"), $availablelink, 'object_email'); dol_fiche_head(); diff --git a/htdocs/comm/mailing/list.php b/htdocs/comm/mailing/list.php index 8feaa5a4d93..8119224bbfa 100644 --- a/htdocs/comm/mailing/list.php +++ b/htdocs/comm/mailing/list.php @@ -188,7 +188,7 @@ if ($resql) print ''; print ''; - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'generic', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'object_email', 0, $newcardbutton, '', $limit, 0, 0, 1); $moreforfilter = ''; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 5f31b07214c..20094da216c 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3158,13 +3158,13 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'object_category', 'object_conversation', 'object_bookmark', 'object_bug', 'object_dolly', 'object_dollyrevert', 'object_generic', 'object_folder', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_company', 'object_contact', 'object_contract', 'object_donation', 'object_dynamicprice', - 'object_holiday', 'object_hrm', 'object_invoice', 'object_intervention', 'object_label', + 'object_globe', 'object_holiday', 'object_hrm', 'object_invoice', 'object_intervention', 'object_label', 'object_margin', 'object_money-bill-alt', 'object_multicurrency', 'object_order', 'object_payment', 'object_lot', 'object_mrp', 'object_payment', 'object_product', 'object_propal', 'object_other', 'object_paragraph', 'object_poll', 'object_printer', 'object_project', 'object_projectpub', 'object_propal', 'object_resource', 'object_rss', 'object_projecttask', 'object_shipment', 'object_supplier_invoice', 'object_supplier_order', 'object_supplier_proposal', 'object_service', 'object_stock', 'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member', - 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', + 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', 'object_website', 'off', 'on', 'order', 'paiment', 'play', 'playdisabled', 'poll', 'printer', 'product', 'propal', 'projecttask', 'stock', 'resize', 'service', 'stats', 'trip', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', @@ -3213,7 +3213,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach', 'title_agenda'=>'calendar-alt', 'uparrow'=>'mail-forward', - 'jabber'=>'comment-o' + 'jabber'=>'comment-o', + 'website'=>'globe-americas' ); if ($pictowithouttext == 'off') { $fakey = 'fa-square'; @@ -3292,7 +3293,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'map-marker-alt'=>'#aaa', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944', 'other'=>'#ddd', 'playdisabled'=>'#ccc', 'printer'=>'#444', 'projectpub'=>'#986c6a', 'resize'=>'#444', 'rss'=>'#cba', - 'shipment'=>'#a69944', 'stats'=>'#444', 'switch_off'=>'#999', 'uparrow'=>'#555', 'globe-americas'=>'#aaa' + 'shipment'=>'#a69944', 'stats'=>'#444', 'switch_off'=>'#999', 'uparrow'=>'#555', 'globe-americas'=>'#aaa', + 'website'=>'#304' ); if (isset($arrayconvpictotocolor[$pictowithouttext])) { $facolor = $arrayconvpictotocolor[$pictowithouttext]; diff --git a/htdocs/core/modules/modCollab.class.php b/htdocs/core/modules/modCollab.class.php index 5190c8c4d72..345a292cb92 100644 --- a/htdocs/core/modules/modCollab.class.php +++ b/htdocs/core/modules/modCollab.class.php @@ -55,7 +55,7 @@ class modCollab extends DolibarrModules // Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase) $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); // Name of image file used for this module. - $this->picto = 'globe'; + $this->picto = 'website'; // Data directories to create when module is enabled $this->dirs = array("/collab/temp"); diff --git a/htdocs/core/modules/modWebsite.class.php b/htdocs/core/modules/modWebsite.class.php index 3e3b4bae374..60cc93b5d39 100644 --- a/htdocs/core/modules/modWebsite.class.php +++ b/htdocs/core/modules/modWebsite.class.php @@ -55,7 +55,7 @@ class modWebsite extends DolibarrModules // Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase) $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); // Name of image file used for this module. - $this->picto = 'globe'; + $this->picto = 'website'; // Data directories to create when module is enabled $this->dirs = array("/website/temp"); From c4a7923b51a449a86f1fedc50cef32c9feb745ae Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 May 2020 19:02:52 +0200 Subject: [PATCH 447/780] CSS --- htdocs/theme/eldy/global.inc.php | 2 +- htdocs/theme/md/style.css.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 8a21844ca7c..b6884b164a1 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -880,7 +880,7 @@ select.flat.selectlimit { max-width: 0; overflow: auto; } -.divintdwithtwolinesmax { +.divintowithtwolinesmax { width: 75px; display: -webkit-box; -webkit-box-orient: vertical; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 71fbb6f50da..40e8c5e27b4 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -983,7 +983,7 @@ select.flat.selectlimit { max-width: 0; overflow: auto; } -.divintdwithtwolinesmax { +.divintodwithtwolinesmax { width: 75px; display: -webkit-box; -webkit-box-orient: vertical; From 4d50ba5e370a57c7168e6f4cd2dd4f336fe3d361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 11 May 2020 20:42:47 +0200 Subject: [PATCH 448/780] Fix dolistore search with csrf active --- htdocs/admin/dolistore/ajax/image.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/admin/dolistore/ajax/image.php b/htdocs/admin/dolistore/ajax/image.php index c1bb4e997dc..6349c7461b5 100644 --- a/htdocs/admin/dolistore/ajax/image.php +++ b/htdocs/admin/dolistore/ajax/image.php @@ -1,6 +1,7 @@ . * Copyright (C) 2008-2011 Laurent Destailleur + * Copyright (C) 2020 Frédéric France * * This program is free software; you can redistribute it and/or modifyion 2.0 (the "License"); * it under the terms of the GNU General Public License as published bypliance with the License. @@ -17,6 +18,9 @@ */ if (!defined('REQUIRE_JQUERY_BLOCKUI')) define('REQUIRE_JQUERY_BLOCKUI', 1); +if (!defined('NOTOKENRENEWAL')) { + define('NOTOKENRENEWAL', 1); +} /** From 75cd7d7e723103fa0edadcb8860a77e908f7e6bb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 03:04:48 +0200 Subject: [PATCH 449/780] Code comment --- htdocs/core/class/commonobjectline.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/commonobjectline.class.php b/htdocs/core/class/commonobjectline.class.php index 5a09dbfed29..f04e2da11ee 100644 --- a/htdocs/core/class/commonobjectline.class.php +++ b/htdocs/core/class/commonobjectline.class.php @@ -54,8 +54,8 @@ abstract class CommonObjectLine extends CommonObject * Returns the translation key from units dictionary. * A langs->trans() must be called on result to get translated value. * - * @param string $type Label type (long or short) - * @return string|int <0 if ko, label if ok + * @param string $type Label type (long or short). This can be a translation key. + * @return string|int <0 if ko, label if ok */ public function getLabelOfUnit($type = 'long') { From d459f9902c7bbc601cf4eda76a4803d65bc3f194 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 03:06:30 +0200 Subject: [PATCH 450/780] Update card.php --- htdocs/product/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index d58e5f8f742..87e86e8e0bc 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -2099,7 +2099,7 @@ else print ''; } From a0998583852dd9ff3a946703210be6aaed326399 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 03:07:23 +0200 Subject: [PATCH 451/780] Update product.class.php --- 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 44fb0865682..2a56131bdd5 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -5391,7 +5391,7 @@ class Product extends CommonObject $resql = $this->db->query($sql); if ($resql && $this->db->num_rows($resql) > 0) { $res = $this->db->fetch_array($resql); - $label = $label_type == 'short' ? $res[$label_type] : $langs->trans('unit' . $res['code']); + $label = ($label_type == 'short' ? $res[$label_type] : 'unit'.$res['code']); $this->db->free($resql); return $label; } From 92d137cde90c6e2ad9c0ac42f46157badf624708 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 03:09:04 +0200 Subject: [PATCH 452/780] Update list.php --- htdocs/product/stock/list.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index c13243fc9cb..74c2c21cadf 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -549,12 +549,15 @@ if ($num) { print ''; if ($key == 'statut') print $warehouse->getLibStatut(5); - if ($key == 'phone') - { + if ($key == 'phone') { print dol_print_phone($obj->phone, '', 0, $obj->rowid, 'AC_TEL'); } - elseif ($key == 'fax') print dol_print_phone($obj->fax, '', 0, $obj->rowid, 'AC_FAX'); - else print $warehouse->showOutputField($val, $key, $warehouse->$key, ''); + elseif ($key == 'fax') { + print dol_print_phone($obj->fax, '', 0, $obj->rowid, 'AC_FAX'); + } + else { + print $warehouse->showOutputField($val, $key, $warehouse->$key, ''); + } print ''; if (!$i) $totalarray['nbfield']++; if (!empty($val['isameasure'])) From 6706d28eb7f166754cedbb64c106a1fd3c62cff3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 03:15:19 +0200 Subject: [PATCH 453/780] Update admin.lang --- 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 e97ed8dbc54..7669378aff4 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1272,7 +1272,7 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user -UserHideInactive=Hide inactive users +UserHideInactive=Hide inactive users from all combo lists of users (this may means you won't be able to filter on old users) UsersDocModules=Document templates for documents generated from user record GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### From 3c8452aa3131eb6391ea21edf1a4315370f02d85 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 03:17:55 +0200 Subject: [PATCH 454/780] Update admin.lang --- 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 7669378aff4..c9be1ca2f41 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1272,7 +1272,7 @@ RuleForGeneratedPasswords=Rules to generate and validate passwords DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page UsersSetup=Users module setup UserMailRequired=Email required to create a new user -UserHideInactive=Hide inactive users from all combo lists of users (this may means you won't be able to filter on old users) +UserHideInactive=Hide inactive users from all combo lists of users (Not recommended: this may means you won't be able to filter or search on old users on some pages) UsersDocModules=Document templates for documents generated from user record GroupsDocModules=Document templates for documents generated from a group record ##### HRM setup ##### From e4611f29502f5e311e45e6f2eefc23aeab796b45 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 03:36:33 +0200 Subject: [PATCH 455/780] Fix filter on categories --- htdocs/compta/facture/stats/index.php | 38 +++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 8606e619740..284186b73ce 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -262,33 +262,33 @@ if ($mode == 'customer') $filter = 's.client in (1,2,3)'; if ($mode == 'supplier') $filter = 's.fournisseur = 1'; print $form->selectarray('socid', $companies, $socid, 1, 0, 0, 'style="width: 95%"', 0, 0, 0, '', '', 1); print ''; -if(! empty($conf->category->enabled) && $mode == 'customer') { - // Customer Category - print ''; -} + // ThirdParty Type print ''; + // Category -if ($mode == 'customer') -{ - $cat_type = Categorie::TYPE_CUSTOMER; - $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); +if (! empty($conf->category->enabled)) { + if ($mode == 'customer') + { + $cat_type = Categorie::TYPE_CUSTOMER; + $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Customer")); + } + if ($mode == 'supplier') + { + $cat_type = Categorie::TYPE_SUPPLIER; + $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Supplier")); + } + print ''; } -if ($mode == 'supplier') -{ - $cat_type = Categorie::TYPE_SUPPLIER; - $cat_label = $langs->trans("Category").' '.lcfirst($langs->trans("Supplier")); -} -print ''; + // User print ''; + print ''; print ''; print ''; print ''; print "\n"; - print "\n"; print ''; } From d9e26b8569404f2a47329c9a8ff26d5c0cd4af27 Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Tue, 12 May 2020 08:38:03 +0200 Subject: [PATCH 457/780] fix template email on prpal list --- htdocs/comm/propal/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index eaeea9e3d43..522e8f5eaa3 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -468,7 +468,7 @@ if ($resql) print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'commercial', 0, $newcardbutton, '', $limit); $topicmail = "SendPropalRef"; - $modelmail = "proposal_send"; + $modelmail = "propal_send"; $objecttmp = new Propal($db); $trackid = 'pro'.$object->id; include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; From 66beb7c14f9b88bb2aa1388f3f3a1356f80e460a Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Tue, 12 May 2020 10:17:47 +0200 Subject: [PATCH 458/780] FIX: Do not show stats panel if the user does not have permissions --- htdocs/comm/card.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index fcd3823b0c2..82e331eb623 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -5,7 +5,7 @@ * Copyright (C) 2006 Andre Cianfarani * Copyright (C) 2005-2017 Regis Houssin * Copyright (C) 2008 Raphael Bertrand (Resultic) - * Copyright (C) 2010-2014 Juanjo Menent + * Copyright (C) 2010-2020 Juanjo Menent * Copyright (C) 2013 Alexandre Spangaro * Copyright (C) 2015-2019 Frédéric France * Copyright (C) 2015 Marcos García @@ -581,7 +581,7 @@ if ($object->id > 0) $boxstat .= '
'.$langs->trans("NbOfAttachedFiles").''.count($filearray).'
'.$langs->trans("TotalSizeOfAttachedFiles").''.dol_print_size($totalsize, 1, 1).'
'; + print ''; print $langs->trans("Type"); - print ''; + print ''; $multiselect = 0; if (!empty($conf->global->MAIN_ENABLE_MULTISELECT_TYPE)) // We use an option here because it adds bugs when used on agenda page "peruser" and "list" { $multiselect = (!empty($conf->global->AGENDA_USE_EVENT_TYPE)); } - print ''; - print $formactions->select_type_actions($actioncode, "search_actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : -1), 0, $multiselect); + print ''; + print $formactions->select_type_actions($actioncode, "search_actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : -1), 0, $multiselect, 0, 'maxwidth500'); print '
'; + print ''; print $langs->trans("ActionsToDoBy").'   '; - print ''; - print img_picto('', 'user'); - print $form->select_dolusers($filtert, 'search_filtert', 1, '', !$canedit, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); + print ''; + print img_picto('', 'user', 'class="fawidth30 inline-block"'); + print $form->select_dolusers($filtert, 'search_filtert', 1, '', !$canedit, '', '', 0, 0, 0, '', 0, '', 'maxwidth500'); if (empty($conf->dol_optimize_smallscreen)) print '   '.$langs->trans("or").' '.$langs->trans("ToUserOfGroup").'   '; - print $form->select_dolgroups($usergroupid, 'usergroup', 1, '', !$canedit); + else print '
'; + print img_picto('', 'object_group', 'class="fawidth30 inline-block"'); + print $form->select_dolgroups($usergroupid, 'usergroup', 1, '', !$canedit, '', '', '0', false, 'maxwidth500'); print '
'; print $langs->trans("Resource"); - print ''; - print img_picto('', 'object_resource'); - print $formresource->select_resource_list($resourceid, "search_resourceid", '', 1, 0, 0, null, '', 2); + print ''; + print img_picto('', 'object_resource', 'class="fawidth30 inline-block"'); + print $formresource->select_resource_list($resourceid, "search_resourceid", '', 1, 0, 0, null, '', 2, 0, 'maxwidth500'); print '
'; + print ''; print $langs->trans("ThirdParty").'   '; - print ''; - print img_picto('', 'company'); - print $form->select_company($socid, 'search_socid', '', ' ', 0, 0, null, 0); + print ''; + print img_picto('', 'company', 'class="fawidth30 inline-block"'); + print $form->select_company($socid, 'search_socid', '', ' ', 0, 0, null, 0, 'minwidth100 maxwidth500'); print '
'; + print ''; print $langs->trans("Project").'   '; - print ''; - print img_picto('', 'project'); + print ''; + print img_picto('', 'project', 'class="fawidth30 inline-block"'); print $formproject->select_projects($socid ? $socid : -1, $pid, 'search_projectid', 0, 0, 1, 0, 0, 0, 0, '', 1, 0, 'maxwidth500'); print '
'; + print ''; print $langs->trans("Status"); - print '  '; + print '  '; $formactions->form_select_status_action('formaction', $status, 1, 'search_status', 1, 2, 'minwidth100'); print '
'.$staticmember->getNomUrl(1, 32).''.$staticmember->getNomUrl(1, 32).''.$statictype->getNomUrl(1, 32).''.dol_print_date($db->jdate($obj->datem), 'dayhour').''.$staticmember->LibStatut($obj->statut, ($obj->subscription == 'yes' ? 1 : 0), $db->jdate($obj->date_end_subscription), 3).''.$subscriptionstatic->getNomUrl(1).''.$staticmember->getNomUrl(1, 32, 'subscription').''.get_date_range($db->jdate($obj->date_start), $db->jdate($obj->date_end)).''.$subscriptionstatic->getNomUrl(1).''.$staticmember->getNomUrl(1, 32, 'subscription').''.get_date_range($db->jdate($obj->date_start), $db->jdate($obj->date_end)).''.price($obj->subscription).''.$staticmember->LibStatut($obj->statut,($obj->subscription=='yes'?1:0),$db->jdate($obj->date_end_subscription),5).''.dol_print_date($db->jdate($obj->datem ? $obj->datem : $obj->datec), 'dayhour').''.dol_print_date($db->jdate($obj->datem ? $obj->datem : $obj->datec), 'dayhour').'
'; - if ($nbofsubdir > 0 && $nboffilesinsubdir > 0) print '+'.$nboffilesinsubdir.' '; + if ($nbofsubdir > 0 && $nboffilesinsubdir > 0) print '+'.$nboffilesinsubdir.' '; print ''.img_edit($langs->trans("Edit").' - '.$langs->trans("View"), 0, 'class="valignmiddle opacitymedium"').'
'; + print ''; print $langs->trans("Resource"); - print ''; + print ''; print img_picto('', 'object_resource', 'class="fawidth30 inline-block"'); print $formresource->select_resource_list($resourceid, "search_resourceid", '', 1, 0, 0, null, '', 2, 0, 'maxwidth500'); print '
'.$langs->trans("VisibleTimeRange").''.$langs->trans("VisibleTimeRange").'"; print '
'; print ''; diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php index 36d3fc854cc..4836ed1a0f1 100644 --- a/htdocs/resource/class/html.formresource.class.php +++ b/htdocs/resource/class/html.formresource.class.php @@ -101,10 +101,12 @@ class FormResource { //$minLength = (is_numeric($conf->global->RESOURCE_USE_SEARCH_TO_SELECT)?$conf->global->RESOURCE_USE_SEARCH_TO_SELECT:2); $out .= ajax_combobox($htmlname, $event, $conf->global->RESOURCE_USE_SEARCH_TO_SELECT); + } else { + $out .= ajax_combobox($htmlname); } // Construct $out and $outarray - $out .= ''."\n"; if ($showempty) $out .= ''."\n"; $num = 0; @@ -137,7 +139,6 @@ class FormResource } } $out .= ''."\n"; - $out .= ajax_combobox($htmlname); if ($outputmode != 2) { diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index dc0c77ed67d..8a21844ca7c 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1899,8 +1899,8 @@ div.tmenuleft } div.tmenucenter { - padding-left: 0px; - padding-right: 3px; + padding-left: 2px; + padding-right: 2px; padding-top: 8px; height: 26px; @@ -3600,6 +3600,12 @@ ul.noborder li:nth-child(even):not(.liste_titre) { @media only screen and (max-width: 767px) { + a.tmenu:link, a.tmenu:visited, a.tmenu:hover, a.tmenu:active { + padding: 0px 0px 0px 0px; + } + a.tmenusel:link, a.tmenusel:visited, a.tmenusel:hover, a.tmenusel:active { + padding: 0px 0px 0px 0px; + } .boxstats, .boxstats130 { margin: 3px; } @@ -4882,7 +4888,7 @@ ul.ecmjqft li { ul.ecmjqft a { line-height: 24px; vertical-align: middle; - color: #333; + color: unset; padding: 0px 0px; font-weight:normal; display: inline-block !important; diff --git a/htdocs/theme/eldy/info-box.inc.php b/htdocs/theme/eldy/info-box.inc.php index 7f62fe39689..3138cd8bfd9 100644 --- a/htdocs/theme/eldy/info-box.inc.php +++ b/htdocs/theme/eldy/info-box.inc.php @@ -15,10 +15,11 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> display: block; position: relative; min-height: 90px; - background: #fff; + /* background: #fff; */ width: 100%; - box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2), 0px 0px 2px rgba(0, 0, 0, 0.1); - border-radius: 2px; + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); + border-radius: 2px; + border: 1px solid #eee; margin-bottom: 15px; } .info-box.info-box-sm{ @@ -67,7 +68,7 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> text-align: center; font-size: 45px; line-height: 90px; - background: rgba(0, 0, 0, 0.2); + background: rgba(0, 0, 0, 0.08) !important } .info-box-sm .info-box-icon { height: 80px; @@ -203,8 +204,6 @@ if (GETPOSTISSET('THEME_AGRESSIVENESS_RATIO')) $conf->global->THEME_AGRESSIVENES .info-box-icon { color: #fff !important; - - background-color: #eee !important; opacity: 0.95; } From 65011c28771601aab882785dd0b1621a6c1f994d Mon Sep 17 00:00:00 2001 From: Tim Otte Date: Mon, 11 May 2020 15:11:23 +0200 Subject: [PATCH 442/780] Fixed the product unit translation --- htdocs/product/card.php | 2 +- htdocs/product/class/product.class.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 87e86e8e0bc..d58e5f8f742 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -2099,7 +2099,7 @@ else print '
'.$langs->trans('DefaultUnitToShow').''; if ($unit !== '') { - print $langs->trans($unit); + print $unit; } print '
'.$langs->trans("AGENDA_DEFAULT_FILTER_TYPE").' '."\n"; -$formactions->select_type_actions($conf->global->AGENDA_DEFAULT_FILTER_TYPE, "AGENDA_DEFAULT_FILTER_TYPE", '', (empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : -1), 1); +$multiselect = 0; +if (!empty($conf->global->MAIN_ENABLE_MULTISELECT_TYPE)) { + // We use an option here because it adds bugs when used on agenda page "peruser" and "list" + $multiselect = (!empty($conf->global->AGENDA_USE_EVENT_TYPE)); +} +$formactions->select_type_actions($conf->global->AGENDA_DEFAULT_FILTER_TYPE, "AGENDA_DEFAULT_FILTER_TYPE", '', (empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : -1), 1, $multiselect); print '
'.$langs->trans('DefaultUnitToShow').''; if ($unit !== '') { - print $unit; + print $langs->trans($unit); } print '
'.$langs->trans("CustomersProspectsCategoriesShort").''; - $cate_arbo = $form->select_all_categories(Categorie::TYPE_CUSTOMER, null, 'parent', null, null, 1); - print $form->multiselectarray('custcats', $cate_arbo, GETPOST('custcats', 'array'), null, null, null, null, "90%"); - print '
'.$langs->trans("ThirdPartyType").''; $sortparam_typent = (empty($conf->global->SOCIETE_SORT_ON_TYPEENT) ? 'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT); // NONE means we keep sort of original array, so we sort on position. ASC, means next function will sort on label. print $form->selectarray("typent_id", $formcompany->typent_array(0), $typent_id, 0, 0, 0, '', 0, 0, 0, $sortparam_typent); if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '
'.$cat_label.''; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_CUSTOMER, null, 'parent', null, null, 1); + print $form->multiselectarray('custcats', $cate_arbo, GETPOST('custcats', 'array'), null, null, null, null, "90%"); + //print $formother->select_categories($cat_type, $categ_id, 'categ_id', true); + print '
'.$cat_label.''; -print $formother->select_categories($cat_type, $categ_id, 'categ_id', true); -print '
'.$langs->trans("CreatedBy").''; print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); From 0dccc9cbeb734ebdba69ed29354ec42fc7d3677f Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Tue, 12 May 2020 07:27:20 +0200 Subject: [PATCH 456/780] Debug colspan --- htdocs/accountancy/bookkeeping/balance.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index 7b99057f73a..85562ebc268 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -302,12 +302,11 @@ if ($action != 'export_csv') if (empty($displayed_account) || $root_account_description != $displayed_account) { // Affiche un Sous-Total par compte comptable if ($displayed_account != "") { - print '
' . $langs->trans("SubTotal") . ':
' . $langs->trans("SubTotal") . ':' . price($sous_total_debit) . '' . price($sous_total_credit) . '' . price(price2num($sous_total_credit - $sous_total_debit)) . '
'; $boxstat .= ''; - // Delivery date planed - print ""; + // Date delivery planned + print ''; + print '\n"; + print ''; // terms of the settlement print ''; - // Date delivery planned - print ''; - print '\n"; - print ''; + // Date delivery planned + print ''; + print '\n"; + print ''; // terms of the settlement print ''; - // Date delivery planned - print ''; - print '\n"; - print ''; + // Date delivery planned + print ''; + print '\n"; + print ''; // terms of the settlement print ''; - // Date delivery planned - print ''; - print '\n"; - print ''; + // Date delivery planned + print ''; + print '\n"; + print ''; // terms of the settlement print ''; print ''; print ''; if (!$i) $totalarray['nbfield']++; } From 8bd1179b8207671f4d33d8f6d156c453b7bf8239 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Tue, 12 May 2020 17:03:24 +0200 Subject: [PATCH 473/780] Update qr.php --- htdocs/takepos/genimg/qr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/genimg/qr.php b/htdocs/takepos/genimg/qr.php index 99f7fced1d0..3f27464f5ca 100644 --- a/htdocs/takepos/genimg/qr.php +++ b/htdocs/takepos/genimg/qr.php @@ -33,4 +33,4 @@ $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', t $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file $module = new modTcpdfbarcode($db); -$result = $module->buildBarCode($urlwithroot."/takepos/auto_order.php?key=".dol_encode($key), 'QRCODE', 'Y'); +$result = $module->buildBarCode($urlwithroot."/takepos/public/auto_order.php?key=".dol_encode($key), 'QRCODE', 'Y'); From fc2f2c6da71b6c4f7f0b16216f0fba320b52ba1d Mon Sep 17 00:00:00 2001 From: gauthier Date: Tue, 12 May 2020 17:41:21 +0200 Subject: [PATCH 474/780] FIX : wrong url param --- 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 9fa696c69b3..cb3aa9cd099 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -4837,7 +4837,7 @@ elseif ($id > 0 || ! empty($ref)) { if (! $objectidnext) { - print ''; + print ''; } } From 366ae2f116cfaaed73e07a4b06d0a596ded92582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 12 May 2020 18:44:26 +0200 Subject: [PATCH 475/780] Update dolistore.class.php --- .../admin/dolistore/class/dolistore.class.php | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/htdocs/admin/dolistore/class/dolistore.class.php b/htdocs/admin/dolistore/class/dolistore.class.php index 230c588f7e4..a229f3c985d 100644 --- a/htdocs/admin/dolistore/class/dolistore.class.php +++ b/htdocs/admin/dolistore/class/dolistore.class.php @@ -248,11 +248,8 @@ class Dolistore // phpcs:enable global $langs, $conf; $html = ""; - $parity = "pair"; $last_month = time() - (30 * 24 * 60 * 60); foreach ($this->products as $product) { - $parity = ($parity == "impair") ? 'pair' : 'impair'; - // check new product ? $newapp = ''; if ($last_month < strtotime($product->date_add)) { @@ -267,7 +264,7 @@ class Dolistore // add image or default ? if ($product->id_default_image != '') { $image_url = DOL_URL_ROOT.'/admin/dolistore/ajax/image.php?id_product='.$product->id.'&id_image='.$product->id_default_image; - $images = ''; + $images = ''; $images .= ''; } else { $images = ''; @@ -306,16 +303,16 @@ class Dolistore //.'
'.$langs->trans("SeeInMarkerPlace").' //output template - $html .= '
+ $html .= ' - - - - '; + '.dol_print_date(dol_stringtotime($product->date_upd), 'dayhour').' - '.$langs->trans('Ref').': '.$product->reference.' - '.$langs->trans('Id').': '.$product->id.'

'.$product->description_short->language[$this->lang - 1].''; + // do not load if display none + //$html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; } return $html; } From 410694100d911de889d06f59f43756e6df849b4e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 23:42:01 +0200 Subject: [PATCH 476/780] CSS --- htdocs/theme/eldy/global.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 68e16afecd0..ef39d38a568 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1707,6 +1707,7 @@ div.statusref { margin-top: 8px; margin-bottom: 10px; clear: both; + text-align: right; } div.statusref img { padding-left: 8px; From 63d6b3c47d5629082628cfd08d1a15ad13309149 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 23:44:50 +0200 Subject: [PATCH 477/780] Look and feel v12 --- htdocs/contrat/card.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 25857767e80..9f825cdf009 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1452,7 +1452,7 @@ else print '
'; - if (!empty($conf->propal->enabled)) + if (!empty($conf->propal->enabled) && $user->rights->propal->lire) { // Box proposals $tmp = $object->getOutstandingProposals(); @@ -599,7 +599,7 @@ if ($object->id > 0) if ($link) $boxstat .= ''; } - if (!empty($conf->commande->enabled)) + if (!empty($conf->commande->enabled) && $user->rights->commande->lire) { // Box commandes $tmp = $object->getOutstandingOrders(); @@ -617,7 +617,7 @@ if ($object->id > 0) if ($link) $boxstat .= ''; } - if (!empty($conf->facture->enabled)) + if (!empty($conf->facture->enabled) && $user->rights->facture->lire) { // Box factures $tmp = $object->getOutstandingBills(); From e1db0ef855173bffda16735f7c4a836c8de68a50 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Tue, 12 May 2020 10:57:51 +0200 Subject: [PATCH 459/780] Update index.php --- htdocs/comm/mailing/index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/comm/mailing/index.php b/htdocs/comm/mailing/index.php index 61187f2e647..6b765d9451f 100644 --- a/htdocs/comm/mailing/index.php +++ b/htdocs/comm/mailing/index.php @@ -157,6 +157,7 @@ print '
'; $limit = 10; $sql = "SELECT m.rowid, m.titre, m.nbemail, m.statut, m.date_creat"; $sql .= " FROM ".MAIN_DB_PREFIX."mailing as m"; +$sql .= " WHERE m.entity = ".$conf->entity; $sql .= " ORDER BY m.date_creat DESC"; $sql .= " LIMIT ".$limit; $result = $db->query($sql); From c6e7b2e6a3281f14bd4b325b5cf4835e4108c487 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Tue, 12 May 2020 13:39:02 +0200 Subject: [PATCH 460/780] Fix date shipment from order better for pickup collection with date and hour from order --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 8a68e763160..95c6658c306 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -285,3 +285,5 @@ ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; ALTER TABLE llx_menu MODIFY COLUMN module varchar(255); UPDATE llx_actioncomm SET fk_action = 50 where fk_action = 40 AND code = 'TICKET_MSG'; + +ALTER TABLE llx_commande MODIFY COLUMN date_livraison DATETIME; From 014c013f834b5a90d5b8dddfc6f0af6fed6103f9 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Tue, 12 May 2020 13:40:31 +0200 Subject: [PATCH 461/780] Update card.php --- htdocs/commande/card.php | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 4764b53a5c9..a24e62cde97 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -557,14 +557,17 @@ if (empty($reshook)) } } - elseif ($action == 'setdate_livraison' && $usercancreate) { - // print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; - $datelivraison = dol_mktime(0, 0, 0, GETPOST('liv_month'), GETPOST('liv_day'), GETPOST('liv_year')); + elseif ($action == 'setdate_livraison' && $usercancreate) + { + //print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; + $datedelivery = dol_mktime(GETPOST('liv_hour', 'int'), GETPOST('liv_min', 'int'), 0, GETPOST('liv_month', 'int'), GETPOST('liv_day', 'int'), GETPOST('liv_year', 'int')); - $result = $object->set_date_livraison($user, $datelivraison); - if ($result < 0) { - setEventMessages($object->error, $object->errors, 'errors'); - } + $object->fetch($id); + $result = $object->set_date_livraison($user, $datedelivery); + if ($result < 0) + { + setEventMessages($object->error, $object->errors, 'errors'); + } } elseif ($action == 'setmode' && $usercancreate) { @@ -1681,15 +1684,14 @@ if ($action == 'create' && $usercancreate) print $form->selectDate('', 're', '', '', '', "crea_commande", 1, 1); // Always autofill date with current date print '
".$langs->trans("DateDeliveryPlanned").''; - if (empty($datedelivery)) - { - if (!empty($conf->global->DATE_LIVRAISON_WEEK_DELAY)) $datedelivery = time() + ((7 * $conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60); - else $datedelivery = empty($conf->global->MAIN_AUTOFILL_DATE_DELIVERY) ?-1 : ''; - } - print $form->selectDate($datedelivery, 'liv_', '', '', '', "crea_commande", 1, 1); - print "
'.$langs->trans("DateDeliveryPlanned").''; + //print dol_print_date($object->date_livraison, "day"); // date_livraison come from order and will be stored into date_delivery planed. + $date_delivery = ($date_delivery ? $date_delivery : $object->date_livraison); // $date_delivery comes from GETPOST + print $form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1); + print "
'.$langs->trans('PaymentConditionsShort').''; @@ -2209,11 +2211,11 @@ if ($action == 'create' && $usercancreate) print ''; print ''; print ''; - print $form->selectDate($object->date_livraison ? $object->date_livraison : - 1, 'liv_', '', '', '', "setdate_livraison"); + print $form->selectDate($object->date_delivery ? $object->date_delivery : -1, 'liv_', 1, 1, '', "setdate_livraison", 1, 0); print ''; print ''; } else { - print $object->date_livraison ? dol_print_date($object->date_livraison, 'daytext') : ' '; + print $object->date_livraison ? dol_print_date($object->date_livraison, 'dayhour') : ' '; if ($object->hasDelay() && !empty($object->date_livraison)) { print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning"); } From 9e49e02efb3f06e515640a84c62ec7b5f022c265 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 12 May 2020 11:42:18 +0000 Subject: [PATCH 462/780] Fixing style errors. --- htdocs/commande/card.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index a24e62cde97..f382ac85f8e 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1684,14 +1684,14 @@ if ($action == 'create' && $usercancreate) print $form->selectDate('', 're', '', '', '', "crea_commande", 1, 1); // Always autofill date with current date print '
'.$langs->trans("DateDeliveryPlanned").''; - //print dol_print_date($object->date_livraison, "day"); // date_livraison come from order and will be stored into date_delivery planed. - $date_delivery = ($date_delivery ? $date_delivery : $object->date_livraison); // $date_delivery comes from GETPOST - print $form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1); - print "
'.$langs->trans("DateDeliveryPlanned").''; + //print dol_print_date($object->date_livraison, "day"); // date_livraison come from order and will be stored into date_delivery planed. + $date_delivery = ($date_delivery ? $date_delivery : $object->date_livraison); // $date_delivery comes from GETPOST + print $form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1); + print "
'.$langs->trans('PaymentConditionsShort').''; From e1ff1bf865ac2dc2d440569050f4acacfea1dbad Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Tue, 12 May 2020 13:42:43 +0200 Subject: [PATCH 463/780] Update card.php --- htdocs/commande/card.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index f382ac85f8e..800193bc61e 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1684,14 +1684,14 @@ if ($action == 'create' && $usercancreate) print $form->selectDate('', 're', '', '', '', "crea_commande", 1, 1); // Always autofill date with current date print '
'.$langs->trans("DateDeliveryPlanned").''; - //print dol_print_date($object->date_livraison, "day"); // date_livraison come from order and will be stored into date_delivery planed. - $date_delivery = ($date_delivery ? $date_delivery : $object->date_livraison); // $date_delivery comes from GETPOST - print $form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1); - print "
'.$langs->trans("DateDeliveryPlanned").''; + //print dol_print_date($object->date_livraison, "day"); // date_livraison come from order and will be stored into date_delivery planed. + $date_delivery = ($date_delivery ? $date_delivery : $object->date_livraison); // $date_delivery comes from GETPOST + print $form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1); + print "
'.$langs->trans('PaymentConditionsShort').''; @@ -2211,7 +2211,7 @@ if ($action == 'create' && $usercancreate) print '
'; print ''; print ''; - print $form->selectDate($object->date_delivery ? $object->date_delivery : -1, 'liv_', 1, 1, '', "setdate_livraison", 1, 0); + print $form->selectDate($object->date_livraison ? $object->date_livraison : -1, 'liv_', 1, 1, '', "setdate_livraison", 1, 0); print ''; print '
'; } else { From 83ec39f55a1ed189b15b12eb4032dc3d17edb9fc Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 12 May 2020 11:44:12 +0000 Subject: [PATCH 464/780] Fixing style errors. --- htdocs/commande/card.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 800193bc61e..54661297939 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1684,14 +1684,14 @@ if ($action == 'create' && $usercancreate) print $form->selectDate('', 're', '', '', '', "crea_commande", 1, 1); // Always autofill date with current date print '
'.$langs->trans("DateDeliveryPlanned").''; - //print dol_print_date($object->date_livraison, "day"); // date_livraison come from order and will be stored into date_delivery planed. - $date_delivery = ($date_delivery ? $date_delivery : $object->date_livraison); // $date_delivery comes from GETPOST - print $form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1); - print "
'.$langs->trans("DateDeliveryPlanned").''; + //print dol_print_date($object->date_livraison, "day"); // date_livraison come from order and will be stored into date_delivery planed. + $date_delivery = ($date_delivery ? $date_delivery : $object->date_livraison); // $date_delivery comes from GETPOST + print $form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1); + print "
'.$langs->trans('PaymentConditionsShort').''; From 447c61cc15bcdc517db0554609424a2984493d12 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Tue, 12 May 2020 13:49:55 +0200 Subject: [PATCH 465/780] Update shipment.php --- htdocs/expedition/shipment.php | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index 75ee2ef4da3..a40d29d1d78 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -103,16 +103,17 @@ if (empty($reshook)) } if ($action == 'setdatedelivery' && $user->rights->commande->creer) - { - //print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; - $datelivraison = dol_mktime(0, 0, 0, GETPOST('liv_month', 'int'), GETPOST('liv_day', 'int'), GETPOST('liv_year', 'int')); + { + //print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; + $datedelivery = dol_mktime(GETPOST('liv_hour', 'int'), GETPOST('liv_min', 'int'), 0, GETPOST('liv_month', 'int'), GETPOST('liv_day', 'int'), GETPOST('liv_year', 'int')); - $object = new Commande($db); - $object->fetch($id); - $result = $object->set_date_livraison($user, $datelivraison); - if ($result < 0) - setEventMessages($object->error, $object->errors, 'errors'); - } + $object->fetch($id); + $result = $object->set_date_livraison($user, $datedelivery); + if ($result < 0) + { + setEventMessages($object->error, $object->errors, 'errors'); + } + } /* if ($action == 'setdeliveryaddress' && $user->rights->commande->creer) { @@ -373,13 +374,13 @@ if ($id > 0 || !empty($ref)) print '
'; print ''; print ''; - print $form->selectDate($object->date_livraison > 0 ? $object->date_livraison : -1, 'liv_', '', '', '', "setdatedelivery"); + print $form->selectDate($object->date_livraison ? $object->date_livraison : -1, 'liv_', 1, 1, '', "setdate_livraison", 1, 0); print ''; print '
'; } else { - print dol_print_date($object->date_livraison, 'daytext'); + print dol_print_date($object->date_livraison, 'dayhour'); if ($object->hasDelay() && !empty($object->date_livraison)) { print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning"); } From c89e8efec354070f055504c64c11e49fe1827320 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 14:08:28 +0200 Subject: [PATCH 466/780] responsive --- htdocs/takepos/css/pos.css.php | 3 +++ htdocs/takepos/index.php | 9 +++++++-- htdocs/takepos/invoice.php | 2 +- htdocs/theme/eldy/global.inc.php | 1 + htdocs/theme/md/style.css.php | 1 + 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/htdocs/takepos/css/pos.css.php b/htdocs/takepos/css/pos.css.php index 5f0006d24fe..6871fcbd68b 100644 --- a/htdocs/takepos/css/pos.css.php +++ b/htdocs/takepos/css/pos.css.php @@ -591,6 +591,9 @@ div#moreinfo, div#infowarehouse { height: calc(45% - 100px); } + div#moreinfo, div#infowarehouse { + padding: 0 5px 0 5px; + } div.div1 { padding-bottom: 0; diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php index 0688d4a8584..8da96df54d0 100644 --- a/htdocs/takepos/index.php +++ b/htdocs/takepos/index.php @@ -756,8 +756,13 @@ if (empty($conf->global->TAKEPOS_HIDE_HEAD_BAR)) {
-
- trans("Terminal")." "; +
+ + + + trans("Terminal"); ?> + + - '.dol_print_date(dol_now(), "day").''; diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index b1641072829..9f0e6649cf6 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -747,7 +747,7 @@ $( document ).ready(function() { $("#customerandsales").html(''); - $("#customerandsales").append(''); + $("#customerandsales").append(''); global->THEME_ELDY_WITDHOFFSET_FOR_REDUC3) ? round($nbtopmenuentries * 47, 0) + 130 : $conf->global->THEME_ELDY_WITDHOFFSET_FOR_REDUC3; ?>px) { diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 40e8c5e27b4..c7ce5709efd 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1119,6 +1119,7 @@ table[summary="list_of_modules"] .fa-cog { .clearboth { clear:both; } .hideobject { display: none; } .minwidth50 { min-width: 50px; } +.minwidth75 { min-width: 75px; } /* rule for not too small screen only */ @media only screen and (min-width: px) { From 39f228b98a92140d58d82c3be1220742728e4958 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Tue, 12 May 2020 14:10:43 +0200 Subject: [PATCH 467/780] Update list.php --- htdocs/expedition/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 999bde3fb32..ada701750a0 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -699,7 +699,7 @@ if ($resql) if (!empty($arrayfields['e.date_delivery']['checked'])) { print '
'; - print dol_print_date($db->jdate($obj->date_livraison), "day"); + print dol_print_date($db->jdate($obj->date_livraison), "dayhour"); /*$now = time(); if ( ($now - $db->jdate($obj->date_expedition)) > $conf->warnings->lim && $obj->statutid == 1 ) { From e9c405182d07497ed177b60377f44c5f225ff30a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 14:18:31 +0200 Subject: [PATCH 468/780] css --- htdocs/theme/eldy/main_menu_fa_icons.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/main_menu_fa_icons.inc.php b/htdocs/theme/eldy/main_menu_fa_icons.inc.php index 5b9395fbc04..c344838458d 100644 --- a/htdocs/theme/eldy/main_menu_fa_icons.inc.php +++ b/htdocs/theme/eldy/main_menu_fa_icons.inc.php @@ -8,7 +8,7 @@ font-style: normal; font-variant: normal; text-rendering: auto; - line-height: 26px; + line-height: 23px; font-size: ; -webkit-font-smoothing: antialiased; text-align:center; From a6708009d790003f14320cfbcdadc972661d494e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 May 2020 14:53:03 +0200 Subject: [PATCH 469/780] Add option PROJECT_OPEN_ALWAYS_ON_TAB --- htdocs/projet/class/project.class.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 1ee17511304..554bc84766a 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1044,6 +1044,9 @@ class Project extends CommonObject if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips $result = ''; + if (! empty($conf->global->PROJECT_OPEN_ALWAYS_ON_TAB)) { + $option = $conf->global->PROJECT_OPEN_ALWAYS_ON_TAB; + } $label = ''; if ($option != 'nolink') $label = ''.$langs->trans("Project").''; @@ -1073,6 +1076,10 @@ class Project extends CommonObject { $url = DOL_URL_ROOT.'/projet/tasks.php?id='.$this->id; } + elseif ($option == 'preview') + { + $url = DOL_URL_ROOT.'/projet/element.php?id='.$this->id; + } else { $url = DOL_URL_ROOT.'/projet/card.php?id='.$this->id; From ce9b841d9f1e026f0aaa0d94890bd40c5283d4b1 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Tue, 12 May 2020 15:33:25 +0200 Subject: [PATCH 470/780] Update shipment.php --- htdocs/expedition/shipment.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index a40d29d1d78..3adb1820d27 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -353,7 +353,7 @@ if ($id > 0 || !empty($ref)) // Date print '
'.$langs->trans('Date').''; - print dol_print_date($object->date, 'daytext'); + print dol_print_date($object->date, 'dayhour'); if ($object->hasDelay() && empty($object->date_livraison)) { print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning"); } From f837bf043a4c642a8df8b894519b1e0960f94043 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Tue, 12 May 2020 15:34:48 +0200 Subject: [PATCH 471/780] Update shipment.php --- htdocs/expedition/shipment.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index 3adb1820d27..99cf77ce1f3 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -353,7 +353,7 @@ if ($id > 0 || !empty($ref)) // Date print '
'.$langs->trans('Date').''; - print dol_print_date($object->date, 'dayhour'); + print dol_print_date($object->date, 'day'); if ($object->hasDelay() && empty($object->date_livraison)) { print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning"); } From 70ea77ce8f547eb775fa63e7d68e17e2262aff39 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Tue, 12 May 2020 15:37:37 +0200 Subject: [PATCH 472/780] Update list.php --- htdocs/commande/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 3b83e04fe3c..8b7000d8f23 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -1147,7 +1147,7 @@ if ($resql) if (!empty($arrayfields['c.date_delivery']['checked'])) { print ''; - print dol_print_date($db->jdate($obj->date_delivery), 'day'); + print dol_print_date($db->jdate($obj->date_delivery), 'dayhour'); print '
'.$newapp.$images.'

'.$product->name->language[$this->lang - 1] .'
'.$version.'

- '.dol_print_date(dol_stringtotime($product->date_upd), 'dayhour').' - '.$langs->trans('Ref').': '.$product->reference.' - '.$langs->trans('Id').': '.$product->id.'

'.$product->description_short->language[$this->lang - 1].'
'.$price.' - '.$download_link.'
'.$price.''.$download_link.'
'; - // Ligne info remises tiers + // Line info of thirdparty discounts print ''; } print ''; print ''; From b5f3be4599f9f56c30c63297643c88da8d75e956 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 May 2020 00:29:46 +0200 Subject: [PATCH 478/780] Clean phpcs rule file --- dev/setup/codesniffer/ruleset.xml | 77 +++++++++---------- htdocs/compta/bank/class/account.class.php | 3 +- htdocs/product/stats/commande_fournisseur.php | 4 +- htdocs/webservices/server_actioncomm.php | 6 +- 4 files changed, 43 insertions(+), 47 deletions(-) diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index ad26c7f0bdc..41526340daf 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -272,12 +272,7 @@ - - - - - - + 0 @@ -310,20 +305,21 @@ - - + 0 - + 0 + - 0 + 0 - + + 0 @@ -332,27 +328,25 @@ - + 0 - + + 0 - - 0 - + + + - 0 + 0 - - 0 - - - 0 - + + + @@ -361,26 +355,26 @@ 0 + - 0 + 0 - + 0 + - - 0 - + 0 0 - + 0 @@ -391,16 +385,16 @@ + + 0 + - - - - + 0 @@ -411,7 +405,6 @@ 0 - 0 @@ -421,15 +414,21 @@ - - - - - + + + + + + + + + + + diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 58115537b1f..3fcbffba3b2 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -1672,8 +1672,7 @@ class Account extends CommonObject //Replace the old AccountNumber key with the new BankAccountNumber key $fieldlists = explode( ' ', - preg_replace('/ ?[^Bank]AccountNumber ?/', 'BankAccountNumber', - $conf->global->BANK_SHOW_ORDER_OPTION) + preg_replace('/ ?[^Bank]AccountNumber ?/', 'BankAccountNumber', $conf->global->BANK_SHOW_ORDER_OPTION) ); } } diff --git a/htdocs/product/stats/commande_fournisseur.php b/htdocs/product/stats/commande_fournisseur.php index 61024cdd7ff..c111e075972 100644 --- a/htdocs/product/stats/commande_fournisseur.php +++ b/htdocs/product/stats/commande_fournisseur.php @@ -44,9 +44,7 @@ if (!empty($user->socid)) $result = restrictedArea($user, 'produit|service', $fieldvalue, 'product&product', '', '', $fieldtype); // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context -$hookmanager->initHooks(array( - 'productstatssupplyorder' -)); +$hookmanager->initHooks(array('productstatssupplyorder')); $mesg = ''; diff --git a/htdocs/webservices/server_actioncomm.php b/htdocs/webservices/server_actioncomm.php index bc3d4a78c6a..39ed3b3cdf5 100644 --- a/htdocs/webservices/server_actioncomm.php +++ b/htdocs/webservices/server_actioncomm.php @@ -153,8 +153,8 @@ $server->wsdl->addComplexType( 'sequence', '', array( - 'code' => array('name'=>'code', 'type'=>'xsd:string'), - 'libelle' => array('name'=>'libelle', 'type'=>'xsd:string') + 'code' => array('name'=>'code', 'type'=>'xsd:string'), + 'libelle' => array('name'=>'libelle', 'type'=>'xsd:string') ) ); @@ -164,7 +164,7 @@ $server->wsdl->addComplexType( 'array', 'sequence', '', - array( + array( 'actioncommtype' => array( 'name' => 'actioncommtype', 'type' => 'tns:actioncommtype', From 22301d63d8fedaa2607167232b4ac4df76cd9593 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 May 2020 00:35:10 +0200 Subject: [PATCH 479/780] Replace a ZEND phpcs rule with a PSR2 rule --- dev/setup/codesniffer/ruleset.xml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index 41526340daf..e726df6db7c 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -424,11 +424,7 @@ - - - - - + From f0d14662b996b082c701db2318157f9f86d7c957 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 May 2020 00:38:12 +0200 Subject: [PATCH 480/780] Fix scrutinizer --- htdocs/takepos/genimg/qr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/genimg/qr.php b/htdocs/takepos/genimg/qr.php index c73e874a465..c4d60a52c1b 100644 --- a/htdocs/takepos/genimg/qr.php +++ b/htdocs/takepos/genimg/qr.php @@ -29,5 +29,5 @@ require '../../core/modules/barcode/doc/tcpdfbarcode.modules.php'; $key = GETPOST('key'); -$module = new modTcpdfbarcode($db); +$module = new modTcpdfbarcode(); $result = $module->buildBarCode("http://www.takepos.com", 'QRCODE', 'Y'); From ebbd4413f5985def5e726d974c761e193473d442 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 May 2020 00:47:27 +0200 Subject: [PATCH 481/780] Fix scrutinizer error --- htdocs/accountancy/admin/account.php | 2 +- .../class/accountingaccount.class.php | 17 ++++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 86981e5b5de..cf00519e9d7 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -161,7 +161,7 @@ if (empty($reshook)) if ($action == 'disable') { if ($accounting->fetch($id)) { $mode = GETPOST('mode', 'int'); - $result = $accounting->account_desactivate($id, $mode); + $result = $accounting->accountDeactivate($id, $mode); } $action = 'update'; diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index a32918cc5bf..bcd17793db1 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -553,24 +553,19 @@ class AccountingAccount extends CommonObject } } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** - * Account deactivated + * Deactivate an account (for status active or status reconcilable) * * @param int $id Id - * @param int $mode 0=field active, 1=field active_customer_list, 2=field_active_supplier_list + * @param int $mode 0=field active, 1=field reconcilable * @return int <0 if KO, >0 if OK */ - public function account_desactivate($id, $mode = 0) + public function accountDeactivate($id, $mode = 0) { - // phpcs:enable $result = $this->checkUsage(); - if ($mode == 0) - { - $fieldtouse = 'active'; - } - elseif ($mode == 1) + $fieldtouse = 'active'; + if ($mode == 1) { $fieldtouse = 'reconcilable'; } @@ -582,7 +577,7 @@ class AccountingAccount extends CommonObject $sql .= "SET ".$fieldtouse." = '0'"; $sql .= " WHERE rowid = ".$this->db->escape($id); - dol_syslog(get_class($this)."::account_desactivate ".$fieldtouse." sql=".$sql, LOG_DEBUG); + dol_syslog(get_class($this)."::accountDeactivate ".$fieldtouse." sql=".$sql, LOG_DEBUG); $result = $this->db->query($sql); if ($result) { From 0850570e951e98b1b50de544844f9a19e669a97a Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" Date: Tue, 12 May 2020 13:15:49 +0200 Subject: [PATCH 482/780] Fix and imporve some points for compta/accounting-flles.php * Fix zip generation for accouning-files if line has no document. The zip file generated if $filesarray contain a line with empty 'files' was unsustainable because it try to add empty files. * Add clickable link to jump on card for other line than Invoice and Supplier Invoice * Add various payment * Use label as ref for paiements of salaries line to display more explicit line --- htdocs/compta/accounting-files.php | 64 +++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 10 deletions(-) diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index 471637461f6..9c26cc0999c 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -37,8 +37,10 @@ require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php' require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; +require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/paymentvarious.class.php'; -$langs->loadLangs(array("accountancy", "bills", "companies", "salaries", "compta", "trips")); +$langs->loadLangs(array("accountancy", "bills", "companies", "salaries", "compta", "trips", "banks")); $date_start = GETPOST('date_start', 'alpha'); $date_startDay = GETPOST('date_startday', 'int'); @@ -176,7 +178,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { // Paiements of salaries if (GETPOST('selectpaymentsofsalaries')) { if (!empty($sql)) $sql .= " UNION ALL"; - $sql .= " SELECT t.rowid as id, t.entity, t.ref as ref, 1 as paid, amount as total_ht, amount as total_ttc, 0 as total_vat, t.fk_user as fk_soc, t.datep as date, t.dateep as date_due, 'SalaryPayment' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum"; + $sql .= " SELECT t.rowid as id, t.entity, t.label as ref, 1 as paid, amount as total_ht, amount as total_ttc, 0 as total_vat, t.fk_user as fk_soc, t.datep as date, t.dateep as date_due, 'SalaryPayment' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum"; $sql .= " FROM ".MAIN_DB_PREFIX."payment_salary as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country"; $sql .= " WHERE datep between ".$wheretail; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; @@ -191,6 +193,14 @@ if (($action == 'searchfiles' || $action == 'dl')) { $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; //$sql.=" AND fk_statut <> ".ChargeSociales::STATUS_DRAFT; } + // Various payments + if (GETPOST('selectvariouspayment')) { + if (!empty($sql)) $sql .= " UNION ALL"; + $sql .= " SELECT t.rowid as id, t.entity, t.label as ref, 1 as paid, t.amount as total_ht, t.amount as total_ttc, 0 as total_tva, 0 as fk_soc, t.datec as date, t.datep as date_due, 'VariousPayment' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum"; + $sql .= " FROM ".MAIN_DB_PREFIX."payment_various as t"; + $sql .= " WHERE datec between ".$wheretail; + $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; + } if ($sql) { $sql .= $db->order($sortfield, $sortorder); @@ -254,6 +264,12 @@ if (($action == 'searchfiles' || $action == 'dl')) { $upload_dir = $conf->tax->dir_output.'/'.$subdir; $link = "document.php?modulepart=tax&file=".str_replace('/', '%2F', $subdir).'%2F'; break; + case "VariousPayment": + $subdir = ''; + $subdir .= ($subdir ? '/' : '').dol_sanitizeFileName($objd->id); + $upload_dir = $conf->bank->dir_output.'/'.$subdir; + $link = "document.php?modulepart=banque&file=".str_replace('/', '%2F', $subdir).'%2F'; + break; default: $subdir = ''; $upload_dir = ''; @@ -394,11 +410,13 @@ if ($result && $action == "dl" && !$error) { foreach ($filesarray as $key => $file) { - foreach ($file['files'] as $filecursor) { - if (file_exists($filecursor["fullname"])) { - $zip->addFile($filecursor["fullname"], $filecursor["relpathnamelang"]); - } - } + if (!empty($file['files'])) { + foreach ($file['files'] as $filecursor) { + if (file_exists($filecursor["fullname"])) { + $zip->addFile($filecursor["fullname"], $filecursor["relpathnamelang"]); + } + } + } $log .= '"'.$langs->trans($file['item']).'"'; if (!empty($conf->multicompany->enabled) && is_object($mc)) @@ -448,6 +466,11 @@ $form = new Form($db); $userstatic = new User($db); $invoice = new Facture($db); $supplier_invoice = new FactureFournisseur($db); +$expensereport = new ExpenseReport($db); +$don = new Don($db); +$salary_payment = new PaymentSalary($db); +$charge_sociales = new ChargeSociales($db); +$various_payment = new PaymentVarious($db); $title = $langs->trans("ComptaFiles").' - '.$langs->trans("List"); $help_url = ''; @@ -492,7 +515,8 @@ $listofchoices = array( 'selectexpensereports'=>array('label'=>'ExpenseReports', 'lang'=>'trips'), 'selectdonations'=>array('label'=>'Donations', 'lang'=>'donation'), 'selectpaymentsofsalaries'=>array('label'=>'SalariesPayments', 'lang'=>'salaries'), - 'selectsocialcontributions'=>array('label'=>'SocialContributions') + 'selectsocialcontributions'=>array('label'=>'SocialContributions'), + 'selectvariouspayment'=>array('label'=>'VariousPayment') ); foreach ($listofchoices as $choice => $val) { $checked = (((!GETPOSTISSET('search') && $action != 'searchfiles') || GETPOST($choice)) ? ' checked="checked"' : ''); @@ -592,14 +616,34 @@ if (!empty($date_start) && !empty($date_stop)) // Ref print ''; // File link From 48183b396ad674fb22e1c9415978d8414b0fd9e8 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Wed, 13 May 2020 08:54:42 +0200 Subject: [PATCH 484/780] Fix top menu search method must be GET --- htdocs/main.inc.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 8e05aa34ab8..2beb4f74787 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -2002,7 +2002,7 @@ function top_menu_search() $defaultAction = ''; $buttonList = ''; + print ''; + $extrafields_collapse_num_old = $extrafields_collapse_num; print ''; print ''; print ''; - if($conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED )print ''; + if (!empty($conf->multicompany->enabled) && $conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED ) print ''; print ''; print ''; print ''; @@ -379,7 +379,7 @@ if ($resql) print ''; // Expected to pay - if($conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED ){ + if(!empty($conf->multicompany->enabled) && $conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED ){ print ''; print ''; print ''; print ''; -$sessiontimeout = ini_get("session.gc_maxlifetime"); if (empty($conf->global->MAIN_APPLICATION_TITLE)) $conf->global->MAIN_APPLICATION_TITLE = ""; print ''; print ''; - /*print '';*/ print '
'.$langs->trans('Discount').''; if ($object->thirdparty->remise_percent) print $langs->trans("CompanyHasRelativeDiscount", $object->thirdparty->remise_percent); else print $langs->trans("CompanyHasNoRelativeDiscount"); @@ -1502,8 +1502,6 @@ else } - $colorb = '666666'; - $arrayothercontracts = $object->getListOfContracts('others'); /* @@ -1775,8 +1773,8 @@ else print ''; - print ''; - print '
'; + print ''; + print '
'; print '
'; - if ($data['item'] == 'Invoice') { - $invoice->id = $data['id']; + if ($data['item'] == 'Invoice') { + $invoice->id = $data['id']; $invoice->ref = $data['ref']; print $invoice->getNomUrl(1, '', 0, 0, '', 0, 0, 0); } elseif ($data['item'] == 'SupplierInvoice') { $supplier_invoice->id = $data['id']; $supplier_invoice->ref = $data['ref']; print $supplier_invoice->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + } elseif ($data['item'] == 'ExpenseReport') { + $expensereport->id = $data['id']; + $expensereport->ref = $data['ref']; + print $expensereport->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + } elseif ($data['item'] == 'SalaryPayment') { + $salary_payment->id = $data['id']; + $salary_payment->ref = $data['ref']; + print $salary_payment->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + } elseif ($data['item'] == 'Donation') { + $don->id = $data['id']; + $don->ref = $data['ref']; + print $don->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + } elseif ($data['item'] == 'SocialContributions') { + $charge_sociales->id = $data['id']; + $charge_sociales->ref = $data['ref']; + print $charge_sociales->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + } elseif ($data['item'] == 'VariousPayment') { + $various_payment->id = $data['id']; + $various_payment->ref = $data['ref']; + print $various_payment->getNomUrl(1, '', 0, 0, '', 0, 0, 0); } else { print $data['ref']; } From b7ae5ffa1d085661bed4906ad4540562e6134219 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Wed, 13 May 2020 06:12:45 +0000 Subject: [PATCH 483/780] Fixing style errors. --- htdocs/compta/accounting-files.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index 9c26cc0999c..66d36df25b2 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -616,37 +616,37 @@ if (!empty($date_start) && !empty($date_stop)) // Ref print ''; - if ($data['item'] == 'Invoice') { - $invoice->id = $data['id']; + if ($data['item'] == 'Invoice') { + $invoice->id = $data['id']; $invoice->ref = $data['ref']; print $invoice->getNomUrl(1, '', 0, 0, '', 0, 0, 0); - } elseif ($data['item'] == 'SupplierInvoice') { + } elseif ($data['item'] == 'SupplierInvoice') { $supplier_invoice->id = $data['id']; $supplier_invoice->ref = $data['ref']; print $supplier_invoice->getNomUrl(1, '', 0, 0, '', 0, 0, 0); - } elseif ($data['item'] == 'ExpenseReport') { + } elseif ($data['item'] == 'ExpenseReport') { $expensereport->id = $data['id']; $expensereport->ref = $data['ref']; print $expensereport->getNomUrl(1, '', 0, 0, '', 0, 0, 0); - } elseif ($data['item'] == 'SalaryPayment') { + } elseif ($data['item'] == 'SalaryPayment') { $salary_payment->id = $data['id']; $salary_payment->ref = $data['ref']; print $salary_payment->getNomUrl(1, '', 0, 0, '', 0, 0, 0); - } elseif ($data['item'] == 'Donation') { + } elseif ($data['item'] == 'Donation') { $don->id = $data['id']; $don->ref = $data['ref']; print $don->getNomUrl(1, '', 0, 0, '', 0, 0, 0); - } elseif ($data['item'] == 'SocialContributions') { + } elseif ($data['item'] == 'SocialContributions') { $charge_sociales->id = $data['id']; $charge_sociales->ref = $data['ref']; print $charge_sociales->getNomUrl(1, '', 0, 0, '', 0, 0, 0); - } elseif ($data['item'] == 'VariousPayment') { + } elseif ($data['item'] == 'VariousPayment') { $various_payment->id = $data['id']; $various_payment->ref = $data['ref']; print $various_payment->getNomUrl(1, '', 0, 0, '', 0, 0, 0); - } else { + } else { print $data['ref']; - } + } print '
'; print ''; print ''; - print '\n"; From 872518a91fa2f30318f298c5bb630af616ee32e4 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" Date: Wed, 13 May 2020 16:54:53 +0200 Subject: [PATCH 491/780] Add total by credit/debit for accounting-file.php --- htdocs/compta/accounting-files.php | 104 ++++++++++++++++------------- 1 file changed, 56 insertions(+), 48 deletions(-) diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index 98d8c9b9983..64332671b5d 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -42,6 +42,10 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/paymentvarious.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; +// Constant to define payment sens +const PAY_DEBIT = 0; +const PAY_CREDIT = 1; + $langs->loadLangs(array("accountancy", "bills", "companies", "salaries", "compta", "trips", "banks")); $date_start = GETPOST('date_start', 'alpha'); @@ -144,7 +148,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { // Customer invoices if (GETPOST('selectinvoices')) { if (!empty($sql)) $sql .= " UNION ALL"; - $sql .= "SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, t.total as total_ht, t.total_ttc, t.tva as total_vat, t.fk_soc, t.datef as date, t.date_lim_reglement as date_due, 'Invoice' as item, s.nom as thirdparty_name, s.code_client as thirdparty_code, c.code as country_code, s.tva_intra as vatnum"; + $sql .= "SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, t.total as total_ht, t.total_ttc, t.tva as total_vat, t.fk_soc, t.datef as date, t.date_lim_reglement as date_due, 'Invoice' as item, s.nom as thirdparty_name, s.code_client as thirdparty_code, c.code as country_code, s.tva_intra as vatnum, ".PAY_CREDIT." as sens"; $sql .= " FROM ".MAIN_DB_PREFIX."facture as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays"; $sql .= " WHERE datef between ".$wheretail; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; @@ -153,7 +157,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { // Vendor invoices if (GETPOST('selectsupplierinvoices')) { if (!empty($sql)) $sql .= " UNION ALL"; - $sql .= " SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, t.total_ht, t.total_ttc, t.total_tva as total_vat, t.fk_soc, t.datef as date, t.date_lim_reglement as date_due, 'SupplierInvoice' as item, s.nom as thirdparty_name, s.code_fournisseur as thirdparty_code, c.code as country_code, s.tva_intra as vatnum"; + $sql .= " SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, t.total_ht, t.total_ttc, t.total_tva as total_vat, t.fk_soc, t.datef as date, t.date_lim_reglement as date_due, 'SupplierInvoice' as item, s.nom as thirdparty_name, s.code_fournisseur as thirdparty_code, c.code as country_code, s.tva_intra as vatnum, ".PAY_DEBIT." as sens"; $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays"; $sql .= " WHERE datef between ".$wheretail; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; @@ -162,7 +166,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { // Expense reports if (GETPOST('selectexpensereports')) { if (!empty($sql)) $sql .= " UNION ALL"; - $sql .= " SELECT t.rowid as id, t.entity, t.ref, t.paid, t.total_ht, t.total_ttc, t.total_tva as total_vat, t.fk_user_author as fk_soc, t.date_fin as date, t.date_fin as date_due, 'ExpenseReport' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum"; + $sql .= " SELECT t.rowid as id, t.entity, t.ref, t.paid, t.total_ht, t.total_ttc, t.total_tva as total_vat, t.fk_user_author as fk_soc, t.date_fin as date, t.date_fin as date_due, 'ExpenseReport' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum, ".PAY_DEBIT." as sens"; $sql .= " FROM ".MAIN_DB_PREFIX."expensereport as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user_author LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country"; $sql .= " WHERE date_fin between ".$wheretail; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; @@ -171,7 +175,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { // Donations if (GETPOST('selectdonations')) { if (!empty($sql)) $sql .= " UNION ALL"; - $sql .= " SELECT t.rowid as id, t.entity, t.ref, paid, amount as total_ht, amount as total_ttc, 0 as total_vat, 0 as fk_soc, t.datedon as date, t.datedon as date_due, 'Donation' as item, t.societe as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum"; + $sql .= " SELECT t.rowid as id, t.entity, t.ref, paid, amount as total_ht, amount as total_ttc, 0 as total_vat, 0 as fk_soc, t.datedon as date, t.datedon as date_due, 'Donation' as item, t.societe as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum, ".PAY_CREDIT." as sens"; $sql .= " FROM ".MAIN_DB_PREFIX."don as t LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = t.fk_country"; $sql .= " WHERE datedon between ".$wheretail; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; @@ -180,7 +184,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { // Paiements of salaries if (GETPOST('selectpaymentsofsalaries')) { if (!empty($sql)) $sql .= " UNION ALL"; - $sql .= " SELECT t.rowid as id, t.entity, t.label as ref, 1 as paid, amount as total_ht, amount as total_ttc, 0 as total_vat, t.fk_user as fk_soc, t.datep as date, t.dateep as date_due, 'SalaryPayment' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum"; + $sql .= " SELECT t.rowid as id, t.entity, t.label as ref, 1 as paid, amount as total_ht, amount as total_ttc, 0 as total_vat, t.fk_user as fk_soc, t.datep as date, t.dateep as date_due, 'SalaryPayment' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum, ".PAY_DEBIT." as sens"; $sql .= " FROM ".MAIN_DB_PREFIX."payment_salary as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country"; $sql .= " WHERE datep between ".$wheretail; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; @@ -189,7 +193,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { // Social contributions if (GETPOST('selectsocialcontributions')) { if (!empty($sql)) $sql .= " UNION ALL"; - $sql .= " SELECT t.rowid as id, t.entity, t.libelle as ref, t.paye as paid, t.amount as total_ht, t.amount as total_ttc, 0 as total_tva, 0 as fk_soc, t.date_creation as date, t.date_ech as date_due, 'SocialContributions' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum"; + $sql .= " SELECT t.rowid as id, t.entity, t.libelle as ref, t.paye as paid, t.amount as total_ht, t.amount as total_ttc, 0 as total_tva, 0 as fk_soc, t.date_creation as date, t.date_ech as date_due, 'SocialContributions' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum, ".PAY_DEBIT." as sens"; $sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as t"; $sql .= " WHERE date_creation between ".$wheretail; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; @@ -198,7 +202,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { // Various payments if (GETPOST('selectvariouspayment')) { if (!empty($sql)) $sql .= " UNION ALL"; - $sql .= " SELECT t.rowid as id, t.entity, t.label as ref, 1 as paid, t.amount as total_ht, t.amount as total_ttc, 0 as total_tva, 0 as fk_soc, t.datep as date, t.datep as date_due, 'VariousPayment' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum"; + $sql .= " SELECT t.rowid as id, t.entity, t.label as ref, 1 as paid, t.amount as total_ht, t.amount as total_ttc, 0 as total_tva, 0 as fk_soc, t.datep as date, t.datep as date_due, 'VariousPayment' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum, sens"; $sql .= " FROM ".MAIN_DB_PREFIX."payment_various as t"; $sql .= " WHERE datep between ".$wheretail; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; @@ -311,6 +315,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { $nofile['thirdparty_code'] = $objd->thirdparty_code; $nofile['country_code'] = $objd->country_code; $nofile['vatnum'] = $objd->vatnum; + $nofile['sens'] = $objd->sens; $filesarray[$nofile['item'].'_'.$nofile['id']] = $nofile; } @@ -329,11 +334,11 @@ if (($action == 'searchfiles' || $action == 'dl')) { $file['ref'] = ($objd->ref ? $objd->ref : $objd->id); $file['fk'] = $objd->fk_soc; $file['item'] = $objd->item; - $file['thirdparty_name'] = $objd->thirdparty_name; $file['thirdparty_code'] = $objd->thirdparty_code; $file['country_code'] = $objd->country_code; $file['vatnum'] = $objd->vatnum; + $file['sens'] = $objd->sens; // Save record into array (only the first time it is found) if (empty($filesarray[$file['item'].'_'.$file['id']])) { @@ -417,7 +422,8 @@ if ($result && $action == "dl" && !$error) $log .= ','.$langs->transnoentitiesnoconv("ThirdParty"); $log .= ','.$langs->transnoentitiesnoconv("Code"); $log .= ','.$langs->transnoentitiesnoconv("Country"); - $log .= ','.$langs->transnoentitiesnoconv("VATIntra")."\n"; + $log .= ','.$langs->transnoentitiesnoconv("VATIntra"); + $log .= ','.$langs->transnoentitiesnoconv("Sens")."\n"; $zipname = $dirfortmpfile.'/'.dol_print_date($date_start, 'dayrfc')."-".dol_print_date($date_stop, 'dayrfc').'_export.zip'; dol_delete_file($zipname); @@ -454,6 +460,7 @@ if ($result && $action == "dl" && !$error) $log .= ',"'.$file['thirdparty_code'].'"'; $log .= ',"'.$file['country_code'].'"'; $log .= ',"'.$file['vatnum'].'"'; + $log .= ',"'.$file['sens'].'"'; $log .= "\n"; } $zip->addFromString('transactions.csv', $log); @@ -605,11 +612,12 @@ if (!empty($date_start) && !empty($date_stop)) { // Sort array by date ASC to calculate balance - $totalET = 0; - $totalIT = 0; - $totalVAT = 0; - $totalDebit = 0; - $totalCredit = 0; + $totalET_debit = 0; + $totalIT_debit = 0; + $totalVAT_debit = 0; + $totalET_credit = 0; + $totalIT_credit = 0; + $totalVAT_credit = 0; // Display array foreach ($TData as $data) @@ -682,11 +690,11 @@ if (!empty($date_start) && !empty($date_stop)) print ''; // Total ET - print '\n"; + print '\n"; // Total IT - print '\n"; + print '\n"; // Total VAT - print '\n"; + print '\n"; print '\n"; @@ -696,42 +704,42 @@ if (!empty($date_start) && !empty($date_stop)) print '\n"; - // Debit - //print '\n"; - // Credit - //print '\n"; - - $totalET += $data['amount_ht']; - $totalIT += $data['amount_ttc']; - $totalVAT += $data['amount_vat']; - - $totalDebit += ($data['amount_ttc'] > 0) ? abs($data['amount_ttc']) : 0; - $totalCredit += ($data['amount_ttc'] > 0) ? 0 : abs($data['amount_ttc']); - - // Balance - //print '\n"; + if ($data['sens']) { + $totalET_credit += $data['amount_ht']; + $totalIT_credit += $data['amount_ttc']; + $totalVAT_credit += $data['amount_vat']; + } else { + $totalET_debit -= $data['amount_ht']; + $totalIT_debit -= $data['amount_ttc']; + $totalVAT_debit -= $data['amount_vat']; + } print "\n"; } + // Total credits print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - /*print ''; - print ''; - print ''; - */ + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + // Total debits + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + // Balance + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; print "\n"; } } From ee6e717f4632716ce1e4d6a12301882b17850524 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" Date: Wed, 13 May 2020 17:47:30 +0200 Subject: [PATCH 492/780] Add payment loan in accounting-files.php --- htdocs/compta/accounting-files.php | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index 64332671b5d..a97a0a815b7 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -41,12 +41,13 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/paymentvarious.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php'; // Constant to define payment sens const PAY_DEBIT = 0; const PAY_CREDIT = 1; -$langs->loadLangs(array("accountancy", "bills", "companies", "salaries", "compta", "trips", "banks")); +$langs->loadLangs(array("accountancy", "bills", "companies", "salaries", "compta", "trips", "banks", "loan")); $date_start = GETPOST('date_start', 'alpha'); $date_startDay = GETPOST('date_startday', 'int'); @@ -207,6 +208,14 @@ if (($action == 'searchfiles' || $action == 'dl')) { $sql .= " WHERE datep between ".$wheretail; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; } + // Loan payments + if (GETPOST('selectloanspayment')) { + if (!empty($sql)) $sql .= " UNION ALL"; + $sql .= " SELECT t.rowid as id, l.entity, l.label as ref, 1 as paid, (t.amount_capital+t.amount_insurance+t.amount_interest) as total_ht, (t.amount_capital+t.amount_insurance+t.amount_interest) as total_ttc, 0 as total_tva, 0 as fk_soc, t.datep as date, t.datep as date_due, 'LoanPayment' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum, ".PAY_DEBIT." as sens"; + $sql .= " FROM ".MAIN_DB_PREFIX."payment_loan as t LEFT JOIN ".MAIN_DB_PREFIX."loan as l ON l.rowid = t.fk_loan"; + $sql .= " WHERE datep between ".$wheretail; + $sql .= " AND l.entity IN (".($entity == 1 ? '0,1' : $entity).')'; + } if ($sql) { $sql .= $db->order($sortfield, $sortorder); @@ -283,6 +292,13 @@ if (($action == 'searchfiles' || $action == 'dl')) { $link = "document.php?modulepart=banque&file=".str_replace('/', '%2F', $subdir).'%2F'; $modulepart = "banque"; break; + case "LoanPayment": + // Loan payment has no linked file + $subdir = ''; + $upload_dir = $conf->loan->dir_output.'/'.$subdir; + $link = ""; + $modulepart = ""; + break; default: $subdir = ''; $upload_dir = ''; @@ -497,6 +513,7 @@ $don = new Don($db); $salary_payment = new PaymentSalary($db); $charge_sociales = new ChargeSociales($db); $various_payment = new PaymentVarious($db); +$payment_loan = new PaymentLoan($db); $title = $langs->trans("ComptaFiles").' - '.$langs->trans("List"); $help_url = ''; @@ -542,7 +559,8 @@ $listofchoices = array( 'selectdonations'=>array('label'=>'Donations', 'lang'=>'donation'), 'selectpaymentsofsalaries'=>array('label'=>'SalariesPayments', 'lang'=>'salaries'), 'selectsocialcontributions'=>array('label'=>'SocialContributions'), - 'selectvariouspayment'=>array('label'=>'VariousPayment') + 'selectvariouspayment'=>array('label'=>'VariousPayment'), + 'selectloanspayment'=>array('label'=>'PaymentLoan'), ); foreach ($listofchoices as $choice => $val) { $checked = (((!GETPOSTISSET('search') && $action != 'searchfiles') || GETPOST($choice)) ? ' checked="checked"' : ''); @@ -671,6 +689,10 @@ if (!empty($date_start) && !empty($date_stop)) $various_payment->id = $data['id']; $various_payment->ref = $data['ref']; print $various_payment->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + } elseif ($data['item'] == 'LoanPayment') { + $payment_loan->id = $data['id']; + $payment_loan->ref = $data['ref']; + print $payment_loan->getNomUrl(1, '', 0, 0, '', 0, 0, 0); } else { print $data['ref']; } From ac0b735131af206c67d34420ed38a3fff43a8482 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" Date: Wed, 13 May 2020 18:01:00 +0200 Subject: [PATCH 493/780] Fix use date_ech for social contributions in accounting-file.php --- htdocs/compta/accounting-files.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index a97a0a815b7..f9bc453d999 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -194,9 +194,9 @@ if (($action == 'searchfiles' || $action == 'dl')) { // Social contributions if (GETPOST('selectsocialcontributions')) { if (!empty($sql)) $sql .= " UNION ALL"; - $sql .= " SELECT t.rowid as id, t.entity, t.libelle as ref, t.paye as paid, t.amount as total_ht, t.amount as total_ttc, 0 as total_tva, 0 as fk_soc, t.date_creation as date, t.date_ech as date_due, 'SocialContributions' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum, ".PAY_DEBIT." as sens"; + $sql .= " SELECT t.rowid as id, t.entity, t.libelle as ref, t.paye as paid, t.amount as total_ht, t.amount as total_ttc, 0 as total_tva, 0 as fk_soc, t.date_ech as date, t.periode as date_due, 'SocialContributions' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum, ".PAY_DEBIT." as sens"; $sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as t"; - $sql .= " WHERE date_creation between ".$wheretail; + $sql .= " WHERE t.date_ech between ".$wheretail; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; //$sql.=" AND fk_statut <> ".ChargeSociales::STATUS_DRAFT; } From 9f6a5d4cc95097e92eeb94d6524add35ae3a5c3d Mon Sep 17 00:00:00 2001 From: ATM john Date: Thu, 14 May 2020 10:50:20 +0200 Subject: [PATCH 494/780] Fix multicompany supplier product price filter --- htdocs/core/class/html.form.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 93061d200d8..078cfb2b5f2 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2759,7 +2759,7 @@ class Form } if (!empty($conf->barcode->enabled)) $sql .= ", pfp.barcode"; $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON ( p.rowid = pfp.fk_product AND pfp.entity IN (".getEntity('product').") )"; if ($socid) $sql .= " AND pfp.fk_soc = ".$socid; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid"; // Units From 36b63ed921b555b297da38c2467b1e32037c9c1f Mon Sep 17 00:00:00 2001 From: Anthony Berton Date: Thu, 14 May 2020 11:37:26 +0200 Subject: [PATCH 495/780] Update list.php --- htdocs/product/list.php | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index f818d2f475a..d6b3def0967 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -1252,26 +1252,26 @@ if ($resql) { if (!empty($arrayfields['p.sellprice'.$key]['checked'])) { - $resultp = "SELECT p.rowid, p.fk_product, p.price, p.price_ttc, p.price_level, p.date_price"; - $resultp .= " FROM ".MAIN_DB_PREFIX."product_price as p"; - $resultp .= " WHERE fk_product = ".$obj->rowid; - if (!empty($conf->global->PRODUIT_MULTIPRICES)) $resultp .= " AND p.price_level = ".$key; - $resultp .= " ORDER BY p.date_price DESC, p.rowid DESC, p.price_level ASC"; - $resultp = $db->query($resultp); - if ($resultp) + print ''; - $db->free($resultp); - } else { - dol_print_error($db); } + print ''; if (!$i) $totalarray['nbfield']++; } } From e3afa658808b856b4afe576787f5835b020c0998 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 14 May 2020 09:38:27 +0000 Subject: [PATCH 496/780] Fixing style errors. --- htdocs/product/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index d6b3def0967..97d08477946 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -1265,7 +1265,7 @@ if ($resql) { $objp = $db->fetch_object($resultp); if ($obj->price_base_type == 'TTC') print price($objp->price_ttc).' '.$langs->trans("TTC"); - else print price($objp->price).' '.$langs->trans("HT"); + else print price($objp->price).' '.$langs->trans("HT"); $db->free($resultp); } else { dol_print_error($db); From 1bd00b0e8c635db1a8348c97d3933699b92d88db Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 12:28:17 +0200 Subject: [PATCH 497/780] Fix to solve feedbacks of https://www.dolibarr.fr/forum/t/email-collector-avec-office-365-bug-et-contournement/32726 --- .../class/emailcollector.class.php | 20 +++++++++++++++---- .../install/mysql/migration/11.0.0-12.0.0.sql | 2 ++ .../llx_emailcollector_emailcollector.sql | 3 ++- htdocs/langs/en_US/admin.lang | 1 + 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 11cf2477720..969b83cac5a 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -100,8 +100,9 @@ class EmailCollector extends CommonObject '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'), + 'host' => array('type'=>'varchar(255)', 'label'=>'EMailHost', 'visible'=>1, 'enabled'=>1, 'position'=>90, 'notnull'=>1, 'searchall'=>1, 'comment'=>"IMAP server", 'help'=>'Example: imap.gmail.com'), + 'hostcharset' => array('type'=>'varchar(16)', 'label'=>'HostCharset', 'visible'=>-1, 'enabled'=>1, 'position'=>91, 'notnull'=>0, 'searchall'=>0, 'comment'=>"IMAP server charset", 'help'=>'Example: "UTF-8" (May be "US-ASCII" with some Office365)'), + '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", 'help'=>'WithGMailYouCanCreateADedicatedPassword'), '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), @@ -173,6 +174,7 @@ class EmailCollector extends CommonObject public $host; + public $hostcharset; public $login; public $password; public $source_directory; @@ -985,9 +987,10 @@ class EmailCollector extends CommonObject $nbemailprocessed = 0; $nbemailok = 0; $nbactiondone = 0; + $charset = ($this->hostcharset ? $this->hostcharset : "UTF-8"); // Scan IMAP inbox - $arrayofemail = imap_search($connection, $search, null, "UTF-8"); + $arrayofemail = imap_search($connection, $search, null, $charset); if ($arrayofemail === false) { // Nothing found or search string not understood @@ -1086,6 +1089,7 @@ class EmailCollector extends CommonObject } $header = imap_fetchheader($connection, $imapemail, 0); + $header = preg_replace('/\r\n\s+/m', ' ', $header); // When a header line is on several lines, merge lines $matches = array(); preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $header, $matches); $headers = array_combine($matches[1], $matches[2]); @@ -1132,7 +1136,10 @@ class EmailCollector extends CommonObject // Can use also imap_mime_header_decode($str) // Can use also mb_decode_mimeheader($str) // Can use also iconv_mime_decode($str, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8') - if (function_exists('imap_mime_header_decode')) { + if (function_exists('iconv_mime_decode')) { + $overview[0]->subject = iconv_mime_decode($overview[0]->subject, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8'); + } + elseif (function_exists('imap_mime_header_decode')) { $elements = imap_mime_header_decode($overview[0]->subject); $newstring = ''; if (!empty($elements)) { @@ -1146,6 +1153,8 @@ class EmailCollector extends CommonObject elseif (function_exists('mb_decode_mimeheader')) { $overview[0]->subject = mb_decode_mimeheader($overview[0]->subject); } + // Removed emojis + $overview[0]->subject = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $overview[0]->subject); // Parse IMAP email structure global $htmlmsg, $plainmsg, $charset, $attachments; @@ -1153,6 +1162,9 @@ class EmailCollector extends CommonObject //$htmlmsg,$plainmsg,$charset,$attachments $messagetext = $plainmsg ? $plainmsg : dol_string_nohtmltag($htmlmsg, 0); + // Removed emojis + $messagetext = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $messagetext); + /*var_dump($plainmsg); var_dump($htmlmsg); var_dump($messagetext);*/ diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 8a68e763160..7daf41a05d3 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -285,3 +285,5 @@ ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; ALTER TABLE llx_menu MODIFY COLUMN module varchar(255); UPDATE llx_actioncomm SET fk_action = 50 where fk_action = 40 AND code = 'TICKET_MSG'; + +ALTER TABLE llx_emailcollector_emailcollector ADD COLUMN hostcharset varchar(16) DEFAULT 'UTF-8'; diff --git a/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql b/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql index 10f3e4f8b9b..87581f418e8 100644 --- a/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql +++ b/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql @@ -21,7 +21,8 @@ CREATE TABLE llx_emailcollector_emailcollector( ref varchar(128) NOT NULL, label varchar(255), description text, - host varchar(255), + host varchar(255), + hostcharset varchar(16) DEFAULT 'UTF-8', login varchar(128), password varchar(128), source_directory varchar(255) NOT NULL, diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 1bd7f3d0297..5ce79a12231 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -40,6 +40,7 @@ WebUserGroup=Web server user/group NoSessionFound=Your PHP configuration seems to not allow listing of active sessions. The directory used to save sessions (%s) may be protected (for example by OS permissions or by PHP directive open_basedir). DBStoringCharset=Database charset to store data DBSortingCharset=Database charset to sort data +HostCharset=Host charset ClientCharset=Client charset ClientSortingCharset=Client collation WarningModuleNotActive=Module %s must be enabled From bcaa83eeeca16486d5d3d511ea7290b25146aba5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 14:10:04 +0200 Subject: [PATCH 498/780] FIX dol_concatdesc to escape < Better help --- htdocs/admin/emailcollector_card.php | 4 ++-- htdocs/core/class/translate.class.php | 2 +- htdocs/core/lib/functions.lib.php | 9 +++++---- htdocs/emailcollector/class/emailcollector.class.php | 9 +++++++-- htdocs/langs/en_US/admin.lang | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index 74592ff777a..80161eaadc6 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -592,7 +592,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; $htmltext = $langs->transnoentitiesnoconv("OperationParamDesc"); //var_dump($htmltext); - print $form->textwithpicto('', $htmltext); + print $form->textwithpicto('', $htmltext, 1, 'help', '', 0, 2, 'operationparamtt'); print ''; print ''; print ''; @@ -643,7 +643,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; // Delete print ''; print ''; diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 4f3930a4588..3fc3151030a 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -308,7 +308,7 @@ class Translate continue; } else { - // Convert some strings: Parse and render carriage returns. Also, change '\\s' int '\s' because transifex sync pull the string '\s' into string '\\s' + // Convert some strings: Parse and render carriage returns. Also, change '\\s' into '\s' because transifex sync pull the string '\s' into string '\\s' $this->tab_translate[$key] = str_replace(array('\\n', '\\\\s'), array("\n", '\s'), $value); if ($usecachekey) { $tabtranslatedomain[$key] = $value; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 20094da216c..31716dc3f3c 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5794,7 +5794,8 @@ function dolGetFirstLineOfText($text, $nboflines = 1, $charset = 'UTF-8') /** - * Replace CRLF in string with a HTML BR tag + * Replace CRLF in string with a HTML BR tag. + * WARNING: The content after operation contains some HTML tags (the
) so be sure to also have encode the special chars of stringtoencode into HTML before. * * @param string $stringtoencode String to encode * @param int $nl2brmode 0=Adding br before \n, 1=Replacing \n by br @@ -6048,7 +6049,7 @@ function dol_textishtml($msg, $option = 0) * * @param string $text1 Text 1 * @param string $text2 Text 2 - * @param bool $forxml false=Use
instead of \n if html content detected, true=Use
instead of \n if html content detected + * @param bool $forxml true=Use
instead of
if we have to add a br tag * @param bool $invert invert order of description lines (we often use config MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION in this parameter) * @return string Text 1 + new line + Text2 * @see dol_textishtml() @@ -6063,9 +6064,9 @@ function dol_concatdesc($text1, $text2, $forxml = false, $invert = false) } $ret = ''; - $ret .= (!dol_textishtml($text1) && dol_textishtml($text2)) ?dol_nl2br($text1, 0, $forxml) : $text1; + $ret .= (!dol_textishtml($text1) && dol_textishtml($text2)) ? dol_nl2br(dol_escape_htmltag($text1, 0, 1, '', 1), 0, $forxml) : $text1; $ret .= (!empty($text1) && !empty($text2)) ? ((dol_textishtml($text1) || dol_textishtml($text2)) ? ($forxml ? "
\n" : "
\n") : "\n") : ""; - $ret .= (dol_textishtml($text1) && !dol_textishtml($text2)) ?dol_nl2br($text2, 0, $forxml) : $text2; + $ret .= (dol_textishtml($text1) && !dol_textishtml($text2)) ? dol_nl2br(dol_escape_htmltag($text2, 0, 1, '', 1), 0, $forxml) : $text2; return $ret; } diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 969b83cac5a..2bc6d6db962 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -937,8 +937,8 @@ class EmailCollector extends CommonObject } imap_errors(); // Clear stack of errors. - // $conf->global->MAIL_PREFIX_FOR_EMAIL_ID must be defined $host = dol_getprefix('email'); + //$host = '123456'; // Define the IMAP search string // See https://tools.ietf.org/html/rfc3501#section-6.4.4 for IMAPv4 (PHP not yet compatible) @@ -1081,6 +1081,7 @@ class EmailCollector extends CommonObject dol_syslog("Start of loop on email", LOG_INFO, 1); + $i = 0; foreach ($arrayofemail as $imapemail) { if ($nbemailprocessed > 1000) @@ -1088,6 +1089,8 @@ class EmailCollector extends CommonObject break; // Do not process more than 1000 email per launch (this is a different protection than maxnbcollectedpercollect } + $i++; + $header = imap_fetchheader($connection, $imapemail, 0); $header = preg_replace('/\r\n\s+/m', ' ', $header); // When a header line is on several lines, merge lines $matches = array(); @@ -1095,6 +1098,8 @@ class EmailCollector extends CommonObject $headers = array_combine($matches[1], $matches[2]); //var_dump($headers); + dol_syslog("** Process email ".$i." References: ".$headers['References']); + // If there is a filter on trackid if ($searchfilterdoltrackid > 0) { @@ -1130,7 +1135,7 @@ class EmailCollector extends CommonObject // GET Email meta datas $overview = imap_fetch_overview($connection, $imapemail, 0); - dol_syslog("** Process email - msgid=".$overview[0]->message_id." date=".dol_print_date($overview[0]->udate, 'dayrfc', 'gmt')." subject=".$overview[0]->subject); + dol_syslog("msgid=".$overview[0]->message_id." date=".dol_print_date($overview[0]->udate, 'dayrfc', 'gmt')." subject=".$overview[0]->subject); // Decode $overview[0]->subject according to RFC2047 // Can use also imap_mime_header_decode($str) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 5ce79a12231..6c139a0f10c 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1939,7 +1939,7 @@ WithoutDolTrackingID=Dolibarr Reference not found in Message ID 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:
objproperty1=SET:abc
objproperty1=SET:a value with replacement of __objproperty1__
objproperty3=SETIFEMPTY:abc
objproperty4=EXTRACT:HEADER:X-Myheaderkey.*[^\s]+(.*)
options_myextrafield=EXTRACT:SUBJECT:([^\s]*)
object.objproperty5=EXTRACT:BODY:My company name is\s([^\s]*)

Use a ; char as separator to extract or set several properties. +OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:
objproperty1=SET:the value to set
objproperty2=SET:a value with replacement of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\s*([^\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\s([^\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module From 4a65b629ee3c93266226208d24806aee8243e168 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 14:29:14 +0200 Subject: [PATCH 499/780] Position of fields --- htdocs/index.php | 4 ++-- htdocs/theme/eldy/global.inc.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index 36aae1f25b8..7f6e462839b 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -142,11 +142,11 @@ if (empty($user->socid) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTATS)) 'orders', 'invoices', 'donations', - 'contracts', - 'interventions', 'supplier_proposals', 'supplier_orders', 'supplier_invoices', + 'contracts', + 'interventions', 'ticket' ); diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 2f5e10c1459..afb154408c5 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3643,7 +3643,7 @@ ul.noborder li:nth-child(even):not(.liste_titre) { box-shadow: 0px 0px 8px 0px rgba(0,0,0,0.20); } span.boxstatstext { - opacity: 0.7; + opacity: 0.5; line-height: 18px; color: var(--colortext); } From 72c6aa81bb146813ab52f6a95f321ba9918c687c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 May 2020 12:30:59 +0200 Subject: [PATCH 500/780] Trans --- htdocs/langs/en_US/modulebuilder.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/modulebuilder.lang b/htdocs/langs/en_US/modulebuilder.lang index b815cf997cc..135ac1ae9ec 100644 --- a/htdocs/langs/en_US/modulebuilder.lang +++ b/htdocs/langs/en_US/modulebuilder.lang @@ -83,7 +83,7 @@ ListOfDictionariesEntries=List of dictionaries entries ListOfPermissionsDefined=List of defined permissions SeeExamples=See examples here 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 (not list), 4=Visible on list and update/view form only (not create), 5=Visible on list end view form only (not create, not update). Using a negative value means field is not shown by default on list but can be selected for viewing). It can be an expression, for example:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
($user->rights->holiday->define_holiday ? 1 : 0) +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 (not list), 4=Visible on list and update/view form only (not create), 5=Visible on list end view form only (not create, not update).

Using a negative value means field is not shown by default on list but can be selected for viewing).

It can be an expression, for example:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
($user->rights->holiday->define_holiday ? 1 : 0) DisplayOnPdfDesc=Display this field on compatible PDF documents, you can manage position with "Position" field.
Currently, known compatibles PDF models are : eratosthene (order), espadon (ship), sponge (invoices), cyan (propal/quotation), cornas (supplier order)

For document :
0 = not displayed
1 = display
2 = display only if not empty

For document lines :
0 = not displayed
1 = displayed in a column
3 = display in line description column after the description
4 = display in description column after the description only if not empty DisplayOnPdf=Display on PDF IsAMeasureDesc=Can the value of field be cumulated to get a total into list? (Examples: 1 or 0) From 4a04cecbaae3c6deea391462718f08323965805d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 May 2020 12:49:53 +0200 Subject: [PATCH 501/780] CSS --- htdocs/theme/eldy/global.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index ef39d38a568..60c7ee43bb0 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1611,7 +1611,7 @@ div.nopadding { } td.nobordernopadding.widthpictotitle.col-picto { - color: var(--colortexttitlenotab); + color: #bbb; opacity: 0.85; } .table-list-of-attached-files .col-picto, .table-list-of-links .col-picto { From 0b3e917155c8e4f9f4a6fe676268fd357f6e8df0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 May 2020 13:29:50 +0200 Subject: [PATCH 502/780] CSS --- htdocs/core/tpl/extrafields_view.tpl.php | 21 ++++++++++++++++++--- htdocs/theme/eldy/global.inc.php | 2 +- htdocs/theme/md/style.css.php | 2 +- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php index e6cbad245d9..198a3910747 100644 --- a/htdocs/core/tpl/extrafields_view.tpl.php +++ b/htdocs/core/tpl/extrafields_view.tpl.php @@ -52,8 +52,12 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element] { $lastseparatorkeyfound = ''; $extrafields_collapse_num = ''; + $extrafields_collapse_num_old = ''; + $i = 0; foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label) { + $i++; + // Discard if extrafield is a hidden field on form $enabled = 1; @@ -65,6 +69,7 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element] { $enabled = dol_eval($extrafields->attributes[$object->table_element]['list'][$key], 1); } + $perms = 1; if ($perms && isset($extrafields->attributes[$object->table_element]['perms'][$key])) { @@ -87,6 +92,8 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element] $value = $object->array_options["options_".$key]; //var_dump($key.' - '.$value); } + + // Print line tr of extra field if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') { $extrafields_collapse_num = ''; @@ -109,13 +116,20 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element] } else { - print '
'; + print ''; + $extrafields_collapse_num_old = $extrafields_collapse_num; print ''; - if(!empty($show_subgroup)) + if (!empty($show_subgroup)) { // Permet d'afficher le compte comptable if (empty($displayed_account) || $root_account_description != $displayed_account) { // Affiche un Sous-Total par compte comptable if ($displayed_account != "") { - print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; + print ''; print "\n"; print ''; } // Show first line of a break print ''; - print ''; + print ''; print ''; $displayed_account = $root_account_description; @@ -337,9 +337,9 @@ if ($action != 'export_csv') $sous_total_credit += $line->credit; } - if(!empty($show_subgroup)) + if (!empty($show_subgroup)) { - print ''; + print ''; print "\n"; print ''; } diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index f9bc453d999..6b9be4d285c 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -712,11 +712,11 @@ if (!empty($date_start) && !empty($date_stop)) print ''; // Total ET - print '\n"; + print '\n"; // Total IT - print '\n"; + print '\n"; // Total VAT - print '\n"; + print '\n"; print '\n"; @@ -758,9 +758,9 @@ if (!empty($date_start) && !empty($date_stop)) // Balance print ''; print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; print ''; print "\n"; } diff --git a/htdocs/core/class/interfaces.class.php b/htdocs/core/class/interfaces.class.php index 9302ed09afb..7c010ea742c 100644 --- a/htdocs/core/class/interfaces.class.php +++ b/htdocs/core/class/interfaces.class.php @@ -379,7 +379,7 @@ class Interfaces print 'Error: Trigger '.$modName.' does not extends DolibarrTriggers
'; } } - catch(Exception $e) { + catch (Exception $e) { print $e->getMessage(); } diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index a751f584564..b44d7260e97 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -910,7 +910,7 @@ function num_open_day($timestampStart, $timestampEnd, $inhour = 0, $lastday = 0, if ($numholidays == 1) return 0; } - $nbOpenDay=$lastday; + $nbOpenDay = $lastday; if ($inhour == 1) $nbOpenDay = ($nbOpenDay * 24); return $nbOpenDay - (($inhour == 1 ? 12 : 0.5) * abs($halfday)); diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index 384c4fc3a7e..24811ad854d 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -2302,7 +2302,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it if (preg_match('/experimental/i', $version)) $versiontrans .= 'warning'; if (preg_match('/deprecated/i', $version)) $versiontrans .= 'warning'; if ($this->isCoreOrExternalModule() == 'external' || preg_match('/development|experimental|deprecated/i', $version)) { - print 'getVersion(1).'">'; + print 'getVersion(1).'">'; print $this->getVersion(1); print ''; } diff --git a/htdocs/core/modules/rapport/pdf_paiement.class.php b/htdocs/core/modules/rapport/pdf_paiement.class.php index 024310abb09..103d0fdffba 100644 --- a/htdocs/core/modules/rapport/pdf_paiement.class.php +++ b/htdocs/core/modules/rapport/pdf_paiement.class.php @@ -465,14 +465,14 @@ class pdf_paiement if ($yp > $this->tab_height - 15) { $pdf->SetFillColor(255, 255, 255); - $pdf->Rect($this->marge_gauche +1, $this->tab_top + 10 + $yp, $this->posxpaymentamount - $this->marge_droite -3, $this->line_height, 'F', array(), array()); + $pdf->Rect($this->marge_gauche + 1, $this->tab_top + 10 + $yp, $this->posxpaymentamount - $this->marge_droite - 3, $this->line_height, 'F', array(), array()); $pdf->line($this->marge_gauche, $this->tab_top + 10 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 10 + $yp, array('dash'=>1)); $pdf->line($this->marge_gauche, $this->tab_top + 15 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 15 + $yp); $pdf->SetFont('', 'B', $default_font_size - 1); - $pdf->SetXY($this->posxdate -1, $this->tab_top + 10 + $yp); + $pdf->SetXY($this->posxdate - 1, $this->tab_top + 10 + $yp); $pdf->MultiCell($this->posxpaymentamount - 2 - $this->marge_droite, $this->line_height, $langs->transnoentities('SubTotal')." : ", 0, 'R', 1); - $pdf->SetXY($this->posxpaymentamount -1, $this->tab_top + 10 + $yp); - $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount +1, $this->line_height, price($total_page), 0, 'R', 1); + $pdf->SetXY($this->posxpaymentamount - 1, $this->tab_top + 10 + $yp); + $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount + 1, $this->line_height, price($total_page), 0, 'R', 1); $pdf->SetFont('', '', $default_font_size - 1); $pdf->SetFillColor(220, 220, 220); $page++; @@ -523,19 +523,19 @@ class pdf_paiement } // Add line to add total by payment mode if mode reglement for nex line change - if ((($this->doc_type == 'client' && !empty($conf->global->PAYMENTS_REPORT_GROUP_BY_MOD)) || ($this->doc_type == 'fourn' && !empty($conf->global->PAYMENTS_FOURN_REPORT_GROUP_BY_MOD))) && ($mod != $lines[$j+1][2])) + if ((($this->doc_type == 'client' && !empty($conf->global->PAYMENTS_REPORT_GROUP_BY_MOD)) || ($this->doc_type == 'fourn' && !empty($conf->global->PAYMENTS_FOURN_REPORT_GROUP_BY_MOD))) && ($mod != $lines[$j + 1][2])) { $pdf->SetFillColor(245, 245, 245); - $pdf->Rect($this->marge_gauche +1, $this->tab_top + 10 + $yp, $this->posxpaymentamount - $this->marge_droite -3, $this->line_height, 'F', array(), array()); + $pdf->Rect($this->marge_gauche + 1, $this->tab_top + 10 + $yp, $this->posxpaymentamount - $this->marge_droite - 3, $this->line_height, 'F', array(), array()); $pdf->line($this->marge_gauche, $this->tab_top + 10 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 10 + $yp, array('dash'=>1)); $pdf->line($this->marge_gauche, $this->tab_top + 15 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 15 + $yp); - $pdf->SetXY($this->posxdate -1, $this->tab_top + 10 + $yp); + $pdf->SetXY($this->posxdate - 1, $this->tab_top + 10 + $yp); $pdf->SetFont('', 'I', $default_font_size - 1); $pdf->MultiCell($this->posxpaymentamount - 2 - $this->marge_droite, $this->line_height, $langs->transnoentities('Total').' '.$mod." : ", 0, 'R', 1); - $pdf->SetXY($this->posxpaymentamount -1, $this->tab_top + 10 + $yp); - $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount +1, $this->line_height, price($total_mod), 0, 'R', 1); + $pdf->SetXY($this->posxpaymentamount - 1, $this->tab_top + 10 + $yp); + $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount + 1, $this->line_height, price($total_mod), 0, 'R', 1); $pdf->SetFont('', '', $default_font_size - 1); - $mod = $lines[$j+1][2]; + $mod = $lines[$j + 1][2]; $total_mod = 0; $yp = $yp + 5; if ($yp > $this->tab_height - 5) @@ -551,14 +551,14 @@ class pdf_paiement } $total += $total_page; $pdf->SetFillColor(255, 255, 255); - $pdf->Rect($this->marge_gauche +1, $this->tab_top + 10 + $yp, $this->posxpaymentamount - $this->marge_droite -3, $this->line_height, 'F', array(), array()); + $pdf->Rect($this->marge_gauche + 1, $this->tab_top + 10 + $yp, $this->posxpaymentamount - $this->marge_droite - 3, $this->line_height, 'F', array(), array()); $pdf->line($this->marge_gauche, $this->tab_top + 10 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 10 + $yp, array('dash'=>1)); $pdf->line($this->marge_gauche, $this->tab_top + 15 + $yp, $this->page_largeur - $this->marge_droite, $this->tab_top + 15 + $yp); - $pdf->SetXY($this->posxdate -1, $this->tab_top + 10 + $yp); + $pdf->SetXY($this->posxdate - 1, $this->tab_top + 10 + $yp); $pdf->SetFont('', 'B'); $pdf->MultiCell($this->posxpaymentamount - 2 - $this->marge_droite, $this->line_height, $langs->transnoentities('Total')." : ", 0, 'R', 1); - $pdf->SetXY($this->posxpaymentamount -1, $this->tab_top + 10 + $yp); - $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount +1, $this->line_height, price($total), 0, 'R', 1); + $pdf->SetXY($this->posxpaymentamount - 1, $this->tab_top + 10 + $yp); + $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount + 1, $this->line_height, price($total), 0, 'R', 1); $pdf->SetFillColor(220, 220, 220); } } diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 2bc6d6db962..bf1a4e26de7 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -1092,7 +1092,7 @@ class EmailCollector extends CommonObject $i++; $header = imap_fetchheader($connection, $imapemail, 0); - $header = preg_replace('/\r\n\s+/m', ' ', $header); // When a header line is on several lines, merge lines + $header = preg_replace('/\r\n\s+/m', ' ', $header); // When a header line is on several lines, merge lines $matches = array(); preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $header, $matches); $headers = array_combine($matches[1], $matches[2]); diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 3d6cec96319..16012022dc9 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -625,7 +625,7 @@ $(document).ready(function() { else selectedline=this.id; selectedtext=$('#'+selectedline).find("td:first").html(); '; -if ($action=="productinfo"){ +if ($action == "productinfo") { $prod = new Product($db); $prod->fetch($idproduct); print "".$prod->label."
"; @@ -83,7 +83,7 @@ if ($action=="productinfo"){ print '
'; print ''; } -elseif ($action=="editline"){ +elseif ($action == "editline") { $placeid = GETPOST('placeid', 'int'); $selectedline = GETPOST('selectedline', 'int'); $invoice = new Facture($db); @@ -99,8 +99,8 @@ elseif ($action=="editline"){ print "
".$prod->description; print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; print '
'; - print ''; - print ''; + print ''; + print ''; print ''; } } @@ -168,11 +168,11 @@ $( document ).ready(function() { function LoadPlace(placeid){ place=placeid; @@ -197,11 +197,11 @@ function AddProduct(placeid, productid){ function AddProductConfirm(placeid, productid){ place=placeid;
'.strtoupper(substr($langs->trans('Floors'), 0, 3)).''; print ''; print ''; print ''; } - else{ + else { print ''; print ''; print ''; From 672ea60ffd471b2156bf45c28c60c3dc57223906 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 13:58:34 +0200 Subject: [PATCH 534/780] FIX #13896 --- htdocs/modulebuilder/template/class/myobject.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index fad19564fdc..2070bedf568 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -440,7 +440,7 @@ class MyObject extends CommonObject if ($resql) { $num = $this->db->num_rows($resql); $i = 0; - while ($i < min($limit, $num)) + while ($i < ($limit ? min($limit, $num) : $num)) { $obj = $this->db->fetch_object($resql); From dc6ae70aa6ddc311b8967dd9bf8d445e70c815a1 Mon Sep 17 00:00:00 2001 From: Langlais115 Date: Fri, 15 May 2020 10:25:56 +0200 Subject: [PATCH 535/780] Fix #13805 Add proper type check to "seuil_stock_alerte" parameter. --- 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 bb2a1652d8f..7b6892552d1 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1015,7 +1015,7 @@ class Product extends CommonObject $sql .= ", volume = ".($this->volume != '' ? "'".$this->db->escape($this->volume)."'" : 'null'); $sql .= ", volume_units = ".($this->volume_units != '' ? "'".$this->db->escape($this->volume_units)."'" : 'null'); $sql .= ", fk_default_warehouse = ".($this->fk_default_warehouse > 0 ? $this->db->escape($this->fk_default_warehouse) : 'null'); - $sql .= ", seuil_stock_alerte = ".((isset($this->seuil_stock_alerte) && $this->seuil_stock_alerte != '') ? "'".$this->db->escape($this->seuil_stock_alerte)."'" : "null"); + $sql .= ", seuil_stock_alerte = ".((isset($this->seuil_stock_alerte) && is_numeric($this->seuil_stock_alerte)) ? (int) $this->seuil_stock_alerte : 'null'); $sql .= ", description = '".$this->db->escape($this->description)."'"; $sql .= ", url = ".($this->url ? "'".$this->db->escape($this->url)."'" : 'null'); $sql .= ", customcode = '".$this->db->escape($this->customcode)."'"; From 3295b0d669541c24849f51f772d4487b708ddf3b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 14:14:05 +0200 Subject: [PATCH 536/780] Update viewimage.php --- htdocs/viewimage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index 39795b62fd8..c72a4e0424e 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -203,7 +203,7 @@ if (!empty($hashp)) $accessallowed = 1; // When using hashp, link is public so we force $accessallowed $sqlprotectagainstexternals = ''; } -elseif ($conf->global->TAKEPOS_AUTO_ORDER && isset($_GET["publictakepos"])) +elseif (! empty($conf->global->TAKEPOS_AUTO_ORDER) && isset($_GET["publictakepos"])) { $accessallowed = 1; // Only if TakePOS Public Auto Order is enabled and received publictakepos variable } From f35a618699830aadfaedbf5fbcf9bc8dc7b307db Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 14:29:04 +0200 Subject: [PATCH 537/780] Update index.php --- htdocs/takepos/genimg/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/genimg/index.php b/htdocs/takepos/genimg/index.php index c2bb62b9322..e668b01aacb 100644 --- a/htdocs/takepos/genimg/index.php +++ b/htdocs/takepos/genimg/index.php @@ -77,7 +77,7 @@ elseif ($query == "pro") preg_match('@src="([^"]+)"@', $image, $match); $file = array_pop($match); if ($file == "") header('Location: ../../public/theme/common/nophoto.png'); - else header('Location: '.$file.'&cache=1&publictakepos=1'); + else header('Location: '.$file.'&cache=1&publictakepos=1&modulepart=product'); } else { From b8d7a4373c2deeba697b592eb6eb23fa19812e85 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 14:34:24 +0200 Subject: [PATCH 538/780] Update viewimage.php --- htdocs/viewimage.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index c72a4e0424e..b2534ee92dd 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -52,7 +52,7 @@ if (isset($_GET["hashp"]) && !defined("NOLOGIN")) if (!defined("NOIPCHECK")) define("NOIPCHECK", 1); // Do not check IP defined into conf $dolibarr_main_restrict_ip } // Some value of modulepart can be used to get resources that are public so no login are required. -if ((isset($_GET["modulepart"]) && $_GET["modulepart"] == 'medias')) +if (isset($_GET["modulepart"]) && $_GET["modulepart"] == 'medias') { if (!defined("NOLOGIN")) define("NOLOGIN", 1); if (!defined("NOCSRFCHECK")) define("NOCSRFCHECK", 1); // We accept to go on this page from external web site. @@ -60,7 +60,7 @@ if ((isset($_GET["modulepart"]) && $_GET["modulepart"] == 'medias')) } // Used by TakePOS Auto Order -if (isset($_GET["publictakepos"])) +if (isset($_GET["modulepart"]) && $_GET["modulepart"] == 'product' && isset($_GET["publictakepos"])) { if (!defined("NOLOGIN")) define("NOLOGIN", 1); if (!defined("NOCSRFCHECK")) define("NOCSRFCHECK", 1); // We accept to go on this page from external web site. @@ -203,9 +203,11 @@ if (!empty($hashp)) $accessallowed = 1; // When using hashp, link is public so we force $accessallowed $sqlprotectagainstexternals = ''; } -elseif (! empty($conf->global->TAKEPOS_AUTO_ORDER) && isset($_GET["publictakepos"])) +elseif (isset($_GET["publictakepos"])) { - $accessallowed = 1; // Only if TakePOS Public Auto Order is enabled and received publictakepos variable + if (! empty($conf->global->TAKEPOS_AUTO_ORDER)) { + $accessallowed = 1; // Only if TakePOS Public Auto Order is enabled and received publictakepos variable + } } else { From 895833effc017ad4c2817e16d0a9e947b49b497a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 15:00:58 +0200 Subject: [PATCH 539/780] FIX #13864 --- htdocs/projet/card.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index e41c3da3e88..ae91ac0cfac 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -639,20 +639,20 @@ if ($action == 'create' && $user->rights->projet->creer) // Opportunity probability print '
'; - print ''; print ''; // Opportunity amount print ''; - print ''; + print ''; print ''; } // Budget print ''; - print ''; + print ''; print ''; // Description @@ -897,14 +897,14 @@ elseif ($object->id > 0) // Opportunity probability print ''; - print ''; print ''; // Opportunity amount print ''; - print ''; + print ''; print ''; } @@ -923,7 +923,7 @@ elseif ($object->id > 0) // Budget print ''; - print ''; + print ''; print ''; // Description From 99db3a2991b4b74a38f1c99379f6c06a0c097ca8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 15:15:07 +0200 Subject: [PATCH 540/780] Fix field for opportunities must be visible only if we use opportinities --- htdocs/projet/card.php | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index ae91ac0cfac..6918e6fd57c 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -833,9 +833,22 @@ elseif ($object->id > 0) print ''; + print ''; print ''; // Opportunity probability - print ''; + print ''; print ''; print ''; // Opportunity amount - print ''; + print ''; print ''; print ''; } From 38059ab86190b32c9a5834062b10864ce91fc010 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 15:17:37 +0200 Subject: [PATCH 541/780] Fix 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 cdc0e6b3c95..bb42bff3c87 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -255,7 +255,7 @@ ServiceToUseOnLines=Service to use on lines InvoiceGeneratedFromTimeSpent=Invoice %s has been generated from time spent on project ProjectBillTimeDescription=Check if you enter timesheet on tasks of project AND you plan to generate invoice(s) from the timesheet to bill the customer of the project (do not check if you plan to create invoice that is not based on entered timesheets). Note: To generate invoice, go on tab 'Time spent' of the project and select lines to include. ProjectFollowOpportunity=Follow opportunity -ProjectFollowTasks=Follow tasks +ProjectFollowTasks=Follow tasks or time spent Usage=Usage UsageOpportunity=Usage: Opportunity UsageTasks=Usage: Tasks From 86ff60f16152235e51709c4d91effdff8026822f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 15:50:50 +0200 Subject: [PATCH 542/780] Fix break line and set of opportunity fields --- htdocs/accountancy/bookkeeping/balance.php | 2 +- htdocs/core/class/html.formprojet.class.php | 6 ++++-- htdocs/langs/en_US/accountancy.lang | 1 + htdocs/projet/card.php | 19 ++++++++++++++++--- htdocs/theme/eldy/global.inc.php | 3 ++- htdocs/theme/eldy/theme_vars.inc.php | 2 +- htdocs/theme/md/style.css.php | 20 +++++++++++--------- htdocs/theme/md/theme_vars.inc.php | 2 +- 8 files changed, 37 insertions(+), 18 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index b2a25b00ce2..456da29d954 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -294,7 +294,7 @@ if ($action != 'export_csv') { // Affiche un Sous-Total par compte comptable if ($displayed_account != "") { - print ''; + print ''; print "\n"; print ''; } diff --git a/htdocs/core/class/html.formprojet.class.php b/htdocs/core/class/html.formprojet.class.php index b6c7017e408..bf3db0cc65c 100644 --- a/htdocs/core/class/html.formprojet.class.php +++ b/htdocs/core/class/html.formprojet.class.php @@ -620,11 +620,12 @@ class FormProjets * @param int $showallnone Add choice "All" and "None" * @param int $showpercent Show default probability for status * @param string $morecss Add more css + * @param int $noadmininfo 0=Add admin info, 1=Disable admin info * @return int|string The HTML select list of element or '' if nothing or -1 if KO */ - public function selectOpportunityStatus($htmlname, $preselected = '-1', $showempty = 1, $useshortlabel = 0, $showallnone = 0, $showpercent = 0, $morecss = '') + public function selectOpportunityStatus($htmlname, $preselected = '-1', $showempty = 1, $useshortlabel = 0, $showallnone = 0, $showpercent = 0, $morecss = '', $noadmininfo = 0) { - global $conf, $langs; + global $conf, $langs, $user; $sql = "SELECT rowid, code, label, percent"; $sql .= " FROM ".MAIN_DB_PREFIX.'c_lead_status'; @@ -670,6 +671,7 @@ class FormProjets $i++; } $sellist .= ''; + if ($user->admin && !$noadmininfo) $sellist .= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); } /*else { diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index adf2309ad07..92cc0f0c79e 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -234,6 +234,7 @@ ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Third-party unkno ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Third-party account not defined or third party unknown. Blocking error. UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third-party account and waiting account not defined. Blocking error PaymentsNotLinkedToProduct=Payment not linked to any product / service +OpeningBalance=Opening balance ShowOpeningBalance=Show opening balance HideOpeningBalance=Hide opening balance diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 6918e6fd57c..15d1d6d9563 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -558,6 +558,19 @@ if ($action == 'create' && $user->rights->projet->creer) print ' '; $htmltext = $langs->trans("ProjectFollowOpportunity"); print $form->textwithpicto($langs->trans("ProjectFollowOpportunity"), $htmltext); + print ''; print '
'; } if (empty($conf->global->PROJECT_HIDE_TASKS)) @@ -632,20 +645,20 @@ if ($action == 'create' && $user->rights->projet->creer) if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { // Opportunity status - print ''; + print ''; print ''; // Opportunity probability - print ''; + print ''; print ''; print ''; // Opportunity amount - print ''; + print ''; print ''; print ''; } diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index afb154408c5..3e213c3d8e2 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -17,6 +17,7 @@ --colorbacklinepair2: rgb(); --colorbacklinepairhover: rgb(); --colorbacklinepairchecked: rgb(); + --colorbacklinebreak: rgb(); --colorbackbody: rgb(); --colortexttitlenotab: rgb(); --colortexttitle: rgb(); @@ -3289,7 +3290,7 @@ td.evenodd, tr.nohoverpair td, #trlinefordates td { .trforbreak td { font-weight: 500; border-bottom: 1pt solid black !important; - /* background-color: # !important; */ + background-color: var(--colorbacklinebreak) !important; !important; } .trforbreak.nobold td a, .trforbreak.nobold span.secondary { font-weight: normal !important; diff --git a/htdocs/theme/eldy/theme_vars.inc.php b/htdocs/theme/eldy/theme_vars.inc.php index 823b8168b4c..d2a11725ecf 100644 --- a/htdocs/theme/eldy/theme_vars.inc.php +++ b/htdocs/theme/eldy/theme_vars.inc.php @@ -65,7 +65,7 @@ $colorbacklinepair1 = '251,251,251'; // line pair $colorbacklinepair2 = '251,251,251'; // line pair $colorbacklinepairhover = '230,237,244'; // line hover $colorbacklinepairchecked = '230,237,244'; // line checked -$colorbacklinebreak = '233,228,230'; // line break +$colorbacklinebreak = '253,251,250'; // line break $colorbackbody = '255,255,255'; $colortexttitlenotab = '0,113,120'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,113,120, violet: 0,50,120 $colortexttitle = '0,0,0'; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index da2df5eb788..36fb265c42a 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -242,6 +242,7 @@ print '*/'."\n"; --colorbacklinepair2: rgb(); --colorbacklinepairhover: rgb(); --colorbacklinepairchecked: rgb(); + --colorbacklinebreak: rgb(); --colorbackbody: rgb(); --colortexttitlenotab: rgb(); --colortexttitle: rgb(); @@ -3284,10 +3285,10 @@ ul.noborder li:nth-child(odd):not(.liste_titre) { } .impair, .nohover .impair:hover, tr.impair td.nohover { - background: #; + background: var(--colorbacklineimpair1); } #GanttChartDIV { - background-color: #; + background-color: var(--colorbacklineimpair1); } .oddeven, .evenodd, .pair, .nohover .pair:hover, tr.pair td.nohover, .tagtr.oddeven { @@ -3296,25 +3297,26 @@ ul.noborder li:nth-child(odd):not(.liste_titre) { color: #202020; } .pair, .nohover .pair:hover, tr.pair td.nohover { - background-color: #; + background-color: var(--colorbacklinepair1); } + table.dataTable tr.oddeven { - background-color: # !important; + background-color: var(--colorbacklinepair1) !important; } /* For no hover style */ td.oddeven, table.nohover tr.impair, table.nohover tr.pair, table.nohover tr.impair td, table.nohover tr.pair td, tr.nohover td, form.nohover, form.nohover:hover { - background-color: # !important; - background: # !important; + background-color: var(--colorbacklineimpair1) !important; !important; + background: var(--colorbacklineimpair1) !important; !important; } td.evenodd, tr.nohoverpair td, #trlinefordates td { - background-color: # !important; - background: # !important; + background-color: var(--colorbacklinepair1) !important; !important; + background: var(--colorbacklinepair1) !important; !important; } .trforbreak td { font-weight: bold; border-bottom: 1pt solid black !important; - /* background-color: # !important; */ + background-color: var(--colorbacklinebreak) !important; } table.dataTable td { diff --git a/htdocs/theme/md/theme_vars.inc.php b/htdocs/theme/md/theme_vars.inc.php index 6cdd37fe913..ffad2cc66b5 100644 --- a/htdocs/theme/md/theme_vars.inc.php +++ b/htdocs/theme/md/theme_vars.inc.php @@ -61,7 +61,7 @@ $colorbacklinepair1 = '248,248,248'; // line pair $colorbacklinepair2 = '246,246,246'; // line pair $colorbacklinepairhover = '230,237,244'; // line hover $colorbacklinepairchecked = '230,237,244'; // line checked -$colorbacklinebreak = '214,218,220'; +$colorbacklinebreak = '250,246,251'; $colorbackbody = '248,248,248'; $colortexttitlenotab = '80,71,5'; $colortexttitle = '20,20,20'; From 1453b8469ea6dad679dc652bc0fa4a175f081cae Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Fri, 15 May 2020 15:56:16 +0200 Subject: [PATCH 543/780] Update 11.0.0-12.0.0.sql --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 95c6658c306..8a68e763160 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -285,5 +285,3 @@ ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; ALTER TABLE llx_menu MODIFY COLUMN module varchar(255); UPDATE llx_actioncomm SET fk_action = 50 where fk_action = 40 AND code = 'TICKET_MSG'; - -ALTER TABLE llx_commande MODIFY COLUMN date_livraison DATETIME; From 703fee0635d4deccccccc7a1ac1f88ebe287f397 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Fri, 15 May 2020 15:58:01 +0200 Subject: [PATCH 544/780] Update llx_commande.sql --- htdocs/install/mysql/tables/llx_commande.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_commande.sql b/htdocs/install/mysql/tables/llx_commande.sql index 676e768c73b..aa237383452 100644 --- a/htdocs/install/mysql/tables/llx_commande.sql +++ b/htdocs/install/mysql/tables/llx_commande.sql @@ -64,8 +64,8 @@ create table llx_commande fk_currency varchar(3), -- currency code fk_cond_reglement integer, -- condition de reglement fk_mode_reglement integer, -- mode de reglement - - date_livraison date default NULL, + + date_livraison datetime default NULL, fk_shipping_method integer, -- shipping method id fk_warehouse integer default NULL, fk_availability integer NULL, From 6a0bc86ea6a77c000eb1092a8fafdd97fa6ddc50 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Fri, 15 May 2020 16:03:03 +0200 Subject: [PATCH 545/780] Create 12.0.0.-13.0.0.sql --- .../mysql/migration/12.0.0.-13.0.0.sql | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 htdocs/install/mysql/migration/12.0.0.-13.0.0.sql diff --git a/htdocs/install/mysql/migration/12.0.0.-13.0.0.sql b/htdocs/install/mysql/migration/12.0.0.-13.0.0.sql new file mode 100644 index 00000000000..e0bf956bb43 --- /dev/null +++ b/htdocs/install/mysql/migration/12.0.0.-13.0.0.sql @@ -0,0 +1,35 @@ +-- +-- Be carefull to requests order. +-- This file must be loaded by calling /install/index.php page +-- when current version is 13.0.0 or higher. +-- +-- To restrict request to Mysql version x.y minimum use -- VMYSQLx.y +-- To restrict request to Pgsql version x.y minimum use -- VPGSQLx.y +-- To rename a table: ALTER TABLE llx_table RENAME TO llx_table_new; +-- To add a column: ALTER TABLE llx_table ADD COLUMN newcol varchar(60) NOT NULL DEFAULT '0' AFTER existingcol; +-- To rename a column: ALTER TABLE llx_table CHANGE COLUMN oldname newname varchar(60); +-- To drop a column: ALTER TABLE llx_table DROP COLUMN oldname; +-- To change type of field: ALTER TABLE llx_table MODIFY COLUMN name varchar(60); +-- To drop a foreign key: ALTER TABLE llx_table DROP FOREIGN KEY fk_name; +-- To create a unique index ALTER TABLE llx_table ADD UNIQUE INDEX uk_table_field (field); +-- To drop an index: -- VMYSQL4.1 DROP INDEX nomindex on llx_table +-- To drop an index: -- VPGSQL8.2 DROP INDEX nomindex +-- To make pk to be auto increment (mysql): -- VMYSQL4.3 ALTER TABLE llx_table CHANGE COLUMN rowid rowid INTEGER NOT NULL AUTO_INCREMENT; +-- To make pk to be auto increment (postgres): +-- -- VPGSQL8.2 CREATE SEQUENCE llx_table_rowid_seq OWNED BY llx_table.rowid; +-- -- VPGSQL8.2 ALTER TABLE llx_table ADD PRIMARY KEY (rowid); +-- -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN rowid SET DEFAULT nextval('llx_table_rowid_seq'); +-- -- VPGSQL8.2 SELECT setval('llx_table_rowid_seq', MAX(rowid)) FROM llx_table; +-- To set a field as NULL: -- VMYSQL4.3 ALTER TABLE llx_table MODIFY COLUMN name varchar(60) NULL; +-- To set a field as NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name DROP NOT NULL; +-- To set a field as NOT NULL: -- VMYSQL4.3 ALTER TABLE llx_table MODIFY COLUMN name varchar(60) NOT NULL; +-- To set a field as NOT NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET NOT NULL; +-- To set a field as default NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET DEFAULT NULL; +-- Note: fields with type BLOB/TEXT can't have default value. + + +-- Missing in v12 + + +-- For v13 + ALTER TABLE llx_commande MODIFY COLUMN date_livraison DATETIME; From e00152a8459f51eb9fb9619f06d6d75888f56063 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Fri, 15 May 2020 16:03:38 +0200 Subject: [PATCH 546/780] Rename 12.0.0.-13.0.0.sql to 12.0.0-13.0.0.sql --- .../mysql/migration/{12.0.0.-13.0.0.sql => 12.0.0-13.0.0.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename htdocs/install/mysql/migration/{12.0.0.-13.0.0.sql => 12.0.0-13.0.0.sql} (100%) diff --git a/htdocs/install/mysql/migration/12.0.0.-13.0.0.sql b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql similarity index 100% rename from htdocs/install/mysql/migration/12.0.0.-13.0.0.sql rename to htdocs/install/mysql/migration/12.0.0-13.0.0.sql From 8d242cacae0ab85f988adc3110141c12a28cb918 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Fri, 15 May 2020 16:04:36 +0200 Subject: [PATCH 547/780] Update 12.0.0-13.0.0.sql update sql --- htdocs/install/mysql/migration/12.0.0-13.0.0.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql index e0bf956bb43..d2ee477afa3 100644 --- a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql +++ b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql @@ -32,4 +32,5 @@ -- For v13 + ALTER TABLE llx_commande MODIFY COLUMN date_livraison DATETIME; From 5fe9c45fb25a952c9b38d2f815354ec19c7df1e7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 16:07:39 +0200 Subject: [PATCH 548/780] Fix look and feel v12 --- htdocs/core/lib/functions.lib.php | 2 +- htdocs/projet/card.php | 4 +-- htdocs/societe/card.php | 51 +++++-------------------------- 3 files changed, 11 insertions(+), 46 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 31716dc3f3c..878b85993b5 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3149,7 +3149,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (empty($srconly) && in_array($pictowithouttext, array( '1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected', 'accountancy', 'address', 'bank_account', 'barcode', 'bank', 'bill', 'bookmark', 'bom', 'building', - 'cash-register', 'check', 'close_title', 'company', 'contact', 'contract', 'cubes', + 'cash-register', 'category', 'check', 'close_title', 'company', 'contact', 'contract', 'cubes', 'delete', 'dolly', 'dollyrevert', 'edit', 'ellipsis-h', 'external-link-alt', 'external-link-square-alt', 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'folder', 'folder-open', 'globe', 'globe-americas', 'grip', 'grip_title', 'help', 'intervention', 'label', 'language', 'list', 'listlight', 'lot', diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 15d1d6d9563..e79d5bafa59 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -604,7 +604,7 @@ if ($action == 'create' && $user->rights->projet->creer) print '"; } diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 195d4df88bb..6abb7aa9647 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1331,7 +1331,7 @@ else // Country print ''; @@ -1354,16 +1354,16 @@ else // Phone / Fax print ''; - print 'browser->layout == 'phone' ? ' colspan="3"': '').'>'.img_picto('', 'object_phoning').' '; + print 'browser->layout == 'phone' ? ' colspan="3"': '').'>'.img_picto('', 'object_phoning').' '; if ($conf->browser->layout == 'phone') print ''; print ''; - print 'browser->layout == 'phone' ? ' colspan="3"': '').'>'.img_picto('', 'object_phoning_fax').' '; + print 'browser->layout == 'phone' ? ' colspan="3"': '').'>'.img_picto('', 'object_phoning_fax').' '; // Email / Web print ''; - print ''; + print ''; print ''; - print ''; + print ''; if (!empty($conf->socialnetworks->enabled)) { foreach ($socialnetworks as $key => $value) { @@ -1380,42 +1380,6 @@ else } } - // if (! empty($conf->socialnetworks->enabled)) - // { - // // Skype - // if (! empty($conf->global->SOCIALNETWORKS_SKYPE)) - // { - // print ''; - // print ''; - // } - // // Twitter - // if (! empty($conf->global->SOCIALNETWORKS_TWITTER)) - // { - // print ''; - // print ''; - // } - // // Facebook - // if (! empty($conf->global->SOCIALNETWORKS_FACEBOOK)) - // { - // print ''; - // print ''; - // } - // // LinkedIn - // if (! empty($conf->global->SOCIALNETWORKS_LINKEDIN)) - // { - // print ''; - // print ''; - // } - // } - // Prof ids $i = 1; $j = 0; $NBCOLS = ($conf->browser->layout == 'phone' ? 1 : 2); while ($i <= 6) @@ -1481,9 +1445,10 @@ else //TODO: Place into a function to control showing by country or study better option if ($mysoc->localtax1_assuj == "1" && $mysoc->localtax2_assuj == "1") { - print ''; + print ''; } From c43813ccbb7f5671b0d79291066ded0e35abef30 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 16:23:24 +0200 Subject: [PATCH 549/780] Fix responsive of edition of thirdparties --- htdocs/societe/card.php | 62 +++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 40 deletions(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 6abb7aa9647..96a9dd7deed 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1396,7 +1396,7 @@ else print $formcompany->get_input_id_prof($i, $key, $object->$key, $object->country_code); print ''; - if (($j % 2) == 1) print ''; + if (($j % $NBCOLS) == ($NBCOLS - 1)) print ''; $j++; } $i++; @@ -1448,6 +1448,7 @@ else print ''; + if ($conf->browser->layout == 'phone') print ''; print ''; @@ -1848,6 +1849,7 @@ else print ''; + if ($conf->browser->layout == 'phone') print ''; print 'id.')">'; - $htmlforlines .= ''."\n"; + $htmlforlines .= '
'; + $htmlforlines .= $row->label.''.price($row->price_ttc, 1, $langs, 1, -1, -1, $conf->currency); + $htmlforlines .= ''."\n"; } $htmlforlines .= '
attributes[$object->table_element]['required'][$key])) print ' fieldrequired'; print '">'; if (!empty($extrafields->attributes[$object->table_element]['help'][$key])) print $form->textwithpicto($langs->trans($label), $langs->trans($extrafields->attributes[$object->table_element]['help'][$key])); @@ -161,6 +175,7 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element] //print 'x'.$object->array_options['options_' . $key].'-'.$datenotinstring.' - '.dol_print_date($datenotinstring, 'dayhour'); $value = isset($_POST["options_".$key]) ? dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]) : $datenotinstring; } + //TODO Improve element and rights detection if ($action == 'edit_extras' && $permok && GETPOST('attribute', 'none') == $key) { diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 60c7ee43bb0..2f5e10c1459 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1751,7 +1751,7 @@ img.photorefnoborder { border-bottom: px solid rgb(); /* border-bottom: 2px solid var(--colorbackhmenu1); */ } -.trextrafieldseparator td { +.trextrafieldseparator td, .trextrafields_collapse_last td { /* border-bottom: 2px solid var(--colorbackhmenu1) !important; */ border-bottom: 2px solid rgb() !important; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index c7ce5709efd..da2df5eb788 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1799,7 +1799,7 @@ img.photorefnoborder { border-bottom: px solid rgb(); } -.trextrafieldseparator td { +.trextrafieldseparator td, .trextrafields_collapse_last td { border-bottom: 1px solid rgb() !important; } .tdhrthin { From 5f400d27b4a7909efcad5f2914cdefddb4d64983 Mon Sep 17 00:00:00 2001 From: "DEMAREST Maxime (Indelog)" Date: Wed, 13 May 2020 15:01:32 +0200 Subject: [PATCH 490/780] Add preview file in compta/accounting-files.php --- htdocs/compta/accounting-files.php | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index c567c5e99ee..98d8c9b9983 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/paymentvarious.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; $langs->loadLangs(array("accountancy", "bills", "companies", "salaries", "compta", "trips", "banks")); @@ -232,6 +233,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { $subdir .= ($subdir ? '/' : '').dol_sanitizeFileName($objd->ref); $upload_dir = $conf->facture->dir_output.'/'.$subdir; $link = "document.php?modulepart=facture&file=".str_replace('/', '%2F', $subdir).'%2F'; + $modulepart = "facture"; break; case "SupplierInvoice": $tmpinvoicesupplier->fetch($objd->id); @@ -239,18 +241,21 @@ if (($action == 'searchfiles' || $action == 'dl')) { $subdir .= ($subdir ? '/' : '').dol_sanitizeFileName($objd->ref); $upload_dir = $conf->fournisseur->facture->dir_output.'/'.$subdir; $link = "document.php?modulepart=facture_fournisseur&file=".str_replace('/', '%2F', $subdir).'%2F'; + $modulepart = "facture_fournisseur"; break; case "ExpenseReport": $subdir = ''; $subdir .= ($subdir ? '/' : '').dol_sanitizeFileName($objd->ref); $upload_dir = $conf->expensereport->dir_output.'/'.$subdir; $link = "document.php?modulepart=expensereport&file=".str_replace('/', '%2F', $subdir).'%2F'; + $modulepart = "expensereport"; break; case "SalaryPayment": $subdir = ''; $subdir .= ($subdir ? '/' : '').dol_sanitizeFileName($objd->id); $upload_dir = $conf->salaries->dir_output.'/'.$subdir; $link = "document.php?modulepart=salaries&file=".str_replace('/', '%2F', $subdir).'%2F'; + $modulepart = "salaries"; break; case "Donation": $tmpdonation->fetch($objp->id); @@ -258,18 +263,21 @@ if (($action == 'searchfiles' || $action == 'dl')) { $subdir .= ($subdir ? '/' : '').dol_sanitizeFileName($objd->id); $upload_dir = $conf->don->dir_output.'/'.$subdir; $link = "document.php?modulepart=don&file=".str_replace('/', '%2F', $subdir).'%2F'; + $modulepart = "don"; break; case "SocialContributions": $subdir = ''; $subdir .= ($subdir ? '/' : '').dol_sanitizeFileName($objd->id); $upload_dir = $conf->tax->dir_output.'/'.$subdir; $link = "document.php?modulepart=tax&file=".str_replace('/', '%2F', $subdir).'%2F'; + $modulepart = "tax"; break; case "VariousPayment": $subdir = ''; $subdir .= ($subdir ? '/' : '').dol_sanitizeFileName($objd->id); $upload_dir = $conf->bank->dir_output.'/'.$subdir; $link = "document.php?modulepart=banque&file=".str_replace('/', '%2F', $subdir).'%2F'; + $modulepart = "banque"; break; default: $subdir = ''; @@ -336,7 +344,16 @@ if (($action == 'searchfiles' || $action == 'dl')) { if (empty($filesarray[$file['item'].'_'.$file['id']]['files'])) { $filesarray[$file['item'].'_'.$file['id']]['files'] = array(); } - $filesarray[$file['item'].'_'.$file['id']]['files'][] = array('link' => $link.$file['name'], 'name'=>$file['name'], 'ref'=>$file['ref'], 'fullname' => $file['fullname'], 'relpathnamelang' => $langs->trans($file['item']).'/'.$file['name']); + $filesarray[$file['item'].'_'.$file['id']]['files'][] = array( + 'link' => $link.urlencode($file['name']), + 'name'=>$file['name'], + 'ref'=>$file['ref'], + 'fullname' => $file['fullname'], + 'relpath' => '/'.$file['name'], + 'relpathnamelang' => $langs->trans($file['item']).'/'.$file['name'], + 'modulepart' => $modulepart, + 'subdir' => $subdir, + ); //var_dump($file['item'].'_'.$file['id']); //var_dump($filesarray[$file['item'].'_'.$file['id']]['files']); } @@ -463,7 +480,8 @@ if ($result && $action == "dl" && !$error) * View */ -$form = new Form($db); +$form = new form($db); +$formfile = new FormFile($db); $userstatic = new User($db); $invoice = new Facture($db); $supplier_invoice = new FactureFournisseur($db); @@ -654,8 +672,8 @@ if (!empty($date_start) && !empty($date_stop)) print ''; if (!empty($data['files'])) { - foreach ($data['files'] as $filecursor) { - print ''.($filecursor['name'] ? $filecursor['name'] : $filecursor['ref']).'
'; + foreach ($data['files'] as $id=>$filecursor) { + print ''.($filecursor['name'] ? $filecursor['name'] : $filecursor['ref']).' '.$formfile->showPreview($filecursor, $filecursor['modulepart'], $filecursor['subdir'].'/'.$filecursor['name']).'
'; } } print "
'.$data['paid'].''.price($data['amount_ht'])."'.price($data['sens']?$data['amount_ht']:-$data['amount_ht'])."'.price($data['amount_ttc'])."'.price($data['sens']?$data['amount_ttc']:-$data['amount_ttc'])."'.price($data['amount_vat'])."'.price($data['sens']?$data['amount_vat']:-$data['amount_vat'])."'.$data['thirdparty_name']."'.$data['vatnum']."'.(($data['amount_ttc'] > 0) ? price(abs($data['amount_ttc'])) : '')."'.(($data['amount_ttc'] > 0) ? '' : price(abs($data['amount_ttc'])))."'.price($data['balance'])."
'.price(price2num($totalET, 'MT')).''.price(price2num($totalIT, 'MT')).''.price(price2num($totalVAT, 'MT')).''.price($totalDebit).''.price($totalCredit).''.price(price2num($totalDebit - $totalCredit, 'MT')).''.$langs->trans('Total').' '.$langs->trans('Income').''.price(price2num($totalET_credit, 'MT')).''.price(price2num($totalIT_credit, 'MT')).''.price(price2num($totalVAT_credit, 'MT')).'
'.$langs->trans('Total').' '.$langs->trans('Outcome').''.price(price2num($totalET_debit, 'MT')).''.price(price2num($totalIT_debit, 'MT')).''.price(price2num($totalVAT_debit, 'MT')).'
'.$langs->trans('Total').''.price(price2num($totalET_credit+$totalET_debit, 'MT')).''.price(price2num($totalIT_credit+$totalIT_debit, 'MT')).''.price(price2num($totalVAT_credit+$totalVAT_debit, 'MT')).'
'; + if ($obj->tosell) { - $objp = $db->fetch_object($resultp); - print ''; - if ($obj->tosell) - { - if ($obj->price_base_type == 'TTC') print price($objp->price_ttc).' '.$langs->trans("TTC"); - else print price($objp->price).' '.$langs->trans("HT"); + $resultp = "SELECT p.rowid, p.fk_product, p.price, p.price_ttc, p.price_level, p.date_price"; + $resultp .= " FROM ".MAIN_DB_PREFIX."product_price as p"; + $resultp .= " WHERE fk_product = ".$obj->rowid; + $resultp .= " AND p.price_level = ".$key; + $resultp .= " ORDER BY p.date_price DESC, p.rowid DESC, p.price_level ASC"; + $resultp = $db->query($resultp); + if ($resultp) + { + $objp = $db->fetch_object($resultp); + if ($obj->price_base_type == 'TTC') print price($objp->price_ttc).' '.$langs->trans("TTC"); + else print price($objp->price).' '.$langs->trans("HT"); + $db->free($resultp); + } else { + dol_print_error($db); } - print ''; - print ''.img_edit().''; + print ''.img_edit().''; print ' '.img_delete().''; print '
'; print ''; print ''; - print ''; print ''; print ''; @@ -643,7 +643,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; // Delete print ''; print ''; diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 4f3930a4588..3fc3151030a 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -308,7 +308,7 @@ class Translate continue; } else { - // Convert some strings: Parse and render carriage returns. Also, change '\\s' int '\s' because transifex sync pull the string '\s' into string '\\s' + // Convert some strings: Parse and render carriage returns. Also, change '\\s' into '\s' because transifex sync pull the string '\s' into string '\\s' $this->tab_translate[$key] = str_replace(array('\\n', '\\\\s'), array("\n", '\s'), $value); if ($usecachekey) { $tabtranslatedomain[$key] = $value; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 20094da216c..31716dc3f3c 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5794,7 +5794,8 @@ function dolGetFirstLineOfText($text, $nboflines = 1, $charset = 'UTF-8') /** - * Replace CRLF in string with a HTML BR tag + * Replace CRLF in string with a HTML BR tag. + * WARNING: The content after operation contains some HTML tags (the
) so be sure to also have encode the special chars of stringtoencode into HTML before. * * @param string $stringtoencode String to encode * @param int $nl2brmode 0=Adding br before \n, 1=Replacing \n by br @@ -6048,7 +6049,7 @@ function dol_textishtml($msg, $option = 0) * * @param string $text1 Text 1 * @param string $text2 Text 2 - * @param bool $forxml false=Use
instead of \n if html content detected, true=Use
instead of \n if html content detected + * @param bool $forxml true=Use
instead of
if we have to add a br tag * @param bool $invert invert order of description lines (we often use config MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION in this parameter) * @return string Text 1 + new line + Text2 * @see dol_textishtml() @@ -6063,9 +6064,9 @@ function dol_concatdesc($text1, $text2, $forxml = false, $invert = false) } $ret = ''; - $ret .= (!dol_textishtml($text1) && dol_textishtml($text2)) ?dol_nl2br($text1, 0, $forxml) : $text1; + $ret .= (!dol_textishtml($text1) && dol_textishtml($text2)) ? dol_nl2br(dol_escape_htmltag($text1, 0, 1, '', 1), 0, $forxml) : $text1; $ret .= (!empty($text1) && !empty($text2)) ? ((dol_textishtml($text1) || dol_textishtml($text2)) ? ($forxml ? "
\n" : "
\n") : "\n") : ""; - $ret .= (dol_textishtml($text1) && !dol_textishtml($text2)) ?dol_nl2br($text2, 0, $forxml) : $text2; + $ret .= (dol_textishtml($text1) && !dol_textishtml($text2)) ? dol_nl2br(dol_escape_htmltag($text2, 0, 1, '', 1), 0, $forxml) : $text2; return $ret; } diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 969b83cac5a..2bc6d6db962 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -937,8 +937,8 @@ class EmailCollector extends CommonObject } imap_errors(); // Clear stack of errors. - // $conf->global->MAIL_PREFIX_FOR_EMAIL_ID must be defined $host = dol_getprefix('email'); + //$host = '123456'; // Define the IMAP search string // See https://tools.ietf.org/html/rfc3501#section-6.4.4 for IMAPv4 (PHP not yet compatible) @@ -1081,6 +1081,7 @@ class EmailCollector extends CommonObject dol_syslog("Start of loop on email", LOG_INFO, 1); + $i = 0; foreach ($arrayofemail as $imapemail) { if ($nbemailprocessed > 1000) @@ -1088,6 +1089,8 @@ class EmailCollector extends CommonObject break; // Do not process more than 1000 email per launch (this is a different protection than maxnbcollectedpercollect } + $i++; + $header = imap_fetchheader($connection, $imapemail, 0); $header = preg_replace('/\r\n\s+/m', ' ', $header); // When a header line is on several lines, merge lines $matches = array(); @@ -1095,6 +1098,8 @@ class EmailCollector extends CommonObject $headers = array_combine($matches[1], $matches[2]); //var_dump($headers); + dol_syslog("** Process email ".$i." References: ".$headers['References']); + // If there is a filter on trackid if ($searchfilterdoltrackid > 0) { @@ -1130,7 +1135,7 @@ class EmailCollector extends CommonObject // GET Email meta datas $overview = imap_fetch_overview($connection, $imapemail, 0); - dol_syslog("** Process email - msgid=".$overview[0]->message_id." date=".dol_print_date($overview[0]->udate, 'dayrfc', 'gmt')." subject=".$overview[0]->subject); + dol_syslog("msgid=".$overview[0]->message_id." date=".dol_print_date($overview[0]->udate, 'dayrfc', 'gmt')." subject=".$overview[0]->subject); // Decode $overview[0]->subject according to RFC2047 // Can use also imap_mime_header_decode($str) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 5ce79a12231..6c139a0f10c 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1939,7 +1939,7 @@ WithoutDolTrackingID=Dolibarr Reference not found in Message ID 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:
objproperty1=SET:abc
objproperty1=SET:a value with replacement of __objproperty1__
objproperty3=SETIFEMPTY:abc
objproperty4=EXTRACT:HEADER:X-Myheaderkey.*[^\s]+(.*)
options_myextrafield=EXTRACT:SUBJECT:([^\s]*)
object.objproperty5=EXTRACT:BODY:My company name is\s([^\s]*)

Use a ; char as separator to extract or set several properties. +OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:
objproperty1=SET:the value to set
objproperty2=SET:a value with replacement of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\s*([^\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\s([^\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module From 9a8e9bdc99ccec244b6b8ae43c5869f0192789a1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 14:29:14 +0200 Subject: [PATCH 505/780] Position of fields --- htdocs/index.php | 4 ++-- htdocs/theme/eldy/global.inc.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index 36aae1f25b8..7f6e462839b 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -142,11 +142,11 @@ if (empty($user->socid) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTATS)) 'orders', 'invoices', 'donations', - 'contracts', - 'interventions', 'supplier_proposals', 'supplier_orders', 'supplier_invoices', + 'contracts', + 'interventions', 'ticket' ); diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 2f5e10c1459..afb154408c5 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3643,7 +3643,7 @@ ul.noborder li:nth-child(even):not(.liste_titre) { box-shadow: 0px 0px 8px 0px rgba(0,0,0,0.20); } span.boxstatstext { - opacity: 0.7; + opacity: 0.5; line-height: 18px; color: var(--colortext); } From 68512e0281da45963a89c6ce890c080062fc61e2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 14:56:15 +0200 Subject: [PATCH 506/780] Look and feel v12 --- .../core/boxes/box_accountancy_last_manual_entries.php | 5 ++++- htdocs/core/boxes/box_boms.php | 5 ++++- htdocs/core/boxes/box_clients.php | 5 ++++- htdocs/core/boxes/box_commandes.php | 5 ++++- htdocs/core/boxes/box_factures_imp.php | 5 ++++- htdocs/core/boxes/box_ficheinter.php | 9 ++++++--- htdocs/core/boxes/box_fournisseurs.php | 2 +- htdocs/core/boxes/box_goodcustomers.php | 5 ++++- htdocs/core/boxes/box_mos.php | 5 ++++- htdocs/core/boxes/box_prospect.php | 4 ++-- htdocs/core/boxes/box_services_contracts.php | 5 ++++- htdocs/core/boxes/box_shipments.php | 5 ++++- htdocs/core/tools.php | 2 +- htdocs/install/default.css | 2 +- htdocs/install/step5.php | 10 +++++----- 15 files changed, 52 insertions(+), 22 deletions(-) diff --git a/htdocs/core/boxes/box_accountancy_last_manual_entries.php b/htdocs/core/boxes/box_accountancy_last_manual_entries.php index f1ee00c6c59..6198c90e663 100644 --- a/htdocs/core/boxes/box_accountancy_last_manual_entries.php +++ b/htdocs/core/boxes/box_accountancy_last_manual_entries.php @@ -140,7 +140,10 @@ class box_accountancy_last_manual_entries extends ModeleBoxes $line++; } - if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedManualEntries")); + if ($num == 0) $this->info_box_contents[$line][0] = array( + 'td' => 'class="center opacitymedium"', + 'text'=>$langs->trans("NoRecordedManualEntries") + ); $this->db->free($result); } else { diff --git a/htdocs/core/boxes/box_boms.php b/htdocs/core/boxes/box_boms.php index 57c5ce2e2e2..c75c4c24e8f 100644 --- a/htdocs/core/boxes/box_boms.php +++ b/htdocs/core/boxes/box_boms.php @@ -153,7 +153,10 @@ class box_boms extends ModeleBoxes $line++; } - if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedOrders")); + if ($num == 0) $this->info_box_contents[$line][0] = array( + 'td' => 'class="center opacitymedium"', + 'text'=>$langs->trans("NoRecordedOrders") + ); $this->db->free($result); } else { diff --git a/htdocs/core/boxes/box_clients.php b/htdocs/core/boxes/box_clients.php index d82a4aee71e..70718db55b5 100644 --- a/htdocs/core/boxes/box_clients.php +++ b/htdocs/core/boxes/box_clients.php @@ -148,7 +148,10 @@ class box_clients extends ModeleBoxes $line++; } - if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedCustomers")); + if ($num == 0) $this->info_box_contents[$line][0] = array( + 'td' => 'class="center opacitymedium"', + 'text'=>$langs->trans("NoRecordedCustomers") + ); $this->db->free($result); } diff --git a/htdocs/core/boxes/box_commandes.php b/htdocs/core/boxes/box_commandes.php index 37a25c8084d..7ec5071b6e3 100644 --- a/htdocs/core/boxes/box_commandes.php +++ b/htdocs/core/boxes/box_commandes.php @@ -174,7 +174,10 @@ class box_commandes extends ModeleBoxes $line++; } - if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedOrders")); + if ($num == 0) $this->info_box_contents[$line][0] = array( + 'td' => 'class="center opacitymedium"', + 'text'=>$langs->trans("NoRecordedOrders") + ); $this->db->free($result); } else { diff --git a/htdocs/core/boxes/box_factures_imp.php b/htdocs/core/boxes/box_factures_imp.php index 0a44105a853..a374094ea89 100644 --- a/htdocs/core/boxes/box_factures_imp.php +++ b/htdocs/core/boxes/box_factures_imp.php @@ -180,7 +180,10 @@ class box_factures_imp extends ModeleBoxes $line++; } - if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoUnpaidCustomerBills")); + if ($num == 0) $this->info_box_contents[$line][0] = array( + 'td' => 'class="center opacitymedium"', + 'text'=>$langs->trans("NoUnpaidCustomerBills") + ); $this->db->free($result); } diff --git a/htdocs/core/boxes/box_ficheinter.php b/htdocs/core/boxes/box_ficheinter.php index e289c83d541..4125ce92eaa 100644 --- a/htdocs/core/boxes/box_ficheinter.php +++ b/htdocs/core/boxes/box_ficheinter.php @@ -145,13 +145,16 @@ class box_ficheinter extends ModeleBoxes $i++; } - if ($num == 0) $this->info_box_contents[$i][] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedInterventions")); + if ($num == 0) $this->info_box_contents[$i][0] = array( + 'td' => 'class="center opacitymedium"', + 'text'=>$langs->trans("NoRecordedInterventions") + ); $this->db->free($resql); } else { - $this->info_box_contents[0][] = array( + $this->info_box_contents[0][0] = array( 'td' => '', 'maxlength'=>500, 'text' => ($this->db->error().' sql='.$sql), @@ -160,7 +163,7 @@ class box_ficheinter extends ModeleBoxes } else { - $this->info_box_contents[0][] = array( + $this->info_box_contents[0][0] = array( 'td' => 'class="nohover opacitymedium left"', 'text' => $langs->trans("ReadPermissionNotAllowed") ); diff --git a/htdocs/core/boxes/box_fournisseurs.php b/htdocs/core/boxes/box_fournisseurs.php index 2f55a379362..44dd891bfb8 100644 --- a/htdocs/core/boxes/box_fournisseurs.php +++ b/htdocs/core/boxes/box_fournisseurs.php @@ -136,7 +136,7 @@ class box_fournisseurs extends ModeleBoxes } if ($num == 0) $this->info_box_contents[$line][0] = array( - 'td' => 'class="center"', + 'td' => 'class="center opacitymedium"', 'text'=>$langs->trans("NoRecordedSuppliers"), ); diff --git a/htdocs/core/boxes/box_goodcustomers.php b/htdocs/core/boxes/box_goodcustomers.php index 79eb6f9ab8e..46dfdff6d23 100644 --- a/htdocs/core/boxes/box_goodcustomers.php +++ b/htdocs/core/boxes/box_goodcustomers.php @@ -142,7 +142,10 @@ class box_goodcustomers extends ModeleBoxes $line++; } - if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedCustomers")); + if ($num == 0) $this->info_box_contents[$line][0] = array( + 'td' => 'class="center opacitymedium"', + 'text'=>$langs->trans("NoRecordedCustomers") + ); $this->db->free($result); } diff --git a/htdocs/core/boxes/box_mos.php b/htdocs/core/boxes/box_mos.php index 9b863aa2d5a..ec21d5d00cf 100644 --- a/htdocs/core/boxes/box_mos.php +++ b/htdocs/core/boxes/box_mos.php @@ -149,7 +149,10 @@ class box_mos extends ModeleBoxes $line++; } - if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedOrders")); + if ($num == 0) $this->info_box_contents[$line][0] = array( + 'td' => 'class="center opacitymedium"', + 'text'=>$langs->trans("NoRecordedOrders") + ); $this->db->free($result); } else { diff --git a/htdocs/core/boxes/box_prospect.php b/htdocs/core/boxes/box_prospect.php index 54ed1c76051..1024ef1d4ec 100644 --- a/htdocs/core/boxes/box_prospect.php +++ b/htdocs/core/boxes/box_prospect.php @@ -149,8 +149,8 @@ class box_prospect extends ModeleBoxes if ($num == 0) { $this->info_box_contents[$line][0] = array( - 'td' => 'class="center"', - 'text'=>$langs->trans("NoRecordedProspects"), + 'td' => 'class="center opacitymedium"', + 'text'=> $langs->trans("NoRecordedProspects"), ); } diff --git a/htdocs/core/boxes/box_services_contracts.php b/htdocs/core/boxes/box_services_contracts.php index f8e6dd22452..7167097672b 100644 --- a/htdocs/core/boxes/box_services_contracts.php +++ b/htdocs/core/boxes/box_services_contracts.php @@ -223,7 +223,10 @@ class box_services_contracts extends ModeleBoxes $i++; } - if ($num == 0) $this->info_box_contents[$i][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoContractedProducts")); + if ($num == 0) $this->info_box_contents[$i][0] = array( + 'td' => 'class="center opacitymedium"', + 'text'=>$langs->trans("NoContractedProducts") + ); $this->db->free($result); } diff --git a/htdocs/core/boxes/box_shipments.php b/htdocs/core/boxes/box_shipments.php index 26f45bc08db..278ad974cf5 100644 --- a/htdocs/core/boxes/box_shipments.php +++ b/htdocs/core/boxes/box_shipments.php @@ -158,7 +158,10 @@ class box_shipments extends ModeleBoxes $line++; } - if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedShipments")); + if ($num == 0) $this->info_box_contents[$line][0] = array( + 'td' => 'class="center opacitymedium"', + 'text'=>$langs->trans("NoRecordedShipments") + ); $this->db->free($result); } else { diff --git a/htdocs/core/tools.php b/htdocs/core/tools.php index 348417dd345..accb8eeed00 100644 --- a/htdocs/core/tools.php +++ b/htdocs/core/tools.php @@ -46,7 +46,7 @@ $text = $langs->trans("Tools"); print load_fiche_titre($text, '', 'wrench'); // Show description of content -print '
'.$langs->trans("ToolsDesc").'


'; +print '
'.$langs->trans("ToolsDesc").'


'; // Show logo diff --git a/htdocs/install/default.css b/htdocs/install/default.css index f0e51caecab..f363789c129 100644 --- a/htdocs/install/default.css +++ b/htdocs/install/default.css @@ -53,7 +53,7 @@ div.titre { } span.titre { - font-weight: bold; + /* font-weight: bold; */ background: #FFFFFF; color: rgb(0,113,121); border: 1px solid #bbb; diff --git a/htdocs/install/step5.php b/htdocs/install/step5.php index 1609035e415..b74594ce8da 100644 --- a/htdocs/install/step5.php +++ b/htdocs/install/step5.php @@ -384,10 +384,10 @@ if ($action == "set" && $success) print "
"; - print $langs->trans("YouNeedToPersonalizeSetup")."

"; + print $langs->trans("YouNeedToPersonalizeSetup")."


"; print ''; } else @@ -399,7 +399,7 @@ if ($action == "set" && $success) print "
"; print ''; } } @@ -435,7 +435,7 @@ elseif (empty($action) || preg_match('/upgrade/i', $action)) print "

"; print '
'; } else @@ -447,7 +447,7 @@ elseif (empty($action) || preg_match('/upgrade/i', $action)) print "
"; print ''; } } From 6ec5dd02b61a21154b55812660f09b57b87994dd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 15:27:10 +0200 Subject: [PATCH 507/780] Fix Fatal error with bad triggers --- htdocs/core/class/interfaces.class.php | 89 +++++++++++-------- htdocs/core/modules/DolibarrModules.class.php | 10 ++- .../interface_80_modStripe_Stripe.class.php | 2 +- htdocs/theme/eldy/info-box.inc.php | 4 +- 4 files changed, 59 insertions(+), 46 deletions(-) diff --git a/htdocs/core/class/interfaces.class.php b/htdocs/core/class/interfaces.class.php index f1daafeb9e7..9302ed09afb 100644 --- a/htdocs/core/class/interfaces.class.php +++ b/htdocs/core/class/interfaces.class.php @@ -328,48 +328,59 @@ class Interfaces continue; } - $objMod = new $modName($db); + try { + $objMod = new $modName($db); - // Define disabledbyname and disabledbymodule - $disabledbyname = 0; - $disabledbymodule = 1; - $module = ''; + if (is_subclass_of($objMod, 'DolibarrTriggers')) + { + // Define disabledbyname and disabledbymodule + $disabledbyname = 0; + $disabledbymodule = 1; + $module = ''; - // Check if trigger file is disabled by name - if (preg_match('/NORUN$/i', $files[$key])) $disabledbyname = 1; - // Check if trigger file is for a particular module - if (preg_match('/^interface_([0-9]+)_([^_]+)_(.+)\.class\.php/i', $files[$key], $reg)) - { - $module = preg_replace('/^mod/i', '', $reg[2]); - $constparam = 'MAIN_MODULE_'.strtoupper($module); - if (strtolower($module) == 'all') $disabledbymodule = 0; - elseif (empty($conf->global->$constparam)) $disabledbymodule = 2; - $triggers[$j]['module'] = strtolower($module); + // Check if trigger file is disabled by name + if (preg_match('/NORUN$/i', $files[$key])) $disabledbyname = 1; + // Check if trigger file is for a particular module + if (preg_match('/^interface_([0-9]+)_([^_]+)_(.+)\.class\.php/i', $files[$key], $reg)) + { + $module = preg_replace('/^mod/i', '', $reg[2]); + $constparam = 'MAIN_MODULE_'.strtoupper($module); + if (strtolower($module) == 'all') $disabledbymodule = 0; + elseif (empty($conf->global->$constparam)) $disabledbymodule = 2; + $triggers[$j]['module'] = strtolower($module); + } + + // We set info of modules + $triggers[$j]['picto'] = $objMod->picto ?img_object('', $objMod->picto, 'class="valignmiddle pictomodule "') : img_object('', 'generic', 'class="valignmiddle pictomodule "'); + $triggers[$j]['file'] = $files[$key]; + $triggers[$j]['fullpath'] = $fullpath[$key]; + $triggers[$j]['relpath'] = $relpath[$key]; + $triggers[$j]['iscoreorexternal'] = $iscoreorexternal[$key]; + $triggers[$j]['version'] = $objMod->getVersion(); + $triggers[$j]['status'] = img_picto($langs->trans("Active"), 'tick'); + if ($disabledbyname > 0 || $disabledbymodule > 1) $triggers[$j]['status'] = ''; + + $text = ''.$langs->trans("Description").':
'; + $text .= $objMod->getDesc().'
'; + $text .= '
'.$langs->trans("Status").':
'; + if ($disabledbyname == 1) + { + $text .= $langs->trans("TriggerDisabledByName").'
'; + if ($disabledbymodule == 2) $text .= $langs->trans("TriggerDisabledAsModuleDisabled", $module).'
'; + } + else + { + if ($disabledbymodule == 0) $text .= $langs->trans("TriggerAlwaysActive").'
'; + if ($disabledbymodule == 1) $text .= $langs->trans("TriggerActiveAsModuleActive", $module).'
'; + if ($disabledbymodule == 2) $text .= $langs->trans("TriggerDisabledAsModuleDisabled", $module).'
'; + } + } + else { + print 'Error: Trigger '.$modName.' does not extends DolibarrTriggers
'; + } } - - // We set info of modules - $triggers[$j]['picto'] = $objMod->picto ?img_object('', $objMod->picto, 'class="valignmiddle pictomodule "') : img_object('', 'generic', 'class="valignmiddle pictomodule "'); - $triggers[$j]['file'] = $files[$key]; - $triggers[$j]['fullpath'] = $fullpath[$key]; - $triggers[$j]['relpath'] = $relpath[$key]; - $triggers[$j]['iscoreorexternal'] = $iscoreorexternal[$key]; - $triggers[$j]['version'] = $objMod->getVersion(); - $triggers[$j]['status'] = img_picto($langs->trans("Active"), 'tick'); - if ($disabledbyname > 0 || $disabledbymodule > 1) $triggers[$j]['status'] = ''; - - $text = ''.$langs->trans("Description").':
'; - $text .= $objMod->getDesc().'
'; - $text .= '
'.$langs->trans("Status").':
'; - if ($disabledbyname == 1) - { - $text .= $langs->trans("TriggerDisabledByName").'
'; - if ($disabledbymodule == 2) $text .= $langs->trans("TriggerDisabledAsModuleDisabled", $module).'
'; - } - else - { - if ($disabledbymodule == 0) $text .= $langs->trans("TriggerAlwaysActive").'
'; - if ($disabledbymodule == 1) $text .= $langs->trans("TriggerActiveAsModuleActive", $module).'
'; - if ($disabledbymodule == 2) $text .= $langs->trans("TriggerDisabledAsModuleDisabled", $module).'
'; + catch(Exception $e) { + print $e->getMessage(); } $triggers[$j]['info'] = $text; diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index 9543cf74442..f9d27fedfa4 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -2295,9 +2295,11 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it { print img_object($alttext, 'generic', 'class="inline-block valignmiddle"'); } - print 'getVersion(1).'">'; - print $this->getVersion(1); - print ''; + if ($this->isCoreOrExternalModule() == 'external') { + print 'getVersion(1).'">'; + print $this->getVersion(1); + print ''; + } /*print ''; print '
'; @@ -2313,7 +2315,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it print '
- '.$this->getName().' + '.$this->getName().' '.nl2br($this->getDesc()).''; /*print 'getVersion(1).'">'; diff --git a/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php b/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php index 27138e6099f..e6c2df36ee1 100644 --- a/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php +++ b/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php @@ -33,7 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php'; /** * Class of triggers for stripe module */ -class InterfaceStripe +class InterfaceStripe extends DolibarrTriggers { /** * @var DoliDB Database handler. diff --git a/htdocs/theme/eldy/info-box.inc.php b/htdocs/theme/eldy/info-box.inc.php index 3138cd8bfd9..3d9c392f32b 100644 --- a/htdocs/theme/eldy/info-box.inc.php +++ b/htdocs/theme/eldy/info-box.inc.php @@ -8,7 +8,7 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> */ .info-box-module-external span.info-box-icon-version { - background: #999; + background: #bbb; } .info-box { @@ -74,7 +74,7 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> height: 80px; width: 80px; font-size: 25px; - line-height: 80px; + line-height: 100px; } .info-box-module .info-box-icon { height: 106px; From 7c01b54d73237b39e8ee45ca0e5784ba8c666adc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 15:42:37 +0200 Subject: [PATCH 508/780] Fix version on module list --- htdocs/admin/modules.php | 4 +++- htdocs/core/modules/DolibarrModules.class.php | 10 ++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 6a0ff450346..c0f1991835b 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -680,7 +680,9 @@ if ($mode == 'common' || $mode == 'commonkanban') if (preg_match('/development/i', $version)) $versiontrans .= img_warning($langs->trans("Development"), 'style="float: left"'); if (preg_match('/experimental/i', $version)) $versiontrans .= img_warning($langs->trans("Experimental"), 'style="float: left"'); if (preg_match('/deprecated/i', $version)) $versiontrans .= img_warning($langs->trans("Deprecated"), 'style="float: left"'); - $versiontrans .= $objMod->getVersion(1); + if ($objMod->isCoreOrExternalModule() == 'external' || preg_match('/development|experimental|deprecated/i', $version)) { + $versiontrans .= $objMod->getVersion(1); + } // Define imginfo $imginfo = "info"; diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index f9d27fedfa4..384c4fc3a7e 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -2295,8 +2295,14 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it { print img_object($alttext, 'generic', 'class="inline-block valignmiddle"'); } - if ($this->isCoreOrExternalModule() == 'external') { - print 'getVersion(1).'">'; + + $version = $this->getVersion(0); + $versiontrans = ''; + if (preg_match('/development/i', $version)) $versiontrans .= 'warning'; + if (preg_match('/experimental/i', $version)) $versiontrans .= 'warning'; + if (preg_match('/deprecated/i', $version)) $versiontrans .= 'warning'; + if ($this->isCoreOrExternalModule() == 'external' || preg_match('/development|experimental|deprecated/i', $version)) { + print 'getVersion(1).'">'; print $this->getVersion(1); print ''; } From 3d26351c6b4de6444a4f7230cbfa0d93d165e7e5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 16:03:31 +0200 Subject: [PATCH 509/780] Fix function if hours. --- htdocs/core/lib/date.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index ae138bcceec..a751f584564 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -912,7 +912,7 @@ function num_open_day($timestampStart, $timestampEnd, $inhour = 0, $lastday = 0, $nbOpenDay=$lastday; - if ($inhour == 1) $nbOpenDay = $nbOpenDay*24 . $langs->trans("HourShort"); + if ($inhour == 1) $nbOpenDay = ($nbOpenDay * 24); return $nbOpenDay - (($inhour == 1 ? 12 : 0.5) * abs($halfday)); } else From b26c1757e6ab26142aa57ab27e53cb847db47b93 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 16:07:23 +0200 Subject: [PATCH 510/780] Prepare v13 --- .../install/mysql/migration/12.0.0-13.0.0.sql | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 htdocs/install/mysql/migration/12.0.0-13.0.0.sql diff --git a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql new file mode 100644 index 00000000000..210fe31d1ef --- /dev/null +++ b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql @@ -0,0 +1,36 @@ +-- +-- Be carefull to requests order. +-- This file must be loaded by calling /install/index.php page +-- when current version is 13.0.0 or higher. +-- +-- To restrict request to Mysql version x.y minimum use -- VMYSQLx.y +-- To restrict request to Pgsql version x.y minimum use -- VPGSQLx.y +-- To rename a table: ALTER TABLE llx_table RENAME TO llx_table_new; +-- To add a column: ALTER TABLE llx_table ADD COLUMN newcol varchar(60) NOT NULL DEFAULT '0' AFTER existingcol; +-- To rename a column: ALTER TABLE llx_table CHANGE COLUMN oldname newname varchar(60); +-- To drop a column: ALTER TABLE llx_table DROP COLUMN oldname; +-- To change type of field: ALTER TABLE llx_table MODIFY COLUMN name varchar(60); +-- To drop a foreign key: ALTER TABLE llx_table DROP FOREIGN KEY fk_name; +-- To create a unique index ALTER TABLE llx_table ADD UNIQUE INDEX uk_table_field (field); +-- To drop an index: -- VMYSQL4.1 DROP INDEX nomindex on llx_table +-- To drop an index: -- VPGSQL8.2 DROP INDEX nomindex +-- To make pk to be auto increment (mysql): -- VMYSQL4.3 ALTER TABLE llx_table CHANGE COLUMN rowid rowid INTEGER NOT NULL AUTO_INCREMENT; +-- To make pk to be auto increment (postgres): +-- -- VPGSQL8.2 CREATE SEQUENCE llx_table_rowid_seq OWNED BY llx_table.rowid; +-- -- VPGSQL8.2 ALTER TABLE llx_table ADD PRIMARY KEY (rowid); +-- -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN rowid SET DEFAULT nextval('llx_table_rowid_seq'); +-- -- VPGSQL8.2 SELECT setval('llx_table_rowid_seq', MAX(rowid)) FROM llx_table; +-- To set a field as NULL: -- VMYSQL4.3 ALTER TABLE llx_table MODIFY COLUMN name varchar(60) NULL; +-- To set a field as NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name DROP NOT NULL; +-- To set a field as NOT NULL: -- VMYSQL4.3 ALTER TABLE llx_table MODIFY COLUMN name varchar(60) NOT NULL; +-- To set a field as NOT NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET NOT NULL; +-- To set a field as default NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET DEFAULT NULL; +-- Note: fields with type BLOB/TEXT can't have default value. + + +-- Missing in v12 + + +-- For v13 + + From 9becb24073c6fc90230289ee0b33170ff517d6a1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 16:40:40 +0200 Subject: [PATCH 511/780] Prepare v13 --- 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 0780154118e..b70419de5f4 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', '12.0.0-alpha'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c +if (!defined('DOL_VERSION')) define('DOL_VERSION', '13.0.0-alpha'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c if (!defined('EURO')) define('EURO', chr(128)); From 215cf9e6f804cba007c44cc7c08a68e3b2b38a9a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 16:45:32 +0200 Subject: [PATCH 512/780] Prepare v13 --- htdocs/install/check.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/install/check.php b/htdocs/install/check.php index 95e3082cb56..408f4b2a1a8 100644 --- a/htdocs/install/check.php +++ b/htdocs/install/check.php @@ -479,7 +479,8 @@ else array('from'=>'8.0.0', 'to'=>'9.0.0'), array('from'=>'9.0.0', 'to'=>'10.0.0'), array('from'=>'10.0.0', 'to'=>'11.0.0'), - array('from'=>'11.0.0', 'to'=>'12.0.0') + array('from'=>'11.0.0', 'to'=>'12.0.0'), + array('from'=>'12.0.0', 'to'=>'13.0.0') ); $count = 0; From 499c2ea30a63c4b5b575576ce02f37f7e554e9b4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 16:52:21 +0200 Subject: [PATCH 513/780] FIX #13855 --- htdocs/core/lib/ajax.lib.php | 2 +- htdocs/main.inc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 64f442633de..1d3e80b90be 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -20,7 +20,7 @@ /** * \file htdocs/core/lib/ajax.lib.php - * \brief Page called by Ajax request for produts + * \brief Page called to enhance interface with Javascript and Ajax features. */ diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index d4d1f84a344..49c48e34ec1 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -317,7 +317,7 @@ if (!defined('NOLOGIN') && !defined('NOIPCHECK') && !empty($dolibarr_main_restri // Loading of additional presentation includes if (!defined('NOREQUIREHTML')) require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; // Need 660ko memory (800ko in 2.2) -if (!defined('NOREQUIREAJAX') && $conf->use_javascript_ajax) require_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php'; // Need 22ko memory +require_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php'; // Need 22ko memory // If install or upgrade process not done or not completely finished, we call the install page. if (!empty($conf->global->MAIN_NOT_INSTALLED) || !empty($conf->global->MAIN_NOT_UPGRADED)) From 949e0f2326a6f3268b511110903aec472315b5b4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 17:27:12 +0200 Subject: [PATCH 514/780] Fix filter on language --- htdocs/website/class/websitepage.class.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index 84eaf0efb27..c63823f51a1 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -332,7 +332,11 @@ class WebsitePage extends CommonObject if ($key == 't.rowid' || $key == 't.fk_website') { $sqlwhere[] = $key.'='.$value; } elseif ($key == 'lang' || $key == 't.lang') { - $sqlwhere[] = $key." = '".$this->db->escape(substr($value, 0, 2))."'"; + $listoflang = array(); + foreach(explode(',', $value) as $tmpvalue) { + $listoflang[] = "'".$this->db->escape(substr(str_replace("'", '', $tmpvalue), 0, 2))."'"; + } + $sqlwhere[] = $key." IN (".join(',', $listoflang).")"; } else { $sqlwhere[] = $key.' LIKE \'%'.$this->db->escape($value).'%\''; } From 991996697dd5e1f529d9e1a36eff465e4256ebf3 Mon Sep 17 00:00:00 2001 From: "jove@bisquerra.com" Date: Thu, 14 May 2020 18:03:22 +0200 Subject: [PATCH 515/780] Public photos for customers with TakePOS --- htdocs/takepos/genimg/index.php | 6 +++--- htdocs/takepos/phone.php | 4 ++-- htdocs/takepos/public/auto_order.php | 1 + htdocs/viewimage.php | 12 ++++++++++++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/htdocs/takepos/genimg/index.php b/htdocs/takepos/genimg/index.php index a5686054193..c2bb62b9322 100644 --- a/htdocs/takepos/genimg/index.php +++ b/htdocs/takepos/genimg/index.php @@ -25,7 +25,7 @@ if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); -require '../../main.inc.php'; // Load $user and permissions +if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) require '../../main.inc.php'; // Load $user and permissions $id = GETPOST('id', 'int'); $w = GETPOST('w', 'int'); @@ -72,12 +72,12 @@ elseif ($query == "pro") $objProd = new Product($db); $objProd->fetch($id); - $image = $objProd->show_photos('product', $conf->product->multidir_output[$entity], 'small', 1); + $image = $objProd->show_photos('product', $conf->product->multidir_output[$objProd->entity], 'small', 1); preg_match('@src="([^"]+)"@', $image, $match); $file = array_pop($match); if ($file == "") header('Location: ../../public/theme/common/nophoto.png'); - else header('Location: '.$file.'&cache=1'); + else header('Location: '.$file.'&cache=1&publictakepos=1'); } else { diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index 8714173e45f..d506c64d2fc 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -77,7 +77,7 @@ if ($action=="productinfo"){ $prod = new Product($db); $prod->fetch($idproduct); print "".$prod->label."
"; - print ''; + print ''; print "
".$prod->description; print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; print '
'; @@ -95,7 +95,7 @@ elseif ($action=="editline"){ $prod = new Product($db); $prod->fetch($line->fk_product); print "".$prod->label."
"; - print ''; + print ''; print "
".$prod->description; print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; print '
'; diff --git a/htdocs/takepos/public/auto_order.php b/htdocs/takepos/public/auto_order.php index c7612711df0..910c00327b4 100644 --- a/htdocs/takepos/public/auto_order.php +++ b/htdocs/takepos/public/auto_order.php @@ -33,4 +33,5 @@ $_SESSION["takeposterminal"] = 1; define('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE', 1); if (GETPOSTISSET("mobilepage")) require '../invoice.php'; +elseif (GETPOSTISSET("genimg")) require DOL_DOCUMENT_ROOT.'/takepos/genimg/index.php'; else require '../phone.php'; diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index 3cb23b36fbc..39795b62fd8 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -59,6 +59,14 @@ if ((isset($_GET["modulepart"]) && $_GET["modulepart"] == 'medias')) if (!defined("NOIPCHECK")) define("NOIPCHECK", 1); // Do not check IP defined into conf $dolibarr_main_restrict_ip } +// Used by TakePOS Auto Order +if (isset($_GET["publictakepos"])) +{ + if (!defined("NOLOGIN")) define("NOLOGIN", 1); + if (!defined("NOCSRFCHECK")) define("NOCSRFCHECK", 1); // We accept to go on this page from external web site. + if (!defined("NOIPCHECK")) define("NOIPCHECK", 1); // Do not check IP defined into conf $dolibarr_main_restrict_ip +} + // For multicompany $entity = (!empty($_GET['entity']) ? (int) $_GET['entity'] : (!empty($_POST['entity']) ? (int) $_POST['entity'] : 1)); if (is_numeric($entity)) define("DOLENTITY", $entity); @@ -195,6 +203,10 @@ if (!empty($hashp)) $accessallowed = 1; // When using hashp, link is public so we force $accessallowed $sqlprotectagainstexternals = ''; } +elseif ($conf->global->TAKEPOS_AUTO_ORDER && isset($_GET["publictakepos"])) +{ + $accessallowed = 1; // Only if TakePOS Public Auto Order is enabled and received publictakepos variable +} else { // Basic protection (against external users only) From 1bf677f53735d66bbb4e0a7e9c9a8896ec99e95d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 18:14:55 +0200 Subject: [PATCH 516/780] Can set status of a websitepage --- htdocs/core/ajax/objectonoff.php | 11 ++++++++--- htdocs/core/class/commonobject.class.php | 5 ++++- htdocs/core/lib/security.lib.php | 1 + htdocs/website/index.php | 14 +++++++++++++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/htdocs/core/ajax/objectonoff.php b/htdocs/core/ajax/objectonoff.php index dd39bce6d4e..6466df89a07 100644 --- a/htdocs/core/ajax/objectonoff.php +++ b/htdocs/core/ajax/objectonoff.php @@ -43,9 +43,9 @@ if (!empty($user->socid)) { $socid = $user->socid; } -if (empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { +/*if (empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { accessforbidden('Calling this file is allowed only when MAIN_DIRECT_STATUS_UPDATE is set'); -} +}*/ /* @@ -75,5 +75,10 @@ if (($action == 'set') && !empty($id)) { $triggerkey = 'COMPANY_UPDATE'; } - $object->setValueFrom($field, $value, $element, $id, $user, $triggerkey); + $tablename = $element; + if ($tablename == 'websitepage') $tablename = 'website_page'; + + $format = 'int'; + + $object->setValueFrom($field, $value, $tablename, $id, $format, '', $user, $triggerkey); } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index f3f1b9eaee3..6148b55a5cf 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -8070,7 +8070,10 @@ abstract class CommonObject { if (empty($id) && empty($ref) && empty($morewhere)) return -1; - $sql = 'SELECT '.$this->getFieldList(); + $fieldlist = $this->getFieldList(); + if (empty($fieldlist)) return 0; + + $sql = 'SELECT '.$fieldlist; $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element; if (!empty($id)) $sql .= ' WHERE rowid = '.$id; diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index 6749f32ffbe..03f1525eb91 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -192,6 +192,7 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f if ($features == 'mo') $features = 'mrp'; if ($features == 'member') $features = 'adherent'; if ($features == 'subscription') { $features = 'adherent'; $feature2 = 'cotisation'; }; + if ($features == 'websitepage') $features = 'website'; // Get more permissions checks from hooks $parameters = array('features'=>$features, 'objectid'=>$objectid, 'idtype'=>$dbt_select); diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 690dc0efe3b..ac26f2ee7bb 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -3170,6 +3170,7 @@ if ($action == 'editmeta' || $action == 'createcontainer') $pageauthorid = $objectpage->fk_user_creat; $pageusermodifid = $objectpage->fk_user_modif; $pageauthoralias = $objectpage->author_alias; + $pagestatus = $objectpage->status; } else { @@ -3178,6 +3179,7 @@ if ($action == 'editmeta' || $action == 'createcontainer') $pageauthorid = $user->id; $pageusermodifid = 0; $pageauthoralias = ''; + $pagestatus = 1; } if (GETPOST('WEBSITE_TITLE', 'alpha')) $pagetitle = GETPOST('WEBSITE_TITLE', 'alpha'); if (GETPOST('WEBSITE_PAGENAME', 'alpha')) $pageurl = GETPOST('WEBSITE_PAGENAME', 'alpha'); @@ -3186,7 +3188,7 @@ if ($action == 'editmeta' || $action == 'createcontainer') if (GETPOST('WEBSITE_IMAGE', 'alpha')) $pageimage = GETPOST('WEBSITE_IMAGE', 'alpha'); if (GETPOST('WEBSITE_KEYWORDS', 'alpha')) $pagekeywords = GETPOST('WEBSITE_KEYWORDS', 'alpha'); if (GETPOST('WEBSITE_LANG', 'aZ09')) $pagelang = GETPOST('WEBSITE_LANG', 'aZ09'); - if (GETPOST('htmlheader', 'none')) $pagehtmlheader = GETPOST('htmlheader', 'none'); + if (GETPOST('htmlheader', 'none')) $pagehtmlheader = GETPOST('htmlheader', 'none'); // Title print '
'; + if ($action != 'createcontainer') + { + print ''; + } + print '
attributes[$object->table_element]['required'][$key])) print ' fieldrequired'; print '">'; if (!empty($extrafields->attributes[$object->table_element]['help'][$key])) print $form->textwithpicto($langs->trans($label), $langs->trans($extrafields->attributes[$object->table_element]['help'][$key])); @@ -161,6 +175,7 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element] //print 'x'.$object->array_options['options_' . $key].'-'.$datenotinstring.' - '.dol_print_date($datenotinstring, 'dayhour'); $value = isset($_POST["options_".$key]) ? dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]) : $datenotinstring; } + //TODO Improve element and rights detection if ($action == 'edit_extras' && $permok && GETPOST('attribute', 'none') == $key) { diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 60c7ee43bb0..2f5e10c1459 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1751,7 +1751,7 @@ img.photorefnoborder { border-bottom: px solid rgb(); /* border-bottom: 2px solid var(--colorbackhmenu1); */ } -.trextrafieldseparator td { +.trextrafieldseparator td, .trextrafields_collapse_last td { /* border-bottom: 2px solid var(--colorbackhmenu1) !important; */ border-bottom: 2px solid rgb() !important; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index c7ce5709efd..da2df5eb788 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1799,7 +1799,7 @@ img.photorefnoborder { border-bottom: px solid rgb(); } -.trextrafieldseparator td { +.trextrafieldseparator td, .trextrafields_collapse_last td { border-bottom: 1px solid rgb() !important; } .tdhrthin { From a796122f7b0e1050df2fe5ac635107e4aa3750be Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 12:28:17 +0200 Subject: [PATCH 503/780] Fix to solve feedbacks of https://www.dolibarr.fr/forum/t/email-collector-avec-office-365-bug-et-contournement/32726 --- .../class/emailcollector.class.php | 20 +++++++++++++++---- .../install/mysql/migration/11.0.0-12.0.0.sql | 2 ++ .../llx_emailcollector_emailcollector.sql | 3 ++- htdocs/langs/en_US/admin.lang | 1 + 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 11cf2477720..969b83cac5a 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -100,8 +100,9 @@ class EmailCollector extends CommonObject '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'), + 'host' => array('type'=>'varchar(255)', 'label'=>'EMailHost', 'visible'=>1, 'enabled'=>1, 'position'=>90, 'notnull'=>1, 'searchall'=>1, 'comment'=>"IMAP server", 'help'=>'Example: imap.gmail.com'), + 'hostcharset' => array('type'=>'varchar(16)', 'label'=>'HostCharset', 'visible'=>-1, 'enabled'=>1, 'position'=>91, 'notnull'=>0, 'searchall'=>0, 'comment'=>"IMAP server charset", 'help'=>'Example: "UTF-8" (May be "US-ASCII" with some Office365)'), + '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", 'help'=>'WithGMailYouCanCreateADedicatedPassword'), '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), @@ -173,6 +174,7 @@ class EmailCollector extends CommonObject public $host; + public $hostcharset; public $login; public $password; public $source_directory; @@ -985,9 +987,10 @@ class EmailCollector extends CommonObject $nbemailprocessed = 0; $nbemailok = 0; $nbactiondone = 0; + $charset = ($this->hostcharset ? $this->hostcharset : "UTF-8"); // Scan IMAP inbox - $arrayofemail = imap_search($connection, $search, null, "UTF-8"); + $arrayofemail = imap_search($connection, $search, null, $charset); if ($arrayofemail === false) { // Nothing found or search string not understood @@ -1086,6 +1089,7 @@ class EmailCollector extends CommonObject } $header = imap_fetchheader($connection, $imapemail, 0); + $header = preg_replace('/\r\n\s+/m', ' ', $header); // When a header line is on several lines, merge lines $matches = array(); preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $header, $matches); $headers = array_combine($matches[1], $matches[2]); @@ -1132,7 +1136,10 @@ class EmailCollector extends CommonObject // Can use also imap_mime_header_decode($str) // Can use also mb_decode_mimeheader($str) // Can use also iconv_mime_decode($str, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8') - if (function_exists('imap_mime_header_decode')) { + if (function_exists('iconv_mime_decode')) { + $overview[0]->subject = iconv_mime_decode($overview[0]->subject, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8'); + } + elseif (function_exists('imap_mime_header_decode')) { $elements = imap_mime_header_decode($overview[0]->subject); $newstring = ''; if (!empty($elements)) { @@ -1146,6 +1153,8 @@ class EmailCollector extends CommonObject elseif (function_exists('mb_decode_mimeheader')) { $overview[0]->subject = mb_decode_mimeheader($overview[0]->subject); } + // Removed emojis + $overview[0]->subject = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $overview[0]->subject); // Parse IMAP email structure global $htmlmsg, $plainmsg, $charset, $attachments; @@ -1153,6 +1162,9 @@ class EmailCollector extends CommonObject //$htmlmsg,$plainmsg,$charset,$attachments $messagetext = $plainmsg ? $plainmsg : dol_string_nohtmltag($htmlmsg, 0); + // Removed emojis + $messagetext = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $messagetext); + /*var_dump($plainmsg); var_dump($htmlmsg); var_dump($messagetext);*/ diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 8a68e763160..7daf41a05d3 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -285,3 +285,5 @@ ALTER TABLE llx_prelevement_facture ADD COLUMN fk_facture_fourn INTEGER NULL; ALTER TABLE llx_menu MODIFY COLUMN module varchar(255); UPDATE llx_actioncomm SET fk_action = 50 where fk_action = 40 AND code = 'TICKET_MSG'; + +ALTER TABLE llx_emailcollector_emailcollector ADD COLUMN hostcharset varchar(16) DEFAULT 'UTF-8'; diff --git a/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql b/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql index 10f3e4f8b9b..87581f418e8 100644 --- a/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql +++ b/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql @@ -21,7 +21,8 @@ CREATE TABLE llx_emailcollector_emailcollector( ref varchar(128) NOT NULL, label varchar(255), description text, - host varchar(255), + host varchar(255), + hostcharset varchar(16) DEFAULT 'UTF-8', login varchar(128), password varchar(128), source_directory varchar(255) NOT NULL, diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 1bd7f3d0297..5ce79a12231 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -40,6 +40,7 @@ WebUserGroup=Web server user/group NoSessionFound=Your PHP configuration seems to not allow listing of active sessions. The directory used to save sessions (%s) may be protected (for example by OS permissions or by PHP directive open_basedir). DBStoringCharset=Database charset to store data DBSortingCharset=Database charset to sort data +HostCharset=Host charset ClientCharset=Client charset ClientSortingCharset=Client collation WarningModuleNotActive=Module %s must be enabled From ae0e6e4dc8e449be6c0354d1849bc71f80c35355 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 14:10:04 +0200 Subject: [PATCH 504/780] FIX dol_concatdesc to escape < Better help --- htdocs/admin/emailcollector_card.php | 4 ++-- htdocs/core/class/translate.class.php | 2 +- htdocs/core/lib/functions.lib.php | 9 +++++---- htdocs/emailcollector/class/emailcollector.class.php | 9 +++++++-- htdocs/langs/en_US/admin.lang | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index 74592ff777a..80161eaadc6 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -592,7 +592,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; $htmltext = $langs->transnoentitiesnoconv("OperationParamDesc"); //var_dump($htmltext); - print $form->textwithpicto('', $htmltext); + print $form->textwithpicto('', $htmltext, 1, 'help', '', 0, 2, 'operationparamtt'); print ''; - print ''.img_edit().''; + print ''.img_edit().''; print ' '.img_delete().''; print '
'; @@ -3381,6 +3383,16 @@ if ($action == 'editmeta' || $action == 'createcontainer') print $doleditor->Create(1, '', true, 'HTML Header', 'html'); print '
'; + print $langs->trans('Status'); + print ''; + print ajax_object_onoff($objectpage, 'status', 'status', 'Enabled', 'Disabled'); + //print dol_print_date($pagedatecreation, 'dayhour'); + print '
'; if ($action == 'createcontainer') { From 7daef0d146d1e5145ab44f6a46c52b15a5b525a8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 18:17:08 +0200 Subject: [PATCH 517/780] Fix bad parameters of function --- htdocs/core/ajax/objectonoff.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/htdocs/core/ajax/objectonoff.php b/htdocs/core/ajax/objectonoff.php index dd39bce6d4e..f7bf1d6299c 100644 --- a/htdocs/core/ajax/objectonoff.php +++ b/htdocs/core/ajax/objectonoff.php @@ -75,5 +75,10 @@ if (($action == 'set') && !empty($id)) { $triggerkey = 'COMPANY_UPDATE'; } - $object->setValueFrom($field, $value, $element, $id, $user, $triggerkey); + $tablename = $element; + if ($tablename == 'websitepage') $tablename = 'website_page'; + + $format = 'int'; + + $object->setValueFrom($field, $value, $tablename, $id, $format, '', $user, $triggerkey); } From d8ee049b4c57491112ecfbbb42e9d3949e0d4468 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 18:41:31 +0200 Subject: [PATCH 518/780] Can select not defined language --- htdocs/website/class/websitepage.class.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index c63823f51a1..edf1eed51a7 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -333,10 +333,17 @@ class WebsitePage extends CommonObject $sqlwhere[] = $key.'='.$value; } elseif ($key == 'lang' || $key == 't.lang') { $listoflang = array(); + $foundnull = 0; foreach(explode(',', $value) as $tmpvalue) { + if ($tmpvalue == 'null') { + $foundnull++; + continue; + } $listoflang[] = "'".$this->db->escape(substr(str_replace("'", '', $tmpvalue), 0, 2))."'"; } - $sqlwhere[] = $key." IN (".join(',', $listoflang).")"; + $stringtouse = $key." IN (".join(',', $listoflang).")"; + if ($foundnull) $stringtouse = '('.$stringtouse.' OR '.$key.' IS NULL)'; + $sqlwhere[] = $stringtouse; } else { $sqlwhere[] = $key.' LIKE \'%'.$this->db->escape($value).'%\''; } From 4cf7f68b6cbc3d3b7d2d9c9d0655468690f9214b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 18:44:05 +0200 Subject: [PATCH 519/780] Fix search on pages --- htdocs/website/class/websitepage.class.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index c63823f51a1..3e518d4d633 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -329,14 +329,23 @@ class WebsitePage extends CommonObject $sqlwhere = array(); if (count($filter) > 0) { foreach ($filter as $key => $value) { - if ($key == 't.rowid' || $key == 't.fk_website') { + if ($key == 't.rowid' || $key == 't.fk_website' || $key == 'status') { $sqlwhere[] = $key.'='.$value; + } elseif ($key == 'type_container') { + $sqlwhere[] = $key."='".$value."'"; } elseif ($key == 'lang' || $key == 't.lang') { $listoflang = array(); + $foundnull = 0; foreach(explode(',', $value) as $tmpvalue) { + if ($tmpvalue == 'null') { + $foundnull++; + continue; + } $listoflang[] = "'".$this->db->escape(substr(str_replace("'", '', $tmpvalue), 0, 2))."'"; } - $sqlwhere[] = $key." IN (".join(',', $listoflang).")"; + $stringtouse = $key." IN (".join(',', $listoflang).")"; + if ($foundnull) $stringtouse = '('.$stringtouse.' OR '.$key.' IS NULL)'; + $sqlwhere[] = $stringtouse; } else { $sqlwhere[] = $key.' LIKE \'%'.$this->db->escape($value).'%\''; } From 40fa0933ebfe2e128e8282999e126c136f0c2511 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 18:44:21 +0200 Subject: [PATCH 520/780] Fix on sarch pages --- htdocs/website/class/websitepage.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index edf1eed51a7..3e518d4d633 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -329,8 +329,10 @@ class WebsitePage extends CommonObject $sqlwhere = array(); if (count($filter) > 0) { foreach ($filter as $key => $value) { - if ($key == 't.rowid' || $key == 't.fk_website') { + if ($key == 't.rowid' || $key == 't.fk_website' || $key == 'status') { $sqlwhere[] = $key.'='.$value; + } elseif ($key == 'type_container') { + $sqlwhere[] = $key."='".$value."'"; } elseif ($key == 'lang' || $key == 't.lang') { $listoflang = array(); $foundnull = 0; From a660fd61c9495f4faa3ca10eda2333d86bd1ca7c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 18:55:20 +0200 Subject: [PATCH 521/780] Fix lang must be set to null and not 0 when not defined --- htdocs/website/class/websitepage.class.php | 25 +++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index 3e518d4d633..2a72a222265 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -108,6 +108,29 @@ class WebsitePage extends CommonObject const STATUS_VALIDATED = 1; + /** + * 'type' if the field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password') + * Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)" + * 'label' the translation key. + * 'enabled' is a condition when the field must be managed (Example: 1 or '$conf->global->MY_SETUP_PARAM) + * 'position' is the sort order of field. + * 'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0). + * '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, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create). 5=Visible on list and view only (not create/not update). Using a negative value means field is not shown by default on list but can be selected for viewing) + * 'noteditable' says if field is not editable (1 or 0) + * 'default' is a default value for creation (can still be overwrote by the Setup of Default Values if field is editable in creation form). Note: If default is set to '(PROV)' and field is 'ref', the default value will be set to '(PROVid)' where id is rowid when a new record is created. + * '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_...). + * '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 + * 'showoncombobox' if value of the field must be visible into the label of the combobox that list record + * 'disabled' is 1 if we want to have the field locked by a 'disabled' attribute. In most cases, this is never set into the definition of $fields into class, but is set dynamically by some part of code. + * 'arraykeyval' to set list of value if type is a list of predefined values. For example: array("0"=>"Draft","1"=>"Active","-1"=>"Cancel") + * 'comment' is not used. You can store here any text of your choice. It is not used by application. + * + * Note: To have value dynamic, you can set value to 0 in definition and edit the value on the fly into the constructor. + */ // BEGIN MODULEBUILDER PROPERTIES /** @@ -122,7 +145,7 @@ class WebsitePage extends CommonObject 'description' =>array('type'=>'varchar(255)', 'label'=>'Description', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1), 'image' =>array('type'=>'varchar(255)', 'label'=>'Image', 'enabled'=>1, 'visible'=>1, 'position'=>32, 'searchall'=>0, 'help'=>'Relative path of media. Used if Type is "blogpost"'), 'keywords' =>array('type'=>'varchar(255)', 'label'=>'Keywords', 'enabled'=>1, 'visible'=>1, 'position'=>45, 'searchall'=>0), - 'lang' =>array('type'=>'varchar(6)', 'label'=>'Lang', 'enabled'=>1, 'visible'=>1, 'position'=>45, 'searchall'=>0), + 'lang' =>array('type'=>'varchar(6)', 'label'=>'Lang', 'enabled'=>1, 'notnull'=>-1, 'visible'=>1, 'position'=>45, 'searchall'=>0), //'status' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'index'=>true, 'position'=>1000), 'fk_website' =>array('type'=>'integer', 'label'=>'WebsiteId', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>40, 'searchall'=>0, 'foreignkey'=>'websitepage.rowid'), 'fk_page' =>array('type'=>'integer', 'label'=>'ParentPageId', 'enabled'=>1, 'visible'=>1, 'notnull'=>-1, 'position'=>45, 'searchall'=>0, 'foreignkey'=>'website.rowid'), From 0842259012f041d7f0ed33dbcf9be5d0fc97ddd3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 14 May 2020 18:55:20 +0200 Subject: [PATCH 522/780] Fix lang must be set to null and not 0 when not defined --- htdocs/website/class/websitepage.class.php | 25 +++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index 3e518d4d633..2a72a222265 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -108,6 +108,29 @@ class WebsitePage extends CommonObject const STATUS_VALIDATED = 1; + /** + * 'type' if the field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password') + * Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)" + * 'label' the translation key. + * 'enabled' is a condition when the field must be managed (Example: 1 or '$conf->global->MY_SETUP_PARAM) + * 'position' is the sort order of field. + * 'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0). + * '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, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create). 5=Visible on list and view only (not create/not update). Using a negative value means field is not shown by default on list but can be selected for viewing) + * 'noteditable' says if field is not editable (1 or 0) + * 'default' is a default value for creation (can still be overwrote by the Setup of Default Values if field is editable in creation form). Note: If default is set to '(PROV)' and field is 'ref', the default value will be set to '(PROVid)' where id is rowid when a new record is created. + * '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_...). + * '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 + * 'showoncombobox' if value of the field must be visible into the label of the combobox that list record + * 'disabled' is 1 if we want to have the field locked by a 'disabled' attribute. In most cases, this is never set into the definition of $fields into class, but is set dynamically by some part of code. + * 'arraykeyval' to set list of value if type is a list of predefined values. For example: array("0"=>"Draft","1"=>"Active","-1"=>"Cancel") + * 'comment' is not used. You can store here any text of your choice. It is not used by application. + * + * Note: To have value dynamic, you can set value to 0 in definition and edit the value on the fly into the constructor. + */ // BEGIN MODULEBUILDER PROPERTIES /** @@ -122,7 +145,7 @@ class WebsitePage extends CommonObject 'description' =>array('type'=>'varchar(255)', 'label'=>'Description', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1), 'image' =>array('type'=>'varchar(255)', 'label'=>'Image', 'enabled'=>1, 'visible'=>1, 'position'=>32, 'searchall'=>0, 'help'=>'Relative path of media. Used if Type is "blogpost"'), 'keywords' =>array('type'=>'varchar(255)', 'label'=>'Keywords', 'enabled'=>1, 'visible'=>1, 'position'=>45, 'searchall'=>0), - 'lang' =>array('type'=>'varchar(6)', 'label'=>'Lang', 'enabled'=>1, 'visible'=>1, 'position'=>45, 'searchall'=>0), + 'lang' =>array('type'=>'varchar(6)', 'label'=>'Lang', 'enabled'=>1, 'notnull'=>-1, 'visible'=>1, 'position'=>45, 'searchall'=>0), //'status' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'index'=>true, 'position'=>1000), 'fk_website' =>array('type'=>'integer', 'label'=>'WebsiteId', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>40, 'searchall'=>0, 'foreignkey'=>'websitepage.rowid'), 'fk_page' =>array('type'=>'integer', 'label'=>'ParentPageId', 'enabled'=>1, 'visible'=>1, 'notnull'=>-1, 'position'=>45, 'searchall'=>0, 'foreignkey'=>'website.rowid'), From 3811586cd0654ef0d99c6369177d7b96cf35b50d Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Thu, 14 May 2020 20:34:48 +0200 Subject: [PATCH 523/780] FIX Site ec.europa.eu has moved to https:// --- htdocs/societe/checkvat/checkVatPopup.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/checkvat/checkVatPopup.php b/htdocs/societe/checkvat/checkVatPopup.php index 689df14f3d7..e1f940cfab8 100644 --- a/htdocs/societe/checkvat/checkVatPopup.php +++ b/htdocs/societe/checkvat/checkVatPopup.php @@ -28,9 +28,9 @@ require_once NUSOAP_PATH.'/nusoap.php'; $langs->load("companies"); //http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl -$WS_DOL_URL='http://ec.europa.eu/taxation_customs/vies/services/checkVatService'; +$WS_DOL_URL='https://ec.europa.eu/taxation_customs/vies/services/checkVatService'; //$WS_DOL_URL_WSDL=$WS_DOL_URL.'?wsdl'; -$WS_DOL_URL_WSDL='http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'; +$WS_DOL_URL_WSDL='https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'; $WS_METHOD ='checkVat'; From cb98ec4d232b0be9d776e5b50a0745f307f5b016 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Fri, 15 May 2020 01:18:53 +0200 Subject: [PATCH 524/780] Fix datapolicycron --- htdocs/datapolicy/class/datapolicycron.class.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/datapolicy/class/datapolicycron.class.php b/htdocs/datapolicy/class/datapolicycron.class.php index 0d241f75334..81e9d009a56 100644 --- a/htdocs/datapolicy/class/datapolicycron.class.php +++ b/htdocs/datapolicy/class/datapolicycron.class.php @@ -461,7 +461,7 @@ class DataPolicyCron ) ), ); - + $this->db->begin(); foreach ($arrayofparameters as $key => $params) @@ -470,15 +470,15 @@ class DataPolicyCron { $sql = sprintf($params['sql'], (int) $conf->entity, (int) $conf->global->$key, (int) $conf->global->$key); - $resql = $db->query($sql); + $resql = $this->db->query($sql); - if ($resql && $db->num_rows($resql) > 0) + if ($resql && $this->db->num_rows($resql) > 0) { - $num = $db->num_rows($resql); + $num = $this->db->num_rows($resql); $i = 0; require_once $params['file']; - $object = new $params['class']($db); + $object = new $params['class']($this->db); while ($i < $num && ! $error) { From e691045c3d6ef5ad11fd9539fc702ed706229165 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 14 May 2020 23:20:39 +0000 Subject: [PATCH 525/780] Fixing style errors. --- htdocs/datapolicy/class/datapolicycron.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/datapolicy/class/datapolicycron.class.php b/htdocs/datapolicy/class/datapolicycron.class.php index 81e9d009a56..ac364c78f30 100644 --- a/htdocs/datapolicy/class/datapolicycron.class.php +++ b/htdocs/datapolicy/class/datapolicycron.class.php @@ -461,7 +461,7 @@ class DataPolicyCron ) ), ); - + $this->db->begin(); foreach ($arrayofparameters as $key => $params) From 100bfb921f0cdb97ed919ce858e8804ecc3bd68d Mon Sep 17 00:00:00 2001 From: Langlais115 Date: Fri, 15 May 2020 10:25:56 +0200 Subject: [PATCH 526/780] Fix #13805 Add proper type check to "seuil_stock_alerte" parameter. --- 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 bb2a1652d8f..7b6892552d1 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1015,7 +1015,7 @@ class Product extends CommonObject $sql .= ", volume = ".($this->volume != '' ? "'".$this->db->escape($this->volume)."'" : 'null'); $sql .= ", volume_units = ".($this->volume_units != '' ? "'".$this->db->escape($this->volume_units)."'" : 'null'); $sql .= ", fk_default_warehouse = ".($this->fk_default_warehouse > 0 ? $this->db->escape($this->fk_default_warehouse) : 'null'); - $sql .= ", seuil_stock_alerte = ".((isset($this->seuil_stock_alerte) && $this->seuil_stock_alerte != '') ? "'".$this->db->escape($this->seuil_stock_alerte)."'" : "null"); + $sql .= ", seuil_stock_alerte = ".((isset($this->seuil_stock_alerte) && is_numeric($this->seuil_stock_alerte)) ? (int) $this->seuil_stock_alerte : 'null'); $sql .= ", description = '".$this->db->escape($this->description)."'"; $sql .= ", url = ".($this->url ? "'".$this->db->escape($this->url)."'" : 'null'); $sql .= ", customcode = '".$this->db->escape($this->customcode)."'"; From bfca151d8553e7e8fe4487d7cf5d73c8459e520f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 11:58:50 +0200 Subject: [PATCH 527/780] Responsive --- htdocs/public/demo/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/public/demo/index.php b/htdocs/public/demo/index.php index c470055dbce..cbed76af71f 100644 --- a/htdocs/public/demo/index.php +++ b/htdocs/public/demo/index.php @@ -280,7 +280,7 @@ print ''; print '
'; print '
'; -print '
'.$langs->trans("DemoDesc").'

'; +print '
'.$langs->trans("DemoDesc").'

'; print '
'.$langs->trans("ChooseYourDemoProfil").'
'; print '
'; print '
'; From ad906fc508d3a712ddcd2133299bf0827d16a0b2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 12:43:48 +0200 Subject: [PATCH 528/780] Fix use SVG logo instead of PNG --- htdocs/cache.manifest | 2 +- htdocs/core/lib/ticket.lib.php | 6 +++--- htdocs/opensurvey/fonctions.php | 2 +- htdocs/public/demo/index.php | 2 +- htdocs/public/members/new.php | 6 +++--- htdocs/public/onlinesign/newonlinesign.php | 2 +- htdocs/public/payment/newpayment.php | 2 +- htdocs/public/payment/paymentko.php | 2 +- htdocs/public/payment/paymentok.php | 2 +- htdocs/theme/dolibarr_logo.png | Bin 9663 -> 14082 bytes htdocs/user/passwordforgotten.php | 8 ++++---- 11 files changed, 17 insertions(+), 17 deletions(-) diff --git a/htdocs/cache.manifest b/htdocs/cache.manifest index ebbf1aab4eb..5e514a32a47 100644 --- a/htdocs/cache.manifest +++ b/htdocs/cache.manifest @@ -8,7 +8,7 @@ CACHE MANIFEST # Files listed under CACHE will be ALWAYS cached after they are loaded. # And they will be always used from Cache after (even after refresh). CACHE: -theme/dolibarr_logo.png +theme/dolibarr_logo.svg support/ support/index.php diff --git a/htdocs/core/lib/ticket.lib.php b/htdocs/core/lib/ticket.lib.php index 0a50eb7407f..1b2a5c1245f 100644 --- a/htdocs/core/lib/ticket.lib.php +++ b/htdocs/core/lib/ticket.lib.php @@ -230,8 +230,8 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $ } elseif (!empty($mysoc->logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$mysoc->logo)) { $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$mysoc->logo); $width = 150; - } elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.png')) { - $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.png'; + } elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.svg')) { + $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.svg'; } } } @@ -254,7 +254,7 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $ } print ''; if (empty($conf->global->MAIN_HIDE_POWERED_BY)) { - print ''; + print ''; } print ''; } diff --git a/htdocs/opensurvey/fonctions.php b/htdocs/opensurvey/fonctions.php index 30529b49f56..31ec69f3a42 100644 --- a/htdocs/opensurvey/fonctions.php +++ b/htdocs/opensurvey/fonctions.php @@ -121,7 +121,7 @@ function llxHeaderSurvey($title, $head = "", $disablejs = 0, $disablehead = 0, $ print '>'; print ''; if (empty($conf->global->MAIN_HIDE_POWERED_BY)) { - print ''; + print ''; } print ''; } diff --git a/htdocs/public/demo/index.php b/htdocs/public/demo/index.php index cbed76af71f..f0caf948770 100644 --- a/htdocs/public/demo/index.php +++ b/htdocs/public/demo/index.php @@ -274,7 +274,7 @@ print "\n"; print '
'; print '
'; -print ''; +print ''; print '
'; print '
'; diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index 5b456893bf9..7f788a84671 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -113,9 +113,9 @@ function llxHeaderVierge($title, $head = "", $disablejs = 0, $disablehead = 0, $ $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/'.$mysoc->logo); $width = 150; } - elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.png')) + elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.svg')) { - $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.png'; + $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.svg'; $width = 150; } @@ -130,7 +130,7 @@ function llxHeaderVierge($title, $head = "", $disablejs = 0, $disablehead = 0, $ print '>'; print ''; if (empty($conf->global->MAIN_HIDE_POWERED_BY)) { - print ''; + print ''; } print ''; } diff --git a/htdocs/public/onlinesign/newonlinesign.php b/htdocs/public/onlinesign/newonlinesign.php index 83e757b78f8..2378728a8d3 100644 --- a/htdocs/public/onlinesign/newonlinesign.php +++ b/htdocs/public/onlinesign/newonlinesign.php @@ -191,7 +191,7 @@ if ($urllogo) print '>'; print ''; if (empty($conf->global->MAIN_HIDE_POWERED_BY)) { - print ''; + print ''; } print ''; } diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index ddd1943329e..ea7fd71c9e6 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -793,7 +793,7 @@ if ($urllogo) print '>'; print ''; if (empty($conf->global->MAIN_HIDE_POWERED_BY)) { - print ''; + print ''; } print ''; } diff --git a/htdocs/public/payment/paymentko.php b/htdocs/public/payment/paymentko.php index 2610219d69d..a3f6d733fcb 100644 --- a/htdocs/public/payment/paymentko.php +++ b/htdocs/public/payment/paymentko.php @@ -245,7 +245,7 @@ if ($urllogo) print '>'; print ''; if (empty($conf->global->MAIN_HIDE_POWERED_BY)) { - print ''; + print ''; } print ''; } diff --git a/htdocs/public/payment/paymentok.php b/htdocs/public/payment/paymentok.php index 6b7805cf473..b1d6c149a51 100644 --- a/htdocs/public/payment/paymentok.php +++ b/htdocs/public/payment/paymentok.php @@ -181,7 +181,7 @@ if ($urllogo) print '>'; print ''; if (empty($conf->global->MAIN_HIDE_POWERED_BY)) { - print ''; + print ''; } print ''; } diff --git a/htdocs/theme/dolibarr_logo.png b/htdocs/theme/dolibarr_logo.png index 77c2146191034eb2b02c61b2f67c26fcf5d6aa19..c15f03c821baf1e72192ebaee9c73477f5668810 100644 GIT binary patch literal 14082 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 literal 9663 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 BfOh}@ diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index b0f3a5aab6c..83289521538 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -192,13 +192,13 @@ elseif (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.' $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/'.$mysoc->logo); $width = 128; } -elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/img/dolibarr_logo.png')) +elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/img/dolibarr_logo.svg')) { - $urllogo = DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/dolibarr_logo.png'; + $urllogo = DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/dolibarr_logo.svg'; } -elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.png')) +elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.svg')) { - $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.png'; + $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.svg'; } // Security graphical code From 8a2741650a6096bdad3f165ce12aa98d54aa051b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 12:46:55 +0200 Subject: [PATCH 529/780] Fix css --- htdocs/theme/eldy/global.inc.php | 3 +++ htdocs/theme/md/style.css.php | 3 +++ 2 files changed, 6 insertions(+) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index afb154408c5..a6e9258ea39 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1362,6 +1362,9 @@ td.showDragHandle { transition: left 0.5s ease; } +.demologo { + width: 200px; +} div.blockvmenulogo { border-bottom: 0 !important; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index da2df5eb788..38a9ec38fe5 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2471,6 +2471,9 @@ font.vsmenudisabledmargin { margin: 1px 1px 1px 8px; } a.help:link, a.help:visited, a.help:hover, a.help:active, span.help { text-align: ; font-weight: normal; color: #999; text-decoration: none; } +.demologo { + width: 200px; +} div.blockvmenulogo { border-bottom: 0 !important; From 949ef8d7d89f413cd8b3c72eb5c5f85a9c409e20 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 12:49:22 +0200 Subject: [PATCH 530/780] Fix css --- htdocs/public/demo/demo.css | 5 ++++- htdocs/theme/eldy/global.inc.php | 3 --- htdocs/theme/md/style.css.php | 3 --- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/htdocs/public/demo/demo.css b/htdocs/public/demo/demo.css index 9328a8ecd1b..b185f8c933f 100644 --- a/htdocs/public/demo/demo.css +++ b/htdocs/public/demo/demo.css @@ -105,8 +105,11 @@ img.demothumb { object-fit: contain; height: 140px; background-position-y: bottom; + background-position-x: right; +} +.demologo { + width: 200px; } - @media only screen and (max-width: 767px) { diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index a6e9258ea39..afb154408c5 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1362,9 +1362,6 @@ td.showDragHandle { transition: left 0.5s ease; } -.demologo { - width: 200px; -} div.blockvmenulogo { border-bottom: 0 !important; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 38a9ec38fe5..da2df5eb788 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2471,9 +2471,6 @@ font.vsmenudisabledmargin { margin: 1px 1px 1px 8px; } a.help:link, a.help:visited, a.help:hover, a.help:active, span.help { text-align: ; font-weight: normal; color: #999; text-decoration: none; } -.demologo { - width: 200px; -} div.blockvmenulogo { border-bottom: 0 !important; From 91f87d6834ad67d11caf7edc7b932993a0999029 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 13:52:35 +0200 Subject: [PATCH 531/780] Fix bad param of getNomUrl --- htdocs/compta/accounting-files.php | 12 +++---- htdocs/don/class/don.class.php | 22 +++++++++---- htdocs/loan/class/paymentloan.class.php | 42 ++++++++++++++++--------- 3 files changed, 50 insertions(+), 26 deletions(-) diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index f9bc453d999..7d8b819b75c 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -672,27 +672,27 @@ if (!empty($date_start) && !empty($date_stop)) } elseif ($data['item'] == 'ExpenseReport') { $expensereport->id = $data['id']; $expensereport->ref = $data['ref']; - print $expensereport->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + print $expensereport->getNomUrl(1, 0, 0, '', 0, 0); } elseif ($data['item'] == 'SalaryPayment') { $salary_payment->id = $data['id']; $salary_payment->ref = $data['ref']; - print $salary_payment->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + print $salary_payment->getNomUrl(1, '', 0, '', 0); } elseif ($data['item'] == 'Donation') { $don->id = $data['id']; $don->ref = $data['ref']; - print $don->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + print $don->getNomUrl(1, 0, '', 0); } elseif ($data['item'] == 'SocialContributions') { $charge_sociales->id = $data['id']; $charge_sociales->ref = $data['ref']; - print $charge_sociales->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + print $charge_sociales->getNomUrl(1, 0, 0, 0, 0); } elseif ($data['item'] == 'VariousPayment') { $various_payment->id = $data['id']; $various_payment->ref = $data['ref']; - print $various_payment->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + print $various_payment->getNomUrl(1, '', 0, 0); } elseif ($data['item'] == 'LoanPayment') { $payment_loan->id = $data['id']; $payment_loan->ref = $data['ref']; - print $payment_loan->getNomUrl(1, '', 0, 0, '', 0, 0, 0); + print $payment_loan->getNomUrl(1, 0, 0, '', 0); } else { print $data['ref']; } diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index 77dbd177cbd..59c293e6386 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -916,11 +916,13 @@ class Don extends CommonObject /** * Return clicable name (with picto eventually) * - * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto - * @param int $notooltip 1=Disable tooltip - * @return string Chaine avec URL + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto + * @param int $notooltip 1=Disable tooltip + * @param string $moretitle Add more text to title tooltip + * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking + * @return string Chaine avec URL */ - public function getNomUrl($withpicto = 0, $notooltip = 0) + public function getNomUrl($withpicto = 0, $notooltip = 0, $moretitle = '', $save_lastsearch_value = -1) { global $conf, $langs; @@ -928,10 +930,18 @@ class Don extends CommonObject $result = ''; $label = ''.$langs->trans("Donation").''; - if (!empty($this->id)) + if (!empty($this->id)) { $label .= '
'.$langs->trans('Ref').': '.$this->id; + } + if ($moretitle) $label .= ' - '.$moretitle; - $linkstart = ''; + $url = DOL_URL_ROOT.'/don/card.php?id='.$this->id; + + $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; diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index 485d48dc443..ce152317710 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -507,25 +507,39 @@ class PaymentLoan extends CommonObject /** * Return clicable name (with eventually a picto) * - * @param int $withpicto 0=No picto, 1=Include picto into link, 2=No picto - * @param int $maxlen Max length label - * @return string Chaine with URL + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=No picto + * @param int $maxlen Max length label + * @param int $notooltip 1=Disable tooltip + * @param string $moretitle Add more text to title tooltip + * @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 */ - public function getNomUrl($withpicto = 0, $maxlen = 0) + public function getNomUrl($withpicto = 0, $maxlen = 0, $notooltip = 0, $moretitle = '', $save_lastsearch_value = -1) { - global $langs; + global $langs, $conf; + + if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips $result = ''; - - if (!empty($this->id)) - { - $link = ''; - $linkend = ''; - - if ($withpicto) $result .= ($link.img_object($langs->trans("ShowPayment").': '.$this->ref, 'payment').$linkend.' '); - if ($withpicto && $withpicto != 2) $result .= ' '; - if ($withpicto != 2) $result .= $link.($maxlen ?dol_trunc($this->ref, $maxlen) : $this->ref).$linkend; + $label = ''.$langs->trans("Loan").''; + if (!empty($this->id)) { + $label .= '
'.$langs->trans('Ref').': '.$this->id; } + if ($moretitle) $label .= ' - '.$moretitle; + + $url = DOL_URL_ROOT.'/loan/payment/card.php?id='.$this->id; + + $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), $this->picto, ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); + if ($withpicto != 2) $result .= $this->ref; + $result .= $linkend; return $result; } From 02b40ae8f60cfd76c70453d631af0c21618655ab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 13:54:05 +0200 Subject: [PATCH 532/780] Fix scrutinizer --- htdocs/core/class/interfaces.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/class/interfaces.class.php b/htdocs/core/class/interfaces.class.php index 9302ed09afb..4199e51cb68 100644 --- a/htdocs/core/class/interfaces.class.php +++ b/htdocs/core/class/interfaces.class.php @@ -328,6 +328,8 @@ class Interfaces continue; } + $text = ''; + try { $objMod = new $modName($db); From 9699ee7263ec8b591b569251c78d5932dd630da2 Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer Date: Fri, 15 May 2020 11:55:31 +0000 Subject: [PATCH 533/780] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- htdocs/accountancy/bookkeeping/balance.php | 16 ++++---- htdocs/compta/accounting-files.php | 12 +++--- htdocs/core/class/interfaces.class.php | 2 +- htdocs/core/lib/date.lib.php | 2 +- htdocs/core/modules/DolibarrModules.class.php | 2 +- .../modules/rapport/pdf_paiement.class.php | 28 +++++++------- .../class/emailcollector.class.php | 2 +- htdocs/takepos/invoice.php | 2 +- htdocs/takepos/phone.php | 38 +++++++++---------- 9 files changed, 52 insertions(+), 52 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index 85562ebc268..f443fded501 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -296,23 +296,23 @@ if ($action != 'export_csv') } print '
' . $langs->trans("SubTotal") . ':' . price($sous_total_debit) . '' . price($sous_total_credit) . '' . price(price2num($sous_total_credit - $sous_total_debit)) . '
'.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).''.price(price2num($sous_total_credit - $sous_total_debit)).'
' . $line->numero_compte . ($root_account_description ? ' - ' . $root_account_description : '') . ''.$line->numero_compte.($root_account_description ? ' - '.$root_account_description : '').'
' . $langs->trans("SubTotal") . ':' . price($sous_total_debit) . '' . price($sous_total_credit) . '' . price(price2num($sous_total_debit - $sous_total_credit)) . '
'.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).''.price(price2num($sous_total_debit - $sous_total_credit)).'
'.$data['paid'].''.price($data['sens']?$data['amount_ht']:-$data['amount_ht'])."'.price($data['sens'] ? $data['amount_ht'] : -$data['amount_ht'])."'.price($data['sens']?$data['amount_ttc']:-$data['amount_ttc'])."'.price($data['sens'] ? $data['amount_ttc'] : -$data['amount_ttc'])."'.price($data['sens']?$data['amount_vat']:-$data['amount_vat'])."'.price($data['sens'] ? $data['amount_vat'] : -$data['amount_vat'])."'.$data['thirdparty_name']."
'.$langs->trans('Total').''.price(price2num($totalET_credit+$totalET_debit, 'MT')).''.price(price2num($totalIT_credit+$totalIT_debit, 'MT')).''.price(price2num($totalVAT_credit+$totalVAT_debit, 'MT')).''.price(price2num($totalET_credit + $totalET_debit, 'MT')).''.price(price2num($totalIT_credit + $totalIT_debit, 'MT')).''.price(price2num($totalVAT_credit + $totalVAT_debit, 'MT')).'
'.$langs->trans("OpportunityProbability").' %'; - print ''; + print ' %'; + print ''; print '
'.$langs->trans("OpportunityAmount").'
'.$langs->trans("Budget").'
'.$langs->trans("OpportunityProbability").' %'; + print ' %'; print ''; print '
'.$langs->trans("OpportunityAmount").'
'.$langs->trans("Budget").'
'; if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { - print 'usage_opportunity ? ' checked="checked"' : '')).'"> '; + print 'usage_opportunity ? ' checked="checked"' : '')).'"> '; $htmltext = $langs->trans("ProjectFollowOpportunity"); print $form->textwithpicto($langs->trans("ProjectFollowOpportunity"), $htmltext); + print ''; print '
'; } if (empty($conf->global->PROJECT_HIDE_TASKS)) @@ -884,8 +897,9 @@ elseif ($object->id > 0) if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { + $classfortr = ($object->usage_opportunity ? '' : ' hideobject'); // Opportunity status - print '
'.$langs->trans("OpportunityStatus").'
'.$langs->trans("OpportunityStatus").''; print $formproject->selectOpportunityStatus('opp_status', $object->opp_status, 1, 0, 0, 0, 'inline-block valignmiddle'); print '
'.$langs->trans("OpportunityProbability").'
'.$langs->trans("OpportunityProbability").' %'; print ''; print '
'.$langs->trans("OpportunityAmount").'
'.$langs->trans("OpportunityAmount").'
'.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).''.price(price2num($sous_total_credit - $sous_total_debit)).'
'.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).''.price(price2num($sous_total_credit - $sous_total_debit)).' 
'.$langs->trans("OpportunityStatus").'
'.$langs->trans("OpportunityStatus").''; print $formproject->selectOpportunityStatus('opp_status', GETPOST('opp_status') ?GETPOST('opp_status') : $object->opp_status); print '
'.$langs->trans("OpportunityProbability").'
'.$langs->trans("OpportunityProbability").' %'; print ''; print '
'.$langs->trans("OpportunityAmount").'
'.$langs->trans("OpportunityAmount").'
'; $filteronlist = ''; if (!empty($conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST)) $filteronlist = $conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST; - $text = $form->select_company(GETPOST('socid', 'int'), 'socid', $filteronlist, 'SelectThirdParty', 1, 0, array(), 0, 'minwidth300'); + $text = img_picto('', 'company').$form->select_company(GETPOST('socid', 'int'), 'socid', $filteronlist, 'SelectThirdParty', 1, 0, array(), 0, 'minwidth300 widthcentpercentminusx'); if (empty($conf->global->PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS) && empty($conf->dol_use_jmobile)) { $texthelp = $langs->trans("IfNeedToUseOtherObjectKeepEmpty"); @@ -680,7 +680,7 @@ if ($action == 'create' && $user->rights->projet->creer) print '
'.$langs->trans("Categories").''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_PROJECT, '', 'parent', 64, 0, 1); $arrayselected = GETPOST('categories', 'array'); - print $form->multiselectarray('categories', $cate_arbo, $arrayselected, '', 0, '', 0, '100%'); + print img_picto('', 'category').$form->multiselectarray('categories', $cate_arbo, $arrayselected, '', 0, 'widthcentpercentminusx', 0, 0); print "
'.$form->editfieldkey('Country', 'selectcountry_id', '', $object, 0).''; print img_picto('', 'globe-americas', 'class="paddingrightonly"'); - print $form->select_country((GETPOST('country_id') != '' ?GETPOST('country_id') : $object->country_id)); + print $form->select_country((GETPOST('country_id') != '' ? GETPOST('country_id') : $object->country_id), 'country_id', '', 0, 'minwidth300 widthcentpercentminusx'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '
'.$form->editfieldkey('Phone', 'phone', '', $object, 0).'
'.$form->editfieldkey('Fax', 'fax', '', $object, 0).'
'.$form->editfieldkey('EMail', 'email', '', $object, 0, 'string', '', $conf->global->SOCIETE_EMAIL_MANDATORY).''.img_picto('', 'object_email').'
'.img_picto('', 'object_email').'
'.$form->editfieldkey('Web', 'url', '', $object, 0).''.img_picto('', 'globe').'
'.img_picto('', 'globe').'
'.$form->editfieldkey('Skype', 'skype', '', $object, 0).''; - // print 'skype).'">'; - // print '
'.$form->editfieldkey('Twitter', 'twitter', '', $object, 0).''; - // print 'twitter).'">'; - // print '
'.$form->editfieldkey('Facebook', 'facebook', '', $object, 0).''; - // print 'facebook).'">'; - // print '
'.$form->editfieldkey('LinkedIn', 'linkedin', '', $object, 0).''; - // print 'linkedin).'">'; - // print '
'.$langs->transcountry("LocalTax1IsUsed", $mysoc->country_code).''; + print '
'.$langs->transcountry("LocalTax1IsUsed", $mysoc->country_code).''; print $form->selectyesno('localtax1assuj_value', (isset($conf->global->THIRDPARTY_DEFAULT_USELOCALTAX1) ? $conf->global->THIRDPARTY_DEFAULT_USELOCALTAX1 : 0), 1); - print ''.$langs->transcountry("LocalTax2IsUsed", $mysoc->country_code).''; + print '
'.$langs->transcountry("LocalTax2IsUsed", $mysoc->country_code).''; print $form->selectyesno('localtax2assuj_value', (isset($conf->global->THIRDPARTY_DEFAULT_USELOCALTAX2) ? $conf->global->THIRDPARTY_DEFAULT_USELOCALTAX2 : 0), 1); print '
'.$langs->transcountry("LocalTax1IsUsed", $mysoc->country_code).''; print $form->selectyesno('localtax1assuj_value', (isset($conf->global->THIRDPARTY_DEFAULT_USELOCALTAX1) ? $conf->global->THIRDPARTY_DEFAULT_USELOCALTAX1 : 0), 1); print '
'.$langs->transcountry("LocalTax2IsUsed", $mysoc->country_code).''; print $form->selectyesno('localtax2assuj_value', (isset($conf->global->THIRDPARTY_DEFAULT_USELOCALTAX2) ? $conf->global->THIRDPARTY_DEFAULT_USELOCALTAX2 : 0), 1); print '
'; print $formcompany->selectProspectCustomerType($object->client); print '
'.$form->editfieldkey('CustomerCode', 'customer_code', '', $object, 0).''; print ''; - print ''; + print ''; + if ($conf->browser->layout == 'phone') print ''; print ''; + print '
'; @@ -1879,15 +1881,18 @@ else || (!empty($conf->supplier_proposal->enabled) && !empty($user->rights->supplier_proposal->lire))) { print '
'.$form->editfieldkey('Supplier', 'fournisseur', '', $object, 0, 'string', '', 1).''; + print ''.$form->editfieldkey('Supplier', 'fournisseur', '', $object, 0, 'string', '', 1).''; print $form->selectyesno("fournisseur", $object->fournisseur, 1); print '
'; if (!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->lire)) { print $form->editfieldkey('SupplierCode', 'supplier_code', '', $object, 0); } - print ''; + print ''; print ''; + if ($conf->browser->layout == 'phone') print ''; + print ''; @@ -1944,7 +1951,7 @@ else // Country print ''; @@ -1966,15 +1973,16 @@ else // Phone / Fax print ''; - print ''; + print ''; + if ($conf->browser->layout == 'phone') print ''; print ''; - print ''; + print ''; // EMail / Web print ''; - print ''; + print ''; print ''; - print ''; + print ''; if (!empty($conf->socialnetworks->enabled)) { foreach ($socialnetworks as $key => $value) { @@ -1990,36 +1998,9 @@ else } } } - // if (! empty($conf->socialnetworks->enabled)) - // { - // // Skype - // if (! empty($conf->global->SOCIALNETWORKS_SKYPE)) - // { - // print ''; - // print ''; - // } - // // Twitter - // if (! empty($conf->global->SOCIALNETWORKS_TWITTER)) - // { - // print ''; - // print ''; - // } - // // Facebook - // if (! empty($conf->global->SOCIALNETWORKS_FACEBOOK)) - // { - // print ''; - // print ''; - // } - // // LinkedIn - // if (! empty($conf->global->SOCIALNETWORKS_LINKEDIN)) - // { - // print ''; - // print ''; - // } - // } // Prof ids - $i = 1; $j = 0; + $i = 1; $j = 0; $NBCOLS = ($conf->browser->layout == 'phone' ? 1 : 2); while ($i <= 6) { $idprof = $langs->transcountry('ProfId'.$i, $object->country_code); @@ -2027,13 +2008,13 @@ else { $key = 'idprof'.$i; - if (($j % 2) == 0) print ''; + if (($j % $NBCOLS) == 0) print ''; $idprof_mandatory = 'SOCIETE_IDPROF'.($i).'_MANDATORY'; print ''; - if (($j % 2) == 1) print ''; + if (($j % $NBCOLS) == ($NBCOLS - 1)) print ''; $j++; } $i++; @@ -2058,7 +2039,7 @@ else print ''; } print ''; - + if ($conf->browser->layout == 'phone') print ''; print ''; + if ($conf->browser->layout == 'phone') print ''; print '"; } @@ -963,14 +963,14 @@ elseif ($object->id > 0) // Tags-Categories if ($conf->categorie->enabled) { - print '"; } From 9fb1766266877f15742627356a680d8c7babb537 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 17:14:28 +0200 Subject: [PATCH 551/780] CSS --- htdocs/core/lib/project.lib.php | 4 ++-- htdocs/projet/class/project.class.php | 8 +++++--- htdocs/projet/index.php | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 940c22a59e0..f3690694b01 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -2226,10 +2226,10 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks print ''; print ''; - print ''; - print ''; + if ($NBCOLS > 1 && ($j % 2 == 1)) print ''; // Vat is used print ''; @@ -1445,11 +1445,11 @@ else //TODO: Place into a function to control showing by country or study better option if ($mysoc->localtax1_assuj == "1" && $mysoc->localtax2_assuj == "1") { - print ''; + print ''; if ($conf->browser->layout == 'phone') print ''; - print ''; } @@ -2019,7 +2019,7 @@ else } $i++; } - if ($j % 2 == 1) print ''; + if ($NBCOLS > 0 && $j % 2 == 1) print ''; // VAT is used print ''; print ''; print ''; + print ''; } if (!in_array('declaredprogress', $hiddenfields)) { From ff84fd8118ebe747a9eb07eda0d5dfca19db0cb0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 19:01:12 +0200 Subject: [PATCH 559/780] Fix default language of user. Must separate weblangs and pagelangs. --- htdocs/core/website.inc.php | 7 ++++++- htdocs/langs/en_US/website.lang | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/htdocs/core/website.inc.php b/htdocs/core/website.inc.php index a00de6a3b01..6456fabf5b3 100644 --- a/htdocs/core/website.inc.php +++ b/htdocs/core/website.inc.php @@ -60,11 +60,16 @@ if (!is_object($weblangs)) { $weblangs = new Translate('', $conf); } +if (!is_object($pagelangs)) +{ + $pagelangs = new Translate('', $conf); +} if ($pageid > 0) { $websitepage->fetch($pageid); - $weblangs->setDefaultLang($websitepage->lang ? $websitepage->lang : 'auto'); + $weblangs->setDefaultLang(empty($_COOKIE['weblangs-shortcode']) ? 'auto' : $_COOKIE['weblangs-shortcode']); + $pagelangs->setDefaultLang($websitepage->lang ? $websitepage->lang : $weblangs->shortlang); if (!defined('USEDOLIBARREDITOR') && in_array($websitepage->type_container, array('menu', 'other'))) { diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index f4d88b0d606..2c555b40c20 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -57,7 +57,7 @@ NoPageYet=No pages yet YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template SyntaxHelp=Help on specific syntax tips YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor. -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">

More examples of HTML or dynamic code available on the wiki documentation
. +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, $pagelangs.

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">

More examples of HTML or dynamic code available on the wiki documentation
. ClonePage=Clone page/container CloneSite=Clone site SiteAdded=Website added From 8b79b7f074335f2cc3ea77a8b936121cd0b93fd6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 20:00:59 +0200 Subject: [PATCH 560/780] Update changelog --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index bcbfb1a959c..67cf9513a4a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -78,7 +78,7 @@ FIX: we must export company mail address on contact vcard only if contact email FIX: when we filter a list on a view status, we want this filter to be on bookmark that we create FIX: Wrong Sql on getListOfTowns api method FIX: wrong user right's name to top menu "commercial" -FIX: XSS Vulnerability +FIX: XSS Vulnerability reported by Mehmet Kelepçe / Gais Cyber Security ***** ChangeLog for 11.0.3 compared to 11.0.2 ***** FIX: unit price for selected supplier products not set. NaN was used. From 791c4b48b64feba1da952d1aef43d79a3d3fb199 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 20:08:35 +0200 Subject: [PATCH 561/780] Fix --- htdocs/projet/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index c4a1eb9a71d..6af779a2295 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -580,7 +580,7 @@ if ($action == 'create' && $user->rights->projet->creer) print $form->textwithpicto($langs->trans("ProjectFollowTasks"), $htmltext); print '
'; } - if (!empty($conf->global->PROJECT_BILL_TIME_SPENT)) + if (empty($conf->global->PROJECT_HIDE_TASKS) && !empty($conf->global->PROJECT_BILL_TIME_SPENT)) { print ' '; $htmltext = $langs->trans("ProjectBillTimeDescription"); @@ -871,7 +871,7 @@ elseif ($object->id > 0) print $form->textwithpicto($langs->trans("ProjectFollowTasks"), $htmltext); print '
'; } - if (!empty($conf->global->PROJECT_BILL_TIME_SPENT)) + if (empty($conf->global->PROJECT_HIDE_TASKS) && !empty($conf->global->PROJECT_BILL_TIME_SPENT)) { print 'usage_bill_time ? ' checked="checked"' : '')).'"> '; $htmltext = $langs->trans("ProjectBillTimeDescription"); From 0847f5350a62f44ca098668611a6ab7d4a39eb2a Mon Sep 17 00:00:00 2001 From: "jove@bisquerra.com" Date: Fri, 15 May 2020 23:44:19 +0200 Subject: [PATCH 562/780] TakePOS Auto Order improvements --- htdocs/takepos/css/phone.css | 96 +++++++++++++++++++++++++++++++-- htdocs/takepos/genimg/index.php | 5 +- htdocs/takepos/invoice.php | 30 ++++++----- htdocs/takepos/phone.php | 76 +++++++++++++++++--------- 4 files changed, 164 insertions(+), 43 deletions(-) diff --git a/htdocs/takepos/css/phone.css b/htdocs/takepos/css/phone.css index 0f3606071f0..37434cfc707 100644 --- a/htdocs/takepos/css/phone.css +++ b/htdocs/takepos/css/phone.css @@ -4,6 +4,7 @@ html,body { margin:0; height:100%; width:100%; + background-color: #FFF !important; } .container{ @@ -17,14 +18,14 @@ html,body { .phonerow1{ margin: 0 auto; width: 100%; - height: 40%; + height: auto; min-height: 40%; } .phonerow2{ margin: 0 auto; width: 100%; - height: 40%; + height: auto; } .phonebuttonsrow{ @@ -90,7 +91,71 @@ button.publicphonebutton { text-align: center; overflow: visible; /* removes extra width in IE */ width:33%; - height:90%; + height:50px; + font-weight: bold; + color: #fff; +} + +.phoneblue{ + color: #fff; + background-color: #428bca; + border-color: #357ebd; +} + +.phonegreen{ + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; + font-size:20px; + text-align:center; + width:20px; +} + +.phonetable{ + width:130px; +} + +.phoneqty{ + font-size:24px; + font-weight: bold; + + +} + +.phonered{ + color: #fff; + background-color: #dc3545; + border-color: #dc3545; + font-size:20px; + text-align:center; + width:20px; +} + +.phoneorange{ + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} + +.total{ + width:100% !important; + font-size:24px; +} + +.width24{ + font-size:24px; +} + +.leftcat{ + margin-top:15px; + float:left; + width: 50%; + text-align:center; + height:150px;; + overflow:hidden; + margin-bottom:5px; + font-size:18px; + color:#5B5858; font-weight: bold; } @@ -107,3 +172,28 @@ button.publicphonebutton2 { font-weight: bold; padding: 8px 16px; } + +.div-table-responsive-no-min{ + margin-top:20px; +} + +.comment { + float: left; + width: 100%; + height: auto; +} + +.comment-text-area { + float: left; + width: 80%; + height: auto; +} + +.textinput { + float: left; + width: 100%; + min-height: 75px; + outline: none; + resize: none; + border: 1px solid grey; +} \ No newline at end of file diff --git a/htdocs/takepos/genimg/index.php b/htdocs/takepos/genimg/index.php index e668b01aacb..fbb388b9aec 100644 --- a/htdocs/takepos/genimg/index.php +++ b/htdocs/takepos/genimg/index.php @@ -77,7 +77,10 @@ elseif ($query == "pro") preg_match('@src="([^"]+)"@', $image, $match); $file = array_pop($match); if ($file == "") header('Location: ../../public/theme/common/nophoto.png'); - else header('Location: '.$file.'&cache=1&publictakepos=1&modulepart=product'); + else{ + if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) header('Location: '.$file.'&cache=1'); + else header('Location: '.$file.'&cache=1&publictakepos=1&modulepart=product'); + } } else { diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 16012022dc9..3b486b7a3bc 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -70,10 +70,12 @@ if (($conf->global->TAKEPOS_PHONE_BASIC_LAYOUT == 1 && $conf->browser->layout == '; + $arrayofcss = array( + '/takepos/css/pos.css.php', + '/takepos/js/jquery.colorbox-min.js' + ); + $arrayofjs = array('/takepos/js/jquery.colorbox-min.js'); top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); - print ' - - '; } /** @@ -877,6 +879,7 @@ if ($_SESSION["basiclayout"] != 1) print '
'; print ''; } +else print ''; print "\n"; @@ -889,12 +892,11 @@ if ($_SESSION["basiclayout"] == 1) $categories = $categorie->get_full_arbo('product'); $htmlforlines = ''; foreach ($categories as $row) { - $htmlforlines .= ''; - $htmlforlines .= ''; - $htmlforlines .= ''."\n"; + $htmlforlines .= ''."\n"; } $htmlforlines .= '
'; if ((!$object->code_fournisseur || $object->code_fournisseur == -1) && $modCodeFournisseur->code_auto) { @@ -1936,7 +1941,9 @@ else // Zip / Town print '
'.$form->editfieldkey('Zip', 'zipcode', '', $object, 0).''; print $formcompany->select_ziptown($object->zip, 'zipcode', array('town', 'selectcountry_id', 'state_id'), 0, 0, '', 'maxwidth50onsmartphone'); - print ''.$form->editfieldkey('Town', 'town', '', $object, 0).''; + print '
'.$form->editfieldkey('Town', 'town', '', $object, 0).''; print $formcompany->select_ziptown($object->town, 'town', array('zipcode', 'selectcountry_id', 'state_id')); print $form->widgetForTranslation("town", $object, $permissiontoadd, 'string', 'alphanohtml', 'maxwidth100 quatrevingtpercent'); print '
'.$form->editfieldkey('Country', 'selectcounty_id', '', $object, 0).''; print img_picto('', 'globe-americas', 'class="paddingrightonly"'); - print $form->select_country((GETPOSTISSET('country_id') ? GETPOST('country_id') : $object->country_id), 'country_id'); + print $form->select_country((GETPOSTISSET('country_id') ? GETPOST('country_id') : $object->country_id), 'country_id', '', 0, 'minwidth300 widthcentpercentminusx'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '
'.$form->editfieldkey('Phone', 'phone', GETPOST('phone', 'alpha'), $object, 0).''.img_picto('', 'object_phoning').' '.img_picto('', 'object_phoning').'
'.$form->editfieldkey('Fax', 'fax', GETPOST('fax', 'alpha'), $object, 0).''.img_picto('', 'object_phoning_fax').'
'.img_picto('', 'object_phoning_fax').'
'.$form->editfieldkey('EMail', 'email', GETPOST('email', 'alpha'), $object, 0, 'string', '', (!empty($conf->global->SOCIETE_EMAIL_MANDATORY))).''.img_picto('', 'object_email').'
'.img_picto('', 'object_email').'
'.$form->editfieldkey('Web', 'url', GETPOST('url', 'alpha'), $object, 0).''.img_picto('', 'globe').'
'.img_picto('', 'globe').'
'.$form->editfieldkey('Skype', 'skype', '', $object, 0).'
'.$form->editfieldkey('Twitter', 'twitter', '', $object, 0).'
'.$form->editfieldkey('Facebook', 'facebook', '', $object, 0).'
'.$form->editfieldkey('LinkedIn', 'linkedin', '', $object, 0).'
'.$form->editfieldkey($idprof, $key, '', $object, 0, 'string', '', !(empty($conf->global->$idprof_mandatory) || !$object->isACompany())).''; print $formcompany->get_input_id_prof($i, $key, $object->$key, $object->country_code); print '
'.$form->editfieldkey($langs->transcountry("LocalTax2IsUsed", $mysoc->country_code), 'localtax2assuj_value', '', $object, 0).''; print $form->selectyesno('localtax2assuj_value', $object->localtax2_assuj, 1); if (!isOnlyOneLocalTax(2)) @@ -2132,6 +2113,7 @@ else print $form->selectarray("typent_id", $formcompany->typent_array(0), $object->typent_id, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT) ? 'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT)); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print '
'.$form->editfieldkey('Staff', 'effectif_id', '', $object, 0).''; print $form->selectarray("effectif_id", $formcompany->effectif_array(0), $object->effectif_id); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); From bfbe0037b6147c0611642ce10d00141e26e6f8cb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 16:29:18 +0200 Subject: [PATCH 550/780] Fix responsive --- htdocs/projet/card.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index e79d5bafa59..c4a1eb9a71d 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -680,7 +680,7 @@ if ($action == 'create' && $user->rights->projet->creer) print '
'.$langs->trans("Categories").''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_PROJECT, '', 'parent', 64, 0, 1); $arrayselected = GETPOST('categories', 'array'); - print img_picto('', 'category').$form->multiselectarray('categories', $cate_arbo, $arrayselected, '', 0, 'widthcentpercentminusx', 0, 0); + print img_picto('', 'category').$form->multiselectarray('categories', $cate_arbo, $arrayselected, '', 0, 'quatrevingtpercent widthcentpercentminusx', 0, 0); print "
'.$langs->trans("Categories").''; + print '
'.$langs->trans("Categories").''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_PROJECT, '', 'parent', 64, 0, 1); $c = new Categorie($db); $cats = $c->containing($object->id, Categorie::TYPE_PROJECT); foreach ($cats as $cat) { $arrayselected[] = $cat->id; } - print $form->multiselectarray('categories', $cate_arbo, $arrayselected, '', 0, '', 0, '100%'); + print img_picto('', 'category').$form->multiselectarray('categories', $cate_arbo, $arrayselected, 0, 0, 'quatrevingtpercent widthcentpercentminusx', 0, '0'); print "
'; - print $projectstatic->getNomUrl(1); + print $projectstatic->getNomUrl(1, '', 0, '', '-', 0 , -1, 'nowraponall'); if (!in_array('projectlabel', $hiddenfields)) print '
'.dol_trunc($objp->title, 24).''; print '
'; + print ''; if ($objp->fk_soc > 0) { $thirdpartystatic->id = $objp->fk_soc; diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 554bc84766a..417a825a77d 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1026,18 +1026,19 @@ class Project extends CommonObject } /** - * Return clicable name (with picto eventually) + * Return clickable name (with picto eventually) * * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto - * @param string $option Variant ('', 'nolink') + * @param string $option Variant where the link point to ('', 'nolink') * @param int $addlabel 0=Default, 1=Add label into string, >1=Add first chars into string * @param string $moreinpopup Text to add into popup * @param string $sep Separator between ref and label if option addlabel is set * @param int $notooltip 1=Disable tooltip * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking + * @param string $morecss More css on a link * @return string String with URL */ - public function getNomUrl($withpicto = 0, $option = '', $addlabel = 0, $moreinpopup = '', $sep = ' - ', $notooltip = 0, $save_lastsearch_value = -1) + public function getNomUrl($withpicto = 0, $option = '', $addlabel = 0, $moreinpopup = '', $sep = ' - ', $notooltip = 0, $save_lastsearch_value = -1, $morecss = '') { global $conf, $langs, $user, $hookmanager; @@ -1115,6 +1116,7 @@ class Project extends CommonObject if (!$this->public) $picto = 'project'; $linkstart = ''; $linkend = ''; diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index 3d6903065ab..f9cab81f43c 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -318,7 +318,7 @@ if ($resql) } print '
'; + print ''; if ($obj->socid) { $companystatic->id = $obj->socid; From 4a9960797bc84dd65c74131382ec7eede79a342d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 17:27:12 +0200 Subject: [PATCH 552/780] responsive --- htdocs/societe/card.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 96a9dd7deed..681d4a37fc9 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1401,7 +1401,7 @@ else } $i++; } - if ($j % 2 == 1) print '
'.$form->editfieldkey('VATIsUsed', 'assujtva_value', '', $object, 0).'
'.$langs->transcountry("LocalTax1IsUsed", $mysoc->country_code).''; + print '
'.$langs->transcountry("LocalTax1IsUsed", $mysoc->country_code).''; print $form->selectyesno('localtax1assuj_value', (isset($conf->global->THIRDPARTY_DEFAULT_USELOCALTAX1) ? $conf->global->THIRDPARTY_DEFAULT_USELOCALTAX1 : 0), 1); - print '
'.$langs->transcountry("LocalTax2IsUsed", $mysoc->country_code).''; + print ''.$langs->transcountry("LocalTax2IsUsed", $mysoc->country_code).''; print $form->selectyesno('localtax2assuj_value', (isset($conf->global->THIRDPARTY_DEFAULT_USELOCALTAX2) ? $conf->global->THIRDPARTY_DEFAULT_USELOCALTAX2 : 0), 1); print '
'.$form->editfieldkey('VATIsUsed', 'assujtva_value', '', $object, 0).''; From e583dc0a7ff7e183062f49cb56eb887df1cfd758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 15 May 2020 18:07:17 +0200 Subject: [PATCH 553/780] enhance free email --- htdocs/core/class/html.form.class.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 999e0463789..d6a4c437c50 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6690,6 +6690,14 @@ class Form text: $.trim(match[1]) + " <" + match[2] + ">" } } + var match = params.term.match(new RegExp("^" + REGEX_EMAIL + "$", "i")); + // console.log(match); + if (match !== null) { + return { + id: $.trim(match[1]) + " <" + match[1] + ">", + text: $.trim(match[1]) + " <" + match[1] + ">" + } + } return null; }'; } From 762ca96203f6bd92050ca547a9dbe48c3324f2a3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 18:28:15 +0200 Subject: [PATCH 554/780] FIX #13841 --- htdocs/admin/dict.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 2ad521f79a2..b7f65ddf91f 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -644,6 +644,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) if ($value == 'localtax2' && empty($_POST['localtax2_type'])) continue; if ($value == 'color' && empty($_POST['color'])) continue; if ($value == 'formula' && empty($_POST['formula'])) continue; + if ($value == 'dayrule' && empty($_POST['dayrule'])) continue; if ($value == 'sortorder') continue; // For a column name 'sortorder', we use the field name 'position' if ((!isset($_POST[$value]) || $_POST[$value] == '') && (!in_array($listfield[$f], array('decalage', 'module', 'accountancy_code', 'accountancy_code_sell', 'accountancy_code_buy', 'tracking')) // Fields that are not mandatory From a73eccf70d937f15bd9ebb4040e766845f177c9f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 May 2020 18:41:46 +0200 Subject: [PATCH 555/780] FIX env of browser not loaded in website --- htdocs/core/website.inc.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/htdocs/core/website.inc.php b/htdocs/core/website.inc.php index b5053fcc814..a00de6a3b01 100644 --- a/htdocs/core/website.inc.php +++ b/htdocs/core/website.inc.php @@ -27,6 +27,18 @@ include_once DOL_DOCUMENT_ROOT.'/website/class/website.class.php'; include_once DOL_DOCUMENT_ROOT.'/website/class/websitepage.class.php'; +// Detection browser (copy of code from main.inc.php) +if (isset($_SERVER["HTTP_USER_AGENT"]) && is_object($conf) && empty($conf->browser->name)) +{ + $tmp = getBrowserInfo($_SERVER["HTTP_USER_AGENT"]); + $conf->browser->name = $tmp['browsername']; + $conf->browser->os = $tmp['browseros']; + $conf->browser->version = $tmp['browserversion']; + $conf->browser->layout = $tmp['layout']; // 'classic', 'phone', 'tablet' + //var_dump($conf->browser); + + if ($conf->browser->layout == 'phone') $conf->dol_no_mouse_hover = 1; +} // Define $website if (!is_object($website)) { From 1bc87652918b53acae42d2eae34e3eb17fdd801d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 15 May 2020 18:42:41 +0200 Subject: [PATCH 556/780] enhance free email --- htdocs/core/class/html.form.class.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 95ed7e26a13..1097692d61a 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6692,6 +6692,10 @@ class Form text: $.trim(match[1]) + " <" + match[2] + ">" } } + if (params.term.indexOf("<") >= 0) { + // Return null to disable tag creation + return null; + } var match = params.term.match(new RegExp("^" + REGEX_EMAIL + "$", "i")); // console.log(match); if (match !== null) { From 76bb57bc6bfed3726d11b6c0c02a510b04139ec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 15 May 2020 18:50:37 +0200 Subject: [PATCH 557/780] enhance free email --- htdocs/core/class/html.form.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 1097692d61a..49758d55be7 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6699,9 +6699,10 @@ class Form var match = params.term.match(new RegExp("^" + REGEX_EMAIL + "$", "i")); // console.log(match); if (match !== null) { + var pos = params.term.indexOf("@"); return { - id: $.trim(match[1]) + " <" + match[1] + ">", - text: $.trim(match[1]) + " <" + match[1] + ">" + id: $.trim(match[1].substring(0, pos)) + " <" + match[1] + ">", + text: $.trim(match[1].substring(0, pos)) + " <" + match[1] + ">" } } return null; From 62e0bfbb5f4e42e0cd4d1220fc8d111f1706f316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 15 May 2020 18:53:59 +0200 Subject: [PATCH 558/780] enhance free email --- htdocs/core/lib/project.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index f3690694b01..b0179c966c7 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -2226,7 +2226,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks print '
'; - print $projectstatic->getNomUrl(1, '', 0, '', '-', 0 , -1, 'nowraponall'); + print $projectstatic->getNomUrl(1, '', 0, '', '-', 0, -1, 'nowraponall'); if (!in_array('projectlabel', $hiddenfields)) print '
'.dol_trunc($objp->title, 24).''; print '
'; @@ -2288,7 +2288,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks $total_plannedworkload += $plannedworkload; if (!in_array('plannedworkload', $hiddenfields)) { - print ''.($plannedworkload ?convertSecondToTime($plannedworkload) : '').''.($plannedworkload ? convertSecondToTime($plannedworkload) : '').''.$langs->trans('Qty').''.$langs->trans('TotalTTCShort').''.$langs->trans('Qty').'
'; + $htmlforlines .= '
'; $htmlforlines .= $row['label']; - $htmlforlines .= '
'; $htmlforlines .= '
'; @@ -910,12 +912,11 @@ if ($_SESSION["basiclayout"] == 1) $prods = $object->getObjectsInCateg("product"); $htmlforlines = ''; foreach ($prods as $row) { - $htmlforlines .= '
'; - $htmlforlines .= $row->label; - $htmlforlines .= '
'.price($row->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).'
'; - $htmlforlines .= '
'; print $htmlforlines; @@ -991,7 +992,7 @@ if ($placeid > 0) } $htmlforlines .= '" id="'.$line->id.'">'; $htmlforlines .= '
'; - if ($_SESSION["basiclayout"] == 1) $htmlforlines .= $line->qty." x "; + if ($_SESSION["basiclayout"] == 1) $htmlforlines .= ''.$line->qty." x "; //if ($line->product_label) $htmlforlines.= ''.$line->product_label.''; if (isset($line->product_type)) { @@ -1026,7 +1027,8 @@ if ($placeid > 0) } } if (!empty($line->array_options['options_order_notes'])) $htmlforlines .= "
(".$line->array_options['options_order_notes'].")"; - if ($_SESSION["basiclayout"] != 1) + if ($_SESSION["basiclayout"] == 1) $htmlforlines .= '
  '; + if ($_SESSION["basiclayout"] != 1) { $moreinfo = ''; $moreinfo .= $langs->transcountry("TotalHT", $mysoc->country_code).': '.price($line->total_ht); diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index 90f0aa363dc..113e92ec3bb 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -62,26 +62,34 @@ if (empty($user->rights->takepos->run) && !defined('INCLUDE_PHONEPAGE_FROM_PUBLI * View */ -// Title -$title = 'TakePOS - Dolibarr '.DOL_VERSION; -if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $title = 'TakePOS - '.$conf->global->MAIN_APPLICATION_TITLE; -$head = ' - - -'; -top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); - -print ''; - if ($action == "productinfo") { $prod = new Product($db); $prod->fetch($idproduct); - print "".$prod->label."
"; + print ''; + print "
".$prod->label."
"; print ''; print "
".$prod->description; print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; print '
'; - print ''; +} +elseif ($action == "publicpreorder") { + print ''; + print "

"; + print '
+ +
'; + print '
'; +} +elseif ($action == "publicpayment") { + $langs->loadLangs(array("orders")); + print '

'.$langs->trans('StatusOrderDelivered').'

'; + print ''; + print '
'; +} +elseif ($action == "checkplease") { + print ''; + print ''; + print '
'; } elseif ($action == "editline") { $placeid = GETPOST('placeid', 'int'); @@ -99,13 +107,22 @@ elseif ($action == "editline") { print "
".$prod->description; print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; print '
'; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; } } } else { +// Title +$title = 'TakePOS - Dolibarr '.DOL_VERSION; +if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $title = 'TakePOS - '.$conf->global->MAIN_APPLICATION_TITLE; +$head = ' + + +'; +$arrayofcss = array('/takepos/css/phone.css'); +top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); ?> - + global->TAKEPOS_NUM_TERMINALS != "1" && $_SESSION["takeposterminal"] == "") print '
'.$langs->trans('TerminalSelect').'
'; ?> @@ -301,18 +327,18 @@ function CheckPlease(){ print ''; } else { - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; } ?> -
-
-
-
+
+
+
+
Date: Sat, 16 May 2020 00:07:13 +0200 Subject: [PATCH 563/780] Fix travis --- htdocs/takepos/phone.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index 113e92ec3bb..b876b42bc98 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -114,15 +114,15 @@ elseif ($action == "editline") { } } else { -// Title -$title = 'TakePOS - Dolibarr '.DOL_VERSION; -if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $title = 'TakePOS - '.$conf->global->MAIN_APPLICATION_TITLE; -$head = ' + // Title + $title = 'TakePOS - Dolibarr '.DOL_VERSION; + if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $title = 'TakePOS - '.$conf->global->MAIN_APPLICATION_TITLE; + $head = ' '; -$arrayofcss = array('/takepos/css/phone.css'); -top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); + $arrayofcss = array('/takepos/css/phone.css'); + top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); ?> '."\n"; } + elseif ($type == 'organization') + { + $companyname = $mysoc->name; + $url = $mysoc->url; + + $ret = ''."\n"; + $ret .= ''."\n"; + } elseif ($type == 'blogpost') { if (!empty($websitepage->author_alias)) @@ -581,7 +616,7 @@ function getStructuredData($type, $data = array()) $pageurl = str_replace('__WEBSITE_KEY__', $website->ref, $pageurl); $title = str_replace('__WEBSITE_KEY__', $website->ref, $title); - $image = str_replace('__WEBSITE_KEY__', $website->ref, $image); + $image = 'medias/'.str_replace('__WEBSITE_KEY__', $website->ref, $image); $companyname = str_replace('__WEBSITE_KEY__', $website->ref, $companyname); $description = str_replace('__WEBSITE_KEY__', $website->ref, $description); @@ -598,6 +633,7 @@ function getStructuredData($type, $data = array()) "image": [ "'.dol_escape_json($image).'" ], + "dateCreated": "'.dol_print_date($websitepage->date_creation, 'dayhourrfc').'", "datePublished": "'.dol_print_date($websitepage->date_creation, 'dayhourrfc').'", "dateModified": "'.dol_print_date($websitepage->date_modification, 'dayhourrfc').'", "author": { @@ -611,9 +647,20 @@ function getStructuredData($type, $data = array()) "@type": "ImageObject", "url": "/wrapper.php?modulepart=mycompany&file=logos%2F'.urlencode($mysoc->logo).'" } - }, - "description": "'.dol_escape_json($description).'" - }'."\n"; + },'."\n"; + if ($websitepage->keywords) { + $ret .= '"keywords": ['; + $i = 0; + $arrayofkeywords = explode(',', $websitepage->keywords); + foreach($arrayofkeywords as $keyword) { + $ret.= '"'.dol_escape_json($keyword).'"'; + $i++; + if ($i < count($arrayofkeywords)) $ret .= ', '; + } + $ret .= '],'."\n"; + } + $ret .= '"description": "'.dol_escape_json($description).'"'; + $ret .= "\n".'}'."\n"; $ret .= ''."\n"; } } diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 62140ba5d89..de65e05d41e 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -3745,6 +3745,13 @@ class Societe extends CommonObject $this->instagram_url = empty($conf->global->MAIN_INFO_SOCIETE_INSTAGRAM_URL) ? '' : $conf->global->MAIN_INFO_SOCIETE_INSTAGRAM_URL; $this->youtube_url = empty($conf->global->MAIN_INFO_SOCIETE_YOUTUBE_URL) ? '' : $conf->global->MAIN_INFO_SOCIETE_YOUTUBE_URL; $this->github_url = empty($conf->global->MAIN_INFO_SOCIETE_GITHUB_URL) ? '' : $conf->global->MAIN_INFO_SOCIETE_GITHUB_URL; + $this->socialnetworks = array(); + if (! empty($this->facebook_url)) $this->socialnetworks['facebook'] = $this->facebook_url; + if (! empty($this->twitter_url)) $this->socialnetworks['twitter'] = $this->twitter_url; + if (! empty($this->linkedin_url)) $this->socialnetworks['linkedin'] = $this->linkedin_url; + if (! empty($this->instagram_url)) $this->socialnetworks['instagram'] = $this->instagram_url; + if (! empty($this->youtube_url)) $this->socialnetworks['youtube'] = $this->youtube_url; + if (! empty($this->github_url)) $this->socialnetworks['github'] = $this->github_url; // Id prof generiques $this->idprof1 = empty($conf->global->MAIN_INFO_SIREN) ? '' : $conf->global->MAIN_INFO_SIREN; From 9370f71d018f5cd486850255b707af6a8dda58a7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 17 May 2020 20:03:56 +0200 Subject: [PATCH 578/780] Fix hardcoded value --- htdocs/core/lib/website.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index b3419d2faae..f83a38e83cd 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -551,7 +551,7 @@ function getStructuredData($type, $data = array()) "@type": "SoftwareApplication", "name": "'.dol_escape_json($data['name']).'", "operatingSystem": "'.dol_escape_json($data['os']).'", - "applicationCategory": "https://schema.org/GameApplication", + "applicationCategory": "https://schema.org/'.$data['applicationCategory'].'", "aggregateRating": { "@type": "AggregateRating", "ratingValue": "'.$data['ratingvalue'].'", From 02d4ecb21c6b4b858e13443ba8b0d592e4972aa6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 17 May 2020 20:08:01 +0200 Subject: [PATCH 579/780] Fix url for youtube --- htdocs/core/lib/website.lib.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index f83a38e83cd..aa65e80086f 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -582,14 +582,17 @@ function getStructuredData($type, $data = array()) "@type": "ContactPoint", "contactType": "Contact", "email": "'.dol_escape_json($mysoc->email).'" - },'; + },'."\n"; if (is_array($mysoc->socialnetworks) && count($mysoc->socialnetworks) > 0) { $ret .= '"sameAs": ['; $i = 0; foreach($mysoc->socialnetworks as $key => $value) { if ($key == 'linkedin') { $ret.= '"https://www.'.$key.'.com/company/'.dol_escape_json($value).'"'; - } else { + } elseif ($key == 'youtube') { + $ret.= '"https://www.'.$key.'.com/user/'.dol_escape_json($value).'"'; + } + else { $ret.= '"https://www.'.$key.'.com/'.dol_escape_json($value).'"'; } $i++; From cf96383bf92b93b6492ba89172c00b0f8caf4262 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Mon, 18 May 2020 10:44:55 +0200 Subject: [PATCH 580/780] Fix : entity was missing in actioncomm fetch --- htdocs/comm/action/class/actioncomm.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 98b910fdfca..1d86f1eba08 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -572,6 +572,7 @@ class ActionComm extends CommonObject $sql = "SELECT a.id,"; $sql.= " a.id as ref,"; + $sql.= " a.entity,"; $sql.= " a.ref_ext,"; $sql.= " a.datep,"; $sql.= " a.datep2,"; @@ -608,6 +609,7 @@ class ActionComm extends CommonObject $obj = $this->db->fetch_object($resql); $this->id = $obj->id; + $this->entity = $obj->entity; $this->ref = $obj->ref; $this->ref_ext = $obj->ref_ext; From baa502a224c92fb795abf3599f08fb67e783d835 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Mon, 18 May 2020 10:54:25 +0200 Subject: [PATCH 581/780] Fix third merge issue with contact roles --- htdocs/contact/class/contact.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index a2235097811..8a1b26e9d33 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -1576,7 +1576,7 @@ class Contact extends CommonObject public static function replaceThirdparty(DoliDB $db, $origin_id, $dest_id) { $tables = array( - 'socpeople' + 'socpeople', 'societe_contacts' ); return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables); From 3d9d5d0ad522a76a65d8a9daaf35b2b693c5a138 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Mon, 18 May 2020 11:03:32 +0200 Subject: [PATCH 582/780] Fix : entity was missing in expedition fetch --- htdocs/expedition/class/expedition.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 70e3683b22c..838cbd87152 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -527,7 +527,7 @@ class Expedition extends CommonObject // Check parameters if (empty($id) && empty($ref) && empty($ref_ext) && empty($ref_int)) return -1; - $sql = "SELECT e.rowid, e.ref, e.fk_soc as socid, e.date_creation, e.ref_customer, e.ref_ext, e.ref_int, e.fk_user_author, e.fk_statut, e.fk_projet, e.billed"; + $sql = "SELECT e.rowid, e.entity, e.ref, e.fk_soc as socid, e.date_creation, e.ref_customer, e.ref_ext, e.ref_int, e.fk_user_author, e.fk_statut, e.fk_projet, e.billed"; $sql.= ", e.weight, e.weight_units, e.size, e.size_units, e.width, e.height"; $sql.= ", e.date_expedition as date_expedition, e.model_pdf, e.fk_address, e.date_delivery"; $sql.= ", e.fk_shipping_method, e.tracking_number"; @@ -555,6 +555,7 @@ class Expedition extends CommonObject $obj = $this->db->fetch_object($result); $this->id = $obj->rowid; + $this->entity = $obj->entity; $this->ref = $obj->ref; $this->socid = $obj->socid; $this->ref_customer = $obj->ref_customer; From 729cc4fd6fee89f9957d3d588e491f5d8ac74315 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 18 May 2020 13:26:33 +0200 Subject: [PATCH 583/780] Fix do not show full path --- htdocs/core/lib/website.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index aa65e80086f..baee3bd9bd5 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -520,7 +520,7 @@ function includeContainer($containerref) $tmpoutput = ob_get_contents(); ob_end_clean(); - print "\n".''."\n"; + print "\n".''."\n"; print preg_replace(array('/^.*]*>/ims', '/<\/body>.*$/ims'), array('', ''), $tmpoutput); if (!$res) From a9d1519f966163a092a6d994fe6cbb13f472090d Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Mon, 18 May 2020 14:52:33 +0200 Subject: [PATCH 584/780] FIX php error if multicompany disabled --- htdocs/compta/paiement/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/paiement/card.php b/htdocs/compta/paiement/card.php index 848cc20d483..27086713b07 100644 --- a/htdocs/compta/paiement/card.php +++ b/htdocs/compta/paiement/card.php @@ -342,7 +342,7 @@ if ($resql) print '
'.$langs->trans('Bill').''.$langs->trans('Company').''.$langs->trans('Entity').''.$langs->trans('Entity').''.$langs->trans('ExpectedToPay').''.$langs->trans('PayedByThisPayment').''.$langs->trans('RemainderToPay').''; $mc->getInfo($objp->entity); print $mc->label; From d3ac33ce20040c0d192d59a2a20f130c6bde6386 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 18 May 2020 14:53:35 +0200 Subject: [PATCH 585/780] Fix json-ld file --- htdocs/core/lib/website.lib.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index baee3bd9bd5..782c22a7d33 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -533,8 +533,9 @@ function includeContainer($containerref) /** * Return HTML content to add structured data for an article, news or Blog Post. + * Use the json-ld format. * - * @param string $type 'blogpost', 'product', 'software'... + * @param string $type 'blogpost', 'product', 'software', 'organization', ... * @param array $data Array of data parameters for structured data * @return string HTML content */ @@ -575,13 +576,13 @@ function getStructuredData($type, $data = array()) $ret .= '{ "@context": "https://schema.org", "@type": "Organization", - "name": "'.dol_escape_json($companyname).'", - "url": "'.$url.'", - "logo": "/wrapper.php?modulepart=mycompany&file=logos%2F'.urlencode($mysoc->logo).'", + "name": "'.dol_escape_json($data['name'] ? $data['name'] : $companyname).'", + "url": "'.dol_escape_json($data['url'] ? $data['url'] : $url).'", + "logo": "'.($data['logo'] ? dol_escape_json($data['logo']) : '/wrapper.php?modulepart=mycompany&file=logos%2F'.urlencode($mysoc->logo)).'", "contactPoint": { "@type": "ContactPoint", "contactType": "Contact", - "email": "'.dol_escape_json($mysoc->email).'" + "email": "'.dol_escape_json($data['email'] ? $data['email'] : $mysoc->email).'" },'."\n"; if (is_array($mysoc->socialnetworks) && count($mysoc->socialnetworks) > 0) { $ret .= '"sameAs": ['; From 18a19dafe513942a8a099cac13e60303a7eb3dc1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 18 May 2020 15:01:29 +0200 Subject: [PATCH 586/780] Update cron_run_jobs.php --- scripts/cron/cron_run_jobs.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cron/cron_run_jobs.php b/scripts/cron/cron_run_jobs.php index 104443feba1..6438b13e884 100755 --- a/scripts/cron/cron_run_jobs.php +++ b/scripts/cron/cron_run_jobs.php @@ -223,7 +223,7 @@ if (is_array($qualifiedjobs) && (count($qualifiedjobs)>0)) // Reload langs $langcode = (empty($conf->global->MAIN_LANG_DEFAULT)?'auto':$conf->global->MAIN_LANG_DEFAULT); if (! empty($user->conf->MAIN_LANG_DEFAULT)) $langcode = $user->conf->MAIN_LANG_DEFAULT; - if($langs->getDefaultLang() != $langcode) $langs->setDefaultLang($langcode); + if ($langs->getDefaultLang() != $langcode) $langs->setDefaultLang($langcode); } //If date_next_jobs is less of current date, execute the program, and store the execution time of the next execution in database From 756c1fd73d4f9993379b7c63018f19f67699f63d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 18 May 2020 15:26:04 +0200 Subject: [PATCH 587/780] Fix tooltip message --- htdocs/admin/security_other.php | 7 +++++-- htdocs/langs/en_US/admin.lang | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/security_other.php b/htdocs/admin/security_other.php index f0ad4352b60..f642cd64182 100644 --- a/htdocs/admin/security_other.php +++ b/htdocs/admin/security_other.php @@ -177,7 +177,11 @@ $sessiontimeout = ini_get("session.gc_maxlifetime"); if (empty($conf->global->MAIN_SESSION_TIMEOUT)) $conf->global->MAIN_SESSION_TIMEOUT = $sessiontimeout; print '
'.$langs->trans("SessionTimeOut").''; -print $form->textwithpicto('', $langs->trans("SessionExplanation", ini_get("session.gc_probability"), ini_get("session.gc_divisor"))); +if (ini_get("session.gc_probability") == 0) { + print $form->textwithpicto('', $langs->trans("SessionsPurgedByExternalSystem", ini_get("session.gc_maxlifetime"))); +} else { + print $form->textwithpicto('', $langs->trans("SessionExplanation", ini_get("session.gc_probability"), ini_get("session.gc_divisor"), ini_get("session.gc_maxlifetime"))); +} print ''; print ' '.strtolower($langs->trans("Seconds")); @@ -185,7 +189,6 @@ print '
'.$langs->trans("MAIN_APPLICATION_TITLE").''; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 5e485c86dbc..84c64a23615 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1145,6 +1145,7 @@ AvailableModules=Available app/modules ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules). SessionTimeOut=Time out for session SessionExplanation=This number guarantees that the session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guarantee that the session will expire after this delay. It will expire, after this delay, and when the session cleaner is run, so every %s/%s access, but only during access made by other sessions (if value is 0, it means clearing of session is done only by an external process).
Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by an external setup, no matter what the value entered here is. +SessionsPurgedByExternalSystem=Sessions on this server seems to be cleaned by an external mechanism (cron under debian, ubuntu ...), probably every %s seconds (= value of parameter session.gc_maxlifetime), so changing the value here has no effect. You must ask the server administrator to change session delay. TriggersAvailable=Available triggers TriggersDesc=Triggers are files that will modify the behavior of Dolibarr workflow once copied into the directory htdocs/core/triggers. They realize new actions, activated on Dolibarr events (new company creation, invoice validation, ...). TriggerDisabledByName=Triggers in this file are disabled by the -NORUN suffix in their name. From 514009ca6d65fee96e48b89f0b79784fda4cf924 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 18 May 2020 15:47:21 +0200 Subject: [PATCH 588/780] Add field position in llx_website --- .travis.yml | 4 ++++ htdocs/install/mysql/migration/12.0.0-13.0.0.sql | 2 +- htdocs/install/mysql/tables/llx_website.sql | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 688d706331d..9958556d42d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -404,6 +404,10 @@ script: php upgrade.php 11.0.0 12.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade11001200.log php upgrade2.php 11.0.0 12.0.0 > $TRAVIS_BUILD_DIR/upgrade11001200-2.log php step5.php 11.0.0 12.0.0 > $TRAVIS_BUILD_DIR/upgrade11001200-3.log + php upgrade.php 12.0.0 13.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade12001300.log + php upgrade2.php 12.0.0 13.0.0 > $TRAVIS_BUILD_DIR/upgrade12001300-2.log + php step5.php 12.0.0 13.0.0 > $TRAVIS_BUILD_DIR/upgrade12001300-3.log + # Enable modules not enabled into original dump php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_API,MAIN_MODULE_SUPPLIERPROPOSAL,MAIN_MODULE_WEBSITE,MAIN_MODULE_TICKETSUP,MAIN_MODULE_ACCOUNTING > $TRAVIS_BUILD_DIR/enablemodule.log echo $? diff --git a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql index 210fe31d1ef..782516353b2 100644 --- a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql +++ b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql @@ -33,4 +33,4 @@ -- For v13 - +ALTER TABLE llx_website ADD COLUMN position integer DEFAULT 0; diff --git a/htdocs/install/mysql/tables/llx_website.sql b/htdocs/install/mysql/tables/llx_website.sql index 743d4ec9ca8..717052f795c 100644 --- a/htdocs/install/mysql/tables/llx_website.sql +++ b/htdocs/install/mysql/tables/llx_website.sql @@ -35,6 +35,7 @@ CREATE TABLE llx_website fk_user_creat integer, fk_user_modif integer, date_creation datetime, + position integer DEFAULT 0, tms timestamp, import_key varchar(14) -- import key ) ENGINE=innodb; From 76663ae3e8a82dd7489ffc3438f4d481f12985e5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 18 May 2020 22:40:32 +0200 Subject: [PATCH 589/780] Fix canonical tag --- htdocs/core/lib/website2.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php index fc56a489d75..0ab35c55fd8 100644 --- a/htdocs/core/lib/website2.lib.php +++ b/htdocs/core/lib/website2.lib.php @@ -196,7 +196,7 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage) else dol_print_error($db); } // Add canonical reference - $tplcontent .= ''."\n"; + $tplcontent .= ''."\n"; // Add manifest.json on homepage $tplcontent .= 'use_manifest) { print \'\'."\n"; } ?>'."\n"; $tplcontent .= ''."\n"; From 7b29ce036a06325e464d39ff7c08af6e13103bac Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 19 May 2020 00:50:30 +0200 Subject: [PATCH 590/780] Fix input of virtual host and canonical url --- htdocs/core/lib/website2.lib.php | 4 +++- htdocs/website/index.php | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php index 0ab35c55fd8..ce1f27b49fc 100644 --- a/htdocs/core/lib/website2.lib.php +++ b/htdocs/core/lib/website2.lib.php @@ -196,7 +196,9 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage) else dol_print_error($db); } // Add canonical reference - $tplcontent .= ''."\n"; + if ($object->virtualhost) { + $tplcontent .= ''."\n"; + } // Add manifest.json on homepage $tplcontent .= 'use_manifest) { print \'\'."\n"; } ?>'."\n"; $tplcontent .= ''."\n"; diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 4f7cba09e89..70cfe780f55 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -681,6 +681,7 @@ if ($action == 'addcontainer') //$objectpage->htmlheader = preg_replace('/]*>\n/ims', '', $objectpage->htmlheader); + $objectpage->htmlheader = preg_replace('/]*rel="alternate[^>]*>\n/ims', '', $objectpage->htmlheader); $objectpage->htmlheader = preg_replace('/]*rel="canonical[^>]*>\n/ims', '', $objectpage->htmlheader); // Now loop to fetch JS @@ -1155,7 +1156,8 @@ if ($action == 'updatecss') if (GETPOSTISSET('virtualhost')) { - if (GETPOST('virtualhost', 'alpha') && !preg_match('/^http/', GETPOST('virtualhost', 'alpha'))) + $tmpvirtualhost = preg_replace('/\/$/', '', GETPOST('virtualhost', 'alpha')); + if ($tmpvirtualhost && !preg_match('/^http/', $tmpvirtualhost)) { $error++; setEventMessages($langs->trans('ErrorURLMustStartWithHttp', $langs->transnoentitiesnoconv("VirtualHost")), null, 'errors'); @@ -1169,7 +1171,7 @@ if ($action == 'updatecss') $arrayotherlang[$key] = substr(trim($val), 0, 2); // Kept short language code only } - $object->virtualhost = GETPOST('virtualhost', 'alpha'); + $object->virtualhost = $tmpvirtualhost; $object->lang = GETPOST('WEBSITE_LANG', 'aZ09'); $object->otherlang = join(',', $arrayotherlang); $object->use_manifest = GETPOST('use_manifest', 'alpha'); From d35a24ee76b0639d7b3697ba95e0149b053421fe Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 19 May 2020 01:36:33 +0200 Subject: [PATCH 591/780] Removed not expected file --- htdocs/website/index.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 htdocs/website/index.html diff --git a/htdocs/website/index.html b/htdocs/website/index.html deleted file mode 100644 index e69de29bb2d..00000000000 From 3e187f8ce06325d0a4e3fca35205006640abe290 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 19 May 2020 03:36:29 +0200 Subject: [PATCH 592/780] Fix add check on size limit --- htdocs/compta/prelevement/card.php | 4 ---- htdocs/website/index.php | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php index cb3205a0e70..d81e101be3d 100644 --- a/htdocs/compta/prelevement/card.php +++ b/htdocs/compta/prelevement/card.php @@ -272,10 +272,6 @@ if ($id > 0 || $ref) print '
'.$langs->trans("TransMetod").''; print $form->selectarray("methode", $object->methodes_trans); print '
'.$langs->trans("File").''; - print ''; - print '
'; - print '

'; print '
'; print ''; diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 70cfe780f55..a48b6d92548 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -3069,6 +3069,7 @@ if ($action == 'importsite') print ''.$langs->trans("ZipOfWebsitePackageToImport").'

'; + print ''; print ''; print ''; print ''; From b3a17c8da4550e620fd7e87c9a473d9c3ae09053 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 19 May 2020 04:21:38 +0200 Subject: [PATCH 593/780] Look and feel v12 --- htdocs/admin/security.php | 14 +++++++------- htdocs/admin/security_file.php | 4 ++-- htdocs/langs/en_US/admin.lang | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/htdocs/admin/security.php b/htdocs/admin/security.php index f016c305a15..d9d61673c5e 100644 --- a/htdocs/admin/security.php +++ b/htdocs/admin/security.php @@ -168,9 +168,9 @@ elseif ($action == 'disable_MAIN_SECURITY_DISABLEFORGETPASSLINK') exit; } -if ($action == 'maj_pattern') +if ($action == 'updatepattern') { - $pattern = GETPOST("pattern"); + $pattern = GETPOST("pattern", "alpha"); $explodePattern = explode(';', $pattern); $patternInError = false; @@ -184,6 +184,7 @@ if ($action == 'maj_pattern') if (!$patternInError) { dolibarr_set_const($db, "USER_PASSWORD_PATTERN", $pattern, 'chaine', 0, '', $conf->entity); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); header("Location: security.php"); exit; } @@ -336,11 +337,9 @@ if ($conf->global->USER_PASSWORD_GENERATED == "Perso") { print ''; print '
'; - print ''; - print ''; - print '
'; + print '
'; print ''.$langs->trans("Save").''; - print '
'; + print '
'; print '

'; print ''."\n"; @@ -1505,9 +1482,7 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr if (preg_match('/^(http|\/\/)/i', $jsfile)) { print ''."\n"; - } - else - { + } else { print ''."\n"; } } @@ -1606,9 +1581,7 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead $logouttext .= ''; $logouttext .= img_picto($langs->trans('Logout'), 'sign-out', '', false, 0, 0, '', 'atoplogin'); $logouttext .= ''; - } - else - { + } else { $logouthtmltext .= $langs->trans("NoLogoutProcessWithAuthMode", $_SESSION["dol_authmode"]); $logouttext .= img_picto($langs->trans('Logout'), 'sign-out', '', false, 0, 0, '', 'atoplogin opacitymedium'); } @@ -1625,11 +1598,10 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead { if ($result == 0) $toprightmenu .= $hookmanager->resPrint; // add - else + else { $toprightmenu = $hookmanager->resPrint; // replace - } - else - { + } + } else { $toprightmenu .= $result; // For backward compatibility } @@ -2362,8 +2334,9 @@ function main_area($title = '') print ''."\n"; print ''; print ''."\n"; print ''."\n"; print ''."\n"; @@ -2398,9 +2371,7 @@ function getHelpParamFor($helppagename, $langs) $helpbaseurl = '%s'; $helppage = $helppagename; $mode = 'local'; - } - else - { + } else { // If WIKI URL $reg = array(); if (preg_match('/^es/i', $langs->defaultlang)) @@ -2538,10 +2509,8 @@ if (!function_exists("llxFooter")) { $title = img_warning().' '.$langs->trans('CoreErrorTitle'); print ajax_dialog($title, $langs->trans('CoreErrorMessage')); - } - // html version - else - { + } else { + // html version $msg = img_warning().' '.$langs->trans('CoreErrorMessage'); print '
'.$msg.'
'; } @@ -2683,9 +2652,7 @@ if (!function_exists("llxFooter")) \n"; include_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index 4005e6a2ed5..1ef1f9c1f50 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -60,14 +60,14 @@ if (defined('TEST_DB_FORCE_TYPE')) $conf->db->type = constant('TEST_DB_FORCE_TYP // Set properties specific to conf file $conf->file->main_limit_users = $dolibarr_main_limit_users; -$conf->file->mailing_limit_sendbyweb = $dolibarr_mailing_limit_sendbyweb; -$conf->file->mailing_limit_sendbycli = $dolibarr_mailing_limit_sendbycli; +$conf->file->mailing_limit_sendbyweb = $dolibarr_mailing_limit_sendbyweb; +$conf->file->mailing_limit_sendbycli = $dolibarr_mailing_limit_sendbycli; $conf->file->main_authentication = empty($dolibarr_main_authentication) ? '' : $dolibarr_main_authentication; // Identification mode $conf->file->main_force_https = empty($dolibarr_main_force_https) ? '' : $dolibarr_main_force_https; // Force https -$conf->file->strict_mode = empty($dolibarr_strict_mode) ? '' : $dolibarr_strict_mode; // Force php strict mode (for debug) +$conf->file->strict_mode = empty($dolibarr_strict_mode) ? '' : $dolibarr_strict_mode; // Force php strict mode (for debug) $conf->file->instance_unique_id = empty($dolibarr_main_instance_unique_id) ? (empty($dolibarr_main_cookie_cryptkey) ? '' : $dolibarr_main_cookie_cryptkey) : $dolibarr_main_instance_unique_id; // Unique id of instance $conf->file->dol_document_root = array('main' => (string) DOL_DOCUMENT_ROOT); // Define array of document root directories ('/home/htdocs') -$conf->file->dol_url_root = array('main' => (string) DOL_URL_ROOT); // Define array of url root path ('' or '/dolibarr') +$conf->file->dol_url_root = array('main' => (string) DOL_URL_ROOT); // Define array of url root path ('' or '/dolibarr') if (!empty($dolibarr_main_document_root_alt)) { // dolibarr_main_document_root_alt can contains several directories @@ -132,9 +132,7 @@ if (!defined('NOREQUIREDB')) $langs->setDefaultLang('auto'); $langs->load("website"); print $langs->trans("SorryWebsiteIsCurrentlyOffLine"); - } - else - { + } else { print "SorryWebsiteIsCurrentlyOffLine"; } print ''; @@ -225,9 +223,7 @@ if (!empty($conf->global->MAIN_ONLY_LOGIN_ALLOWED)) print 'You are logged with user "'.$_SESSION["dol_login"].'" and only administrator user "'.$conf->global->MAIN_ONLY_LOGIN_ALLOWED.'" is allowed to connect for the moment.'."\n"; $nexturl = DOL_URL_ROOT.'/user/logout.php'; print 'Please try later or click here to disconnect and change login user...'."\n"; - } - else - { + } else { print 'Sorry, your application is offline. Only administrator user "'.$conf->global->MAIN_ONLY_LOGIN_ALLOWED.'" is allowed to connect for the moment.'."\n"; $nexturl = DOL_URL_ROOT.'/'; print 'Please try later or click here to change login user...'."\n"; diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index b2534ee92dd..9970026a524 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -155,20 +155,14 @@ if (!empty($hashp)) // 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 - { + } else { accessforbidden('Bad link. File is from another module part.', 0, 0, 1); } - } - else - { + } else { $modulepart = $moduleparttocheck; $original_file = (($tmp[1] ? $tmp[1].'/' : '').$ecmfile->filename); // this is relative to module dir } - } - else - { + } else { $langs->load("errors"); accessforbidden($langs->trans("ErrorFileNotFoundWithSharedLink"), 0, 0, 1); } @@ -208,9 +202,7 @@ elseif (isset($_GET["publictakepos"])) if (! empty($conf->global->TAKEPOS_AUTO_ORDER)) { $accessallowed = 1; // Only if TakePOS Public Auto Order is enabled and received publictakepos variable } -} -else -{ +} else { // Basic protection (against external users only) if ($user->socid > 0) { @@ -290,9 +282,8 @@ if ($modulepart == 'barcode') { $result = $module->buildBarCode($code, $encoding, $readable); } -} -else // Open and return file -{ +} else { + // Open and return file clearstatcache(); $filename = basename($fullpath_original_file); @@ -314,9 +305,7 @@ else // Open and return file { top_httphead($type); header('Content-Disposition: inline; filename="'.basename($fullpath_original_file).'"'); - } - else - { + } else { top_httphead('image/png'); header('Content-Disposition: inline; filename="'.basename($fullpath_original_file).'"'); } From b70efb5d7b4bdbb76afd8549b62ba64a0b4ca2f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 21 May 2020 01:10:33 +0200 Subject: [PATCH 637/780] add new rule --- .travis.yml | 4 ++-- htdocs/filefunc.inc.php | 11 +++-------- htdocs/zapier/admin/setup.php | 3 +-- htdocs/zapier/class/hook.class.php | 2 +- htdocs/zapier/hook_agenda.php | 8 ++------ htdocs/zapier/hook_card.php | 8 ++------ htdocs/zapier/hook_document.php | 4 +--- 7 files changed, 12 insertions(+), 28 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9958556d42d..752dd572371 100644 --- a/.travis.yml +++ b/.travis.yml @@ -291,8 +291,8 @@ script: # Ensure we catch errors set -e # Exclusions are defined in the ruleset.xml file - #phpcs -s -n -p -d memory_limit=-1 --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 . - if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then phpcs -s -p -d memory_limit=-1 --extensions=php --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --runtime-set ignore_warnings_on_exit true .; fi + phpcs -s -n -p -d memory_limit=-1 --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 . + #if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then phpcs -s -p -d memory_limit=-1 --extensions=php --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --runtime-set ignore_warnings_on_exit true .; fi set +e echo diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index b70419de5f4..d1a33d24344 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -87,9 +87,7 @@ if (!$result && !empty($_SERVER["GATEWAY_INTERFACE"])) // If install not done // Note: If calling page was an index.php not into htdocs (ie comm/index.php, ...), then this redirect will fails, // but we don't want to change this because when URL is correct, we must be sure the redirect to install/index.php will be correct. $path = ''; - } - else - { + } else { // If what we look is not index.php, we can try to guess location of root. May not work all the time. // There is no real solution, because the only way to know the apache url relative path is to have it into conf file. // If it fails to find correct $path, then only solution is to ask user to enter the correct URL to index.php or install/index.php @@ -114,9 +112,7 @@ if (!$result && !empty($_SERVER["GATEWAY_INTERFACE"])) // If install not done if (!empty($dolibarr_strict_mode)) { error_reporting(E_ALL | E_STRICT); -} -else -{ +} else { error_reporting(E_ALL & ~(E_STRICT | E_NOTICE | E_DEPRECATED)); } @@ -156,8 +152,7 @@ if (!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck)) { $csrfattack = false; if (empty($_SERVER['HTTP_REFERER'])) $csrfattack = true; // An evil browser was used - else - { + else { $tmpa = parse_url($_SERVER['HTTP_HOST']); $tmpb = parse_url($_SERVER['HTTP_REFERER']); if ((empty($tmpa['host']) ? $tmpa['path'] : $tmpa['host']) != (empty($tmpb['host']) ? $tmpb['path'] : $tmpb['host'])) $csrfattack = true; diff --git a/htdocs/zapier/admin/setup.php b/htdocs/zapier/admin/setup.php index e608ece5bb7..8a74b525c2b 100644 --- a/htdocs/zapier/admin/setup.php +++ b/htdocs/zapier/admin/setup.php @@ -110,8 +110,7 @@ if ($action == 'edit') { print '
'; print ''.$langs->trans("Modify").''; print '
'; - } else - { + } else { print '
'.$langs->trans("NothingToSetup"); } } diff --git a/htdocs/zapier/class/hook.class.php b/htdocs/zapier/class/hook.class.php index b985c77434e..280780f8f25 100644 --- a/htdocs/zapier/class/hook.class.php +++ b/htdocs/zapier/class/hook.class.php @@ -398,7 +398,7 @@ class Hook extends CommonObject { $result = $this->fetchCommon($id, $ref); if ($result > 0 && !empty($this->table_element_line)) { - $this->fetchLines(); + //$this->fetchLines(); } return $result; } diff --git a/htdocs/zapier/hook_agenda.php b/htdocs/zapier/hook_agenda.php index ca046392cec..b036057cb04 100644 --- a/htdocs/zapier/hook_agenda.php +++ b/htdocs/zapier/hook_agenda.php @@ -45,9 +45,7 @@ if (GETPOST('actioncode', 'array')) { $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; -} -else -{ +} else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); @@ -217,9 +215,7 @@ if ($object->id > 0) if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) { print ''.$langs->trans("AddAction").''; - } - else - { + } else { print ''.$langs->trans("AddAction").''; } } diff --git a/htdocs/zapier/hook_card.php b/htdocs/zapier/hook_card.php index c2755892716..660e972cf28 100644 --- a/htdocs/zapier/hook_card.php +++ b/htdocs/zapier/hook_card.php @@ -338,9 +338,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($user->rights->mymodule->write) { print ''.$langs->trans("Modify").''."\n"; - } - else - { + } else { print ''.$langs->trans('Modify').''."\n"; } @@ -367,9 +365,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($user->rights->mymodule->delete) { print ''.$langs->trans('Delete').''."\n"; - } - else - { + } else { print ''.$langs->trans('Delete').''."\n"; } } diff --git a/htdocs/zapier/hook_document.php b/htdocs/zapier/hook_document.php index cdc5f8c7ddf..4c390a118e2 100644 --- a/htdocs/zapier/hook_document.php +++ b/htdocs/zapier/hook_document.php @@ -132,9 +132,7 @@ if ($object->id) print ''; dol_fiche_end(); -} -else -{ +} else { accessforbidden('', 0, 0); } From ee6fadd0d57dd74c8ecfa52f6f18c530c6928486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 21 May 2020 01:41:27 +0200 Subject: [PATCH 638/780] add new rule --- dev/tools/dolibarr-postgres2mysql.php | 21 +- dev/translation/autotranslator.class.php | 19 +- dev/translation/sanity_check_en_langfiles.php | 6 +- dev/translation/strip_language_file.php | 9 +- htdocs/admin/agenda.php | 6 +- htdocs/admin/agenda_extsites.php | 9 +- htdocs/admin/agenda_other.php | 30 +- htdocs/admin/agenda_reminder.php | 12 +- htdocs/admin/agenda_xcal.php | 3 +- htdocs/admin/bank.php | 12 +- htdocs/admin/barcode.php | 15 +- htdocs/admin/bom.php | 33 +- htdocs/admin/boxes.php | 15 +- htdocs/admin/chequereceipts.php | 12 +- htdocs/admin/clicktodial.php | 6 +- htdocs/admin/commande.php | 48 +- htdocs/admin/company.php | 42 +- htdocs/admin/compta.php | 3 +- htdocs/admin/confexped.php | 3 +- htdocs/admin/const.php | 21 +- htdocs/admin/contract.php | 30 +- htdocs/admin/dav.php | 9 +- htdocs/admin/debugbar.php | 3 +- htdocs/admin/defaultvalues.php | 24 +- htdocs/admin/delais.php | 3 +- htdocs/admin/dict.php | 42 +- .../class/PSWebServiceLibrary.class.php | 22 +- .../admin/dolistore/class/dolistore.class.php | 6 +- htdocs/admin/ecm.php | 9 +- htdocs/admin/emailcollector_card.php | 30 +- htdocs/admin/emailcollector_list.php | 3 +- htdocs/admin/expedition.php | 27 +- htdocs/admin/expensereport.php | 30 +- htdocs/admin/expensereport_ik.php | 3 +- htdocs/admin/expensereport_rules.php | 27 +- htdocs/admin/external_rss.php | 21 +- htdocs/admin/facture.php | 48 +- htdocs/admin/fckeditor.php | 9 +- htdocs/admin/fichinter.php | 36 +- htdocs/admin/geoipmaxmind.php | 6 +- htdocs/admin/holiday.php | 30 +- htdocs/admin/ihm.php | 6 +- htdocs/admin/ldap.php | 21 +- htdocs/admin/ldap_contacts.php | 9 +- htdocs/admin/ldap_groups.php | 9 +- htdocs/admin/ldap_members.php | 9 +- htdocs/admin/ldap_members_types.php | 9 +- htdocs/admin/ldap_users.php | 15 +- htdocs/admin/limits.php | 9 +- htdocs/admin/livraison.php | 30 +- htdocs/admin/loan.php | 6 +- htdocs/admin/mailing.php | 3 +- htdocs/admin/mailman.php | 15 +- htdocs/admin/mails.php | 42 +- htdocs/admin/mails_emailing.php | 39 +- htdocs/admin/mails_senderprofile_list.php | 3 +- htdocs/admin/mails_templates.php | 45 +- htdocs/admin/menus.php | 3 +- htdocs/admin/menus/edit.php | 30 +- htdocs/admin/menus/index.php | 6 +- htdocs/admin/menus/other.php | 3 +- htdocs/admin/modulehelp.php | 18 +- htdocs/admin/modules.php | 65 +- htdocs/admin/mrp.php | 33 +- htdocs/admin/multicurrency.php | 9 +- htdocs/admin/notification.php | 9 +- htdocs/admin/oauth.php | 3 +- htdocs/admin/oauthlogintokens.php | 15 +- htdocs/admin/payment.php | 6 +- htdocs/admin/pdf.php | 3 +- htdocs/admin/perms.php | 3 +- htdocs/admin/prelevement.php | 3 +- htdocs/admin/propal.php | 48 +- htdocs/admin/receiptprinter.php | 6 +- htdocs/admin/reception_setup.php | 24 +- htdocs/admin/resource.php | 3 +- htdocs/admin/security.php | 24 +- htdocs/admin/security_other.php | 21 +- htdocs/admin/sms.php | 9 +- htdocs/admin/socialnetworks.php | 6 +- htdocs/admin/spip.php | 6 +- htdocs/admin/stock.php | 30 +- htdocs/admin/supplier_invoice.php | 27 +- htdocs/admin/supplier_order.php | 36 +- htdocs/admin/supplier_payment.php | 21 +- htdocs/admin/supplier_proposal.php | 45 +- htdocs/admin/syslog.php | 6 +- htdocs/admin/system/about.php | 3 +- htdocs/admin/system/constall.php | 6 +- htdocs/admin/system/database-tables.php | 6 +- htdocs/admin/system/database.php | 3 +- htdocs/admin/system/dbtable.php | 3 +- htdocs/admin/system/dolibarr.php | 18 +- htdocs/admin/system/filecheck.php | 33 +- htdocs/admin/system/modules.php | 9 +- htdocs/admin/system/perf.php | 36 +- htdocs/admin/system/phpinfo.php | 21 +- htdocs/admin/system/xdebug.php | 6 +- htdocs/admin/taxes.php | 18 +- htdocs/admin/ticket.php | 3 +- htdocs/admin/ticket_public.php | 3 +- htdocs/admin/tools/dolibarr_export.php | 17 +- htdocs/admin/tools/dolibarr_import.php | 3 +- htdocs/admin/tools/export.php | 3 +- htdocs/admin/tools/export_files.php | 3 +- htdocs/admin/tools/listevents.php | 6 +- htdocs/admin/tools/listsessions.php | 6 +- htdocs/admin/tools/update.php | 6 +- htdocs/admin/translation.php | 30 +- htdocs/admin/user.php | 33 +- htdocs/admin/usergroup.php | 18 +- htdocs/admin/website.php | 24 +- htdocs/admin/website_options.php | 3 +- htdocs/admin/workflow.php | 9 +- htdocs/api/admin/index.php | 12 +- htdocs/api/class/api.class.php | 3 +- htdocs/api/class/api_access.class.php | 3 +- htdocs/api/class/api_login.class.php | 3 +- htdocs/api/class/api_setup.class.php | 33 +- htdocs/api/index.php | 3 +- htdocs/asset/admin/setup.php | 3 +- htdocs/asset/card.php | 6 +- htdocs/asset/class/asset.class.php | 3 +- htdocs/asset/class/asset_type.class.php | 24 +- htdocs/asset/document.php | 3 +- htdocs/asset/list.php | 3 +- htdocs/asset/type.php | 18 +- htdocs/asterisk/cidlookup.php | 3 +- htdocs/asterisk/wrapper.php | 6 +- htdocs/barcode/codeinit.php | 15 +- htdocs/barcode/printsheet.php | 3 +- htdocs/blockedlog/admin/blockedlog.php | 6 +- htdocs/blockedlog/admin/blockedlog_list.php | 24 +- htdocs/blockedlog/ajax/block-info.php | 3 +- htdocs/blockedlog/class/authority.class.php | 15 +- htdocs/blockedlog/class/blockedlog.class.php | 20 +- htdocs/bom/bom_agenda.php | 6 +- htdocs/bom/bom_card.php | 15 +- htdocs/bom/bom_document.php | 3 +- htdocs/bom/bom_list.php | 15 +- htdocs/bom/class/api_boms.class.php | 3 +- htdocs/bom/class/bom.class.php | 21 +- htdocs/bom/tpl/objectline_create.tpl.php | 3 +- htdocs/bookmarks/admin/bookmark.php | 3 +- htdocs/bookmarks/bookmarks.lib.php | 6 +- htdocs/bookmarks/card.php | 18 +- htdocs/bookmarks/class/bookmark.class.php | 15 +- htdocs/bookmarks/list.php | 12 +- htdocs/cashdesk/admin/cashdesk.php | 9 +- htdocs/cashdesk/affContenu.php | 6 +- htdocs/cashdesk/class/Auth.class.php | 3 +- htdocs/cashdesk/class/Facturation.class.php | 18 +- htdocs/cashdesk/facturation.php | 12 +- htdocs/cashdesk/facturation_dhtml.php | 6 +- htdocs/cashdesk/facturation_verif.php | 15 +- htdocs/cashdesk/index.php | 6 +- htdocs/cashdesk/index_verif.php | 6 +- htdocs/cashdesk/tpl/liste_articles.tpl.php | 3 +- htdocs/cashdesk/tpl/validation1.tpl.php | 3 +- htdocs/cashdesk/validation_verif.php | 18 +- htdocs/comm/action/card.php | 66 +- htdocs/comm/action/class/actioncomm.class.php | 69 +- .../comm/action/class/cactioncomm.class.php | 9 +- htdocs/comm/action/class/ical.class.php | 9 +- htdocs/comm/action/document.php | 6 +- htdocs/comm/action/index.php | 82 +- htdocs/comm/action/list.php | 21 +- htdocs/comm/action/pertype.php | 36 +- htdocs/comm/action/peruser.php | 42 +- htdocs/comm/action/rapport/index.php | 3 +- htdocs/comm/card.php | 54 +- htdocs/comm/contact.php | 3 +- htdocs/comm/index.php | 36 +- htdocs/comm/mailing/advtargetemailing.php | 3 +- htdocs/comm/mailing/card.php | 99 +- htdocs/comm/mailing/cibles.php | 39 +- .../mailing/class/advtargetemailing.class.php | 21 +- .../html.formadvtargetemailing.class.php | 6 +- htdocs/comm/mailing/class/mailing.class.php | 39 +- htdocs/comm/mailing/index.php | 9 +- htdocs/comm/mailing/list.php | 9 +- htdocs/comm/multiprix.php | 3 +- htdocs/comm/propal/card.php | 45 +- .../comm/propal/class/api_proposals.class.php | 6 +- htdocs/comm/propal/class/propal.class.php | 200 +- htdocs/comm/propal/contact.php | 12 +- htdocs/comm/propal/document.php | 3 +- htdocs/comm/propal/index.php | 6 +- htdocs/comm/propal/list.php | 15 +- htdocs/comm/propal/stats/index.php | 9 +- htdocs/comm/prospect/index.php | 3 +- htdocs/comm/prospect/recap-prospect.php | 3 +- htdocs/comm/recap-client.php | 3 +- htdocs/comm/remise.php | 18 +- htdocs/comm/remx.php | 60 +- htdocs/commande/card.php | 63 +- htdocs/commande/class/api_orders.class.php | 3 +- htdocs/commande/class/commande.class.php | 200 +- htdocs/commande/contact.php | 12 +- htdocs/commande/customer.php | 3 +- htdocs/commande/document.php | 6 +- htdocs/commande/index.php | 6 +- htdocs/commande/list.php | 9 +- htdocs/commande/orderstoinvoice.php | 27 +- htdocs/commande/stats/index.php | 9 +- htdocs/core/actions_addupdatedelete.inc.php | 41 +- htdocs/core/actions_builddoc.inc.php | 6 +- htdocs/core/actions_comments.inc.php | 9 +- htdocs/core/actions_extrafields.inc.php | 33 +- htdocs/core/actions_fetchobject.inc.php | 3 +- htdocs/core/actions_linkedfiles.inc.php | 17 +- htdocs/core/actions_massactions.inc.php | 78 +- htdocs/core/actions_sendmails.inc.php | 15 +- htdocs/core/actions_setmoduleoptions.inc.php | 9 +- htdocs/core/ajax/ajaxdirpreview.php | 14 +- htdocs/core/ajax/ajaxdirtree.php | 2 +- htdocs/core/ajax/check_notifications.php | 6 +- htdocs/core/ajax/loadinplace.php | 6 +- htdocs/core/ajax/saveinplace.php | 15 +- htdocs/core/ajax/vatrates.php | 3 +- htdocs/core/ajax/ziptown.php | 5 +- htdocs/core/boxes/box_actions.php | 3 +- htdocs/core/boxes/box_activity.php | 3 +- htdocs/core/boxes/box_bookmarks.php | 3 +- htdocs/core/boxes/box_external_rss.php | 3 +- htdocs/core/boxes/box_factures_imp.php | 3 +- htdocs/core/boxes/box_ficheinter.php | 6 +- .../boxes/box_graph_invoices_permonth.php | 12 +- .../box_graph_invoices_supplier_permonth.php | 12 +- .../core/boxes/box_graph_orders_permonth.php | 12 +- .../box_graph_orders_supplier_permonth.php | 12 +- .../boxes/box_graph_product_distribution.php | 6 +- .../boxes/box_graph_propales_permonth.php | 12 +- htdocs/core/boxes/box_produits.php | 3 +- .../core/boxes/box_produits_alerte_stock.php | 6 +- htdocs/core/boxes/box_project.php | 3 +- htdocs/core/boxes/box_services_contracts.php | 6 +- htdocs/core/boxes/box_services_expired.php | 6 +- htdocs/core/boxes/box_supplier_orders.php | 3 +- ...box_supplier_orders_awaiting_reception.php | 3 +- htdocs/core/boxes/modules_boxes.php | 9 +- htdocs/core/class/CMailFile.class.php | 51 +- htdocs/core/class/CSMSFile.class.php | 15 +- htdocs/core/class/ccountry.class.php | 12 +- htdocs/core/class/comment.class.php | 9 +- .../core/class/commondocgenerator.class.php | 5 +- htdocs/core/class/commoninvoice.class.php | 39 +- htdocs/core/class/commonobject.class.php | 383 +-- htdocs/core/class/commonobjectline.class.php | 3 +- htdocs/core/class/conf.class.php | 3 +- htdocs/core/class/coreobject.class.php | 33 +- htdocs/core/class/cstate.class.php | 9 +- htdocs/core/class/ctypent.class.php | 12 +- htdocs/core/class/cunits.class.php | 24 +- htdocs/core/class/discount.class.php | 51 +- htdocs/core/class/dolgeoip.class.php | 18 +- htdocs/core/class/dolgraph.class.php | 33 +- .../core/class/emailsenderprofile.class.php | 3 +- htdocs/core/class/evalmath.class.php | 6 +- htdocs/core/class/events.class.php | 6 +- htdocs/core/class/extrafields.class.php | 88 +- htdocs/core/class/extralanguages.class.php | 37 +- htdocs/core/class/fileupload.class.php | 9 +- htdocs/core/class/fiscalyear.class.php | 18 +- htdocs/core/class/hookmanager.class.php | 3 +- htdocs/core/class/html.form.class.php | 398 +-- .../core/class/html.formaccounting.class.php | 18 +- htdocs/core/class/html.formactions.class.php | 12 +- htdocs/core/class/html.formadmin.class.php | 12 +- htdocs/core/class/html.formcompany.class.php | 36 +- htdocs/core/class/html.formcontract.class.php | 12 +- htdocs/core/class/html.formfile.class.php | 138 +- .../class/html.formintervention.class.php | 12 +- htdocs/core/class/html.formmail.class.php | 54 +- htdocs/core/class/html.formmargin.class.php | 3 +- htdocs/core/class/html.formother.class.php | 56 +- htdocs/core/class/html.formprojet.class.php | 36 +- htdocs/core/class/html.formpropal.class.php | 9 +- htdocs/core/class/html.formsms.class.php | 30 +- .../class/html.formsocialcontrib.class.php | 9 +- htdocs/core/class/html.formwebsite.class.php | 18 +- htdocs/core/class/infobox.class.php | 20 +- htdocs/core/class/interfaces.class.php | 15 +- htdocs/core/class/ldap.class.php | 92 +- htdocs/core/class/lessc.class.php | 2663 +++++++++-------- htdocs/core/class/link.class.php | 18 +- htdocs/core/class/menubase.class.php | 21 +- htdocs/core/class/notify.class.php | 30 +- htdocs/core/class/openid.class.php | 12 +- htdocs/core/class/rssparser.class.php | 36 +- htdocs/core/class/smtps.class.php | 51 +- htdocs/core/class/stats.class.php | 21 +- htdocs/core/class/translate.class.php | 17 +- htdocs/core/class/utils.class.php | 44 +- htdocs/core/commonfieldsinexport.inc.php | 3 +- htdocs/core/datepicker.php | 18 +- htdocs/core/db/DoliDB.class.php | 17 +- htdocs/core/db/mssql.class.php | 57 +- htdocs/core/db/mysqli.class.php | 27 +- htdocs/core/db/pgsql.class.php | 24 +- htdocs/core/db/sqlite3.class.php | 15 +- htdocs/core/extrafieldsinexport.inc.php | 3 +- .../filemanagerdol/connectors/php/basexml.php | 6 +- .../connectors/php/commands.php | 24 +- .../core/filemanagerdol/connectors/php/io.php | 12 +- .../filemanagerdol/connectors/php/util.php | 6 +- htdocs/core/get_info.php | 5 +- htdocs/core/get_menudiv.php | 2 +- htdocs/core/lib/admin.lib.php | 63 +- htdocs/core/lib/agenda.lib.php | 6 +- htdocs/core/lib/ajax.lib.php | 3 +- htdocs/core/lib/bank.lib.php | 3 +- htdocs/core/lib/barcode.lib.php | 9 +- htdocs/core/lib/company.lib.php | 39 +- htdocs/core/lib/cron.lib.php | 3 +- htdocs/core/lib/date.lib.php | 33 +- htdocs/core/lib/doc.lib.php | 9 +- htdocs/core/lib/doleditor.lib.php | 3 +- htdocs/core/lib/ecm.lib.php | 3 +- htdocs/core/lib/files.lib.php | 101 +- htdocs/core/lib/format_cards.lib.php | 3 +- htdocs/core/lib/functions.lib.php | 247 +- htdocs/core/lib/functions2.lib.php | 68 +- htdocs/core/lib/functionsnumtoword.lib.php | 3 +- htdocs/core/lib/geturl.lib.php | 12 +- htdocs/core/lib/images.lib.php | 12 +- htdocs/core/lib/invoice2.lib.php | 6 +- htdocs/core/lib/json.lib.php | 8 +- htdocs/core/lib/ldap.lib.php | 3 +- htdocs/core/lib/memory.lib.php | 18 +- htdocs/core/lib/modulebuilder.lib.php | 15 +- htdocs/core/lib/parsemd.lib.php | 3 +- htdocs/core/lib/payments.lib.php | 15 +- htdocs/core/lib/pdf.lib.php | 52 +- htdocs/core/lib/price.lib.php | 20 +- htdocs/core/lib/product.lib.php | 3 +- htdocs/core/lib/project.lib.php | 27 +- htdocs/core/lib/security.lib.php | 18 +- htdocs/core/lib/security2.lib.php | 23 +- htdocs/core/lib/sendings.lib.php | 12 +- htdocs/core/lib/signature.lib.php | 6 +- htdocs/core/lib/tax.lib.php | 33 +- htdocs/core/lib/ticket.lib.php | 21 +- htdocs/core/lib/treeview.lib.php | 9 +- htdocs/core/lib/usergroups.lib.php | 105 +- htdocs/core/lib/website.lib.php | 47 +- htdocs/core/lib/xcal.lib.php | 9 +- htdocs/core/login/functions_dolibarr.php | 12 +- htdocs/core/login/functions_ldap.php | 6 +- htdocs/core/login/functions_openid.php | 6 +- htdocs/core/menus/standard/auguria.lib.php | 12 +- htdocs/core/menus/standard/auguria_menu.php | 26 +- htdocs/core/menus/standard/eldy.lib.php | 18 +- htdocs/core/menus/standard/eldy_menu.php | 26 +- htdocs/core/menus/standard/empty.php | 20 +- htdocs/core/modules/DolibarrModules.class.php | 89 +- htdocs/core/modules/action/modules_action.php | 9 +- htdocs/core/modules/action/rapport.pdf.php | 3 +- .../core/modules/bank/doc/pdf_ban.modules.php | 15 +- .../bank/doc/pdf_sepamandate.modules.php | 15 +- .../barcode/mod_barcode_product_standard.php | 18 +- .../bom/doc/doc_generic_bom_odt.modules.php | 20 +- htdocs/core/modules/bom/mod_bom_standard.php | 3 +- .../modules/cheque/mod_chequereceipt_mint.php | 3 +- .../modules/cheque/modules_chequereceipts.php | 9 +- .../doc/doc_generic_order_odt.modules.php | 20 +- .../commande/doc/pdf_einstein.modules.php | 38 +- .../commande/doc/pdf_eratosthene.modules.php | 53 +- .../modules/commande/mod_commande_marbre.php | 3 +- .../doc/doc_generic_contract_odt.modules.php | 20 +- .../contract/doc/pdf_strato.modules.php | 32 +- .../modules/contract/mod_contract_serpis.php | 3 +- .../modules/dons/html_cerfafr.modules.php | 30 +- .../doc/doc_generic_shipment_odt.modules.php | 25 +- .../expedition/doc/pdf_espadon.modules.php | 53 +- .../expedition/doc/pdf_merou.modules.php | 30 +- .../expedition/doc/pdf_rouget.modules.php | 50 +- .../expedition/mod_expedition_safor.php | 3 +- .../doc/pdf_standard.modules.php | 38 +- .../expensereport/mod_expensereport_jade.php | 3 +- .../modules/export/export_csv.modules.php | 6 +- .../export/export_excel2007new.modules.php | 12 +- .../doc/doc_generic_invoice_odt.modules.php | 17 +- .../modules/facture/doc/pdf_crabe.modules.php | 47 +- .../facture/doc/pdf_sponge.modules.php | 59 +- .../core/modules/facture/mod_facture_mars.php | 3 +- .../modules/facture/mod_facture_terre.php | 3 +- .../fichinter/doc/pdf_soleil.modules.php | 29 +- htdocs/core/modules/fichinter/mod_pacific.php | 3 +- .../modules/fichinter/modules_fichinter.php | 9 +- .../modules/holiday/mod_holiday_madonna.php | 3 +- .../modules/import/import_csv.modules.php | 50 +- .../modules/import/import_xlsx.modules.php | 41 +- .../livraison/doc/pdf_typhon.modules.php | 32 +- .../modules/livraison/mod_livraison_jade.php | 3 +- .../mailings/advthirdparties.modules.php | 9 +- .../modules/mailings/contacts1.modules.php | 12 +- .../core/modules/mailings/fraise.modules.php | 9 +- .../modules/mailings/modules_mailings.php | 6 +- .../core/modules/mailings/pomme.modules.php | 3 +- .../modules/mailings/thirdparties.modules.php | 15 +- .../thirdparties_services_expired.modules.php | 6 +- .../modules/mailings/xinputfile.modules.php | 11 +- .../modules/mailings/xinputuser.modules.php | 6 +- .../modules/member/doc/pdf_standard.class.php | 19 +- htdocs/core/modules/member/modules_cards.php | 9 +- htdocs/core/modules/modAgenda.class.php | 3 +- htdocs/core/modules/modBlockedLog.class.php | 3 +- .../mrp/doc/doc_generic_mo_odt.modules.php | 20 +- htdocs/core/modules/mrp/mod_mo_standard.php | 3 +- .../modules/oauth/github_oauthcallback.php | 3 +- .../modules/oauth/google_oauthcallback.php | 3 +- .../oauth/stripelive_oauthcallback.php | 3 +- .../oauth/stripetest_oauthcallback.php | 3 +- .../modules/payment/mod_payment_cicada.php | 3 +- .../modules/printing/printgcp.modules.php | 15 +- .../modules/printing/printipp.modules.php | 6 +- .../doc/pdf_standardlabel.class.php | 10 +- .../printsheet/doc/pdf_tcpdflabel.class.php | 10 +- .../modules/printsheet/modules_labels.php | 9 +- .../doc/doc_generic_product_odt.modules.php | 20 +- .../product/doc/pdf_standard.modules.php | 18 +- .../product/mod_codeproduct_elephant.php | 9 +- .../modules/product/modules_product.class.php | 3 +- .../doc/doc_generic_project_odt.modules.php | 47 +- .../project/doc/pdf_baleine.modules.php | 29 +- .../project/doc/pdf_beluga.modules.php | 26 +- .../project/doc/pdf_timespent.modules.php | 29 +- .../modules/project/mod_project_simple.php | 6 +- .../task/doc/doc_generic_task_odt.modules.php | 29 +- .../modules/project/task/mod_task_simple.php | 6 +- .../doc/doc_generic_proposal_odt.modules.php | 20 +- .../modules/propale/doc/pdf_azur.modules.php | 53 +- .../modules/propale/doc/pdf_cyan.modules.php | 56 +- .../modules/propale/mod_propale_marbre.php | 6 +- .../modules/rapport/pdf_paiement.class.php | 9 +- .../doc/doc_generic_reception_odt.modules.php | 23 +- .../reception/doc/pdf_squille.modules.php | 47 +- .../modules/reception/mod_reception_beryl.php | 3 +- .../societe/doc/doc_generic_odt.modules.php | 17 +- .../societe/mod_codeclient_elephant.php | 9 +- .../modules/societe/mod_codeclient_monkey.php | 24 +- .../societe/mod_codecompta_aquarium.php | 12 +- .../societe/mod_codecompta_digitaria.php | 15 +- .../modules/societe/modules_societe.class.php | 3 +- .../doc/doc_generic_stock_odt.modules.php | 20 +- .../stock/doc/pdf_standard.modules.php | 47 +- .../stock/doc/pdf_stdmovement.modules.php | 53 +- .../doc/pdf_canelle.modules.php | 35 +- .../mod_facture_fournisseur_cactus.php | 3 +- ...doc_generic_supplier_order_odt.modules.php | 23 +- .../supplier_order/doc/pdf_cornas.modules.php | 50 +- .../doc/pdf_muscadet.modules.php | 47 +- .../mod_commande_fournisseur_muguet.php | 3 +- .../doc/pdf_standard.modules.php | 32 +- .../mod_supplier_payment_bronan.php | 3 +- ..._generic_supplier_proposal_odt.modules.php | 23 +- .../doc/pdf_aurore.modules.php | 47 +- .../mod_supplier_proposal_marbre.php | 6 +- .../core/modules/syslog/mod_syslog_file.php | 3 +- .../core/modules/syslog/mod_syslog_syslog.php | 3 +- .../user/doc/doc_generic_user_odt.modules.php | 14 +- .../doc/doc_generic_usergroup_odt.modules.php | 23 +- htdocs/core/photos_resize.php | 17 +- htdocs/core/search.php | 3 +- htdocs/core/search_page.php | 3 +- .../core/tpl/admin_extrafields_edit.tpl.php | 3 +- .../core/tpl/admin_extrafields_view.tpl.php | 3 +- htdocs/core/tpl/bloc_comment.tpl.php | 6 +- htdocs/core/tpl/card_presend.tpl.php | 9 +- htdocs/core/tpl/contacts.tpl.php | 3 +- .../tpl/extrafields_list_print_fields.tpl.php | 3 +- .../tpl/extrafields_list_search_input.tpl.php | 3 +- .../tpl/extrafields_list_search_title.tpl.php | 3 +- htdocs/core/tpl/extrafields_view.tpl.php | 9 +- htdocs/core/tpl/filemanager.tpl.php | 5 +- htdocs/core/tpl/list_print_total.tpl.php | 3 +- htdocs/core/tpl/login.tpl.php | 3 +- htdocs/core/tpl/massactions_pre.tpl.php | 6 +- htdocs/core/tpl/object_discounts.tpl.php | 3 +- htdocs/core/tpl/objectline_create.tpl.php | 21 +- htdocs/core/tpl/objectline_edit.tpl.php | 6 +- htdocs/core/tpl/objectline_view.tpl.php | 12 +- htdocs/core/tpl/resource_view.tpl.php | 3 +- .../interface_20_all_Logevents.class.php | 3 +- ...terface_50_modAgenda_ActionsAuto.class.php | 14 +- ..._modBlockedlog_ActionsBlockedLog.class.php | 3 +- ...odMailmanspip_Mailmanspipsynchro.class.php | 18 +- ...terface_50_modTicket_TicketEmail.class.php | 3 +- .../interface_80_modStripe_Stripe.class.php | 3 +- htdocs/core/website.inc.php | 3 +- htdocs/stripe/admin/stripe.php | 18 +- htdocs/stripe/charge.php | 12 +- htdocs/stripe/class/actions_stripe.class.php | 6 +- htdocs/stripe/class/stripe.class.php | 36 +- htdocs/stripe/config.php | 3 +- htdocs/stripe/payout.php | 6 +- htdocs/stripe/transaction.php | 6 +- htdocs/supplier_proposal/card.php | 33 +- .../class/supplier_proposal.class.php | 156 +- htdocs/supplier_proposal/contact.php | 12 +- htdocs/supplier_proposal/document.php | 3 +- htdocs/supplier_proposal/index.php | 6 +- htdocs/supplier_proposal/list.php | 6 +- htdocs/support/inc.php | 6 +- htdocs/takepos/admin/bar.php | 3 +- htdocs/takepos/admin/orderprinters.php | 6 +- htdocs/takepos/admin/receipt.php | 18 +- htdocs/takepos/admin/setup.php | 6 +- htdocs/takepos/admin/terminal.php | 9 +- htdocs/takepos/ajax/ajax.php | 3 +- htdocs/takepos/genimg/index.php | 6 +- htdocs/takepos/index.php | 12 +- htdocs/takepos/invoice.php | 36 +- htdocs/takepos/pay.php | 6 +- htdocs/takepos/phone.php | 3 +- htdocs/takepos/reduction.php | 6 +- htdocs/theme/eldy/global.inc.php | 6 +- htdocs/theme/eldy/theme_vars.inc.php | 3 +- htdocs/theme/md/style.css.php | 6 +- htdocs/theme/md/theme_vars.inc.php | 3 +- htdocs/ticket/agenda.php | 3 +- htdocs/ticket/card.php | 3 +- htdocs/ticket/class/actions_ticket.class.php | 3 +- htdocs/ticket/class/ticket.class.php | 12 +- htdocs/ticket/document.php | 3 +- htdocs/ticket/list.php | 3 +- htdocs/ticket/messaging.php | 3 +- htdocs/ticket/stats/index.php | 9 +- htdocs/user/bank.php | 18 +- htdocs/user/card.php | 180 +- htdocs/user/class/api_users.class.php | 6 +- htdocs/user/class/user.class.php | 179 +- htdocs/user/class/userbankaccount.class.php | 12 +- htdocs/user/class/usergroup.class.php | 39 +- htdocs/user/clicktodial.php | 8 +- htdocs/user/document.php | 3 +- htdocs/user/group/card.php | 36 +- htdocs/user/group/ldap.php | 12 +- htdocs/user/group/list.php | 6 +- htdocs/user/group/perms.php | 9 +- htdocs/user/hierarchy.php | 9 +- htdocs/user/home.php | 15 +- htdocs/user/ldap.php | 12 +- htdocs/user/list.php | 6 +- htdocs/user/note.php | 3 +- htdocs/user/notify/card.php | 27 +- htdocs/user/param_ihm.php | 9 +- htdocs/user/passwordforgotten.php | 24 +- htdocs/user/perms.php | 12 +- htdocs/variants/combinations.php | 12 +- htdocs/variants/create.php | 3 +- htdocs/webservices/admin/index.php | 3 +- htdocs/webservices/server_actioncomm.php | 15 +- htdocs/webservices/server_category.php | 6 +- htdocs/webservices/server_contact.php | 12 +- htdocs/webservices/server_invoice.php | 21 +- htdocs/webservices/server_order.php | 24 +- htdocs/webservices/server_other.php | 3 +- htdocs/webservices/server_payment.php | 3 +- .../webservices/server_productorservice.php | 42 +- htdocs/webservices/server_project.php | 15 +- .../webservices/server_supplier_invoice.php | 9 +- htdocs/webservices/server_thirdparty.php | 24 +- htdocs/webservices/server_user.php | 42 +- 565 files changed, 5190 insertions(+), 8632 deletions(-) diff --git a/dev/tools/dolibarr-postgres2mysql.php b/dev/tools/dolibarr-postgres2mysql.php index f2794455ca3..c17a73dfe12 100644 --- a/dev/tools/dolibarr-postgres2mysql.php +++ b/dev/tools/dolibarr-postgres2mysql.php @@ -76,14 +76,12 @@ function getfieldname($l) if (preg_match("/`(.*)`/", $l, $regs)) { if ($regs[1]) return $regs[1]; - else - return null; + else return null; } // if its not in quotes, then it should (we hope!) be the first "word" on the line, up to the first space. elseif (preg_match("/([^\ ]*)/", trim($l), $regs)) { if ($regs[1]) return $regs[1]; - else - return null; + else return null; } } @@ -102,8 +100,7 @@ function formatsize($s) return sprintf("%.1f", round($s / 1024, 1)) . "K"; elseif ($s < pow(2, 30)) return sprintf("%.1f", round($s / 1024 / 1024, 1)) . "M"; - else - return sprintf("%.1f", round($s / 1024 / 1024 / 1024, 1)) . "G"; + else return sprintf("%.1f", round($s / 1024 / 1024 / 1024, 1)) . "G"; } /** @@ -146,8 +143,7 @@ function pg2mysql_large($infilename, $outfilename) if ($c % 2 != 0) { if ($inquotes) $inquotes = false; - else - $inquotes = true; + else $inquotes = true; } if ($linenum % 10000 == 0) { @@ -329,8 +325,7 @@ function pg2mysql(&$input, &$arrayofprimaryalreadyintabledef, $header = true) $num = $regs[1]; if ($num <= 255) $line = preg_replace("/ character varying\([0-9]*\)/", " varchar($num)", $line); - else - $line = preg_replace("/ character varying\([0-9]*\)/", " text", $line); + else $line = preg_replace("/ character varying\([0-9]*\)/", " text", $line); } // character varying with no size, we will default to varchar(255) if (preg_match("/ character varying/", $line)) { @@ -352,8 +347,7 @@ function pg2mysql(&$input, &$arrayofprimaryalreadyintabledef, $header = true) $num = $regs[1]; if ($num <= 255) $line = preg_replace("/ character\([0-9]*\)/", " varchar($num)", $line); - else - $line = preg_replace("/ character\([0-9]*\)/", " text", $line); + else $line = preg_replace("/ character\([0-9]*\)/", " text", $line); } // timestamps $line = str_replace(" timestamp with time zone", " datetime", $line); @@ -465,8 +459,7 @@ function pg2mysql(&$input, &$arrayofprimaryalreadyintabledef, $header = true) if ($c % 2 != 0) { if ($inquotes) $inquotes = false; - else - $inquotes = true; + else $inquotes = true; // echo "inquotes=$inquotes\n"; } } while (substr($lines[$linenumber], - 3, - 1) != ");" || $inquotes); diff --git a/dev/translation/autotranslator.class.php b/dev/translation/autotranslator.class.php index f9657482c86..b51515a42cb 100644 --- a/dev/translation/autotranslator.class.php +++ b/dev/translation/autotranslator.class.php @@ -77,7 +77,7 @@ class autoTranslator $files = $this->getTranslationFilesArray($this->_refLang); $counter = 1; - foreach($files as $file) + foreach ($files as $file) { if ($this->_limittofile && $this->_limittofile != $file) continue; $counter++; @@ -94,7 +94,7 @@ class autoTranslator // If we must process all languages $arraytmp=dol_dir_list($this->_langDir, 'directories', 0); - foreach($arraytmp as $dirtmp) + foreach ($arraytmp as $dirtmp) { if ($dirtmp['name'] === $this->_refLang) continue; // We discard source language $tmppart=explode('_', $dirtmp['name']); @@ -112,7 +112,7 @@ class autoTranslator } // Process translation of source file for each target languages - foreach($targetlangs as $my_destlang) + foreach ($targetlangs as $my_destlang) { $this->_translatedFiles = array(); @@ -124,15 +124,14 @@ class autoTranslator echo "File not found: " . $destPath . ". We generate it.
\n"; $this->createTranslationFile($destPath, $my_destlang); } - else - { + else { echo "Updating file: " . $destPath . "
\n"; } // Translate lines $fileContentDest = file($destPath, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES); $newlines=0; - foreach($fileContent as $line){ + foreach ($fileContent as $line){ $key = $this->getLineKey($line); $value = $this->getLineValue($line); if ($key && $value) @@ -167,7 +166,7 @@ class autoTranslator fwrite($fp, "\n"); fwrite($fp, "// START - Lines generated via autotranslator.php tool (".$this->_time.").\n"); fwrite($fp, "// Reference language: ".$this->_refLang." -> ".$my_destlang."\n"); - foreach($this->_translatedFiles[$file] as $line) { + foreach ($this->_translatedFiles[$file] as $line) { fwrite($fp, $line . "\n"); } fwrite($fp, "// STOP - Lines generated via autotranslator.php tool (".$this->_time_end.").\n"); @@ -209,7 +208,7 @@ class autoTranslator { //print "key =".$key."\n"; - foreach($content as $line) { + foreach ($content as $line) { $destKey = $this->getLineKey($line); $destValue = $this->getLineValue($line); // If translated return @@ -273,8 +272,8 @@ class autoTranslator private function getTranslationFilesArray($lang) { $dir = new DirectoryIterator($this->_langDir.$lang); - while($dir->valid()) { - if(!$dir->isDot() && $dir->isFile() && ! preg_match('/^\./', $dir->getFilename())) { + while ($dir->valid()) { + if (!$dir->isDot() && $dir->isFile() && ! preg_match('/^\./', $dir->getFilename())) { $files[] = $dir->getFilename(); } $dir->next(); diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php index f568ba2b04b..0268fc94ed8 100755 --- a/dev/translation/sanity_check_en_langfiles.php +++ b/dev/translation/sanity_check_en_langfiles.php @@ -360,16 +360,14 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a $unused[$value] = $line; echo $line; // $trad contains the \n } - else - { + else { unset($output); //print 'X'.$output.'Y'; } } if (empty($unused)) print "No string not used found.\n"; - else - { + else { $filetosave='/tmp/'.($argv[2]?$argv[2]:"").'notused.lang'; print "Strings in en_US that are never used are saved into file ".$filetosave.":\n"; file_put_contents($filetosave, implode("", $unused)); diff --git a/dev/translation/strip_language_file.php b/dev/translation/strip_language_file.php index ce28ca5de63..5a94192b2bd 100755 --- a/dev/translation/strip_language_file.php +++ b/dev/translation/strip_language_file.php @@ -80,8 +80,8 @@ $aEnglish = array(); if ($filesToProcess == 'all') { $dir = new DirectoryIterator('htdocs/langs/'.$lPrimary); - while($dir->valid()) { - if(!$dir->isDot() && $dir->isFile() && ! preg_match('/^\./', $dir->getFilename())) { + while ($dir->valid()) { + if (!$dir->isDot() && $dir->isFile() && ! preg_match('/^\./', $dir->getFilename())) { $files[] = $dir->getFilename(); } $dir->next(); @@ -94,7 +94,7 @@ else $filesToProcess=explode(',', $filesToProcess); // Loop on each file -foreach($filesToProcess as $fileToProcess) +foreach ($filesToProcess as $fileToProcess) { $lPrimaryFile = 'htdocs/langs/'.$lPrimary.'/'.$fileToProcess; $lSecondaryFile = 'htdocs/langs/'.$lSecondary.'/'.$fileToProcess; @@ -285,8 +285,7 @@ foreach($filesToProcess as $fileToProcess) print "Key $key is redundant in file $lPrimaryFile (line: $cnt) - Already found into ".$fileFirstFound[$key]." (line: ".$lineFirstFound[$key].").\n"; continue; } - else - { + else { $fileFirstFound[$key] = $fileToProcess; $lineFirstFound[$key] = $cnt; } diff --git a/htdocs/admin/agenda.php b/htdocs/admin/agenda.php index b6231a45a10..52a1adc4fd2 100644 --- a/htdocs/admin/agenda.php +++ b/htdocs/admin/agenda.php @@ -62,8 +62,7 @@ if ($resql) } $db->free($resql); } -else -{ +else { dol_print_error($db); } @@ -108,8 +107,7 @@ if ($action == "save" && empty($cancel)) setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); $db->commit(); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); $db->rollback(); } diff --git a/htdocs/admin/agenda_extsites.php b/htdocs/admin/agenda_extsites.php index 77113ff1e13..dd5d04732ff 100644 --- a/htdocs/admin/agenda_extsites.php +++ b/htdocs/admin/agenda_extsites.php @@ -108,8 +108,7 @@ if ($actionsave) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); if (empty($errorsaved)) setEventMessages($langs->trans("Error"), null, 'errors'); } @@ -163,14 +162,12 @@ if ($conf->use_javascript_ajax) { print ajax_constantonoff('AGENDA_DISABLE_EXT', array('enabled'=>array(0=>'.hideifnotset')), null, 1); } -else -{ +else { if (empty($conf->global->AGENDA_DISABLE_EXT)) { print ''.img_picto($langs->trans("Enabled"), 'on').''; } - else - { + else { print ''.img_picto($langs->trans("Disabled"), 'off').''; } } diff --git a/htdocs/admin/agenda_other.php b/htdocs/admin/agenda_other.php index c5b196146d5..a9e5bccd71b 100644 --- a/htdocs/admin/agenda_other.php +++ b/htdocs/admin/agenda_other.php @@ -60,8 +60,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) Header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -74,8 +73,7 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) Header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -121,14 +119,12 @@ elseif ($action == 'specimen') // For orders header("Location: ".DOL_URL_ROOT."/document.php?modulepart=action&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -214,8 +210,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -263,8 +258,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) $module = new $classname($db, $specimenthirdparty); if (method_exists($module, 'info')) print $module->info($langs); - else - print $module->description; + else print $module->description; print "\n"; // Active @@ -277,14 +271,12 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) print img_picto($langs->trans("Enabled"), 'switch_on'); print ''; } - else - { + else { print img_picto($langs->trans("Enabled"), 'switch_on'); } print ""; } - else - { + else { print '
"; @@ -296,8 +288,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'&type=action"" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -347,8 +338,7 @@ if (empty($conf->global->AGENDA_USE_EVENT_TYPE)) { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } -else -{ +else { print ''.img_picto($langs->trans("Enabled"), 'switch_on').''; } print ''."\n"; diff --git a/htdocs/admin/agenda_reminder.php b/htdocs/admin/agenda_reminder.php index 3d51bd3158c..d9b7ead6f2e 100644 --- a/htdocs/admin/agenda_reminder.php +++ b/htdocs/admin/agenda_reminder.php @@ -55,8 +55,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) Header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -69,8 +68,7 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) Header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -114,14 +112,12 @@ elseif ($action == 'specimen') // For orders header("Location: ".DOL_URL_ROOT."/document.php?modulepart=action&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } diff --git a/htdocs/admin/agenda_xcal.php b/htdocs/admin/agenda_xcal.php index 7df74ba6a9d..b6d0472c3af 100644 --- a/htdocs/admin/agenda_xcal.php +++ b/htdocs/admin/agenda_xcal.php @@ -55,8 +55,7 @@ if ($actionsave) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("SaveFailed"), null, 'errors'); } diff --git a/htdocs/admin/bank.php b/htdocs/admin/bank.php index b048dea9565..662dc517436 100644 --- a/htdocs/admin/bank.php +++ b/htdocs/admin/bank.php @@ -128,8 +128,7 @@ if ($actionsave) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); if (empty($errorsaved)) setEventMessages($langs->trans("Error"), null, 'errors'); } @@ -359,8 +358,7 @@ foreach ($dirmodels as $reldir) { print "'; // Active @@ -448,8 +446,7 @@ if ($conf->global->BANK_COLORIZE_MOVEMENT) { print ''; print ''; } -else -{ +else { print '"; @@ -509,8 +506,7 @@ if ($conf->global->BANK_REPORT_LAST_NUM_RELEVE) { print ''; print ''; } -else -{ +else { print '"; diff --git a/htdocs/admin/barcode.php b/htdocs/admin/barcode.php index e577942ab21..90a2525de05 100644 --- a/htdocs/admin/barcode.php +++ b/htdocs/admin/barcode.php @@ -81,8 +81,7 @@ elseif ($action == 'update') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -265,19 +264,16 @@ if ($resql) //print $url; print ''; } - else - { + else { print $langs->trans("FormatNotSupportedByGenerator"); } } - else - { + else { print 'ErrorClassNotFoundInModule '.$classname.' '.$obj->coder; } } } - else - { + else { print $langs->trans("ChooseABarCode"); } print ''; @@ -412,8 +408,7 @@ if ($conf->product->enabled) print img_picto($langs->trans("Activated"), 'switch_on'); print ''; } - else - { + else { print ''; diff --git a/htdocs/admin/bom.php b/htdocs/admin/bom.php index 6d37def3187..26f3fe75858 100644 --- a/htdocs/admin/bom.php +++ b/htdocs/admin/bom.php @@ -58,8 +58,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -96,14 +95,12 @@ elseif ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=bom&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, null, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -161,8 +158,7 @@ elseif ($action == 'set_BOM_DRAFT_WATERMARK') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -179,8 +175,7 @@ elseif ($action == 'set_BOM_FREE_TEXT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -262,8 +257,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -328,8 +322,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -399,8 +392,7 @@ foreach ($dirmodels as $reldir) print ''; print ''; } - else - { + else { print '"; @@ -412,8 +404,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -442,8 +433,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'bill').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -489,8 +479,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/boxes.php b/htdocs/admin/boxes.php index c6ff9e94749..46f91e8b366 100644 --- a/htdocs/admin/boxes.php +++ b/htdocs/admin/boxes.php @@ -84,8 +84,7 @@ if ($action == 'add') { $i++; } } - else - { + else { setEventMessages($db->lasterror(), null, 'errors'); $error++; } @@ -135,8 +134,7 @@ if ($action == 'add') { $db->commit(); $action = ''; } - else - { + else { $db->rollback(); } } @@ -205,8 +203,7 @@ if ($action == 'switch') { $db->commit(); } - else - { + else { $db->rollback(); } } @@ -346,8 +343,7 @@ foreach ($boxtoadd as $box) { $logo = $box->boximg; } - else - { + else { $logo = preg_replace("/^object_/i", "", $box->boximg); } @@ -411,8 +407,7 @@ foreach ($boxactivated as $key => $box) { $logo = $box->boximg; } - else - { + else { $logo = preg_replace("/^object_/i", "", $box->boximg); } diff --git a/htdocs/admin/chequereceipts.php b/htdocs/admin/chequereceipts.php index 8b5e7c433bf..397f289eaee 100644 --- a/htdocs/admin/chequereceipts.php +++ b/htdocs/admin/chequereceipts.php @@ -61,8 +61,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -84,8 +83,7 @@ if ($action == 'set_BANK_CHEQUERECEIPT_FREE_TEXT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -182,8 +180,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print ''; @@ -260,8 +257,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/clicktodial.php b/htdocs/admin/clicktodial.php index 36205697e89..56f4f076e54 100644 --- a/htdocs/admin/clicktodial.php +++ b/htdocs/admin/clicktodial.php @@ -47,8 +47,7 @@ if ($action == 'setvalue' && $user->admin) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -134,8 +133,7 @@ if (!empty($conf->global->CLICKTODIAL_URL)) { print $langs->trans("LinkToTest", $user->login).': '.dol_print_phone($phonefortest, '', 0, 0, 'AC_TEL'); } - else - { + else { $langs->load("errors"); print '
'.$langs->trans("WarningClickToDialUserSetupNotComplete").'
'; } diff --git a/htdocs/admin/commande.php b/htdocs/admin/commande.php index 76f04d94c15..f1f22203fa2 100644 --- a/htdocs/admin/commande.php +++ b/htdocs/admin/commande.php @@ -67,8 +67,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -105,14 +104,12 @@ elseif ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=commande&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, null, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -170,8 +167,7 @@ elseif ($action == 'set_COMMANDE_DRAFT_WATERMARK') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -188,8 +184,7 @@ elseif ($action == 'set_ORDER_FREE_TEXT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -218,8 +213,7 @@ elseif ($action == 'setribchq') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -235,8 +229,7 @@ elseif ($action == 'set_BANK_ASK_PAYMENT_BANK_DURING_ORDER') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -252,8 +245,7 @@ elseif ($action == 'set_WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -335,8 +327,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -401,8 +392,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -472,8 +462,7 @@ foreach ($dirmodels as $reldir) print ''; print ''; } - else - { + else { print '"; @@ -485,8 +474,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -520,8 +508,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'bill').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -595,14 +582,12 @@ if (empty($conf->facture->enabled)) } print ""; } - else - { + else { print "".$langs->trans("NoActiveBankAccountDefined").""; } } } - else - { + else { print ''.$langs->trans("BankModuleNotActive").''; } } @@ -682,8 +667,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index f33a3ea6f93..b5ae98378c9 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -85,8 +85,7 @@ if (($action == 'update' && !GETPOST("cancel", 'alpha')) $s = $mysoc->state_id.':'.$mysoc->state_code.':'.$mysoc->state_label; dolibarr_set_const($db, "MAIN_INFO_SOCIETE_STATE", $s, 'chaine', 0, '', $conf->entity); } - else - { + else { dolibarr_del_const($db, "MAIN_INFO_SOCIETE_STATE", $conf->entity); } @@ -165,14 +164,12 @@ if (($action == 'update' && !GETPOST("cancel", 'alpha')) $tmparray = explode(':', $result); setEventMessages($langs->trans('ErrorFileIsInfectedWithAVirus', $tmparray[1]), null, 'errors'); } - else - { + else { $error++; setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors'); } } - else - { + else { $error++; $langs->load("errors"); setEventMessages($langs->trans("ErrorBadImageFormat"), null, 'errors'); @@ -229,8 +226,7 @@ if (($action == 'update' && !GETPOST("cancel", 'alpha')) { dolibarr_set_const($db, "MAIN_INFO_VALUE_LOCALTAX1", 0, 'chaine', 0, '', $conf->entity); } - else - { + else { dolibarr_set_const($db, "MAIN_INFO_VALUE_LOCALTAX1", GETPOST('lt1', 'aZ09'), 'chaine', 0, '', $conf->entity); } dolibarr_set_const($db, "MAIN_INFO_LOCALTAX_CALC1", GETPOST("clt1", 'aZ09'), 'chaine', 0, '', $conf->entity); @@ -241,8 +237,7 @@ if (($action == 'update' && !GETPOST("cancel", 'alpha')) { dolibarr_set_const($db, "MAIN_INFO_VALUE_LOCALTAX2", 0, 'chaine', 0, '', $conf->entity); } - else - { + else { dolibarr_set_const($db, "MAIN_INFO_VALUE_LOCALTAX2", GETPOST('lt2', 'aZ09'), 'chaine', 0, '', $conf->entity); } dolibarr_set_const($db, "MAIN_INFO_LOCALTAX_CALC2", GETPOST("clt2", 'aZ09'), 'chaine', 0, '', $conf->entity); @@ -252,8 +247,7 @@ if (($action == 'update' && !GETPOST("cancel", 'alpha')) { $db->commit(); } - else - { + else { $db->rollback(); } @@ -302,16 +296,14 @@ if ($action == 'addthumb' || $action == 'addthumbsquarred') // Regenerate thumb header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { $error++; $langs->load("errors"); setEventMessages($langs->trans("ErrorBadImageFormat"), null, 'errors'); dol_syslog($langs->transnoentities("ErrorBadImageFormat"), LOG_INFO); } } - else - { + else { $error++; $langs->load("errors"); setEventMessages($langs->trans("ErrorFileDoesNotExists", $_GET["file"]), null, 'errors'); @@ -583,8 +575,7 @@ if ($langs->transcountry("ProfId1", $mysoc->country_code) != '-') { print ''; } - else - { + else { print $countrynotdefined; } print ''; @@ -598,8 +589,7 @@ if ($langs->transcountry("ProfId2", $mysoc->country_code) != '-') { print ''; } - else - { + else { print $countrynotdefined; } print ''; @@ -613,8 +603,7 @@ if ($langs->transcountry("ProfId3", $mysoc->country_code) != '-') { print ''; } - else - { + else { print $countrynotdefined; } print ''; @@ -628,8 +617,7 @@ if ($langs->transcountry("ProfId4", $mysoc->country_code) != '-') { print ''; } - else - { + else { print $countrynotdefined; } print ''; @@ -643,8 +631,7 @@ if ($langs->transcountry("ProfId5", $mysoc->country_code) != '-') { print ''; } - else - { + else { print $countrynotdefined; } print ''; @@ -658,8 +645,7 @@ if ($langs->transcountry("ProfId6", $mysoc->country_code) != '-') { print ''; } - else - { + else { print $countrynotdefined; } print ''; diff --git a/htdocs/admin/compta.php b/htdocs/admin/compta.php index 3ccc2a213ac..7c1c64369ad 100644 --- a/htdocs/admin/compta.php +++ b/htdocs/admin/compta.php @@ -102,8 +102,7 @@ if ($action == 'update') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } diff --git a/htdocs/admin/confexped.php b/htdocs/admin/confexped.php index fd93b0fa83d..3f5cc1cd920 100644 --- a/htdocs/admin/confexped.php +++ b/htdocs/admin/confexped.php @@ -136,8 +136,7 @@ if (empty($conf->global->MAIN_SUBMODULE_LIVRAISON)) { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } -else -{ +else { print ''.img_picto($langs->trans("Enabled"), 'switch_on').''; } diff --git a/htdocs/admin/const.php b/htdocs/admin/const.php index bc22a2020fb..9da7fb10bbf 100644 --- a/htdocs/admin/const.php +++ b/htdocs/admin/const.php @@ -86,8 +86,7 @@ if ($action == 'add' || (GETPOST('add') && $action != 'update')) $constvalue = ""; $constnote = ""; } - else - { + else { dol_print_error($db); } } @@ -105,8 +104,7 @@ if (!empty($consts) && $action == 'update') { $nbmodified++; } - else - { + else { dol_print_error($db); } } @@ -127,8 +125,7 @@ if (!empty($consts) && $action == 'delete') { $nbdeleted++; } - else - { + else { dol_print_error($db); } } @@ -144,8 +141,7 @@ if ($action == 'delete') { setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs'); } - else - { + else { dol_print_error($db); } } @@ -231,8 +227,7 @@ if (!empty($conf->multicompany->enabled) && !$user->entity) print ''; print ''; print ''; } - else - { + else { print '"; @@ -401,8 +394,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -434,8 +426,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'contract').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -483,8 +474,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/dav.php b/htdocs/admin/dav.php index bb7e82901f5..b7cb424d2cb 100644 --- a/htdocs/admin/dav.php +++ b/htdocs/admin/dav.php @@ -101,8 +101,7 @@ if ($action == 'edit') { print $form->selectyesno($key, $conf->global->$key, 1); } - else - { + else { print ''; } print ''; @@ -117,8 +116,7 @@ if ($action == 'edit') print ''; print '
'; } -else -{ +else { print '
'; - if ($conf->global->MAIN_SHOW_LOGO && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) && !empty($conf->global->MAIN_INFO_SOCIETE_LOGO)) + if ($conf->global->MAIN_SHOW_LOGO && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) && !empty($conf->global->MAIN_INFO_SOCIETE_LOGO)) { print ''; + } print '
'.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_NOM).'
'.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_ADDRESS).'
'.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_ZIP).' '.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_TOWN).'
'."\n"; print 'scandir.'&label='.urlencode($module->name).'&type=action">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "
\n"; if (method_exists($module, 'info')) print $module->info($langs); - else - print $module->description; + else print $module->description; print ''."\n"; print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'."\n"; print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''."\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'."\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "
'; } -else -{ +else { print ''; print ''; } @@ -298,8 +293,7 @@ if ($result) print ''; } - else - { + else { print ''; print ''; } @@ -308,8 +302,7 @@ if ($result) { print ''; } - else - { + else { print ''.img_delete().''; } diff --git a/htdocs/admin/contract.php b/htdocs/admin/contract.php index ae0c9c89b38..f3c50287107 100644 --- a/htdocs/admin/contract.php +++ b/htdocs/admin/contract.php @@ -63,8 +63,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -101,14 +100,12 @@ elseif ($action == 'specimen') // For contract header("Location: ".DOL_URL_ROOT."/document.php?modulepart=contract&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($obj->error, $obj->errors, 'errors'); dol_syslog($obj->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -169,8 +166,7 @@ elseif ($action == 'set_other') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -252,8 +248,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -317,8 +312,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -388,8 +382,7 @@ foreach ($dirmodels as $reldir) print ''; print ''."\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "
'; print ''; @@ -141,8 +139,7 @@ else { print yn($conf->global->$key); } - else - { + else { print $conf->global->$key; } print ''; diff --git a/htdocs/admin/debugbar.php b/htdocs/admin/debugbar.php index 926080cb9b5..dad99b2ab39 100644 --- a/htdocs/admin/debugbar.php +++ b/htdocs/admin/debugbar.php @@ -59,8 +59,7 @@ if ($action == 'set') $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($error, null, 'errors'); } diff --git a/htdocs/admin/defaultvalues.php b/htdocs/admin/defaultvalues.php index 094c4a8dd7c..2622d5ca514 100644 --- a/htdocs/admin/defaultvalues.php +++ b/htdocs/admin/defaultvalues.php @@ -151,8 +151,7 @@ if (($action == 'add' || (GETPOST('add') && $action != 'update')) || GETPOST('ac $defaultkey = ''; $defaultvalue = ''; } - else - { + else { $db->rollback(); setEventMessages($db->lasterror(), null, 'errors'); $action = ''; @@ -170,8 +169,7 @@ if ($action == 'delete') { setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs'); } - else - { + else { dol_print_error($db); } } @@ -198,8 +196,7 @@ if (empty($conf->global->MAIN_ENABLE_DEFAULT_VALUES)) $enabledisablehtml .= img_picto($langs->trans("Disabled"), 'switch_off'); $enabledisablehtml .= ''; } -else -{ +else { // Button on, click to disable $enabledisablehtml .= ''; $enabledisablehtml .= img_picto($langs->trans("Activated"), 'switch_on'); @@ -261,8 +258,7 @@ if ($mode != 'sortorder') { $textkey = $form->textwithpicto($langs->trans("Field"), $texthelp); } -else -{ +else { $texthelp = 'field or alias.field'; $textkey = $form->textwithpicto($langs->trans("Field"), $texthelp); } @@ -281,8 +277,7 @@ if ($mode != 'focus' && $mode != 'mandatory') } $textvalue = $form->textwithpicto($langs->trans("Value"), $texthelp, 1, 'help', '', 0, 2, 'subsitutiontooltip'); } - else - { + else { $texthelp = 'ASC or DESC'; $textvalue = $form->textwithpicto($langs->trans("SortOrder"), $texthelp); } @@ -322,8 +317,7 @@ if (!empty($conf->multicompany->enabled) && !$user->entity) print ''; // We see environment, but to change it we must switch on other entity print ''; } -else -{ +else { print ''; @@ -394,8 +388,7 @@ if ($result) print '   '; print ''.img_delete().''; } - else - { + else { print ''; print ''; print '
'; @@ -409,8 +402,7 @@ if ($result) $i++; } } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/admin/delais.php b/htdocs/admin/delais.php index 3ee262b464a..26f2f87e2d5 100644 --- a/htdocs/admin/delais.php +++ b/htdocs/admin/delais.php @@ -250,8 +250,7 @@ if ($action == 'edit') print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'; print ''; print '
'; } -else -{ +else { /* * Show parameters */ diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index cce441c4052..7ed84b59629 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -698,8 +698,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) { $_POST["country"] = ''; } - else - { + else { $ok = 0; setEventMessages($langs->transnoentities("ErrorFieldRequired", $langs->transnoentities("Country")), null, 'errors'); } @@ -792,8 +791,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) setEventMessages($langs->transnoentities("RecordSaved"), null, 'mesgs'); $_POST = array('id'=>$id); // Clean $_POST array, we keep only } - else - { + else { if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { setEventMessages($langs->transnoentities("ErrorRecordAlreadyExists"), null, 'errors'); } @@ -883,8 +881,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes') // delete { setEventMessages($langs->transnoentities("ErrorRecordIsUsedByChild"), null, 'errors'); } - else - { + else { dol_print_error($db); } } @@ -1302,8 +1299,7 @@ if ($id) print ''; $filterfound++; } - else - { + else { print ''; print ''; } @@ -1439,8 +1435,7 @@ if ($id) print ''; print ''; } - else - { + else { $tmpaction = 'view'; $parameters = array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]); $reshook = $hookmanager->executeHooks('viewDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks @@ -1479,8 +1474,7 @@ if ($id) { $valuetoshow = '-'; } - else - { + else { $key = $langs->trans("Country".strtoupper($obj->country_code)); $valuetoshow = ($key != "Country".strtoupper($obj->country_code) ? $obj->country_code." - ".$key : $obj->country); } @@ -1605,15 +1599,13 @@ if ($id) elseif ($fieldlist[$field] == 'localtax1_type') { if ($obj->localtax1 != 0) $valuetoshow = $localtax_typeList[$valuetoshow]; - else - $valuetoshow = ''; + else $valuetoshow = ''; $class = "center"; } elseif ($fieldlist[$field] == 'localtax2_type') { if ($obj->localtax2 != 0) $valuetoshow = $localtax_typeList[$valuetoshow]; - else - $valuetoshow = ''; + else $valuetoshow = ''; $class = "center"; } elseif ($fieldlist[$field] == 'taux') { @@ -1709,8 +1701,7 @@ if ($id) // Active print ''; if ($canbedisabled) print ''.$actl[$obj->active].''; - else - { + else { if (in_array($obj->code, array('AC_OTH', 'AC_OTH_AUTO'))) print $langs->trans("AlwaysActive"); elseif (isset($obj->type) && in_array($obj->type, array('systemauto')) && empty($obj->active)) print $langs->trans("Deprecated"); elseif (isset($obj->type) && in_array($obj->type, array('system')) && !empty($obj->active) && $obj->code != 'AC_OTH') print $langs->trans("UsedOnlyWithTypeOption"); @@ -1747,8 +1738,7 @@ if ($id) print ''; } -else -{ +else { /* * Show list of dictionary to show */ @@ -1782,8 +1772,7 @@ else { print ''.$langs->trans($tablib[$i]).''; } - else - { + else { print $langs->trans($tablib[$i]); } print ''; @@ -1796,8 +1785,7 @@ else print ''.$tabname[$i].''; $lastlineisempty = false; } - else - { + else { if (!$lastlineisempty) { $showemptyline = 1; @@ -2003,8 +1991,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') $accountancy_account = (!empty($obj->$fieldname) ? $obj->$fieldname : 0); print $formaccounting->select_account($accountancy_account, '.'.$fieldlist[$field], 1, '', 1, 1, 'maxwidth200 maxwidthonsmartphone'); } - else - { + else { $fieldname = $fieldlist[$field]; print ''; } @@ -2028,8 +2015,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') print $form->selectExpenseRanges($obj->fk_range); print ''; } - else - { + else { $fieldValue = isset($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]}:''; if ($fieldlist[$field] == 'sortorder') diff --git a/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php b/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php index 3c735707c4a..6eaf1cf375a 100644 --- a/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php +++ b/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php @@ -136,8 +136,9 @@ class PrestaShopWebservice { if (isset($curl_params[$defkey])) $curl_options[$defkey] = $curl_params[$defkey]; - else + else { $curl_options[$defkey] = $defaultParams[$defkey]; + } } foreach ($curl_params as $defkey => $defval) if (!isset($curl_options[$defkey])) @@ -237,8 +238,9 @@ class PrestaShopWebservice } return $xml; } - else + else { throw new PrestaShopWebserviceException('HTTP response is empty'); + } } /** @@ -264,9 +266,7 @@ class PrestaShopWebservice $url .= '&id_shop='.$options['id_shop']; if (isset($options['id_group_shop'])) $url .= '&id_group_shop='.$options['id_group_shop']; - } - else - { + } else { throw new PrestaShopWebserviceException('Bad parameters given'); } $request = self::executeRequest($url, array(CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => $xml)); @@ -323,9 +323,9 @@ class PrestaShopWebservice $url_params[$k] = $options[$k]; if (count($url_params) > 0) $url .= '?'.http_build_query($url_params); - } - else + } else { throw new PrestaShopWebserviceException('Bad parameters given '); + } $request = self::executeRequest($url, array(CURLOPT_CUSTOMREQUEST => 'GET')); self::checkStatusCode($request['status_code']); // check the response validity @@ -356,9 +356,9 @@ class PrestaShopWebservice $url_params[$k] = $options[$k]; if (count($url_params) > 0) $url .= '?'.http_build_query($url_params); - } - else + } else { throw new PrestaShopWebserviceException('Bad parameters given'); + } $request = self::executeRequest($url, array(CURLOPT_CUSTOMREQUEST => 'HEAD', CURLOPT_NOBODY => true)); self::checkStatusCode($request['status_code']); // check the response validity return $request['header']; @@ -387,9 +387,9 @@ class PrestaShopWebservice $url .= '&id_shop='.$options['id_shop']; if (isset($options['id_group_shop'])) $url .= '&id_group_shop='.$options['id_group_shop']; - } - else + } else { throw new PrestaShopWebserviceException('Bad parameters given'); + } $request = self::executeRequest($url, array(CURLOPT_CUSTOMREQUEST => 'PUT', CURLOPT_POSTFIELDS => $xml)); self::checkStatusCode($request['status_code']); // check the response validity diff --git a/htdocs/admin/dolistore/class/dolistore.class.php b/htdocs/admin/dolistore/class/dolistore.class.php index a229f3c985d..1d764a849be 100644 --- a/htdocs/admin/dolistore/class/dolistore.class.php +++ b/htdocs/admin/dolistore/class/dolistore.class.php @@ -101,8 +101,7 @@ class Dolistore $trace = $e->getTrace(); if ($trace[0]['args'][0] == 404) die('Bad ID'); elseif ($trace[0]['args'][0] == 401) die('Bad auth key'); - else - { + else { print 'Can not access to '.$conf->global->MAIN_MODULE_DOLISTORE_API_SRV.'
'; print $e->getMessage(); } @@ -183,8 +182,7 @@ class Dolistore $trace = $e->getTrace(); if ($trace[0]['args'][0] == 404) die('Bad ID'); elseif ($trace[0]['args'][0] == 401) die('Bad auth key'); - else - { + else { print 'Can not access to '.$conf->global->MAIN_MODULE_DOLISTORE_API_SRV.'
'; print $e->getMessage(); } diff --git a/htdocs/admin/ecm.php b/htdocs/admin/ecm.php index 0c348b25f60..b9af92dc8a5 100644 --- a/htdocs/admin/ecm.php +++ b/htdocs/admin/ecm.php @@ -42,8 +42,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -56,8 +55,7 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -94,8 +92,7 @@ if ($conf->use_javascript_ajax) { print ajax_constantonoff('ECM_AUTO_TREE_ENABLED'); } -else -{ +else { if (empty($conf->global->ECM_AUTO_TREE_ENABLED)) { print ''.img_picto($langs->trans("Disabled"), 'off').''; diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index 80161eaadc6..a554354420d 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -127,8 +127,7 @@ if (GETPOST('addfilter', 'alpha')) { $object->fetchFilters(); } - else - { + else { setEventMessages($emailcollectorfilter->errors, $emailcollectorfilter->error, 'errors'); } } @@ -142,8 +141,7 @@ if ($action == 'deletefilter') { $object->fetchFilters(); } - else - { + else { setEventMessages($emailcollectorfilter->errors, $emailcollectorfilter->error, 'errors'); } } @@ -163,8 +161,7 @@ if (GETPOST('addoperation', 'alpha')) { $object->fetchActions(); } - else - { + else { setEventMessages($emailcollectoroperation->errors, $emailcollectoroperation->error, 'errors'); } } @@ -182,8 +179,7 @@ if ($action == 'updateoperation') { $object->fetchActions(); } - else - { + else { setEventMessages($emailcollectoroperation->errors, $emailcollectoroperation->error, 'errors'); } } @@ -196,8 +192,7 @@ if ($action == 'deleteoperation') { $object->fetchActions(); } - else - { + else { setEventMessages($emailcollectoroperation->errors, $emailcollectoroperation->error, 'errors'); } } @@ -212,8 +207,7 @@ if ($action == 'confirm_collect') $debuginfo = $object->debuginfo; setEventMessages($object->lastresult, null, 'mesgs'); } - else - { + else { $debuginfo = $object->debuginfo; setEventMessages($object->error, null, 'errors'); } @@ -440,8 +434,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $morehtml .= $form->textwithpicto('', 'connect string '.$connectstringserver); } - else - { + else { $morehtml .= 'IMAP functions not available on your PHP'; } @@ -449,8 +442,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea { $morehtml .= 'Failed to open IMAP connection '.$connectstringsource; } - else - { + else { $morehtml .= imap_num_msg($connection); } @@ -582,8 +574,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($res) $arrayoftypes = $hookmanager->resArray; - else - foreach ($hookmanager->resArray as $k=>$desc) + else foreach ($hookmanager->resArray as $k=>$desc) $arrayoftypes[$k] = $desc; @@ -626,8 +617,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print '
'; print ' '; } - else - { + else { print $ruleaction['actionparam']; } print ''; diff --git a/htdocs/admin/emailcollector_list.php b/htdocs/admin/emailcollector_list.php index f180cdf10cf..bb17bbdca05 100644 --- a/htdocs/admin/emailcollector_list.php +++ b/htdocs/admin/emailcollector_list.php @@ -242,8 +242,7 @@ if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) { $num = $nbtotalofrecords; } -else -{ +else { $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); diff --git a/htdocs/admin/expedition.php b/htdocs/admin/expedition.php index be9e7091300..cd9a2976e11 100644 --- a/htdocs/admin/expedition.php +++ b/htdocs/admin/expedition.php @@ -69,8 +69,7 @@ if ($action == 'updateMask') { if ($res > 0) setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - else - setEventMessages($langs->trans("Error"), null, 'errors'); + else setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -130,14 +129,12 @@ elseif ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=expedition&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -259,8 +256,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'">'; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -327,8 +323,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -396,8 +391,7 @@ foreach ($dirmodels as $reldir) print ''; print ''; } - else - { + else { print ''."\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print ""; @@ -409,8 +403,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -439,8 +432,7 @@ foreach ($dirmodels as $reldir) { print 'scandir.'&label='.urlencode($module->name).'">'.img_object($langs->trans("Preview"), 'sending').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -487,8 +479,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/expensereport.php b/htdocs/admin/expensereport.php index d076e77bf44..20f85dc6a29 100644 --- a/htdocs/admin/expensereport.php +++ b/htdocs/admin/expensereport.php @@ -64,8 +64,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -104,14 +103,12 @@ elseif ($action == 'specimen') // For fiche inter header("Location: ".DOL_URL_ROOT."/document.php?modulepart=expensereport&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -179,8 +176,7 @@ elseif ($action == 'setoptions') $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } @@ -264,8 +260,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -329,8 +324,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -396,8 +390,7 @@ foreach ($dirmodels as $reldir) print ''; print ""; } - else - { + else { print ''."\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print ""; @@ -409,8 +402,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -435,8 +427,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'intervention').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -485,8 +476,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/expensereport_ik.php b/htdocs/admin/expensereport_ik.php index 83bb28ca440..2b089335c40 100644 --- a/htdocs/admin/expensereport_ik.php +++ b/htdocs/admin/expensereport_ik.php @@ -162,8 +162,7 @@ foreach ($rangesbycateg as $fk_c_exp_tax_cat => $Tab) echo ''; echo ''; } - else - { + else { echo ''.img_edit().''; if (!empty($range->ik->id)) echo ''.img_delete().''; // TODO add delete link diff --git a/htdocs/admin/expensereport_rules.php b/htdocs/admin/expensereport_rules.php index a40e8d95520..0c99b4e4dda 100644 --- a/htdocs/admin/expensereport_rules.php +++ b/htdocs/admin/expensereport_rules.php @@ -229,8 +229,7 @@ foreach ($rules as $rule) echo '
'.$form->select_dolusers($object->fk_user, 'fk_user').'
'; echo '
'.$form->select_dolgroups($object->fk_usergroup, 'fk_usergroup').'
'; } - else - { + else { if ($rule->is_for_all > 0) echo $tab_apply['A']; elseif ($rule->fk_usergroup > 0) echo $tab_apply['G'].' ('.$rule->getGroupLabel().')'; elseif ($rule->fk_user > 0) echo $tab_apply['U'].' ('.$rule->getUserName().')'; @@ -243,11 +242,9 @@ foreach ($rules as $rule) { echo $form->selectExpense($object->fk_c_type_fees, 'fk_c_type_fees', 0, 1, 1); } - else - { + else { if ($rule->fk_c_type_fees == -1) echo $langs->trans('AllExpenseReport'); - else - { + else { $key = getDictvalue(MAIN_DB_PREFIX.'c_type_fees', 'code', $rule->fk_c_type_fees, false, 'id'); if ($key != $langs->trans($key)) echo $langs->trans($key); else echo $langs->trans(getDictvalue(MAIN_DB_PREFIX.'c_type_fees', 'label', $rule->fk_c_type_fees, false, 'id')); // TODO check to return trans of 'code' @@ -261,8 +258,7 @@ foreach ($rules as $rule) { echo $form->selectarray('code_expense_rules_type', $tab_rules_type, $object->code_expense_rules_type, 0); } - else - { + else { echo $tab_rules_type[$rule->code_expense_rules_type]; } echo ''; @@ -273,8 +269,7 @@ foreach ($rules as $rule) { print $form->selectDate(strtotime(date('Y-m-d', $object->dates)), 'start', '', '', 0, '', 1, 0); } - else - { + else { echo dol_print_date($rule->dates, 'day'); } echo ''; @@ -285,8 +280,7 @@ foreach ($rules as $rule) { print $form->selectDate(strtotime(date('Y-m-d', $object->datee)), 'end', '', '', 0, '', 1, 0); } - else - { + else { echo dol_print_date($rule->datee, 'day'); } echo ''; @@ -297,8 +291,7 @@ foreach ($rules as $rule) { echo ''.$conf->currency; } - else - { + else { echo price($rule->amount, 0, $langs, 1, -1, -1, $conf->currency); } echo ''; @@ -309,8 +302,7 @@ foreach ($rules as $rule) { echo $form->selectyesno('restrictive', $object->restrictive, 1); } - else - { + else { echo yn($rule->restrictive, 1, 1); } echo ''; @@ -322,8 +314,7 @@ foreach ($rules as $rule) echo ''.img_edit().' '; echo ''.img_delete().''; } - else - { + else { echo ' '; echo ''.$langs->trans('Cancel').''; } diff --git a/htdocs/admin/external_rss.php b/htdocs/admin/external_rss.php index 8aa1a425778..eac6d7eb8e9 100644 --- a/htdocs/admin/external_rss.php +++ b/htdocs/admin/external_rss.php @@ -61,8 +61,7 @@ if ($result) if ($reg[1] && $reg[1] > $lastexternalrss) $lastexternalrss = $reg[1]; } } -else -{ +else { dol_print_error($db); } @@ -93,8 +92,7 @@ if ($action == 'add' || GETPOST("modify")) } */ } - else - { + else { // Ajoute boite box_external_rss dans definition des boites $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (file, note)"; $sql .= " VALUES ('box_external_rss.php','".$db->escape(GETPOST("norss", 'int').' ('.GETPOST($external_rss_title, 'alpha')).")')"; @@ -114,8 +112,7 @@ if ($action == 'add' || GETPOST("modify")) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -162,8 +159,7 @@ if ($_POST["delete"]) $db->commit(); } - else - { + else { $db->rollback(); dol_print_error($db, "sql=".$sql); exit; @@ -179,8 +175,7 @@ if ($_POST["delete"]) header("Location: external_rss.php"); exit; } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -293,8 +288,7 @@ if ($resql) { print ''.$langs->trans("Online").'
'; } - else - { + else { print ''.$langs->trans("Offline"); $langs->load("errors"); if ($rssparser->error) print ' - '.$langs->trans($rssparser->error); @@ -332,8 +326,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php index 1a484ec8c7e..6c0c03b6dda 100644 --- a/htdocs/admin/facture.php +++ b/htdocs/admin/facture.php @@ -72,8 +72,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -109,14 +108,12 @@ elseif ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=facture&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -173,8 +170,7 @@ elseif ($action == 'setribchq') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -190,8 +186,7 @@ elseif ($action == 'set_FACTURE_DRAFT_WATERMARK') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -208,8 +203,7 @@ elseif ($action == 'set_INVOICE_FREE_TEXT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -225,8 +219,7 @@ elseif ($action == 'setforcedate') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -248,8 +241,7 @@ elseif ($action == 'setDefaultPDFModulesByType') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -350,8 +342,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print ''; @@ -463,8 +454,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -535,8 +525,7 @@ foreach ($dirmodels as $reldir) print ''; print ''; } - else - { + else { print ''."\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("SetAsDefault"), 'switch_off').''; print ""; @@ -548,8 +537,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("SetAsDefault"), 'off').''; } print ''; @@ -583,8 +571,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'bill').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -691,14 +678,12 @@ if (!empty($conf->banque->enabled)) } print ""; } - else - { + else { print ''.$langs->trans("NoActiveBankAccountDefined").''; } } } -else -{ +else { print $langs->trans("BankModuleNotActive"); } print ""; @@ -777,8 +762,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/fckeditor.php b/htdocs/admin/fckeditor.php index 00995a302a5..9dfc2cff6d1 100644 --- a/htdocs/admin/fckeditor.php +++ b/htdocs/admin/fckeditor.php @@ -127,8 +127,7 @@ if (GETPOST('save', 'alpha')) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -147,8 +146,7 @@ if (empty($conf->use_javascript_ajax)) { setEventMessages(array($langs->trans("NotAvailable"), $langs->trans("JavascriptDisabled")), null, 'errors'); } -else -{ +else { print ''; print ''; print ''; @@ -212,8 +210,7 @@ else $editor = new DolEditor('formtestfield', isset($conf->global->FCKEDITOR_TEST) ? $conf->global->FCKEDITOR_TEST : 'Test', '', 200, $mode, 'In', true, $uselocalbrowser, 1, 120, 8, $readonly); $editor->Create(); } - else - { + else { print '
'; print $conf->global->FCKEDITOR_TEST; print '
'; diff --git a/htdocs/admin/fichinter.php b/htdocs/admin/fichinter.php index 055384c0084..602570194fd 100644 --- a/htdocs/admin/fichinter.php +++ b/htdocs/admin/fichinter.php @@ -64,8 +64,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -102,14 +101,12 @@ elseif ($action == 'specimen') // For fiche inter header("Location: ".DOL_URL_ROOT."/document.php?modulepart=ficheinter&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -167,8 +164,7 @@ elseif ($action == 'set_FICHINTER_FREE_TEXT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -184,8 +180,7 @@ elseif ($action == 'set_FICHINTER_DRAFT_WATERMARK') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -201,8 +196,7 @@ elseif ($action == 'set_FICHINTER_PRINT_PRODUCTS') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } elseif ($action == 'set_FICHINTER_USE_SERVICE_DURATION') { @@ -325,8 +319,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print ''; @@ -389,8 +382,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -458,8 +450,7 @@ foreach ($dirmodels as $reldir) print ''; print ""; } - else - { + else { print ""; @@ -471,8 +462,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -499,8 +489,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'intervention').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -545,8 +534,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/geoipmaxmind.php b/htdocs/admin/geoipmaxmind.php index a661f3a8e9a..ba602c4b609 100644 --- a/htdocs/admin/geoipmaxmind.php +++ b/htdocs/admin/geoipmaxmind.php @@ -65,8 +65,7 @@ if ($action == 'set') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -183,8 +182,7 @@ if ($geoip) if ($result) print $result; else print $langs->trans("Error"); } - else - { + else { print '
'.$ip.' -> '; $result = dol_print_ip($ip, 1); if ($result) print $result; diff --git a/htdocs/admin/holiday.php b/htdocs/admin/holiday.php index aafe01bf5bd..58f39e30ff2 100644 --- a/htdocs/admin/holiday.php +++ b/htdocs/admin/holiday.php @@ -65,8 +65,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -103,14 +102,12 @@ elseif ($action == 'specimen') // For contract header("Location: ".DOL_URL_ROOT."/document.php?modulepart=holiday&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($obj->error, $obj->errors, 'errors'); dol_syslog($obj->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -171,8 +168,7 @@ elseif ($action == 'set_other') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -255,8 +251,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -332,8 +327,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -404,8 +398,7 @@ foreach ($dirmodels as $reldir) print ''; print ''; } - else - { + else { print '"; @@ -417,8 +410,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -450,8 +442,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'contract').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -502,8 +493,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index 1b088f0c2b9..8df8a120c05 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -197,14 +197,12 @@ if ($action == 'update') $tmparray = explode(':', $result); setEventMessages($langs->trans('ErrorFileIsInfectedWithAVirus', $tmparray[1]), null, 'errors'); } - else - { + else { $error++; setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors'); } } - else - { + else { $error++; $langs->load("errors"); setEventMessages($langs->trans("ErrorBadImageFormat"), null, 'errors'); diff --git a/htdocs/admin/ldap.php b/htdocs/admin/ldap.php index bd24e793374..33f1abb251f 100644 --- a/htdocs/admin/ldap.php +++ b/htdocs/admin/ldap.php @@ -77,8 +77,7 @@ if (empty($reshook)) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -215,8 +214,7 @@ if (!empty($conf->global->LDAP_SERVER_PORT)) { print ''; } -else -{ +else { print ''; } print ''; @@ -249,8 +247,7 @@ if (!empty($conf->global->LDAP_ADMIN_PASS)) { print ''; // je le met en visible pour test } -else -{ +else { print ''; } print ''; @@ -296,8 +293,7 @@ if (function_exists("ldap_connect")) print ''.$langs->trans("LDAPBindOK", $conf->global->LDAP_SERVER_HOST, $conf->global->LDAP_SERVER_PORT, $conf->global->LDAP_ADMIN_DN, preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)).''; print '
'; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPBindKO", $conf->global->LDAP_SERVER_HOST, $conf->global->LDAP_SERVER_PORT, $conf->global->LDAP_ADMIN_DN, preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)).''; print '
'; @@ -305,8 +301,7 @@ if (function_exists("ldap_connect")) print '
'; } } - else - { + else { print img_picto('', 'warning').' '; print ''.$langs->trans("LDAPNoUserOrPasswordProvidedAccessIsReadOnly").''; print '
'; @@ -320,8 +315,7 @@ if (function_exists("ldap_connect")) print ''.$langs->trans("LDAPSetupForVersion3").''; print '
'; } - else - { + else { print img_picto('', 'info').' '; print ''.$langs->trans("LDAPSetupForVersion2").''; print '
'; @@ -329,8 +323,7 @@ if (function_exists("ldap_connect")) $unbind = $ldap->unbind(); } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPTCPConnectKO", $conf->global->LDAP_SERVER_HOST, $conf->global->LDAP_SERVER_PORT).''; print '
'; diff --git a/htdocs/admin/ldap_contacts.php b/htdocs/admin/ldap_contacts.php index 834bde4eea5..58eb04e595d 100644 --- a/htdocs/admin/ldap_contacts.php +++ b/htdocs/admin/ldap_contacts.php @@ -79,8 +79,7 @@ if ($action == 'setvalue' && $user->admin) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -293,8 +292,7 @@ if (function_exists("ldap_connect")) print img_picto('', 'info').' '; print ''.$langs->trans("LDAPSynchroOK").'
'; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKOMayBePermissions"); print ': '.$ldap->error; @@ -307,8 +305,7 @@ if (function_exists("ldap_connect")) print nl2br($ldap->dump_content($dn, $info)); print "\n
"; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKO"); print ': '.$ldap->error; diff --git a/htdocs/admin/ldap_groups.php b/htdocs/admin/ldap_groups.php index fb49c947411..a301738db94 100644 --- a/htdocs/admin/ldap_groups.php +++ b/htdocs/admin/ldap_groups.php @@ -71,8 +71,7 @@ if ($action == 'setvalue' && $user->admin) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -234,8 +233,7 @@ if (function_exists("ldap_connect")) print img_picto('', 'info').' '; print ''.$langs->trans("LDAPSynchroOK").'
'; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKOMayBePermissions"); print ': '.$ldap->error; @@ -248,8 +246,7 @@ if (function_exists("ldap_connect")) print nl2br($ldap->dump_content($dn, $info)); print "\n
"; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKO"); print ': '.$ldap->error; diff --git a/htdocs/admin/ldap_members.php b/htdocs/admin/ldap_members.php index f6fa74cb79d..eba84afe925 100644 --- a/htdocs/admin/ldap_members.php +++ b/htdocs/admin/ldap_members.php @@ -96,8 +96,7 @@ if ($action == 'setvalue' && $user->admin) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -416,8 +415,7 @@ if (function_exists("ldap_connect")) print img_picto('', 'info').' '; print ''.$langs->trans("LDAPSynchroOK").'
'; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKOMayBePermissions"); print ': '.$ldap->error; @@ -430,8 +428,7 @@ if (function_exists("ldap_connect")) print nl2br($ldap->dump_content($dn, $info)); print "\n
"; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKO"); print ': '.$ldap->error; diff --git a/htdocs/admin/ldap_members_types.php b/htdocs/admin/ldap_members_types.php index 6628dd4d144..6913c477b38 100644 --- a/htdocs/admin/ldap_members_types.php +++ b/htdocs/admin/ldap_members_types.php @@ -69,8 +69,7 @@ if ($action == 'setvalue' && $user->admin) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -216,8 +215,7 @@ if (function_exists("ldap_connect")) print img_picto('', 'info').' '; print ''.$langs->trans("LDAPSynchroOK").'
'; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKOMayBePermissions"); print ': '.$ldap->error; @@ -230,8 +228,7 @@ if (function_exists("ldap_connect")) print nl2br($ldap->dump_content($dn, $info)); print "\n
"; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKO"); print ': '.$ldap->error; diff --git a/htdocs/admin/ldap_users.php b/htdocs/admin/ldap_users.php index 7781cf45676..d0d3bb50d0d 100644 --- a/htdocs/admin/ldap_users.php +++ b/htdocs/admin/ldap_users.php @@ -90,8 +90,7 @@ if ($action == 'setvalue' && $user->admin) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -396,8 +395,7 @@ if (function_exists("ldap_connect")) print img_picto('', 'info').' '; print ''.$langs->trans("LDAPSynchroOK").'
'; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKOMayBePermissions"); print ': '.$ldap->error; @@ -410,8 +408,7 @@ if (function_exists("ldap_connect")) print nl2br($ldap->dump_content($dn, $info)); print "\n
"; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKO"); print ': '.$ldap->error; @@ -477,8 +474,7 @@ if (function_exists("ldap_connect")) $liste[$key] = $label; } } - else - { + else { setEventMessages($ldap->error, $ldap->errors, 'errors'); } @@ -491,8 +487,7 @@ if (function_exists("ldap_connect")) print "=> ".count($liste)." records
\n"; print "\n
"; } - else - { + else { print img_picto('', 'error').' '; print ''.$langs->trans("LDAPSynchroKO"); print ': '.$ldap->error; diff --git a/htdocs/admin/limits.php b/htdocs/admin/limits.php index 0646c7f6d46..b03067bd581 100644 --- a/htdocs/admin/limits.php +++ b/htdocs/admin/limits.php @@ -163,8 +163,7 @@ if ($action == 'edit') print ''; print '
'; } -else -{ +else { print '
'.$langs->trans("ActivateFCKeditor").'\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'."\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'.$langs->trans("LDAPServerPortExample").'
'.$langs->trans('Password').' (ex: secret)
'; print ''; @@ -204,8 +203,7 @@ if (empty($mysoc->country_code)) $warnpicto = img_warning($langs->trans("WarningMandatorySetupNotComplete")); print '
'.$warnpicto.' '.$langs->trans("WarningMandatorySetupNotComplete").''; } -else -{ +else { // Show examples print load_fiche_titre($langs->trans("ExamplesWithCurrentSetup"), '', ''); @@ -270,8 +268,7 @@ else } } } - else - { + else { // More examples if not specific vat rate found // This example must be kept for test purpose with current value because value used (2/7, 10/3, and vat 0, 10) // were calculated to show all possible cases of rounding. If we change this, examples becomes useless or show the same rounding rule. diff --git a/htdocs/admin/livraison.php b/htdocs/admin/livraison.php index 4cd8f4841e5..f6e3c0e63f9 100644 --- a/htdocs/admin/livraison.php +++ b/htdocs/admin/livraison.php @@ -64,8 +64,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -81,8 +80,7 @@ if ($action == 'set_DELIVERY_FREE_TEXT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -119,14 +117,12 @@ if ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=livraison&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -250,8 +246,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print ''; @@ -317,8 +312,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -384,8 +378,7 @@ foreach ($dirmodels as $reldir) print ''; print ""; } - else - { + else { print "
"; @@ -397,8 +390,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -418,8 +410,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'sending').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -463,8 +454,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/loan.php b/htdocs/admin/loan.php index 45202de342b..23cd1fd6bba 100644 --- a/htdocs/admin/loan.php +++ b/htdocs/admin/loan.php @@ -64,8 +64,7 @@ if ($action == 'update') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -108,8 +107,7 @@ foreach ($list as $key) { print $formaccounting->select_account($conf->global->$key, $key, 1, '', 1, 1); } - else - { + else { print ''; } print ''; diff --git a/htdocs/admin/mailing.php b/htdocs/admin/mailing.php index 921a4a6338c..020c1ef5241 100644 --- a/htdocs/admin/mailing.php +++ b/htdocs/admin/mailing.php @@ -66,8 +66,7 @@ if ($action == 'setvalue') $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } diff --git a/htdocs/admin/mailman.php b/htdocs/admin/mailman.php index 05c36128e8d..100b5cf3224 100644 --- a/htdocs/admin/mailman.php +++ b/htdocs/admin/mailman.php @@ -66,8 +66,7 @@ if ($action == 'update' || $action == 'add') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -100,8 +99,7 @@ if (($action == 'testsubscribe' || $action == 'testunsubscribe') && !empty($conf $langs->load("errors"); setEventMessages($langs->trans("ErrorBadEMail", $email), null, 'errors'); } - else - { + else { include_once DOL_DOCUMENT_ROOT.'/mailmanspip/class/mailmanspip.class.php'; $mailmanspip = new MailmanSpip($db); @@ -119,8 +117,7 @@ if (($action == 'testsubscribe' || $action == 'testunsubscribe') && !empty($conf $error++; setEventMessages($mailmanspip->error, $mailmanspip->errors, 'errors'); } - else - { + else { setEventMessages($langs->trans("MailmanCreationSuccess"), null); } } @@ -132,8 +129,7 @@ if (($action == 'testsubscribe' || $action == 'testunsubscribe') && !empty($conf $error++; setEventMessages($mailmanspip->error, $mailmanspip->errors, 'errors'); } - else - { + else { setEventMessages($langs->trans("MailmanDeletionSuccess"), null); } } @@ -212,8 +208,7 @@ if (!empty($conf->global->ADHERENT_USE_MAILMAN)) print ''; } -else -{ +else { dol_fiche_head($head, 'mailman', $langs->trans("Setup"), 0, 'user'); $link = ''; diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php index 5502d44dae0..42ddb907b7d 100644 --- a/htdocs/admin/mails.php +++ b/htdocs/admin/mails.php @@ -170,8 +170,7 @@ if ($action == 'edit') jQuery("#smtp_server_mess").show(); jQuery("#smtp_port_mess").show();'; } - else - { + else { print ' jQuery("#MAIN_MAIL_SMTP_SERVER").prop("disabled", true); jQuery("#MAIN_MAIL_SMTP_PORT").prop("disabled", true); @@ -287,8 +286,7 @@ if ($action == 'edit') { print $form->selectarray('MAIN_MAIL_SENDMODE', $listofmethods, $conf->global->MAIN_MAIL_SENDMODE); } - else - { + else { $text = $listofmethods[$conf->global->MAIN_MAIL_SENDMODE]; if (empty($text)) $text = $langs->trans("Undefined"); $htmltext = $langs->trans("ContactSuperAdminForChange"); @@ -305,8 +303,7 @@ if ($action == 'edit') print ''; } - else - { + else { print ''; } @@ -549,8 +539,7 @@ else { print ''; } - else - { + else { print ''; } @@ -699,8 +688,7 @@ else print $conf->global->MAIN_MAIL_AUTOCOPY_TO; if (!isValidEmail($conf->global->MAIN_MAIL_AUTOCOPY_TO)) print img_warning($langs->trans("ErrorBadEMail")); } - else - { + else { print ' '; } print ''; @@ -722,8 +710,7 @@ else print ''.$langs->trans("DoTestServerAvailability").''; } } - else - { + else { print ''.$langs->trans("DoTestServerAvailability").''; } @@ -795,8 +782,7 @@ else $mail = new CMailFile('', '', '', '', array(), array(), array(), '', '', 0, '', '', '', '', $trackid, $sendcontext); $result = $mail->check_server_port($server, $port); if ($result) print '
'.$langs->trans("ServerAvailableOnIPOrPort", $server, $port).'
'; - else - { + else { $errormsg = $langs->trans("ServerNotAvailableOnIPOrPort", $server, $port); if ($mail->error) { diff --git a/htdocs/admin/mails_emailing.php b/htdocs/admin/mails_emailing.php index 84a0d2a0893..98c44f2b503 100644 --- a/htdocs/admin/mails_emailing.php +++ b/htdocs/admin/mails_emailing.php @@ -157,8 +157,7 @@ if ($action == 'edit') jQuery("#smtp_port_mess").show(); '; } - else - { + else { print ' jQuery("#MAIN_MAIL_SMTP_SERVER_EMAILING").prop("disabled", true); jQuery("#MAIN_MAIL_SMTP_PORT_EMAILING").prop("disabled", true); @@ -237,8 +236,7 @@ if ($action == 'edit') { print $form->selectarray('MAIN_MAIL_SENDMODE_EMAILING', $listofmethods, $conf->global->MAIN_MAIL_SENDMODE_EMAILING); } - else - { + else { $text = $listofmethods[$conf->global->MAIN_MAIL_SENDMODE_EMAILING]; if (empty($text)) $text = $langs->trans("Undefined"); $htmltext = $langs->trans("ContactSuperAdminForChange"); @@ -256,8 +254,7 @@ if ($action == 'edit') print '
'; } - else - { + else { print ''; } @@ -425,8 +415,7 @@ else { print ''; } - else - { + else { print ''; } @@ -507,8 +496,7 @@ else print ''.$langs->trans("DoTestServerAvailability").''; } } - else - { + else { print ''.$langs->trans("DoTestServerAvailability").''; } @@ -539,8 +527,7 @@ else $result = $mail->check_server_port($server, $port); if ($result) print '
'.$langs->trans("ServerAvailableOnIPOrPort", $server, $port).'
'; - else - { + else { $errormsg = $langs->trans("ServerNotAvailableOnIPOrPort", $server, $port); if ($mail->error) { diff --git a/htdocs/admin/mails_senderprofile_list.php b/htdocs/admin/mails_senderprofile_list.php index 1c50ebf0949..fd5f4e3b1a7 100644 --- a/htdocs/admin/mails_senderprofile_list.php +++ b/htdocs/admin/mails_senderprofile_list.php @@ -282,8 +282,7 @@ if (is_numeric($nbtotalofrecords) && ($limit > $nbtotalofrecords || empty($limit { $num = $nbtotalofrecords; } -else -{ +else { if ($limit) $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); diff --git a/htdocs/admin/mails_templates.php b/htdocs/admin/mails_templates.php index 37d1f903b4a..1dcc621095c 100644 --- a/htdocs/admin/mails_templates.php +++ b/htdocs/admin/mails_templates.php @@ -123,8 +123,7 @@ if (empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) $helpsubstitforlines .= $key.' -> '.$val.'
'; } } -else -{ +else { $tmp = FormMail::getAvailableSubstitKey('formemailwithlines'); $tmp['__(AnyTranslationKey)__'] = 'Translation'; $helpsubstit = $langs->trans("AvailableVariables").':
'; @@ -297,8 +296,7 @@ if (empty($reshook)) setEventMessages($langs->transnoentities("RecordSaved"), null, 'mesgs'); $_POST = array('id'=>$id); // Clean $_POST array, we keep only id } - else - { + else { if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { setEventMessages($langs->transnoentities("ErrorRecordAlreadyExists"), null, 'errors'); } @@ -356,8 +354,7 @@ if (empty($reshook)) { setEventMessages($langs->transnoentities("RecordSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($db->error(), null, 'errors'); } } @@ -377,8 +374,7 @@ if (empty($reshook)) { setEventMessages($langs->transnoentities("ErrorRecordIsUsedByChild"), null, 'errors'); } - else - { + else { dol_print_error($db); } } @@ -577,8 +573,7 @@ foreach ($fieldsforcontent as $tmpfieldlist) elseif ($tmpfieldlist == 'joinfiles') { print ''; } - else - { + else { if ($context != 'hide') { // print ''; $okforextended = true; @@ -587,8 +582,7 @@ foreach ($fieldsforcontent as $tmpfieldlist) $doleditor = new DolEditor($tmpfieldlist, (!empty($obj->{$tmpfieldlist}) ? $obj->{$tmpfieldlist} : ''), '', 120, 'dolibarr_mailings', 'In', 0, false, $okforextended, ROWS_4, '90%'); print $doleditor->Create(1); } - else - print ' '; + else print ' '; } print ''; if ($tmpfieldlist == 'topic') { @@ -802,8 +796,7 @@ if ($resql) print "\n"; } - else - { + else { $keyforobj = 'type_template'; if (!in_array($obj->$keyforobj, array_keys($elementList))) { @@ -989,15 +982,13 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') { print $form->select_dolusers($obj->{$fieldlist[$field]}, 'fk_user', 1, null, 0, '', null, 0, 0, 1, '', 0, '', 'maxwidth200'); } - else - { + else { if ($context == 'add') // I am not admin and we show the add form { print $user->getNomUrl(1); // Me $forcedvalue = $user->id; } - else - { + else { if ($obj && !empty($obj->{$fieldlist[$field]}) && $obj->{$fieldlist[$field]} > 0) { $fuser = new User($db); @@ -1005,8 +996,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') print $fuser->getNomUrl(1); $forcedvalue = $fuser->id; } - else - { + else { $forcedvalue = $obj->{$fieldlist[$field]}; } } @@ -1024,8 +1014,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') if ($context == 'edit') $selectedlang = $obj->{$fieldlist[$field]}; print $formadmin->select_language($selectedlang, 'langcode', 0, null, 1, 0, 0, 'maxwidth150'); } - else - { + else { if (!empty($obj->{$fieldlist[$field]})) { print $obj->{$fieldlist[$field]}.' - '.$langs->trans('Language_'.$obj->{$fieldlist[$field]}); @@ -1046,8 +1035,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') print ''; print $obj->{$fieldlist[$field]}; } - else - { + else { print $form->selectarray('type_template', $elementList, (!empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]}:''), 1, 0, 0, '', 0, 0, 0, '', 'maxwidth150 maxwidth100onsmartphone'); } print ''; @@ -1055,8 +1043,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') 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 - { + else { $size = ''; $class = ''; $classtd = ''; if ($fieldlist[$field] == 'code') $class = 'maxwidth100'; if ($fieldlist[$field] == 'label') $class = 'maxwidth100'; @@ -1073,14 +1060,12 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') { print $form->selectyesno($fieldlist[$field], '1', 1); } - else - { + else { //print ''; print $form->selectyesno($fieldlist[$field], (isset($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]}:''), 1); } } - else - { + else { print ''; } print ''; diff --git a/htdocs/admin/menus.php b/htdocs/admin/menus.php index 856ad50c28b..b66ab89075f 100644 --- a/htdocs/admin/menus.php +++ b/htdocs/admin/menus.php @@ -97,8 +97,7 @@ if ($action == 'update' && !$cancel) { $db->commit(); } - else - { + else { $error++; setEventMessages($langs->trans("FailedToInitializeMenu").' '.$key, null, 'errors'); $db->rollback(); diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php index ef58c1042d4..a059a76b40c 100644 --- a/htdocs/admin/menus/edit.php +++ b/htdocs/admin/menus/edit.php @@ -103,9 +103,7 @@ if ($action == 'update') if (is_numeric(GETPOST('menuIdParent', 'alpha'))) { $menu->fk_menu = GETPOST('menuIdParent', 'alpha'); - } - else - { + } else { if (GETPOST('type', 'alpha') == 'top') $menu->fk_menu = 0; else $menu->fk_menu = -1; $menu->fk_mainmenu = $mainmenu; @@ -116,14 +114,10 @@ if ($action == 'update') if ($result > 0) { setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); - } - else - { + } else { setEventMessages($menu->error, $menu->errors, 'errors'); } - } - else - { + } else { setEventMessages($menu->error, $menu->errors, 'errors'); } $action = "edit"; @@ -131,8 +125,7 @@ if ($action == 'update') header("Location: ".DOL_URL_ROOT."/admin/menus/index.php?menu_handler=".$menu_handler); exit; } - else - { + else { header("Location: ".DOL_URL_ROOT."/admin/menus/index.php?menu_handler=".$menu_handler); exit; } @@ -222,8 +215,7 @@ if ($action == 'add') { $menu->fk_menu = GETPOST('menuId', 'alpha', 3); } - else - { + else { if (GETPOST('type', 'alpha') == 'top') $menu->fk_menu = 0; else $menu->fk_menu = -1; $menu->fk_mainmenu = $mainmenu; @@ -236,8 +228,7 @@ if ($action == 'add') header("Location: ".DOL_URL_ROOT."/admin/menus/index.php?menu_handler=".GETPOST('menu_handler', 'aZ09')); exit; } - else - { + else { $action = 'create'; setEventMessages($menu->error, $menu->errors, 'errors'); } @@ -261,8 +252,7 @@ if ($action == 'confirm_delete' && $_POST["confirm"] == 'yes') llxFooter(); exit; } - else - { + else { $this->db->rollback(); $reload = 0; @@ -359,8 +349,7 @@ if ($action == 'create') print $langs->trans('Left'); print ''; } - else - { + else { print '
'; } - else - { + else { print ''; } print '"; diff --git a/htdocs/admin/modulehelp.php b/htdocs/admin/modulehelp.php index d5bf12f1061..7b64dd08bd0 100644 --- a/htdocs/admin/modulehelp.php +++ b/htdocs/admin/modulehelp.php @@ -105,8 +105,7 @@ foreach ($modulesdir as $dir) continue; } - try - { + try { $res = include_once $dir.$file; if (class_exists($modName)) { @@ -141,8 +140,7 @@ foreach ($modulesdir as $dir) { $arrayofnatures['external_'.$publisher] = $langs->trans("External").' - '.$publisher; } - else - { + else { $arrayofnatures['external_'] = $langs->trans("External").' - '.$langs->trans("UnknownPublishers"); } } @@ -188,8 +186,7 @@ foreach ($modulesdir as $dir) dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR); } } - else - { + else { print "Warning bad descriptor file : ".$dir.$file." (Class ".$modName." not found into file)
"; } } @@ -202,8 +199,7 @@ foreach ($modulesdir as $dir) } closedir($handle); } - else - { + else { dol_syslog("htdocs/admin/modulehelp.php: Failed to open directory ".$dir.". See permission and open_basedir option.", LOG_WARNING); } } @@ -332,8 +328,7 @@ if ($mode == 'desc') $text .= $textexternal; $text .= '
'; } - else - { + else { $text .= '
'.$langs->trans("Origin").': '.$langs->trans("Core").'
'; } @@ -450,8 +445,7 @@ if ($mode == 'feature') { $yesno = 'Yes'; } - else - { + else { $yesno = 'No'; } require_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index c0f1991835b..dba149a2bb0 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -126,8 +126,7 @@ if ($action == 'install') setEventMessages($langs->trans("ErrorModuleFileRequired"), null, 'warnings'); $error++; } - else - { + else { if (!$error && !preg_match('/\.zip$/i', $original_file)) { $langs->load("errors"); @@ -174,8 +173,7 @@ if ($action == 'install') setEventMessages($langs->trans($result['error'], $original_file), null, 'errors'); $error++; } - else - { + else { // Now we move the dir of the module $modulename = preg_replace('/module_/', '', $original_file); $modulename = preg_replace('/\-([0-9][0-9\.]*)\.zip$/i', '', $modulename); @@ -231,8 +229,7 @@ if ($action == 'install') } } } - else - { + else { setEventMessages($langs->trans("ErrorFailToRenameFile", $_FILES['fileinstall']['tmp_name'], $newfile), null, 'errors'); $error++; } @@ -248,8 +245,7 @@ if ($action == 'set' && $user->admin) { $resarray = activateModule($value); if (!empty($resarray['errors'])) setEventMessages('', $resarray['errors'], 'errors'); - else - { + else { //var_dump($resarray);exit; if ($resarray['nbperms'] > 0) { @@ -341,8 +337,7 @@ foreach ($modulesdir as $dir) continue; } - try - { + try { $res = include_once $dir.$file; // A class already exists in a different file will send a non catchable fatal error. if (class_exists($modName)) { @@ -376,8 +371,7 @@ foreach ($modulesdir as $dir) { $arrayofnatures['external_'.$publisher] = $langs->trans("External").' - '.$publisher; } - else - { + else { $arrayofnatures['external_'] = $langs->trans("External").' - '.$langs->trans("UnknownPublishers"); } } @@ -438,8 +432,7 @@ foreach ($modulesdir as $dir) dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR); } } - else - { + else { print "Warning bad descriptor file : ".$dir.$file." (Class ".$modName." not found into file)
"; } } @@ -452,8 +445,7 @@ foreach ($modulesdir as $dir) } closedir($handle); } - else - { + else { dol_syslog("htdocs/admin/modules.php: Failed to open directory ".$dir.". See permission and open_basedir option.", LOG_WARNING); } } @@ -716,8 +708,7 @@ if ($mode == 'common' || $mode == 'commonkanban') } if (!empty($conf->multicompany->enabled) && $user->entity) $disableSetup++; } - else - { + else { if (!empty($objMod->warnings_unactivation[$mysoc->country_code]) && method_exists($objMod, 'alreadyUsed') && $objMod->alreadyUsed()) { $codeenabledisable .= 'warnings_unactivation[$mysoc->country_code].'&value='.$modName.'&mode='.$mode.$param.'">'; $codeenabledisable .= img_picto($langs->trans("Activated"), 'switch_on'); @@ -752,15 +743,13 @@ if ($mode == 'common' || $mode == 'commonkanban') $codetoconfig .= ''.img_picto(ucfirst($page), "setup").''; // print ''.ucfirst($page).' '; } - else - { + else { if (preg_match('/^([^@]+)@([^@]+)$/i', $urlpage, $regs)) { $urltouse = dol_buildpath('/'.$regs[2].'/admin/'.$regs[1], 1); $codetoconfig .= ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"', false, 0, 0, '', 'fa-15').''; } - else - { + else { $urltouse = $urlpage; $codetoconfig .= ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"', false, 0, 0, '', 'fa-15').''; } @@ -771,17 +760,15 @@ if ($mode == 'common' || $mode == 'commonkanban') { $codetoconfig .= ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"', false, 0, 0, '', 'fa-15').''; } - else - { + else { $codetoconfig .= ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"', false, 0, 0, '', 'fa-15').''; } } - else - { + else { $codetoconfig .= img_picto($langs->trans("NothingToSetup"), "setup", 'class="opacitytransp" style="padding-right: 6px"', false, 0, 0, '', 'fa-15'); } } - else // Module not yet activated + else // Module not yet activated { // Set $codeenabledisable if (!empty($objMod->always_enabled)) @@ -792,8 +779,7 @@ if ($mode == 'common' || $mode == 'commonkanban') { $codeenabledisable .= $langs->trans("Disabled"); } - else - { + else { // Module qualified for activation $warningmessage = ''; if (!empty($arrayofwarnings[$modName])) @@ -857,8 +843,7 @@ if ($mode == 'common' || $mode == 'commonkanban') if (preg_match('/^\//i', $objMod->picto)) print img_picto($alttext, $objMod->picto, 'class="valignmiddle pictomodule paddingrightonly"', 1); else print img_object($alttext, $objMod->picto, 'class="valignmiddle pictomodule paddingrightonly"'); } - else - { + else { print img_object($alttext, 'generic', 'class="valignmiddle paddingrightonly"'); } print ' '.$objMod->getName().''; @@ -1028,8 +1013,7 @@ if ($mode == 'deploy') $message = info_admin($langs->trans("ConfFileMustContainCustom", DOL_DOCUMENT_ROOT.'/custom', DOL_DOCUMENT_ROOT)); $allowfromweb = -1; } - else - { + else { if ($dirins_ok) { if (!is_writable(dol_osencode($dirins))) @@ -1039,15 +1023,13 @@ if ($mode == 'deploy') $allowfromweb = 0; } } - else - { + else { $message = info_admin($langs->trans("NotExistsDirect", $dirins).$langs->trans("InfDirAlt").$langs->trans("InfDirExample")); $allowfromweb = 0; } } } - else - { + else { $message = info_admin($langs->trans("InstallModuleFromWebHasBeenDisabledByFile", $dolibarrdataroot.'/installmodules.lock')); $allowfromweb = 0; } @@ -1068,8 +1050,7 @@ if ($mode == 'deploy') { //print $langs->trans("ThisIsProcessToFollow").'
'; } - else - { + else { print $langs->trans("ThisIsAlternativeProcessToFollow").'
'; print ''.$langs->trans("StepNb", 1).': '; print $langs->trans("FindPackageFromWebSite", $fullurl).'
'; @@ -1150,8 +1131,7 @@ if ($mode == 'deploy') print info_admin($langs->trans("ThisLimitIsDefinedInSetup", $max, $maxphptoshow, $maxphptoshowparam), 1); } } - else - { + else { print ' ('.$langs->trans("UploadDisabled").')'; } @@ -1162,8 +1142,7 @@ if ($mode == 'deploy') print '
'; } - else - { + else { print $langs->trans("UnpackPackageInModulesRoot", $dirins).'
'; print ''.$langs->trans("StepNb", 4).': '; print $langs->trans("SetupIsReadyForUse").'
'; diff --git a/htdocs/admin/mrp.php b/htdocs/admin/mrp.php index 9c59b5cf6da..ddf55993fd7 100644 --- a/htdocs/admin/mrp.php +++ b/htdocs/admin/mrp.php @@ -59,8 +59,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -97,14 +96,12 @@ elseif ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=mrp&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, null, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -162,8 +159,7 @@ elseif ($action == 'set_MRP_MO_DRAFT_WATERMARK') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -180,8 +176,7 @@ elseif ($action == 'set_MRP_MO_FREE_TEXT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -263,8 +258,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -329,8 +323,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -400,8 +393,7 @@ foreach ($dirmodels as $reldir) print ''; print ''; } - else - { + else { print '
"; @@ -413,8 +405,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -443,8 +434,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'bill').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -490,8 +480,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/multicurrency.php b/htdocs/admin/multicurrency.php index 4ba581398ee..1b912b27b5e 100644 --- a/htdocs/admin/multicurrency.php +++ b/htdocs/admin/multicurrency.php @@ -54,8 +54,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -67,8 +66,7 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -146,8 +144,7 @@ elseif ($action == 'setapilayer') dolibarr_set_const($db, 'MULTICURRENCY_APP_SOURCE', GETPOST('MULTICURRENCY_APP_SOURCE', 'alpha')); //dolibarr_set_const($db, 'MULTICURRENCY_ALTERNATE_SOURCE', GETPOST('MULTICURRENCY_ALTERNATE_SOURCE', 'alpha')); } - else - { + else { $result = MultiCurrency::syncRates($conf->global->MULTICURRENCY_APP_ID); if ($result > 0) { setEventMessages($langs->trans("CurrencyRateSyncSucceed"), null, "mesgs"); diff --git a/htdocs/admin/notification.php b/htdocs/admin/notification.php index ba92aa1ec21..859d36b7c36 100644 --- a/htdocs/admin/notification.php +++ b/htdocs/admin/notification.php @@ -85,8 +85,7 @@ if ($action == 'settemplates') setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); @@ -107,8 +106,7 @@ if ($action == 'setvalue' && $user->admin) setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); @@ -161,8 +159,7 @@ if ($action == 'setfixednotif' && $user->admin) setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); diff --git a/htdocs/admin/oauth.php b/htdocs/admin/oauth.php index 785a77ac043..85f9ebf0409 100644 --- a/htdocs/admin/oauth.php +++ b/htdocs/admin/oauth.php @@ -120,8 +120,7 @@ foreach ($list as $key) print ''; } - else - { + else { print ''; print ''; print ''; diff --git a/htdocs/admin/oauthlogintokens.php b/htdocs/admin/oauthlogintokens.php index d8c65f9a2c5..f0d3c530b71 100644 --- a/htdocs/admin/oauthlogintokens.php +++ b/htdocs/admin/oauthlogintokens.php @@ -79,8 +79,7 @@ if ($action == 'setconst' && $user->admin) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -99,8 +98,7 @@ if ($action == 'setvalue' && $user->admin) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -179,8 +177,7 @@ if ($mode == 'setup' && $user->admin) $urltodelete = ''; $urltocheckperms = ''; } - else - { + else { $urltorenew = ''; $urltodelete = ''; $urltocheckperms = ''; @@ -194,8 +191,7 @@ if ($mode == 'setup' && $user->admin) require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; // Dolibarr storage $storage = new DoliStorage($db, $conf); - try - { + try { $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); } catch (Exception $e) @@ -226,8 +222,7 @@ if ($mode == 'setup' && $user->admin) { $expiredat = $langs->trans("Unknown"); } - else - { + else { $expiredat = dol_print_date($endoflife, "dayhour"); } } diff --git a/htdocs/admin/payment.php b/htdocs/admin/payment.php index a5b494b62e2..2873cf5d15f 100644 --- a/htdocs/admin/payment.php +++ b/htdocs/admin/payment.php @@ -57,8 +57,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -184,8 +183,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print ''; diff --git a/htdocs/admin/pdf.php b/htdocs/admin/pdf.php index 496a32923f7..ec4015f6e98 100644 --- a/htdocs/admin/pdf.php +++ b/htdocs/admin/pdf.php @@ -190,8 +190,7 @@ for ($i = 1; $i <= 6; $i++) $pid = $langs->transcountry("ProfId".$i, $mysoc->country_code); if ($pid == '-') $pid = false; } - else - { + else { $pid = img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; } if ($pid) diff --git a/htdocs/admin/perms.php b/htdocs/admin/perms.php index 0486edebeec..7dcaf0fba47 100644 --- a/htdocs/admin/perms.php +++ b/htdocs/admin/perms.php @@ -230,8 +230,7 @@ if ($result) print img_picto($langs->trans("Active"), 'tick'); print ''; } - else - { + else { print ''; diff --git a/htdocs/admin/prelevement.php b/htdocs/admin/prelevement.php index e9795304ad3..b33b2396aa2 100644 --- a/htdocs/admin/prelevement.php +++ b/htdocs/admin/prelevement.php @@ -101,8 +101,7 @@ if ($action == "set") $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } diff --git a/htdocs/admin/propal.php b/htdocs/admin/propal.php index 73703829b8c..f2c748b4ce2 100644 --- a/htdocs/admin/propal.php +++ b/htdocs/admin/propal.php @@ -64,8 +64,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -101,14 +100,12 @@ elseif ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=propal&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -127,8 +124,7 @@ elseif ($action == 'setribchq') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -143,8 +139,7 @@ elseif ($action == 'set_PROPALE_DRAFT_WATERMARK') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -160,8 +155,7 @@ elseif ($action == 'set_PROPOSAL_FREE_TEXT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -175,8 +169,7 @@ elseif ($action == 'setdefaultduration') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -191,8 +184,7 @@ elseif ($action == 'set_BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -311,8 +303,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -377,8 +368,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -449,8 +439,7 @@ foreach ($dirmodels as $reldir) print ''; print ''; } - else - { + else { print ""; @@ -462,8 +451,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -497,8 +485,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'bill').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -572,14 +559,12 @@ if (empty($conf->facture->enabled)) } print ""; } - else - { + else { print "".$langs->trans("NoActiveBankAccountDefined").""; } } } - else - { + else { print ''.$langs->trans("BankModuleNotActive").''; } } @@ -686,8 +671,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/receiptprinter.php b/htdocs/admin/receiptprinter.php index 8730f148c07..dc6aa5da33b 100644 --- a/htdocs/admin/receiptprinter.php +++ b/htdocs/admin/receiptprinter.php @@ -90,8 +90,7 @@ if ($action == 'addprinter' && $user->admin) { $db->commit(); setEventMessages($langs->trans("PrinterAdded", $printername), null); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -116,8 +115,7 @@ if ($action == 'deleteprinter' && $user->admin) { $db->commit(); setEventMessages($langs->trans("PrinterDeleted", $printername), null); } - else - { + else { $db->rollback(); dol_print_error($db); } diff --git a/htdocs/admin/reception_setup.php b/htdocs/admin/reception_setup.php index 312038d3fcc..68f8f0e62ee 100644 --- a/htdocs/admin/reception_setup.php +++ b/htdocs/admin/reception_setup.php @@ -72,8 +72,7 @@ if ($action == 'updateMask') { if ($res > 0) setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - else - setEventMessages($langs->trans("Error"), null, 'errors'); + else setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -133,14 +132,12 @@ elseif ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=reception&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -264,8 +261,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'">'; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -332,8 +328,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -402,8 +397,7 @@ foreach ($dirmodels as $reldir) print ''; print ''; } - else - { + else { print '"; @@ -415,8 +409,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -447,8 +440,7 @@ foreach ($dirmodels as $reldir) { print 'scandir.'&label='.urlencode($module->name).'">'.img_object($langs->trans("Preview"), 'reception').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; diff --git a/htdocs/admin/resource.php b/htdocs/admin/resource.php index 3efdd05bdc7..04ff3861c7f 100644 --- a/htdocs/admin/resource.php +++ b/htdocs/admin/resource.php @@ -92,8 +92,7 @@ if (empty($conf->use_javascript_ajax)) print $langs->trans("NotAvailableWhenAjaxDisabled"); print ''; } -else -{ +else { print '\n"; @@ -436,8 +431,7 @@ if (!empty($conf->global->DATABASE_PWD_ENCRYPTED)) //Do not allow "disable encryption" as passwords cannot be decrypted print ''.$langs->trans("Disable").''; } - else - { + else { print '-'; } print ""; @@ -463,8 +457,7 @@ if (empty($dolibarr_main_db_pass) && empty($dolibarr_main_db_encrypted_pass)) $langs->load("errors"); print img_warning($langs->trans("WarningPassIsEmpty")); } -else -{ +else { if (empty($dolibarr_main_db_encrypted_pass)) { print ''.$langs->trans("Activate").''; @@ -516,8 +509,7 @@ if (GETPOST('info', 'int') > 0) { print $langs->trans("Note: The function password_hash exists on your PHP")."
\n"; } - else - { + else { print $langs->trans("Note: The function password_hash does not exists on your PHP")."
\n"; } print 'MAIN_SECURITY_HASH_ALGO = '.$conf->global->MAIN_SECURITY_HASH_ALGO."
\n"; diff --git a/htdocs/admin/security_other.php b/htdocs/admin/security_other.php index f642cd64182..b6674f00c5c 100644 --- a/htdocs/admin/security_other.php +++ b/htdocs/admin/security_other.php @@ -51,8 +51,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) Header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } elseif (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) { @@ -62,8 +61,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) Header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -119,20 +117,17 @@ if (function_exists("imagecreatefrompng")) { print ajax_constantonoff('MAIN_SECURITY_ENABLECAPTCHA'); } - else - { + else { if (empty($conf->global->MAIN_SECURITY_ENABLECAPTCHA)) { print ''.img_picto($langs->trans("Disabled"), 'off').''; } - else - { + else { print ''.img_picto($langs->trans("Enabled"), 'on').''; } } } -else -{ +else { $desc = $form->textwithpicto('', $langs->transnoentities("EnableGDLibraryDesc"), 1, 'warning'); print $desc; } @@ -146,14 +141,12 @@ if (!empty($conf->use_javascript_ajax)) { print ajax_constantonoff('MAIN_USE_ADVANCED_PERMS'); } -else -{ +else { if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { print ''.img_picto($langs->trans("Disabled"), 'off').''; } - else - { + else { print ''.img_picto($langs->trans("Enabled"), 'on').''; } } diff --git a/htdocs/admin/sms.php b/htdocs/admin/sms.php index 09cc0debfd5..0745203f365 100644 --- a/htdocs/admin/sms.php +++ b/htdocs/admin/sms.php @@ -123,8 +123,7 @@ if ($action == 'send' && !$_POST['cancel']) setEventMessages($langs->trans("SmsSuccessfulySent", $smsfrom, $sendto), null, 'mesgs'); setEventMessages($smsfile->error, $smsfile->errors, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("ResultKo"), null, 'errors'); setEventMessages($smsfile->error, $smsfile->errors, 'errors'); } @@ -206,8 +205,7 @@ if ($action == 'edit') print ''; print '
'; } -else -{ +else { if (!count($listofmethods)) print '
'.$langs->trans("NoSmsEngine", 'DoliStore').'
'; print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "
'; print ''.$langs->trans("SeeLocalSendMailSetup").''; } - else - { + else { $mainserver = (!empty($conf->global->MAIN_MAIL_SMTP_SERVER) ? $conf->global->MAIN_MAIL_SMTP_SERVER : ''); $smtpserver = ini_get('SMTP') ?ini_get('SMTP') : $langs->transnoentities("Undefined"); if ($linuxlike) print $langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike"); @@ -319,8 +316,7 @@ if ($action == 'edit') print ''; print ''.$langs->trans("SeeLocalSendMailSetup").''; } - else - { + else { $text = !empty($mainserver) ? $mainserver : $smtpserver; $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($text, $htmltext, 1, 'superadmin'); @@ -337,8 +333,7 @@ if ($action == 'edit') print ''; print ''.$langs->trans("SeeLocalSendMailSetup").''; } - else - { + else { $mainport = (!empty($conf->global->MAIN_MAIL_SMTP_PORT) ? $conf->global->MAIN_MAIL_SMTP_PORT : ''); $smtpport = ini_get('smtp_port') ?ini_get('smtp_port') : $langs->transnoentities("Undefined"); if ($linuxlike) print $langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike"); @@ -351,8 +346,7 @@ if ($action == 'edit') print ''; print ''.$langs->trans("SeeLocalSendMailSetup").''; } - else - { + else { $text = (!empty($mainport) ? $mainport : $smtpport); $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($text, $htmltext, 1, 'superadmin'); @@ -371,8 +365,7 @@ if ($action == 'edit') { print ''; } - else - { + else { $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_ID, $htmltext, 1, 'superadmin'); print ''; @@ -392,8 +385,7 @@ if ($action == 'edit') { print ''; } - else - { + else { $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_PW, $htmltext, 1, 'superadmin'); print ''; @@ -497,8 +489,7 @@ if ($action == 'edit') print ''; } -else -{ +else { dol_fiche_head($head, 'common', '', -1); print ''.$langs->trans("EMailsDesc")."
\n"; @@ -539,8 +530,7 @@ else { print '
'.$langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike").''.$langs->trans("SeeLocalSendMailSetup").'
'.$langs->trans("MAIN_MAIL_SMTP_SERVER", ini_get('SMTP') ?ini_get('SMTP') : $langs->transnoentities("Undefined")).''.(!empty($conf->global->MAIN_MAIL_SMTP_SERVER) ? $conf->global->MAIN_MAIL_SMTP_SERVER : '').'
'.$langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike").''.$langs->trans("SeeLocalSendMailSetup").'
'.$langs->trans("MAIN_MAIL_SMTP_PORT", ini_get('smtp_port') ?ini_get('smtp_port') : $langs->transnoentities("Undefined")).''.(!empty($conf->global->MAIN_MAIL_SMTP_PORT) ? $conf->global->MAIN_MAIL_SMTP_PORT : '').'
'; print $langs->trans("SeeLocalSendMailSetup"); } - else - { + else { $mainserver = (!empty($conf->global->MAIN_MAIL_SMTP_SERVER_EMAILING) ? $conf->global->MAIN_MAIL_SMTP_SERVER_EMAILING : ''); $smtpserver = ini_get('SMTP') ?ini_get('SMTP') : $langs->transnoentities("Undefined"); if ($linuxlike) print $langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike"); @@ -270,8 +267,7 @@ if ($action == 'edit') print ''; print ''.$langs->trans("SeeLocalSendMailSetup").''; } - else - { + else { $text = !empty($mainserver) ? $mainserver : $smtpserver; $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($text, $htmltext, 1, 'superadmin'); @@ -289,8 +285,7 @@ if ($action == 'edit') print ''; print $langs->trans("SeeLocalSendMailSetup"); } - else - { + else { $mainport = (!empty($conf->global->MAIN_MAIL_SMTP_PORT_EMAILING) ? $conf->global->MAIN_MAIL_SMTP_PORT_EMAILING : ''); $smtpport = ini_get('smtp_port') ?ini_get('smtp_port') : $langs->transnoentities("Undefined"); if ($linuxlike) print $langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike"); @@ -303,8 +298,7 @@ if ($action == 'edit') print ''; print ''.$langs->trans("SeeLocalSendMailSetup").''; } - else - { + else { $text = (!empty($mainport) ? $mainport : $smtpport); $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($text, $htmltext, 1, 'superadmin'); @@ -323,8 +317,7 @@ if ($action == 'edit') { print ''; } - else - { + else { $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_ID_EMAILING, $htmltext, 1, 'superadmin'); print ''; @@ -342,8 +335,7 @@ if ($action == 'edit') { print ''; } - else - { + else { $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_PW_EMAILING, $htmltext, 1, 'superadmin'); print ''; @@ -391,8 +383,7 @@ if ($action == 'edit') print ''; } -else -{ +else { dol_fiche_head($head, 'common_emailing', '', -1); print ''.$langs->trans("EMailsDesc")."
\n"; @@ -415,8 +406,7 @@ else { print '
'.$langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike").''.$langs->trans("SeeLocalSendMailSetup").'
'.$langs->trans("MAIN_MAIL_SMTP_SERVER", ini_get('SMTP') ?ini_get('SMTP') : $langs->transnoentities("Undefined")).''.(!empty($conf->global->MAIN_MAIL_SMTP_SERVER_EMAILING) ? $conf->global->MAIN_MAIL_SMTP_SERVER_EMAILING : '').'
'.$langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike").''.$langs->trans("SeeLocalSendMailSetup").'
'.$langs->trans("MAIN_MAIL_SMTP_PORT", ini_get('smtp_port') ?ini_get('smtp_port') : $langs->transnoentities("Undefined")).''.(!empty($conf->global->MAIN_MAIL_SMTP_PORT_EMAILING) ? $conf->global->MAIN_MAIL_SMTP_PORT_EMAILING : '').'
'.$parent_rowid.''.$langs->trans('DetailMenuIdParent'); diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php index 97f0246ac88..f27968d462d 100644 --- a/htdocs/admin/menus/index.php +++ b/htdocs/admin/menus/index.php @@ -192,8 +192,7 @@ elseif ($action == 'confirm_delete' && $confirm == 'yes') header("Location: ".DOL_URL_ROOT.'/admin/menus/index.php?menu_handler='.$menu_handler); exit; } - else - { + else { $db->rollback(); $reload = 0; @@ -409,8 +408,7 @@ if ($conf->use_javascript_ajax) print ''; } -else -{ +else { $langs->load("errors"); setEventMessages($langs->trans("ErrorFeatureNeedJavascript"), null, 'errors'); } diff --git a/htdocs/admin/menus/other.php b/htdocs/admin/menus/other.php index ed35f48d90e..145ec566057 100644 --- a/htdocs/admin/menus/other.php +++ b/htdocs/admin/menus/other.php @@ -95,8 +95,7 @@ if (empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED)) { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } -else -{ +else { print ''.img_picto($langs->trans("Enabled"), 'switch_on').''; } print "'."\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'; print '
'.$langs->trans("UseTheFollowingUrlAsRedirectURI").''.$langs->trans("FeatureNotYetSupported").''; print ''.img_edit_add().''; print '\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'."\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'; $arrval = array( '0'=>$langs->trans("No"), diff --git a/htdocs/admin/security.php b/htdocs/admin/security.php index d9d61673c5e..161b521337b 100644 --- a/htdocs/admin/security.php +++ b/htdocs/admin/security.php @@ -46,8 +46,7 @@ if ($action == 'setgeneraterule') { dol_print_error($db); } - else - { + else { header("Location: ".$_SERVER["PHP_SELF"]); exit; } @@ -102,8 +101,7 @@ if ($action == 'activate_encrypt') header("Location: security.php"); exit; } - else - { + else { $db->rollback(); dol_print_error($db, ''); } @@ -132,8 +130,7 @@ if ($action == 'activate_encryptdbpassconf') header("Location: security.php"); exit; } - else - { + else { setEventMessages($langs->trans('InstrucToEncodePass', dol_encode($dolibarr_main_db_pass)), null, 'warnings'); } } @@ -149,8 +146,7 @@ elseif ($action == 'disable_encryptdbpassconf') header("Location: security.php"); exit; } - else - { + else { setEventMessages($langs->trans('InstrucToClearPass', $dolibarr_main_db_pass), null, 'warnings'); } } @@ -278,8 +274,7 @@ foreach ($arrayhandler as $key => $module) { print img_picto('', 'tick'); } - else - { + else { print ''.$langs->trans("Activate").''; } print "
'; @@ -265,8 +263,7 @@ else { print ''.$langs->trans("DoTestSend").''; } - else - { + else { print ''.$langs->trans("DoTestSend").''; } print ''; diff --git a/htdocs/admin/socialnetworks.php b/htdocs/admin/socialnetworks.php index d2a92aed9e8..fd4329b7023 100644 --- a/htdocs/admin/socialnetworks.php +++ b/htdocs/admin/socialnetworks.php @@ -49,8 +49,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -63,8 +62,7 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/admin/spip.php b/htdocs/admin/spip.php index 2ed43e97efd..6c1d1837ea8 100644 --- a/htdocs/admin/spip.php +++ b/htdocs/admin/spip.php @@ -74,8 +74,7 @@ if ($action == 'update' || $action == 'add') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -154,8 +153,7 @@ if (!empty($conf->global->ADHERENT_USE_SPIP)) print ''; } -else -{ +else { dol_fiche_head($head, 'spip', $langs->trans("Setup"), 0, 'user'); $link = ''; diff --git a/htdocs/admin/stock.php b/htdocs/admin/stock.php index 43e610c3052..d3b9061eecc 100644 --- a/htdocs/admin/stock.php +++ b/htdocs/admin/stock.php @@ -49,8 +49,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -63,8 +62,7 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -120,8 +118,7 @@ if (!empty($conf->facture->enabled)) print $form->selectarray("STOCK_CALCULATE_ON_BILL", $arrval, $conf->global->STOCK_CALCULATE_ON_BILL); } } -else -{ +else { print $langs->trans("ModuleMustBeEnabledFirst", $langs->transnoentitiesnoconv("Module30Name")); } print "\n\n"; @@ -140,8 +137,7 @@ if (!empty($conf->commande->enabled)) print $form->selectarray("STOCK_CALCULATE_ON_VALIDATE_ORDER", $arrval, $conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER); } } -else -{ +else { print $langs->trans("ModuleMustBeEnabledFirst", $langs->transnoentitiesnoconv("Module25Name")); } print "\n\n"; @@ -162,8 +158,7 @@ if (!empty($conf->expedition->enabled)) print $form->selectarray("STOCK_CALCULATE_ON_SHIPMENT", $arrval, $conf->global->STOCK_CALCULATE_ON_SHIPMENT); } } -else -{ +else { print $langs->trans("ModuleMustBeEnabledFirst", $langs->transnoentitiesnoconv("Module80Name")); } print "\n\n"; @@ -182,8 +177,7 @@ if (!empty($conf->expedition->enabled)) print $form->selectarray("STOCK_CALCULATE_ON_SHIPMENT_CLOSE", $arrval, $conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE); } } -else -{ +else { print $langs->trans("ModuleMustBeEnabledFirst", $langs->transnoentitiesnoconv("Module80Name")); } print "\n\n"; @@ -222,8 +216,7 @@ if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUP print $form->selectarray("STOCK_CALCULATE_ON_SUPPLIER_BILL", $arrval, $conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL); } } -else -{ +else { print $langs->trans("ModuleMustBeEnabledFirst", $langs->transnoentitiesnoconv("Module40Name")); } print "\n\n"; @@ -243,8 +236,7 @@ if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUP print $form->selectarray("STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER", $arrval, $conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER); } } -else -{ +else { print $langs->trans("ModuleMustBeEnabledFirst", $langs->transnoentitiesnoconv("Module40Name")); } print "\n\n"; @@ -280,8 +272,7 @@ if (!empty($conf->reception->enabled)) print "\n\n"; $found++; } -else -{ +else { print ''; print ''; print '\n\n"; diff --git a/htdocs/admin/supplier_invoice.php b/htdocs/admin/supplier_invoice.php index 977b99d0c99..c52f4296429 100644 --- a/htdocs/admin/supplier_invoice.php +++ b/htdocs/admin/supplier_invoice.php @@ -71,8 +71,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -110,14 +109,12 @@ if ($action == 'specimen') // For invoices header("Location: ".DOL_URL_ROOT."/document.php?modulepart=facture_fournisseur&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -186,8 +183,7 @@ if ($action == 'set_SUPPLIER_INVOICE_FREE_TEXT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -273,8 +269,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print ''; @@ -341,8 +336,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -410,8 +404,7 @@ foreach ($dirmodels as $reldir) }*/ print ""; } - else - { + else { print '"; @@ -425,8 +418,7 @@ foreach ($dirmodels as $reldir) // Even if choice is the default value, we allow to disable it: For supplier invoice, we accept to have no doc generation at all print 'scandir.'&label='.urlencode($module->name).'&type=invoice_supplier"" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').''; } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'&type=invoice_supplier"" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -488,8 +480,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/admin/supplier_order.php b/htdocs/admin/supplier_order.php index db9b3e257f6..f282ee8d7ca 100644 --- a/htdocs/admin/supplier_order.php +++ b/htdocs/admin/supplier_order.php @@ -69,8 +69,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -108,14 +107,12 @@ elseif ($action == 'specimen') // For orders header("Location: ".DOL_URL_ROOT."/document.php?modulepart=commande_fournisseur&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -197,8 +194,7 @@ elseif ($action == 'set_SUPPLIER_ORDER_OTHER') // Insert $newmodule->insert_permissions(1); } - else - { + else { // Remove all rights with Permission1190 $newmodule->delete_permissions(); @@ -218,8 +214,7 @@ elseif ($action == 'set_BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -305,8 +300,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print ''; @@ -371,8 +365,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -430,14 +423,12 @@ foreach ($dirmodels as $reldir) print img_picto($langs->trans("Enabled"), 'switch_on'); print ''; } - else - { + else { print img_picto($langs->trans("Enabled"), 'switch_on'); } print ""; } - else - { + else { print '"; @@ -449,8 +440,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'&type=order_supplier"" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -554,8 +544,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); @@ -573,8 +562,7 @@ if ($conf->reception->enabled) { print ''.$langs->trans("FeatureNotAvailableWithReceptionModule").''; } -else -{ +else { if ($conf->use_javascript_ajax) { print ajax_constantonoff('SUPPLIER_ORDER_USE_DISPATCH_STATUS'); } else { diff --git a/htdocs/admin/supplier_payment.php b/htdocs/admin/supplier_payment.php index 5d7a0d0b8d5..1c4cfd5905e 100644 --- a/htdocs/admin/supplier_payment.php +++ b/htdocs/admin/supplier_payment.php @@ -58,8 +58,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } }elseif ($action == 'setmod') @@ -132,14 +131,12 @@ elseif ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=supplier_payment&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, $module->errors, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -207,8 +204,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -283,8 +279,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print ''; @@ -399,8 +394,7 @@ foreach ($dirmodels as $reldir) }*/ print ""; } - else - { + else { print '"; @@ -414,8 +408,7 @@ foreach ($dirmodels as $reldir) // Even if choice is the default value, we allow to disable it: For supplier invoice, we accept to have no doc generation at all print 'scandir.'&label='.urlencode($module->name).'&type=SUPPLIER_PAYMENT"" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').''; } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'&type=SUPPLIER_PAYMENT"" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; diff --git a/htdocs/admin/supplier_proposal.php b/htdocs/admin/supplier_proposal.php index c1007623a54..bb3454de4f7 100644 --- a/htdocs/admin/supplier_proposal.php +++ b/htdocs/admin/supplier_proposal.php @@ -61,8 +61,7 @@ if ($action == 'updateMask') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -99,14 +98,12 @@ if ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=supplier_proposal&file=SPECIMEN.pdf"); return; } - else - { + else { setEventMessages($module->error, null, 'errors'); dol_syslog($module->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -123,8 +120,7 @@ if ($action == 'set_SUPPLIER_PROPOSAL_DRAFT_WATERMARK') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -141,8 +137,7 @@ if ($action == 'set_SUPPLIER_PROPOSAL_FREE_TEXT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -157,8 +152,7 @@ if ($action == 'set_BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -279,8 +273,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -344,8 +337,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -415,8 +407,7 @@ foreach ($dirmodels as $reldir) print ''; print ''; } - else - { + else { print ""; @@ -428,8 +419,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Default"), 'on'); } - else - { + else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -463,8 +453,7 @@ foreach ($dirmodels as $reldir) { print ''.img_object($langs->trans("Preview"), 'bill').''; } - else - { + else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -512,8 +501,7 @@ if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; } -else -{ +else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); @@ -544,21 +532,18 @@ if ($conf->banque->enabled) { print ajax_constantonoff('BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL'); } - else - { + else { if (empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL)) { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } - else - { + else { print ''.img_picto($langs->trans("Enabled"), 'switch_on').''; } } print ''; } -else -{ +else { print ''; } diff --git a/htdocs/admin/syslog.php b/htdocs/admin/syslog.php index 16b273cd6db..44143afb270 100644 --- a/htdocs/admin/syslog.php +++ b/htdocs/admin/syslog.php @@ -127,8 +127,7 @@ if ($action == 'set') $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($error, $errors, 'errors'); } @@ -156,8 +155,7 @@ if ($action == 'setlevel') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } diff --git a/htdocs/admin/system/about.php b/htdocs/admin/system/about.php index 3d0dddd6d10..db7559de17a 100644 --- a/htdocs/admin/system/about.php +++ b/htdocs/admin/system/about.php @@ -201,8 +201,7 @@ if ($showpromotemessage) print $langs->trans("ExampleOfNewsMessageForMajorRelease", DOL_VERSION, DOL_VERSION); print ''; } - else - { + else { print $langs->trans("TitleExampleForMaintenanceRelease").':
'; print ''; print '
'.$langs->trans("SmsInfoCharRemain").': '.(160 - dol_strlen($defaultmessage)).'
'; } diff --git a/htdocs/core/class/html.formsocialcontrib.class.php b/htdocs/core/class/html.formsocialcontrib.class.php index 5ecef635d73..ddc79a3c9cf 100644 --- a/htdocs/core/class/html.formsocialcontrib.class.php +++ b/htdocs/core/class/html.formsocialcontrib.class.php @@ -80,8 +80,7 @@ class FormSocialContrib $sql .= " AND c.fk_pays = ".$mysoc->country_id; $sql .= " ORDER BY c.libelle ASC"; } - else - { + else { $sql = "SELECT c.id, c.libelle as type"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c, ".MAIN_DB_PREFIX."c_country as co"; $sql .= " WHERE c.active = 1 AND c.fk_pays = co.rowid"; @@ -112,13 +111,11 @@ class FormSocialContrib if ($user->admin && $help) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); if (!empty($conf->use_javascript_ajax)) print ajax_combobox($htmlname); } - else - { + else { print $langs->trans("ErrorNoSocialContributionForSellerCountry", $mysoc->country_code); } } - else - { + else { dol_print_error($db, $db->lasterror()); } } diff --git a/htdocs/core/class/html.formwebsite.class.php b/htdocs/core/class/html.formwebsite.class.php index 7b067fa11d6..e666260325c 100644 --- a/htdocs/core/class/html.formwebsite.class.php +++ b/htdocs/core/class/html.formwebsite.class.php @@ -80,8 +80,7 @@ class FormWebsite { $out .= '
"; @@ -256,8 +252,7 @@ function displayBox($selectedDate, $month, $year) { $stoploop = 1; } - else - { + else { $mydate = dol_getdate($thedate); if ($firstdate["month"] != $mydate["month"]) $stoploop = 1; } @@ -278,8 +273,7 @@ function displayBox($selectedDate, $month, $year) print sprintf("%02s", $tempDate["mday"]); print ", ".$selectYear; } - else - { + else { print "Click a Date"; } ?> diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index 2818eff65e2..f37d3a4b69d 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -121,8 +121,7 @@ abstract class DoliDB implements Database } return $ret; } - else - { + else { $this->transaction_opened++; dol_syslog('', 0, 1); return 1; @@ -147,13 +146,11 @@ abstract class DoliDB implements Database dol_syslog("COMMIT Transaction".($log ? ' '.$log : ''), LOG_DEBUG); return 1; } - else - { + else { return 0; } } - else - { + else { $this->transaction_opened--; return 1; } @@ -175,8 +172,7 @@ abstract class DoliDB implements Database dol_syslog("ROLLBACK Transaction".($log ? ' '.$log : ''), LOG_DEBUG); return $ret; } - else - { + else { $this->transaction_opened--; return 1; } @@ -253,8 +249,7 @@ abstract class DoliDB implements Database } return $return; } - else - { + else { return ''; } } @@ -331,7 +326,7 @@ abstract class DoliDB implements Database if ($res) { $results = array(); - if($this->num_rows($res) > 0){ + if ($this->num_rows($res) > 0){ while ($obj = $this->fetch_object($res)){ $results[] = $obj; } diff --git a/htdocs/core/db/mssql.class.php b/htdocs/core/db/mssql.class.php index 667f1986815..e5bd6c22e36 100644 --- a/htdocs/core/db/mssql.class.php +++ b/htdocs/core/db/mssql.class.php @@ -91,8 +91,7 @@ class DoliDBMssql extends DoliDB $this->connected = true; $this->ok = true; } - else - { + else { // host, login ou password incorrect $this->connected = false; $this->ok = false; @@ -109,8 +108,7 @@ class DoliDBMssql extends DoliDB $this->database_name = $name; $this->ok = true; } - else - { + else { $this->database_selected = false; $this->database_name = ''; $this->ok = false; @@ -118,8 +116,7 @@ class DoliDBMssql extends DoliDB dol_syslog(get_class($this)."::DoliDBMssql : Erreur Select_db ".$this->error, LOG_ERR); } } - else - { + else { // Pas de selection de base demandee, ok ou ko $this->database_selected = false; } @@ -250,8 +247,7 @@ class DoliDBMssql extends DoliDB } return $ret; } - else - { + else { return true; } } @@ -276,8 +272,7 @@ class DoliDBMssql extends DoliDB dol_syslog("COMMIT Transaction", LOG_DEBUG); return true; } - else - { + else { return false; } } @@ -368,8 +363,7 @@ class DoliDBMssql extends DoliDB $query .= " WHERE ".implode(" AND ", $query_comp); } } - else - { + else { if (preg_match('/ALTER TABLE\h+(\w+?)\h+ADD\h+PRIMARY\h+KEY\h+(\w+?)\h*\((.+)\)/is', $query, $matches)) { $original_query = $query; @@ -432,8 +426,7 @@ class DoliDBMssql extends DoliDB // Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE) $ret = mssql_query($query, $this->db); } - else - { + else { $ret = mssql_query($query, $this->db); } @@ -598,8 +591,7 @@ class DoliDBMssql extends DoliDB // Si il y a eu echec de connexion, $this->db n'est pas valide. return 'DB_ERROR_FAILED_TO_CONNECT'; } - else - { + else { // Constants to convert a MSSql error code to a generic Dolibarr error code $errorcode_map = array( 1004 => 'DB_ERROR_CANNOT_CREATE', @@ -671,8 +663,7 @@ class DoliDBMssql extends DoliDB { return $data["id"]; } - else - { + else { return -1; } } @@ -849,8 +840,7 @@ class DoliDBMssql extends DoliDB { if (preg_match("/null/i", $field_desc['default'])) $sqlfields[$i] .= " default ".$field_desc['default']; - else - $sqlfields[$i] .= " default '".$field_desc['default']."'"; + else $sqlfields[$i] .= " default '".$field_desc['default']."'"; } elseif (preg_match("/^[^\s]/i", $field_desc['null'])) $sqlfields[$i] .= " ".$field_desc['null']; @@ -892,8 +882,7 @@ class DoliDBMssql extends DoliDB dol_syslog($sql); if (!$this -> query($sql)) return -1; - else - return 1; + else return 1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -910,8 +899,7 @@ class DoliDBMssql extends DoliDB if (!$this->query($sql)) return -1; - else - return 1; + else return 1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -958,16 +946,14 @@ class DoliDBMssql extends DoliDB if (preg_match("/^[^\s]/i", $field_desc['default'])) if (preg_match("/null/i", $field_desc['default'])) $sql .= " default ".$field_desc['default']; - else - $sql .= " default '".$field_desc['default']."'"; + else $sql .= " default '".$field_desc['default']."'"; if (preg_match("/^[^\s]/i", $field_desc['extra'])) $sql .= " ".$field_desc['extra']; $sql .= " ".$field_position; if (!$this -> query($sql)) return -1; - else - return 1; + else return 1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -991,8 +977,7 @@ class DoliDBMssql extends DoliDB dol_syslog($sql, LOG_DEBUG); if (!$this->query($sql)) return -1; - else - return 1; + else return 1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -1038,8 +1023,7 @@ class DoliDBMssql extends DoliDB { return -1; } - else - { + else { // If user already exists, we continue to set permissions dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_WARNING); } @@ -1051,8 +1035,7 @@ class DoliDBMssql extends DoliDB dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_WARNING); return -1; } - else - { + else { if ($num) { $this->select_db($dolibarr_main_db_name); @@ -1207,8 +1190,7 @@ class DoliDBMssql extends DoliDB { $where = " IN ('".implode("','", $fields)."')"; } - else - { + else { $where = "='".$this->escape($fields)."'"; } $result = array(); @@ -1220,8 +1202,7 @@ class DoliDBMssql extends DoliDB $result[] = $obj; } } - else - return false; + else return false; return $result; } diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php index 7c0d680662d..5f797b14c07 100644 --- a/htdocs/core/db/mysqli.class.php +++ b/htdocs/core/db/mysqli.class.php @@ -122,8 +122,7 @@ class DoliDBMysqli extends DoliDB if (!preg_match('/general/', $collation)) $this->db->query("SET collation_connection = ".$collation); } } - else - { + else { $this->database_selected = false; $this->database_name = ''; $this->ok = false; @@ -131,8 +130,7 @@ class DoliDBMysqli extends DoliDB dol_syslog(get_class($this)."::DoliDBMysqli : Select_db error ".$this->error, LOG_ERR); } } - else - { + else { // Pas de selection de base demandee, ok ou ko $this->database_selected = false; @@ -270,8 +268,7 @@ class DoliDBMysqli extends DoliDB // Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE) $ret = $this->db->query($query); } - else - { + else { $ret = $this->db->query($query); } @@ -342,8 +339,7 @@ class DoliDBMysqli extends DoliDB if (!is_object($resultset)) { $resultset = $this->_results; } return $resultset->fetch_row(); } - else - { + else { // si le curseur est un booleen on retourne la valeur 0 return 0; } @@ -747,8 +743,7 @@ class DoliDBMysqli extends DoliDB if (!$this->query($sql)) return -1; - else - return 1; + else return 1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -765,8 +760,7 @@ class DoliDBMysqli extends DoliDB if (!$this->query($sql)) return -1; - else - return 1; + else return 1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -823,8 +817,7 @@ class DoliDBMysqli extends DoliDB { if (preg_match("/null/i", $field_desc['default'])) $sql .= " default ".$field_desc['default']; - else - $sql .= " default '".$field_desc['default']."'"; + else $sql .= " default '".$field_desc['default']."'"; } if (isset($field_desc['extra']) && preg_match("/^[^\s]/i", $field_desc['extra'])) { @@ -882,8 +875,7 @@ class DoliDBMysqli extends DoliDB dol_syslog(get_class($this)."::DDLUpdateField ".$sql, LOG_DEBUG); if (!$this->query($sql)) return -1; - else - return 1; + else return 1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -929,8 +921,7 @@ class DoliDBMysqli extends DoliDB { return -1; } - else - { + else { // If user already exists, we continue to set permissions dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_WARNING); } diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php index bf9b468d4a8..f2378bcb998 100644 --- a/htdocs/core/db/pgsql.class.php +++ b/htdocs/core/db/pgsql.class.php @@ -105,8 +105,7 @@ class DoliDBPgsql extends DoliDB $this->connected = true; $this->ok = true; } - else - { + else { // host, login ou password incorrect $this->connected = false; $this->ok = false; @@ -123,8 +122,7 @@ class DoliDBPgsql extends DoliDB $this->database_name = $name; $this->ok = true; } - else - { + else { $this->database_selected = false; $this->database_name = ''; $this->ok = false; @@ -132,8 +130,7 @@ class DoliDBPgsql extends DoliDB dol_syslog(get_class($this)."::DoliDBPgsql : Erreur Select_db ".$this->error, LOG_ERR); } } - else - { + else { // Pas de selection de base demandee, ok ou ko $this->database_selected = false; } @@ -998,8 +995,7 @@ class DoliDBPgsql extends DoliDB { if (preg_match("/null/i", $field_desc['default'])) $sqlfields[$i] .= " default ".$field_desc['default']; - else - $sqlfields[$i] .= " default '".$field_desc['default']."'"; + else $sqlfields[$i] .= " default '".$field_desc['default']."'"; } elseif (preg_match("/^[^\s]/i", $field_desc['null'])) $sqlfields[$i] .= " ".$field_desc['null']; @@ -1041,8 +1037,7 @@ class DoliDBPgsql extends DoliDB dol_syslog($sql, LOG_DEBUG); if (!$this->query($sql)) return -1; - else - return 1; + else return 1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -1059,8 +1054,7 @@ class DoliDBPgsql extends DoliDB if (!$this->query($sql)) return -1; - else - return 1; + else return 1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -1313,8 +1307,7 @@ class DoliDBPgsql extends DoliDB { $fullpathofdump = '/usr/bin/pg_dump'; } - else - { + else { // TODO L'utilisateur de la base doit etre un superadmin pour lancer cette commande $resql = $this->query('SHOW data_directory'); if ($resql) @@ -1344,8 +1337,7 @@ class DoliDBPgsql extends DoliDB { $fullpathofdump = '/usr/bin/'.$tool; } - else - { + else { // TODO L'utilisateur de la base doit etre un superadmin pour lancer cette commande $resql = $this->query('SHOW data_directory'); if ($resql) diff --git a/htdocs/core/db/sqlite3.class.php b/htdocs/core/db/sqlite3.class.php index 2d24c232797..e5c9ef6b751 100644 --- a/htdocs/core/db/sqlite3.class.php +++ b/htdocs/core/db/sqlite3.class.php @@ -112,8 +112,7 @@ class DoliDBSqlite3 extends DoliDB $this->addCustomFunction('date_format'); //$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } - else - { + else { // host, login ou password incorrect $this->connected = false; $this->ok = false; @@ -554,8 +553,7 @@ class DoliDBSqlite3 extends DoliDB if (!is_object($resultset)) { $resultset = $this->_results; } return $resultset->fetchArray(SQLITE3_NUM); } - else - { + else { // si le curseur est un booleen on retourne la valeur 0 return false; } @@ -931,8 +929,7 @@ class DoliDBSqlite3 extends DoliDB { if (preg_match("/null/i", $field_desc['default'])) $sqlfields[$i] .= " default ".$field_desc['default']; - else - $sqlfields[$i] .= " default '".$field_desc['default']."'"; + else $sqlfields[$i] .= " default '".$field_desc['default']."'"; } elseif (preg_match("/^[^\s]/i", $field_desc['null'])) $sqlfields[$i] .= " ".$field_desc['null']; @@ -991,8 +988,7 @@ class DoliDBSqlite3 extends DoliDB if (!$this->query($sql)) return -1; - else - return 1; + else return 1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -1043,8 +1039,7 @@ class DoliDBSqlite3 extends DoliDB { if (preg_match("/null/i", $field_desc['default'])) $sql .= " default ".$field_desc['default']; - else - $sql .= " default '".$field_desc['default']."'"; + else $sql .= " default '".$field_desc['default']."'"; } if (preg_match("/^[^\s]/i", $field_desc['extra'])) $sql .= " ".$field_desc['extra']; diff --git a/htdocs/core/extrafieldsinexport.inc.php b/htdocs/core/extrafieldsinexport.inc.php index 4f85610e657..db926a2b6bc 100644 --- a/htdocs/core/extrafieldsinexport.inc.php +++ b/htdocs/core/extrafieldsinexport.inc.php @@ -63,8 +63,7 @@ if ($resql) // This can fail when class is used on old database (during migra $this->export_entities_array[$r][$fieldname] = $keyforelement; } // If this is a computed field - else - { + else { $this->export_fields_array[$r][$fieldname] = $fieldlabel; $this->export_TypeFields_array[$r][$fieldname] = $typeFilter.'Compute'; $this->export_special_array[$r][$fieldname] = $obj->fieldcomputed; diff --git a/htdocs/core/filemanagerdol/connectors/php/basexml.php b/htdocs/core/filemanagerdol/connectors/php/basexml.php index 0f50f33e988..22eae8093d4 100644 --- a/htdocs/core/filemanagerdol/connectors/php/basexml.php +++ b/htdocs/core/filemanagerdol/connectors/php/basexml.php @@ -98,8 +98,7 @@ function SendError($number, $text) SendErrorNode($number, $text); CreateXmlFooter(); } - else - { + else { SetXmlHeaders(); dol_syslog('Error: '.$number.' '.$text, LOG_ERR); @@ -127,6 +126,5 @@ function SendErrorNode($number, $text) { if ($text) echo ''; - else - echo ''; + else echo ''; } diff --git a/htdocs/core/filemanagerdol/connectors/php/commands.php b/htdocs/core/filemanagerdol/connectors/php/commands.php index dcc1650d4cd..01a4caf9420 100644 --- a/htdocs/core/filemanagerdol/connectors/php/commands.php +++ b/htdocs/core/filemanagerdol/connectors/php/commands.php @@ -86,8 +86,7 @@ function GetFoldersAndFiles($resourceType, $currentFolder) { if (is_dir($sServerDir.$sFile)) $aFolders[] = ''; - else - { + else { $iFileSize = @filesize($sServerDir.$sFile); if (!$iFileSize) { $iFileSize = 0; @@ -147,8 +146,7 @@ function CreateFolder($resourceType, $currentFolder) if (strpos($sNewFolderName, '..') !== false) $sErrorNumber = '102'; // Invalid folder name. - else - { + else { // Map the virtual path to the local server path of the current folder. $sServerDir = ServerMapFolder($resourceType, $currentFolder, 'CreateFolder'); @@ -172,12 +170,10 @@ function CreateFolder($resourceType, $currentFolder) break; } } - else - $sErrorNumber = '103'; + else $sErrorNumber = '103'; } } - else - $sErrorNumber = '102'; + else $sErrorNumber = '102'; // Create the "Error" node. echo ''; @@ -255,8 +251,7 @@ function FileUpload($resourceType, $currentFolder, $sCommand, $CKEcallback = '') $sFileName = RemoveExtension($sOriginalFileName).'('.$iCounter.').'.$sExtension; $sErrorNumber = '201'; } - else - { + else { move_uploaded_file($oFile['tmp_name'], $sFilePath); if (is_file($sFilePath)) @@ -297,11 +292,9 @@ function FileUpload($resourceType, $currentFolder, $sCommand, $CKEcallback = '') } } } - else - $sErrorNumber = '202'; + else $sErrorNumber = '202'; } - else - $sErrorNumber = '202'; + else $sErrorNumber = '202'; $sFileUrl = CombinePaths(GetResourceTypePath($resourceType, $sCommand), $currentFolder); @@ -315,8 +308,7 @@ function FileUpload($resourceType, $currentFolder, $sCommand, $CKEcallback = '') // this line already exists so wrap the if block around it SendUploadResults($sErrorNumber, $sFileUrl, $sFileName); } - else - { + else { //issue the CKEditor Callback SendCKEditorResults( $CKEcallback, diff --git a/htdocs/core/filemanagerdol/connectors/php/io.php b/htdocs/core/filemanagerdol/connectors/php/io.php index 2a9ac9f146b..2da8b4d5baa 100644 --- a/htdocs/core/filemanagerdol/connectors/php/io.php +++ b/htdocs/core/filemanagerdol/connectors/php/io.php @@ -46,8 +46,7 @@ function GetResourceTypePath($resourceType, $sCommand) if ($sCommand == "QuickUpload") return $Config['QuickUploadPath'][$resourceType]; - else - return $Config['FileTypesPath'][$resourceType]; + else return $Config['FileTypesPath'][$resourceType]; } /** @@ -68,8 +67,7 @@ function GetResourceTypeDirectory($resourceType, $sCommand) // Map the "UserFiles" path to a local directory. return Server_MapPath($Config['QuickUploadPath'][$resourceType]); } - else - { + else { if (strlen($Config['FileTypesAbsolutePath'][$resourceType]) > 0) return $Config['FileTypesAbsolutePath'][$resourceType]; @@ -179,8 +177,7 @@ function CreateServerFolder($folderPath, $lastFolder = null) { mkdir($folderPath); } - else - { + else { $permissions = '0777'; if (isset($Config['ChmodOnFolderCreate']) && $Config['ChmodOnFolderCreate']) { @@ -203,8 +200,7 @@ function CreateServerFolder($folderPath, $lastFolder = null) return $sErrorMsg; } - else - return ''; + else return ''; } /** diff --git a/htdocs/core/filemanagerdol/connectors/php/util.php b/htdocs/core/filemanagerdol/connectors/php/util.php index 1349ed00dad..5af89333a48 100644 --- a/htdocs/core/filemanagerdol/connectors/php/util.php +++ b/htdocs/core/filemanagerdol/connectors/php/util.php @@ -82,8 +82,7 @@ function ConvertToXmlAttribute($value) { $os = PHP_OS; } - else - { + else { $os = php_uname(); } @@ -91,8 +90,7 @@ function ConvertToXmlAttribute($value) { return (utf8_encode(htmlspecialchars($value))); } - else - { + else { return (htmlspecialchars($value)); } } diff --git a/htdocs/core/get_info.php b/htdocs/core/get_info.php index 1564fc3f9bc..969de383da0 100644 --- a/htdocs/core/get_info.php +++ b/htdocs/core/get_info.php @@ -90,8 +90,7 @@ if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) $logouttext .= ''; $logouttext .= ''; } - else - { + else { $logouthtmltext .= $langs->trans("NoLogoutProcessWithAuthMode", $_SESSION["dol_authmode"]); $logouttext .= img_picto($langs->trans('Logout').":".$langs->trans('Logout'), 'logout_top.png', 'class="login"', 0, 0, 1); } @@ -118,7 +117,7 @@ $result = $hookmanager->executeHooks('printTopRightMenu', $parameters); // Note if (is_numeric($result)) { if (empty($result)) $toprightmenu .= $hookmanager->resPrint; // add - else $toprightmenu = $hookmanager->resPrint; // replace + else $toprightmenu = $hookmanager->resPrint; // replace } else $toprightmenu .= $result; // For backward compatibility diff --git a/htdocs/core/get_menudiv.php b/htdocs/core/get_menudiv.php index 92b8dc34a0e..6a034377ce7 100644 --- a/htdocs/core/get_menudiv.php +++ b/htdocs/core/get_menudiv.php @@ -178,7 +178,7 @@ if (empty($user->socid)) // If internal user or not defined { $conf->standard_menu = (empty($conf->global->MAIN_MENU_STANDARD_FORCED) ? (empty($conf->global->MAIN_MENU_STANDARD) ? 'eldy_menu.php' : $conf->global->MAIN_MENU_STANDARD) : $conf->global->MAIN_MENU_STANDARD_FORCED); } -else // If external user +else // If external user { $conf->standard_menu = (empty($conf->global->MAIN_MENUFRONT_STANDARD_FORCED) ? (empty($conf->global->MAIN_MENUFRONT_STANDARD) ? 'eldy_menu.php' : $conf->global->MAIN_MENUFRONT_STANDARD) : $conf->global->MAIN_MENUFRONT_STANDARD_FORCED); } diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index b78c0478370..d86f823f4c9 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -186,7 +186,7 @@ function run_sql($sqlfile, $silent = 1, $entity = '', $usesavepoint = 1, $handle $qualified = 0; } } - else // This is a test on a constant. For example when we have -- VMYSQLUTF8UNICODE, we test constant $conf->global->UTF8UNICODE + else // This is a test on a constant. For example when we have -- VMYSQLUTF8UNICODE, we test constant $conf->global->UTF8UNICODE { $dbcollation = strtoupper(preg_replace('/_/', '', $conf->db->dolibarr_main_db_collation)); //var_dump($reg[2]); @@ -226,8 +226,7 @@ function run_sql($sqlfile, $silent = 1, $entity = '', $usesavepoint = 1, $handle if ($buffer) $arraysql[$i] = $buffer; fclose($fp); } - else - { + else { dol_syslog("Admin.lib::run_sql failed to open file ".$sqlfile, LOG_ERR); } @@ -252,8 +251,7 @@ function run_sql($sqlfile, $silent = 1, $entity = '', $usesavepoint = 1, $handle $listofmaxrowid[$table] = $obj->max; if (empty($listofmaxrowid[$table])) $listofmaxrowid[$table] = 0; } - else - { + else { if (!$silent) print '"; if (!$silent) print ''; @@ -370,8 +368,7 @@ function run_sql($sqlfile, $silent = 1, $entity = '', $usesavepoint = 1, $handle } // print ''; } - else - { + else { $errno = $db->errno(); if (!$silent) print ''."\n"; @@ -414,8 +411,7 @@ function run_sql($sqlfile, $silent = 1, $entity = '', $usesavepoint = 1, $handle if (!$silent) print ''."\n"; $ok = 1; } - else - { + else { if (!$silent) print ''; if (!$silent) print ''."\n"; $ok = 0; @@ -458,8 +454,7 @@ function dolibarr_del_const($db, $name, $entity = 1) $conf->global->$name = ''; return 1; } - else - { + else { dol_print_error($db); return -1; } @@ -555,8 +550,7 @@ function dolibarr_set_const($db, $name, $value, $type = 'chaine', $visible = 0, $conf->global->$name = $value; return 1; } - else - { + else { $error = $db->lasterror(); $db->rollback(); return -1; @@ -971,8 +965,7 @@ function activateModule($value, $withdeps = 1) { $ret['errors'][] = $objMod->error; } - else - { + else { if ($withdeps) { if (isset($objMod->depends) && is_array($objMod->depends) && !empty($objMod->depends)) @@ -1009,8 +1002,7 @@ function activateModule($value, $withdeps = 1) $ret['nbmodules'] += $resarray['nbmodules']; $ret['nbperms'] += $resarray['nbperms']; } - else - { + else { $ret['errors'][] = $langs->trans('activateModuleDependNotSatisfied', $objMod->name, $modulestring); } } @@ -1082,7 +1074,7 @@ function unActivateModule($value, $requiredby = 1) $result = $objMod->remove(); if ($result <= 0) $ret = $objMod->error; } - else // We come here when we try to unactivate a module when module does not exists anymore in sources + else // We come here when we try to unactivate a module when module does not exists anymore in sources { //print $dir.$modFile;exit; // TODO Replace this after DolibarrModules is moved as abstract class with a try catch to show module we try to disable has not been found or could not be loaded @@ -1163,8 +1155,7 @@ function complete_dictionary_with_modules(&$taborder, &$tabname, &$tablib, &$tab { $j = $objMod->numero; } - else - { + else { $j = 1000 + $i; } @@ -1210,8 +1201,7 @@ function complete_dictionary_with_modules(&$taborder, &$tabname, &$tablib, &$tab print 'Error in descriptor of module '.$const_name.'. Array ->dictionaries has not same number of record for key "tabname", "tablib", "tabsql" and "tabsqlsort"'; //print "$const_name: $nbtabname=$nbtablib=$nbtabsql=$nbtabsqlsort=$nbtabfield=$nbtabfieldvalue=$nbtabfieldinsert=$nbtabrowid=$nbtabcond=$nbtabfieldcheck=$nbtabhelp\n"; } - else - { + else { $taborder[] = 0; // Add an empty line } } @@ -1225,8 +1215,7 @@ function complete_dictionary_with_modules(&$taborder, &$tabname, &$tablib, &$tab } closedir($handle); } - else - { + else { dol_syslog("htdocs/admin/modules.php: Failed to open directory ".$dir.". See permission and open_basedir option.", LOG_WARNING); } } @@ -1291,8 +1280,7 @@ function activateModulesRequiredByCountry($country_code) } closedir($handle); } - else - { + else { dol_syslog("htdocs/admin/modules.php: Failed to open directory ".$dir.". See permission and open_basedir option.", LOG_WARNING); } } @@ -1348,8 +1336,7 @@ function complete_elementList_with_modules(&$elementList) { $j = $objMod->numero; } - else - { + else { $j = 1000 + $i; } @@ -1393,8 +1380,7 @@ function complete_elementList_with_modules(&$elementList) } closedir($handle); } - else - { + else { dol_syslog("htdocs/admin/modules.php: Failed to open directory ".$dir.". See permission and open_basedir option.", LOG_WARNING); } } @@ -1448,16 +1434,14 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '') if (is_numeric($key)) { // Very old behaviour $type = 'string'; } - else - { + else { if (is_array($const)) { $type = $const['type']; $label = $const['label']; $const = $key; } - else - { + else { $type = $const; $const = $key; } @@ -1549,8 +1533,7 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '') print ''; print ''; } - else - { + else { print ''; } - else - { + else { print "'; } - else - { + else { //print ''; print ''; print ''; @@ -455,8 +452,7 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') } $db->free($resql); } - else - { + else { dol_print_error($db); } diff --git a/htdocs/core/lib/signature.lib.php b/htdocs/core/lib/signature.lib.php index 837f505c132..8dd24c87df6 100644 --- a/htdocs/core/lib/signature.lib.php +++ b/htdocs/core/lib/signature.lib.php @@ -63,8 +63,7 @@ function getOnlineSignatureUrl($mode, $type, $ref = '') if ($mode == 0) $out .= urlencode($ref); $out .= ($mode ? '' : ''); if ($mode == 1) $out .= '&hashp=hash_of_file'; - else - { + else { include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; $propaltmp = new Propal($db); $res = $propaltmp->fetch(0, $ref); @@ -81,8 +80,7 @@ function getOnlineSignatureUrl($mode, $type, $ref = '') $out = $langs->trans("FeatureOnlineSignDisabled"); return $out; } - else - { + else { $out .= '&hashp='.$hashp; } } diff --git a/htdocs/core/lib/tax.lib.php b/htdocs/core/lib/tax.lib.php index cdf9fe29b1c..46682addf2c 100644 --- a/htdocs/core/lib/tax.lib.php +++ b/htdocs/core/lib/tax.lib.php @@ -175,8 +175,7 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; $sql .= " ORDER BY d.rowid, d.".$fk_facture; } - else - { + else { // Count on payments date $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; @@ -274,8 +273,7 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di $company_id = $assoc['company_id']; } } - else - { + else { dol_print_error($db); return -3; } @@ -323,8 +321,7 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; $sql .= " ORDER BY d.rowid, d.".$fk_facture; } - else - { + else { // Count on payments date $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; @@ -425,8 +422,7 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di $company_id = $assoc['company_id']; } } - else - { + else { dol_print_error($db); return -3; } @@ -529,8 +525,7 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di $company_id = $assoc['company_id']; } } - else - { + else { dol_print_error($db); return -3; } @@ -580,8 +575,7 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire $paymentfacturetable = 'paiement_facture'; $invoicefieldref = 'ref'; } - else - { + else { $invoicetable = 'facture_fourn'; $invoicedettable = 'facture_fourn_det'; $fk_facture = 'fk_facture_fourn'; @@ -644,8 +638,7 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; $sql .= " ORDER BY d.rowid, d.".$fk_facture; } - else - { + else { // Count on payments date $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; @@ -743,8 +736,7 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire $rate = $assoc['rate']; } } - else - { + else { dol_print_error($db); return -3; } @@ -792,8 +784,7 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; $sql .= " ORDER BY d.rowid, d.".$fk_facture; } - else - { + else { // Count on payments date $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; @@ -894,8 +885,7 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire $rate = $assoc['rate']; } } - else - { + else { dol_print_error($db); return -3; } @@ -998,8 +988,7 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire $rate = $assoc['rate']; } } - else - { + else { dol_print_error($db); return -3; } diff --git a/htdocs/core/lib/ticket.lib.php b/htdocs/core/lib/ticket.lib.php index cf6607e6960..4ed30dbcb2f 100644 --- a/htdocs/core/lib/ticket.lib.php +++ b/htdocs/core/lib/ticket.lib.php @@ -163,16 +163,14 @@ function showDirectPublicLink($object) { $out .= ''.$langs->trans("PublicInterfaceNotEnabled").''; } - else - { + else { $out .= img_picto('', 'object_globe.png').' '.$langs->trans("TicketPublicAccess").':
'; if ($url) { $out .= ''; $out .= ajax_autoselect("directpubliclink", 0); } - else - { + else { $out .= ''.$langs->trans("TicketNotCreatedFromPublicInterface").''; } } @@ -315,8 +313,7 @@ function show_ticket_messaging($conf, $langs, $db, $filterobj, $objcon = '', $no if (is_object($objcon) && $objcon->id > 0) { $sql = "SELECT DISTINCT a.id, a.label as label,"; } - else - { + else { $sql = "SELECT a.id, a.label as label,"; } $sql .= " a.datep as dp,"; @@ -402,14 +399,12 @@ function show_ticket_messaging($conf, $langs, $db, $filterobj, $objcon = '', $no { if ($actioncode == 'AC_NON_AUTO') $sql .= " AND c.type != 'systemauto'"; elseif ($actioncode == 'AC_ALL_AUTO') $sql .= " AND c.type = 'systemauto'"; - else - { + else { if ($actioncode == 'AC_OTH') $sql .= " AND c.type != 'systemauto'"; elseif ($actioncode == 'AC_OTH_AUTO') $sql .= " AND c.type = 'systemauto'"; } } - else - { + else { if ($actioncode == 'AC_NON_AUTO') $sql .= " AND c.type != 'systemauto'"; elseif ($actioncode == 'AC_ALL_AUTO') $sql .= " AND c.type = 'systemauto'"; else $sql .= " AND c.code = '".$db->escape($actioncode)."'"; @@ -527,8 +522,7 @@ function show_ticket_messaging($conf, $langs, $db, $filterobj, $objcon = '', $no $i++; } } - else - { + else { dol_print_error($db); } @@ -555,8 +549,7 @@ function show_ticket_messaging($conf, $langs, $db, $filterobj, $objcon = '', $no { $out .= ''; } - else - { + else { $out .= ''; } if ($filterobj && get_class($filterobj) == 'Societe') $out .= ''; diff --git a/htdocs/core/lib/treeview.lib.php b/htdocs/core/lib/treeview.lib.php index 0dcb6e8242d..8f7f6152c97 100644 --- a/htdocs/core/lib/treeview.lib.php +++ b/htdocs/core/lib/treeview.lib.php @@ -80,8 +80,7 @@ function tree_showpad(&$fulltree, $key, $silent = 0) if ($fulltree[$key]['level'] == $pos) print img_picto_common('', 'treemenu/branch.gif'); else print img_picto_common('', 'treemenu/line.gif'); } - else - { + else { if ($fulltree[$key]['level'] == $pos) print img_picto_common('', 'treemenu/branchbottom.gif'); else print img_picto_common('', 'treemenu/linebottom.gif'); } @@ -175,8 +174,7 @@ function tree_recur($tab, $pere, $rang, $iddivjstree = 'iddivjstree', $donoreset print $tab[$x]['buttons']; print '
'.$langs->trans("ReStockOnDispatchOrder").''; @@ -294,8 +285,7 @@ else print $form->selectarray("STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER", $arrval, $conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER); } } - else - { + else { print $langs->trans("ModuleMustBeEnabledFirst", $langs->transnoentitiesnoconv("Module40Name")); } print "
'."\n"; print 'scandir.'&label='.urlencode($module->name).'&type=invoice_supplier">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'."\n"; print 'scandir.'&label='.urlencode($module->name).'&type=order_supplier">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'."\n"; print 'scandir.'&label='.urlencode($module->name).'&type=SUPPLIER_PAYMENT">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "
'; print $langs->trans("BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL").' '.$langs->trans('NotAvailable').'
'; if (!$silent) print '
'.$langs->trans("Failed to get max rowid for ".$table)."
OK'.$langs->trans("OK").'
'.$langs->trans("ProcessMigrateScript").''.$langs->trans("KO").'
'; print ''; print ''; @@ -1595,7 +1578,7 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '') //var_dump($arrayofmessagename); print $form->selectarray('constvalue_'.$obj->name, $arrayofmessagename, $obj->value.':'.$tmp[1], 'None', 0, 0, '', 0, 0, 0, '', '', 1); } - else // type = 'string' ou 'chaine' + else // type = 'string' ou 'chaine' { print ''; } @@ -1685,8 +1668,7 @@ function addDocumentModel($name, $type, $label = '', $description = '') $db->commit(); return 1; } - else - { + else { dol_print_error($db); $db->rollback(); return -1; @@ -1718,8 +1700,7 @@ function delDocumentModel($name, $type) $db->commit(); return 1; } - else - { + else { dol_print_error($db); $db->rollback(); return -1; diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index 5d450aa4b04..6070264d487 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -305,8 +305,7 @@ function show_array_actions_to_do($max = 5) $db->free($resql); } - else - { + else { dol_print_error($db); } } @@ -394,8 +393,7 @@ function show_array_last_actions_done($max = 5) $db->free($resql); } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 1d3e80b90be..e917f99defb 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -495,8 +495,7 @@ function ajax_constantonoff($code, $input = array(), $entity = null, $revertonof if (empty($conf->global->$code)) print ''.img_picto($langs->trans("Disabled"), 'off').''; else print ''.img_picto($langs->trans("Enabled"), 'on').''; } - else - { + else { $out = "\n".' '; } - else - { + else { $return = $out; } } @@ -6954,8 +6889,7 @@ function dol_htmloutput_mesg($mesgstring = '', $mesgarray = array(), $style = 'o $tmpmesgstring = preg_replace('/<\/div>/', '', $tmpmesgstring); $newmesgarray[] = $tmpmesgstring; } - else - { + else { dol_syslog("Error call of dol_htmloutput_mesg with an array with a value that is not a string", LOG_WARNING); } } @@ -7012,8 +6946,7 @@ function dol_sort_array(&$array, $index, $order = 'asc', $natsort = 0, $case_sen { $temp[$key] = $array[$key]->$index; } - else - { + else { $temp[$key] = $array[$key][$index]; } } @@ -7149,8 +7082,7 @@ function dol_getIdFromCode($db, $key, $tablename, $fieldkey = 'code', $fieldid = $db->free($resql); return $cache_codes[$tablename][$key][$fieldid]; } - else - { + else { return -1; } } @@ -7204,8 +7136,7 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1) if ($hideerrors) return @eval('return '.$s.';'); else return eval('return '.$s.';'); } - else - { + else { if ($hideerrors) @eval($s); else eval($s); } @@ -7249,8 +7180,7 @@ function picto_from_langcode($codelang, $moreatt = '') ); if (isset($langtocountryflag[$codelang])) $flagImage = $langtocountryflag[$codelang]; - else - { + else { $tmparray = explode('_', $codelang); $flagImage = empty($tmparray[1]) ? $tmparray[0] : $tmparray[1]; } @@ -7469,8 +7399,7 @@ function getLanguageCodeFromCountryCode($countrycode) } } } - else - { + else { dol_syslog("Warning Exention php-intl is not available", LOG_WARNING); } @@ -7913,8 +7842,7 @@ function natural_search($fields, $value, $mode = 0, $nofirstand = 0) { $newres .= ($i2 > 0 ? ' OR ' : '').$field.' '.$operator.' '.$numnewcrit; } - else - { + else { $newres .= ($i2 > 0 ? ' OR ' : '').'1 = 2'; // force false } $i2++; // a criteria was added to string @@ -7965,7 +7893,7 @@ function natural_search($fields, $value, $mode = 0, $nofirstand = 0) } } } - else // $mode=0 + else // $mode=0 { $tmpcrits = explode('|', $crit); $i3 = 0; @@ -7979,8 +7907,7 @@ function natural_search($fields, $value, $mode = 0, $nofirstand = 0) { $newres .= $field." = ".(is_numeric(trim($tmpcrit)) ?trim($tmpcrit) : '0'); } - else - { + else { $newres .= $field." LIKE '"; $tmpcrit = trim($tmpcrit); @@ -8271,8 +8198,7 @@ function getDictvalue($tablename, $field, $id, $checkentity = false, $rowidfield $dictvalues[$tablename][$obj->{$rowidfield}] = $obj; } } - else - { + else { dol_print_error($db); } } @@ -8305,8 +8231,7 @@ function colorIsLight($stringcolor) $g = $tmp[1]; $b = $tmp[2]; } - else - { + else { $hexr = $stringcolor[0].$stringcolor[1]; $hexg = $stringcolor[2].$stringcolor[3]; $hexb = $stringcolor[4].$stringcolor[5]; diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index 531e0fe242c..dcdd31a1cc2 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -233,8 +233,7 @@ function dol_print_object_info($object, $usetable = 0) if ($object->user_creation->id) print $object->user_creation->getNomUrl(1, '', 0, 0, 0); else print $langs->trans("Unknown"); } - else - { + else { $userstatic = new User($db); $userstatic->fetch($object->user_creation_id ? $object->user_creation_id : $object->user_creation); if ($userstatic->id) print $userstatic->getNomUrl(1, '', 0, 0, 0); @@ -269,8 +268,7 @@ function dol_print_object_info($object, $usetable = 0) if ($object->user_modification->id) print $object->user_modification->getNomUrl(1, '', 0, 0, 0); else print $langs->trans("Unknown"); } - else - { + else { $userstatic = new User($db); $userstatic->fetch($object->user_modification_id ? $object->user_modification_id : $object->user_modification); if ($userstatic->id) print $userstatic->getNomUrl(1, '', 0, 0, 0); @@ -305,8 +303,7 @@ function dol_print_object_info($object, $usetable = 0) if ($object->user_validation->id) print $object->user_validation->getNomUrl(1, '', 0, 0, 0); else print $langs->trans("Unknown"); } - else - { + else { $userstatic = new User($db); $userstatic->fetch($object->user_validation_id ? $object->user_validation_id : $object->user_validation); if ($userstatic->id) print $userstatic->getNomUrl(1, '', 0, 0, 0); @@ -341,8 +338,7 @@ function dol_print_object_info($object, $usetable = 0) if ($object->user_approve->id) print $object->user_approve->getNomUrl(1, '', 0, 0, 0); else print $langs->trans("Unknown"); } - else - { + else { $userstatic = new User($db); $userstatic->fetch($object->user_approve_id ? $object->user_approve_id : $object->user_approve); if ($userstatic->id) print $userstatic->getNomUrl(1, '', 0, 0, 0); @@ -405,8 +401,7 @@ function dol_print_object_info($object, $usetable = 0) if ($object->user_cloture->id) print $object->user_cloture->getNomUrl(1, '', 0, 0, 0); else print $langs->trans("Unknown"); } - else - { + else { $userstatic = new User($db); $userstatic->fetch($object->user_cloture); if ($userstatic->id) print $userstatic->getNomUrl(1, '', 0, 0, 0); @@ -441,8 +436,7 @@ function dol_print_object_info($object, $usetable = 0) if ($object->user_rappro->id) print $object->user_rappro->getNomUrl(1, '', 0, 0, 0); else print $langs->trans("Unknown"); } - else - { + else { $userstatic = new User($db); $userstatic->fetch($object->user_rappro); if ($userstatic->id) print $userstatic->getNomUrl(1, '', 0, 0, 0); @@ -760,8 +754,7 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ $maskcounter = $reg[1]; $hasglobalcounter = true; } - else - { + else { // setting some defaults so the rest of the code won't fail if there is a third party counter $masktri = '00000'; $maskcounter = '00000'; @@ -799,8 +792,7 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ $masktype_value = substr(preg_replace('/^TE_/', '', $objsoc->typent_code), 0, dol_strlen($regType[1])); // get n first characters of thirdpaty typent_code (where n is length in mask) $masktype_value = str_pad($masktype_value, dol_strlen($regType[1]), "#", STR_PAD_RIGHT); // we fill on right with # to have same number of char than into mask } - else - { + else { $masktype = ''; $masktype_value = ''; } @@ -815,8 +807,7 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ $maskuser_value = substr($lastname, 0, dol_strlen($regType[1])); // get n first characters of user firstname (where n is length in mask) $maskuser_value = str_pad($maskuser_value, dol_strlen($regType[1]), "#", STR_PAD_RIGHT); // we fill on right with # to have same number of char than into mask } - else - { + else { $maskuser = ''; $maskuser_value = ''; } @@ -961,7 +952,7 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ $sqlwhere .= "(SUBSTRING(".$field.", ".$yearpos.", ".$yearlen.") = '".$yearcomp."'"; $sqlwhere .= " AND SUBSTRING(".$field.", ".$monthpos.", ".$monthlen.") = '".str_pad($monthcomp, $monthlen, '0', STR_PAD_LEFT)."')"; } - else // reset is done on january + else // reset is done on january { $sqlwhere .= '(SUBSTRING('.$field.', '.$yearpos.', '.$yearlen.") = '".$yearcomp."')"; } @@ -974,8 +965,7 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ { $posnumstart = mb_strrpos($maskwithnocode, $maskcounter, 'UTF-8'); } - else - { + else { $posnumstart = strrpos($maskwithnocode, $maskcounter); } // Pos of counter in final string (from 0 to ...) if ($posnumstart < 0) return 'ErrorBadMaskFailedToLocatePosOfSequence'; @@ -1142,7 +1132,7 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ $numFinal = preg_replace('/\{yy\}/i', date("y", $date) + $yearoffset, $numFinal); $numFinal = preg_replace('/\{y\}/i', substr(date("y", $date), 1, 1) + $yearoffset, $numFinal); } - else // we want yyyy to be current year + else // we want yyyy to be current year { $numFinal = preg_replace('/\{yyyy\}/i', date("Y", $date), $numFinal); $numFinal = preg_replace('/\{yy\}/i', date("y", $date), $numFinal); @@ -1224,8 +1214,7 @@ function check_value($mask, $value) $maskcounter = $reg[1]; $hasglobalcounter = true; } - else - { + else { // setting some defaults so the rest of the code won't fail if there is a third party counter $masktri = '00000'; $maskcounter = '00000'; @@ -1422,8 +1411,7 @@ function numero_semaine($time) { $numeroSemaine = 53; } - else - { + else { $numeroSemaine = 1; } } @@ -1528,8 +1516,7 @@ function dol_set_user_param($db, $conf, &$user, $tab) $user->conf->$key = $value; //print "key=".$key." user->conf->key=".$user->conf->$key; } - else - { + else { unset($user->conf->$key); } } @@ -1552,8 +1539,7 @@ function dol_print_reduction($reduction, $langs) { $string = $langs->transnoentities("Offered"); } - else - { + else { $string = vatrate($reduction, true); } @@ -1674,13 +1660,11 @@ function getListOfModels($db, $type, $maxfilenamelength = 0) $liste[$obj->id.':'.$record['fullname']] = dol_trunc($record['name'], $max, 'middle'); } } - else - { + else { $liste[0] = $obj->label.': '.$langs->trans("None"); } } - else - { + else { if ($type == 'member' && $obj->doc_template_name == 'standard') // Special case, if member template, we add variant per format { global $_Avery_Labels; @@ -1690,7 +1674,7 @@ function getListOfModels($db, $type, $maxfilenamelength = 0) $liste[$obj->id.':'.$key] = ($obj->label ? $obj->label : $obj->doc_template_name).' '.$val['name']; } } - else // Common usage + else // Common usage { $liste[$obj->id] = $obj->label ? $obj->label : $obj->doc_template_name; } @@ -1698,8 +1682,7 @@ function getListOfModels($db, $type, $maxfilenamelength = 0) $i++; } } - else - { + else { dol_print_error($db); return -1; } @@ -1777,8 +1760,7 @@ function getSoapParams() 'trace' => 1 ); } - else - { + else { $params = array('connection_timeout'=>$timeout, 'response_timeout'=>$response_timeout, 'proxy_use' => 0, @@ -1968,8 +1950,7 @@ function cleanCorruptedTree($db, $tabletocleantree, $fieldfkparent) $i++; } } - else - { + else { dol_print_error($db); } @@ -2148,7 +2129,7 @@ function colorAgressiveness($hex, $ratio = -50, $brightness = 0) if ($color > 127) $color += ((255 - $color) * ($ratio / 100)); if ($color < 128) $color -= ($color * ($ratio / 100)); } - else // We decrease agressiveness + else // We decrease agressiveness { if ($color > 128) $color -= (($color - 128) * (abs($ratio) / 100)); if ($color < 127) $color += ((128 - $color) * (abs($ratio) / 100)); @@ -2157,8 +2138,7 @@ function colorAgressiveness($hex, $ratio = -50, $brightness = 0) { $color = ($color * (100 + abs($brightness)) / 100); } - else - { + else { $color = ($color * (100 - abs($brightness)) / 100); } diff --git a/htdocs/core/lib/functionsnumtoword.lib.php b/htdocs/core/lib/functionsnumtoword.lib.php index 26db2bbec90..f3dfa25c05c 100644 --- a/htdocs/core/lib/functionsnumtoword.lib.php +++ b/htdocs/core/lib/functionsnumtoword.lib.php @@ -213,8 +213,7 @@ function dolNumberToWord($numero, $langs, $numorcurrency = 'number') $entexto .= hundreds2text($CdMILLON, $DdMILLON, $udMILLON); if (!$CdMMillon && !$DdMMillon && !$UdMMillon && !$CdMILLON && !$DdMILLON && $udMILLON == 1) $entexto .= " MILLÓN "; - else - $entexto .= " MILLONES "; + else $entexto .= " MILLONES "; } if ($number >= 1000) { $cdm = (int) ($numero / 100000); diff --git a/htdocs/core/lib/geturl.lib.php b/htdocs/core/lib/geturl.lib.php index ae0eb86882e..0175ed83e61 100644 --- a/htdocs/core/lib/geturl.lib.php +++ b/htdocs/core/lib/geturl.lib.php @@ -88,8 +88,7 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation = $array_param = null; curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); // HTTP request is 'PUT' if (!is_array($param)) parse_str($param, $array_param); - else - { + else { dol_syslog("parameter param must be a string", LOG_WARNING); $array_param = $param; } @@ -109,8 +108,7 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation = { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); // POST } - else - { + else { curl_setopt($ch, CURLOPT_POST, 0); // GET } @@ -144,8 +142,7 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation = dol_syslog("getURLContent response array is ".join(',', $rep)); } - else - { + else { $info = curl_getinfo($ch); // Ad keys to $rep @@ -183,8 +180,7 @@ function getDomainFromURL($url, $mode = 0) { $tmpdomain = preg_replace('/^.*\.([^\.]+)\.([^\.]+)\.([^\.]+)$/', '\1.\2.\3', $tmpdomain); // Remove part 'www.' before 'abc.mydomain.com' } - else - { + else { $tmpdomain = preg_replace('/^.*\.([^\.]+)\.([^\.]+)$/', '\1.\2', $tmpdomain); // Remove part 'www.abc.' before 'mydomain.com' } if (empty($mode)) diff --git a/htdocs/core/lib/images.lib.php b/htdocs/core/lib/images.lib.php index 4f65ca3a2bf..c13c9c0f56c 100644 --- a/htdocs/core/lib/images.lib.php +++ b/htdocs/core/lib/images.lib.php @@ -221,8 +221,7 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x = 0, // Compatibilite image GIF $imgThumb = imagecreate($newWidth, $newHeight); } - else - { + else { $imgThumb = imagecreatetruecolor($newWidth, $newHeight); } @@ -359,8 +358,7 @@ function correctExifImageOrientation($fileSource, $fileDest, $quality = 95) if ($fileDest === false) { return $img; } - else - { + else { // In fact there exif is only for JPG but just in case // Create image on disk $image = false; @@ -597,8 +595,7 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName = '_small', $thumbWidth = $maxWidth; $thumbHeight = $thumbWidth / $imgWhFact; } - else - { + else { // Si hauteur determinante $thumbHeight = $maxHeight; $thumbWidth = $thumbHeight * $imgWhFact; @@ -615,8 +612,7 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName = '_small', // Compatibilite image GIF $imgThumb = imagecreate($thumbWidth, $thumbHeight); } - else - { + else { $imgThumb = imagecreatetruecolor($thumbWidth, $thumbHeight); } diff --git a/htdocs/core/lib/invoice2.lib.php b/htdocs/core/lib/invoice2.lib.php index d5ca3431845..64ecdcf9e69 100644 --- a/htdocs/core/lib/invoice2.lib.php +++ b/htdocs/core/lib/invoice2.lib.php @@ -262,15 +262,13 @@ function rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filte $result = 1; } - else - { + else { if ($usestdout) print "No invoices found for criteria.\n"; else dol_syslog("No invoices found for criteria"); $result = 0; } } - else - { + else { dol_print_error($db); dol_syslog("scripts/invoices/rebuild_merge.php: Error"); $error++; diff --git a/htdocs/core/lib/json.lib.php b/htdocs/core/lib/json.lib.php index 44ad9cc6ff1..9bf2db7278c 100644 --- a/htdocs/core/lib/json.lib.php +++ b/htdocs/core/lib/json.lib.php @@ -54,8 +54,7 @@ function dol_json_encode($elements) { foreach ($elements as $key => $value) $num++; } - else - { + else { $num = count($elements); } //var_dump($num); @@ -75,8 +74,7 @@ function dol_json_encode($elements) } $output .= ']'; } - else - { + else { // associative (object) $output = '{'; $last = $num - 1; @@ -201,7 +199,7 @@ function _val($val) elseif (is_int($val)) return sprintf('%d', $val); elseif (is_float($val)) return sprintf('%F', $val); elseif (is_bool($val)) return ($val ? 'true' : 'false'); - else return 'null'; + else return 'null'; } if (!function_exists('json_decode')) diff --git a/htdocs/core/lib/ldap.lib.php b/htdocs/core/lib/ldap.lib.php index 038791ce1cc..b5ea5faf3c5 100644 --- a/htdocs/core/lib/ldap.lib.php +++ b/htdocs/core/lib/ldap.lib.php @@ -122,8 +122,7 @@ function show_ldap_test_button($butlabel, $testlabel, $key, $dn, $objectclass) $langs->load("errors"); print ''.$butlabel.''; } - else - { + else { print ''.$butlabel.''; } print '

'; diff --git a/htdocs/core/lib/memory.lib.php b/htdocs/core/lib/memory.lib.php index a301ac40a2b..6ed00c10b34 100644 --- a/htdocs/core/lib/memory.lib.php +++ b/htdocs/core/lib/memory.lib.php @@ -64,8 +64,7 @@ function dol_setcache($memoryid, $data) { return count($data); } - else - { + else { return -$rescode; } } @@ -87,8 +86,7 @@ function dol_setcache($memoryid, $data) { return count($data); } - else - { + else { return -1; } } @@ -134,8 +132,7 @@ function dol_getcache($memoryid) { return $data; } - else - { + else { return -$rescode; } } @@ -159,8 +156,7 @@ function dol_getcache($memoryid) { return $data; } - else - { + else { return -1; } } @@ -236,8 +232,7 @@ function dol_setshmop($memoryid, $data) shmop_close($handle); return ($shm_bytes_written1 + $shm_bytes_written2); } - else - { + else { print 'Error in shmop_open for memoryid='.$memoryid.' shmkey='.$shmkey.' 6+size=6+'.$size; return -1; } @@ -264,8 +259,7 @@ function dol_getshmop($memoryid) else return -1; shmop_close($handle); } - else - { + else { return -2; } return $data; diff --git a/htdocs/core/lib/modulebuilder.lib.php b/htdocs/core/lib/modulebuilder.lib.php index b9a958160d4..373e80e2a67 100644 --- a/htdocs/core/lib/modulebuilder.lib.php +++ b/htdocs/core/lib/modulebuilder.lib.php @@ -83,8 +83,7 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir = //$pathoffiletoedittmp=$destdir.'/class/'.strtolower($objectname).'.class.php.tmp'; //dol_delete_file($pathoffiletoedittmp, 0, 1, 1); - try - { + try { include_once $pathoffiletoeditsrc; if (class_exists($objectname)) $object = new $objectname($db); else return -4; @@ -234,8 +233,7 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = ' } // Load object from myobject.class.php - try - { + try { if (!is_object($object)) { include_once $pathoffiletoclasssrc; @@ -270,8 +268,7 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = ' $texttoinsert .= "\t".$key." ".$type; if ($key == 'rowid') $texttoinsert .= ' AUTO_INCREMENT PRIMARY KEY'; if ($key == 'entity') $texttoinsert .= ' DEFAULT 1'; - else - { + else { if ($val['default'] != '') { if (preg_match('/^null$/i', $val['default'])) $texttoinsert .= " DEFAULT NULL"; @@ -293,8 +290,7 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = ' { @chmod($pathoffiletoedittarget, octdec($newmask)); } - else - { + else { $error++; } @@ -338,8 +334,7 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = ' { @chmod($pathoffiletoedittarget, octdec($newmask)); } - else - { + else { $error++; } diff --git a/htdocs/core/lib/parsemd.lib.php b/htdocs/core/lib/parsemd.lib.php index 7dfd025609c..6a83fad87be 100644 --- a/htdocs/core/lib/parsemd.lib.php +++ b/htdocs/core/lib/parsemd.lib.php @@ -46,8 +46,7 @@ function dolMd2Html($content, $parser = 'parsedown', $replaceimagepath = null) $Parsedown = new Parsedown(); $content = $Parsedown->text($content); } - else - { + else { $content = nl2br($content); } diff --git a/htdocs/core/lib/payments.lib.php b/htdocs/core/lib/payments.lib.php index d031984552e..eedc8034d01 100644 --- a/htdocs/core/lib/payments.lib.php +++ b/htdocs/core/lib/payments.lib.php @@ -190,8 +190,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = '9.99', $freetag if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; - else - { + else { $out .= '&securekey='.($mode ? '' : ''); if ($mode == 1) $out .= "hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + order_ref)"; if ($mode == 0) $out .= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$type.$ref, 2); @@ -208,8 +207,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = '9.99', $freetag if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; - else - { + else { $out .= '&securekey='.($mode ? '' : ''); if ($mode == 1) $out .= "hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + invoice_ref)"; if ($mode == 0) $out .= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$type.$ref, 2); @@ -226,8 +224,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = '9.99', $freetag if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; - else - { + else { $out .= '&securekey='.($mode ? '' : ''); if ($mode == 1) $out .= "hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + contractline_ref)"; if ($mode == 0) $out .= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$type.$ref, 2); @@ -244,8 +241,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = '9.99', $freetag if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; - else - { + else { $out .= '&securekey='.($mode ? '' : ''); if ($mode == 1) $out .= "hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + member_ref)"; if ($mode == 0) $out .= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$type.$ref, 2); @@ -262,8 +258,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = '9.99', $freetag if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; - else - { + else { $out .= '&securekey='.($mode ? '' : ''); if ($mode == 1) $out .= "hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + donation_ref)"; if ($mode == 0) $out .= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$type.$ref, 2); diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 63789a18e62..bfa49911b02 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -55,8 +55,7 @@ function pdf_getFormat(Translate $outputlangs = null, $mode = 'setup') include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; $pdfformat = dol_getDefaultFormat($outputlangs); } - else - { + else { $pdfformat = $conf->global->MAIN_PDF_FORMAT; } @@ -306,8 +305,7 @@ function pdfGetHeightForHtmlContent(&$pdf, $htmlcontent) if ($end_page == $start_page) { $height = $end_y - $start_y; } - else - { + else { for ($page = $start_page; $page <= $end_page; ++$page) { $pdf->setPage($page); $tmpm = $pdf->getMargins(); @@ -514,8 +512,7 @@ function pdf_build_address($outputlangs, $sourcecompany, $targetcompany = '', $t } } } - else - { + else { $stringaddress .= ($stringaddress ? "\n" : '').$outputlangs->convToOutputCharset(dol_format_address($targetcompany)); // Country if (!empty($targetcompany->country_code) && $targetcompany->country_code != $sourcecompany->country_code) $stringaddress .= ($stringaddress ? "\n" : '').$outputlangs->convToOutputCharset($outputlangs->transnoentitiesnoconv("Country".$targetcompany->country_code)); @@ -804,8 +801,7 @@ function pdf_bank(&$pdf, $outputlangs, $curx, $cury, $account, $onlynumber = 0, $cury += 8; } } - else - { + else { $pdf->SetFont('', 'B', $default_font_size - $diffsizecontent); $pdf->SetXY($curx, $cury); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("Bank").': '.$outputlangs->convToOutputCharset($account->bank), 0, 'L', 0); @@ -1059,8 +1055,7 @@ function pdf_pagefoot(&$pdf, $outputlangs, $paramfreetext, $fromcompany, $marge_ } $freetextheight = $pdf->getStringHeight($width, $line); } - else - { + else { $freetextheight = pdfGetHeightForHtmlContent($pdf, dol_htmlentitiesbr($line, 1, 'UTF-8', 0)); // New method (works for HTML content) //print '
'.$freetextheight;exit; } @@ -1076,8 +1071,7 @@ function pdf_pagefoot(&$pdf, $outputlangs, $paramfreetext, $fromcompany, $marge_ { $pdf->MultiCell(0, 3, $line, 0, $align, 0); } - else - { + else { $pdf->writeHTMLCell($pdf->page_largeur - $pdf->margin_left - $pdf->margin_right, $freetextheight, $dims['lm'], $dims['hk'] - $marginwithfooter, dol_htmlentitiesbr($line, 1, 'UTF-8', 0)); } $posy -= $freetextheight; @@ -1245,8 +1239,7 @@ function pdf_getlinedesc($object, $i, $outputlangs, $hideref = 0, $hidedesc = 0, include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; $prodser = new ProductFournisseur($db); } - else - { + else { include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; $prodser = new Product($db); } @@ -1328,8 +1321,7 @@ function pdf_getlinedesc($object, $i, $outputlangs, $hideref = 0, $hidedesc = 0, $discount->fetch($object->lines[$i]->fk_remise_except); $libelleproduitservice = $outputlangs->transnoentitiesnoconv("DiscountFromExcessPaid", $discount->ref_invoice_supplier_source); } - else - { + else { if ($idprod) { if (empty($hidedesc)) @@ -1338,14 +1330,12 @@ function pdf_getlinedesc($object, $i, $outputlangs, $hideref = 0, $hidedesc = 0, { $libelleproduitservice = $desc."\n".$libelleproduitservice; } - else - { + else { $libelleproduitservice .= $desc; } } } - else - { + else { $libelleproduitservice .= $desc; } } @@ -1360,8 +1350,7 @@ function pdf_getlinedesc($object, $i, $outputlangs, $hideref = 0, $hidedesc = 0, { $prefix_prodserv = $outputlangs->transnoentitiesnoconv("Service")." "; } - else - { + else { $prefix_prodserv = $outputlangs->transnoentitiesnoconv("Product")." "; } } @@ -1374,14 +1363,13 @@ function pdf_getlinedesc($object, $i, $outputlangs, $hideref = 0, $hidedesc = 0, $ref_prodserv = $ref_supplier; elseif ($conf->global->PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES == 2) $ref_prodserv = $ref_supplier.' ('.$outputlangs->transnoentitiesnoconv("InternalRef").' '.$prodser->ref.')'; - else // Common case + else // Common case { $ref_prodserv = $prodser->ref; // Show local ref if ($ref_supplier) $ref_prodserv .= ($prodser->ref ? ' (' : '').$outputlangs->transnoentitiesnoconv("SupplierRef").' '.$ref_supplier.($prodser->ref ? ')' : ''); } } - else - { + else { $ref_prodserv = $prodser->ref; // Show local ref only } @@ -1944,8 +1932,7 @@ function pdf_getlineprogress($object, $i, $outputlangs, $hidedetails = 0, $hookm } $result = ($object->lines[$i]->situation_percent - $prev_progress).'%'; } - else - $result = $object->lines[$i]->situation_percent.'%'; + else $result = $object->lines[$i]->situation_percent.'%'; } } return $result; @@ -2001,8 +1988,7 @@ function pdf_getlinetotalexcltax($object, $i, $outputlangs, $hidedetails = 0) } $result .= price($sign * ($total_ht / ($object->lines[$i]->situation_percent / 100)) * $progress, 0, $outputlangs); } - else - { + else { $result .= price($sign * $total_ht, 0, $outputlangs); } } @@ -2187,8 +2173,7 @@ function pdf_getLinkedObjects($object, $outputlangs) //if (! empty($linkedobjects[$objecttype]['date_value'])) $linkedobjects[$objecttype]['date_value'].=' / '; //$linkedobjects[$objecttype]['date_value'].= dol_print_date($elementobject->date_delivery,'day','',$outputlangs); } - else - { + else { $linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefOrder").' / '.$outputlangs->transnoentities("RefSending"); if (empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'] = $outputlangs->convToOutputCharset($order->ref).($order->ref_client ? ' ('.$order->ref_client.')' : ''); $linkedobjects[$objecttype]['ref_value'] .= ' / '.$outputlangs->transnoentities($elementobject->ref); @@ -2235,7 +2220,7 @@ function pdf_getSizeForImage($realpath) $width = $maxwidth; $height = (int) round($maxwidth * $tmp['height'] / $tmp['width']); } - else // No pb with maxheight + else // No pb with maxheight { $height = $maxheight; } @@ -2261,8 +2246,7 @@ function pdfGetLineTotalDiscountAmount($object, $i, $outputlangs, $hidedetails = { return $outputlangs->transnoentities("Option"); } - else - { + else { if (is_object($hookmanager)) { $special_code = $object->lines[$i]->special_code; diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php index c06c4431562..8f77d24bdab 100644 --- a/htdocs/core/lib/price.lib.php +++ b/htdocs/core/lib/price.lib.php @@ -132,7 +132,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt $localtax2_type = $localtaxes_array[2]; $localtax2_rate = $localtaxes_array[3]; } - else // deprecated method. values and type for localtaxes must be provided by caller and loaded with getLocalTaxesFromRate using the full vat rate (including text code) + else // deprecated method. values and type for localtaxes must be provided by caller and loaded with getLocalTaxesFromRate using the full vat rate (including text code) { dol_syslog("Price.lib::calcul_price_total search vat information using old deprecated method", LOG_WARNING); @@ -159,8 +159,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt // pu calculation from pu_devise if pu empty if (empty($pu) && !empty($pu_devise)) { if (!empty($multicurrency_tx)) $pu = $pu_devise / $multicurrency_tx; - else - { + else { dol_syslog('Price.lib::calcul_price_total function called with bad parameters combination (multicurrency_tx empty when pu_devise not) ', LOG_ERR); return array(); } @@ -169,8 +168,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt // pu_devise calculation from pu if (empty($pu_devise) && !empty($multicurrency_tx)) { if (is_numeric($pu) && is_numeric($multicurrency_tx)) $pu_devise = $pu * $multicurrency_tx; - else - { + else { dol_syslog('Price.lib::calcul_price_total function called with bad parameters combination (pu or multicurrency_tx are not numeric)', LOG_ERR); return array(); } @@ -193,8 +191,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt $tot_avec_remise_wt = price2num($tot_avec_remise * (1 + ($txtva / 100)), 'MU'); $pu_wt = price2num($pu * (1 + ($txtva / 100)), 'MU'); } - else - { + else { $tot_sans_remise_wt = $tot_sans_remise; $tot_avec_remise_wt = $tot_avec_remise; $pu_wt = $pu; @@ -269,8 +266,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt $result5bis = price2num($pu * (1 + ($txtva / 100)) + $localtaxes[2], 'MU'); // Si TVA consideree normale (non NPR) $result[4] = price2num($result5bis - ($result[3] + $localtaxes[2]), 'MU'); } - else - { + else { // We work to define prices using the price with tax $result[8] = price2num($tot_sans_remise + $localtaxes[0], 'MT'); $result[6] = price2num($tot_sans_remise / (1 + ((($info_bits & 1) ? 0 : $txtva) / 100)), 'MT'); // Selon TVA NPR ou non @@ -355,8 +351,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt $result[9] = round($result[9] / $conf->global->MAIN_ROUNDING_RULE_TOT, 0) * $conf->global->MAIN_ROUNDING_RULE_TOT; $result[10] = round($result[10] / $conf->global->MAIN_ROUNDING_RULE_TOT, 0) * $conf->global->MAIN_ROUNDING_RULE_TOT; } - else - { + else { $result[1] = round($result[1] / $conf->global->MAIN_ROUNDING_RULE_TOT, 0) * $conf->global->MAIN_ROUNDING_RULE_TOT; $result[2] = round($result[2] / $conf->global->MAIN_ROUNDING_RULE_TOT, 0) * $conf->global->MAIN_ROUNDING_RULE_TOT; $result[0] = price2num($result[2] - $result[1], 'MT'); @@ -406,8 +401,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt $result[25] = $newresult[9]; $result[26] = $newresult[10]; } - else - { + else { $result[16] = $result[0]; $result[17] = $result[1]; $result[18] = $result[2]; diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index 43acb16ba2a..e1ed6efc805 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -553,8 +553,7 @@ function measuringUnitString($unit, $measuring_style = '', $scale = '', $use_sho 't.active' => 1 ); } - else - { + else { $arrayforfilter = array( 't.rowid' => $unit, 't.unit_type' => $measuring_style, diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index bef3d9fd0dc..c84762f8575 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -419,14 +419,12 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t { $showlineingray = 1; // We will show line but in gray } - else - { + else { $showline = 0; // No reason to show line } } } - else - { + else { // Caller did not ask to filter on tasks of a specific user (this probably means he want also tasks of all users, into public project // or into all other projects if user has permission to). if (empty($user->rights->projet->all->lire)) @@ -682,8 +680,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t if ($lines[$i]->planned_workload) $total_projectlinesa_declared_if_planned += $lines[$i]->planned_workload * $lines[$i]->progress / 100; } } - else - { + else { //$level--; } } @@ -1380,8 +1377,7 @@ function projectLinesPerDay(&$inc, $parent, $fuser, $lines, &$level, &$projectsr } $level--; } - else - { + else { //$level--; } } @@ -1745,8 +1741,7 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$ } $level--; } - else - { + else { //$level--; } } @@ -2006,8 +2001,7 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, & } $level--; } - else - { + else { //$level--; } } @@ -2110,8 +2104,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks $sql .= ", ".MAIN_DB_PREFIX."element_contact as ec"; $sql .= ", ".MAIN_DB_PREFIX."c_type_contact as ctc"; } - else - { + else { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t ON p.rowid = t.fk_projet"; } $sql .= " WHERE p.entity IN (".getEntity('project').")"; @@ -2339,8 +2332,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks $db->free($resql); } - else - { + else { dol_print_error($db); } @@ -2475,8 +2467,7 @@ function getTaskProgressView($task, $label = true, $progressNumber = true, $hide } $out .= ' '; } - else - { + else { // bad $out .= '
'; $out .= '
'; diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index 03f1525eb91..76ce3cb5b01 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -504,8 +504,7 @@ function checkUserAccessToObject($user, $featuresarray, $objectid = 0, $tableand $sql .= " WHERE dbt.".$dbt_select." IN (".$objectid.")"; $sql .= " AND dbt.entity IS NOT NULL"; } - else - { + else { $sql .= ",".MAIN_DB_PREFIX."usergroup_user as ug"; $sql .= " WHERE dbt.".$dbt_select." IN (".$objectid.")"; $sql .= " AND ((ug.fk_user = dbt.rowid"; @@ -518,8 +517,7 @@ function checkUserAccessToObject($user, $featuresarray, $objectid = 0, $tableand $sql .= " AND dbt.entity IN (".getEntity($sharedelement, 1).")"; } } - else - { + else { $sql .= " WHERE dbt.".$dbt_select." IN (".$objectid.")"; $sql .= " AND dbt.entity IN (".getEntity($sharedelement, 1).")"; } @@ -590,8 +588,7 @@ function checkUserAccessToObject($user, $featuresarray, $objectid = 0, $tableand $tmparray = explode(',', $tmps); if (!in_array($objectid, $tmparray)) return false; } - else - { + else { $sql = "SELECT COUNT(dbt.".$dbt_select.") as nb"; $sql .= " FROM ".MAIN_DB_PREFIX.$dbtablename." as dbt"; $sql .= " WHERE dbt.".$dbt_select." IN (".$objectid.")"; @@ -611,8 +608,7 @@ function checkUserAccessToObject($user, $featuresarray, $objectid = 0, $tableand $tmparray = explode(',', $tmps); if (!in_array($task->fk_project, $tmparray)) return false; } - else - { + else { $sql = "SELECT COUNT(dbt.".$dbt_select.") as nb"; $sql .= " FROM ".MAIN_DB_PREFIX.$dbtablename." as dbt"; $sql .= " WHERE dbt.".$dbt_select." IN (".$objectid.")"; @@ -662,8 +658,7 @@ function checkUserAccessToObject($user, $featuresarray, $objectid = 0, $tableand $obj = $db->fetch_object($resql); if (!$obj || $obj->nb < count(explode(',', $objectid))) return false; } - else - { + else { return false; } } @@ -723,8 +718,7 @@ function accessforbidden($message = '', $printheader = 1, $printfooter = 1, $sho print $langs->trans("CurrentLogin").': '.$user->login.'
'; print $langs->trans("ErrorForbidden2", $langs->transnoentitiesnoconv("Home"), $langs->transnoentitiesnoconv("Users")); } - else - { + else { print $langs->trans("ErrorForbidden3"); } } diff --git a/htdocs/core/lib/security2.lib.php b/htdocs/core/lib/security2.lib.php index 04d16084365..fba8ba346c6 100644 --- a/htdocs/core/lib/security2.lib.php +++ b/htdocs/core/lib/security2.lib.php @@ -102,8 +102,7 @@ function checkLoginPassEntity($usertotest, $passwordtotest, $entitytotest, $auth $dol_screenheight = GETPOST('screenheight'); } } - else - { + else { dol_syslog("Authentication KO - failed to load file '".$authfile."'", LOG_ERR); sleep(1); // Load translation files required by the page @@ -180,8 +179,7 @@ if (!function_exists('dol_loginfunction')) if (file_exists($tmp)) { $template_dir = preg_replace('/login\.tpl\.php$/', '', $tmp); break; } } } - else - { + else { $template_dir = DOL_DOCUMENT_ROOT."/core/tpl/"; } @@ -376,8 +374,7 @@ function encodedecode_dbpassconf($level = 0) $val = dol_decode($val); $passwd = $val; } - else - { + else { $passwd = $val; $val = dol_encode($val); $passwd_crypted = $val; @@ -401,8 +398,7 @@ function encodedecode_dbpassconf($level = 0) //print 'passwd = '.$passwd.' - passwd_crypted = '.$passwd_crypted; //exit; } - else - { + else { $config .= $buffer; } } @@ -423,14 +419,12 @@ function encodedecode_dbpassconf($level = 0) return 1; } - else - { + else { dol_syslog("encodedecode_dbpassconf Failed to open conf.php file for writing", LOG_WARNING); return -1; } } - else - { + else { dol_syslog("encodedecode_dbpassconf Failed to read conf.php", LOG_ERR); return -2; } @@ -476,7 +470,7 @@ function getRandomPassword($generic = false, $replaceambiguouschars = null, $len $generated_password = str_shuffle($randomCode); } - else // Old platform, non cryptographic random + else // Old platform, non cryptographic random { $max = strlen($lowercase) - 1; for ($x = 0; $x < $nbofchar; $x++) { @@ -514,8 +508,7 @@ function getRandomPassword($generic = false, $replaceambiguouschars = null, $len { $generated_password = str_replace($replaceambiguouschars, $numbers{random_int(0, $max)}, $generated_password); } - else - { + else { $generated_password = str_replace($replaceambiguouschars, $numbers{mt_rand(0, $max)}, $generated_password); } } diff --git a/htdocs/core/lib/sendings.lib.php b/htdocs/core/lib/sendings.lib.php index ad1e6304d03..541aab2358e 100644 --- a/htdocs/core/lib/sendings.lib.php +++ b/htdocs/core/lib/sendings.lib.php @@ -305,8 +305,7 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $objp->product_label; } - else - { + else { $label = (!empty($objp->label) ? $objp->label : $objp->product_label); } @@ -333,8 +332,7 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') print '
"; if ($objp->fk_product_type == 1) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); @@ -440,8 +438,7 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') print dol_print_date($receiving->date_delivery, 'day'); print '   
'; } - else - { + else { print $tab[$x]['entry']; } //print ' -> A '.$tab[$x]['rowid'].' mainmenu='.$tab[$x]['mainmenu'].' leftmenu='.$tab[$x]['leftmenu'].' fk_mainmenu='.$tab[$x]['fk_mainmenu'].' fk_leftmenu='.$tab[$x]['fk_leftmenu'].'
'."\n"; @@ -211,8 +209,7 @@ function tree_recur($tab, $pere, $rang, $iddivjstree = 'iddivjstree', $donoreset print $tab[$x]['buttons']; print ''; } - else - { + else { print $tab[$x]['entry']; } //print ' -> B '.$tab[$x]['rowid'].' mainmenu='.$tab[$x]['mainmenu'].' leftmenu='.$tab[$x]['leftmenu'].' fk_mainmenu='.$tab[$x]['fk_mainmenu'].' fk_leftmenu='.$tab[$x]['fk_leftmenu'].'
'."\n"; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 9ac9383e516..2fbc6eee325 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -347,8 +347,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ' '; print ''; } - else - { + else { $dirthemestring = ''; foreach ($dirthemes as $dirtheme) { @@ -404,8 +403,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print ' '.$subdir.''; } - else - { + else { print ' '.$subdir; } print ''; @@ -442,8 +440,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { // Nothing } - else - { + else { // Show logo print ''.$langs->trans("EnableShowLogo").''; if ($edit) @@ -451,8 +448,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ajax_constantonoff('MAIN_SHOW_LOGO', array(), null, 0, 0, 1); //print $form->selectyesno('MAIN_SHOW_LOGO', $conf->global->MAIN_SHOW_LOGO, 1); } - else - { + else { print yn($conf->global->MAIN_SHOW_LOGO); } print ''; @@ -487,8 +483,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($edit) print '
('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; print '';*/ } - else - { + else { $default = $langs->trans('No'); print ''; print ''.$langs->trans("TopMenuDisableImages").''; @@ -498,8 +493,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ajax_constantonoff('THEME_TOPMENU_DISABLE_IMAGE', array(), null, 0, 0, 1); //print $form->selectyesno('THEME_TOPMENU_DISABLE_IMAGE', $conf->global->THEME_TOPMENU_DISABLE_IMAGE, 1); } - else - { + else { print yn($conf->global->THEME_TOPMENU_DISABLE_IMAGE); } print '   '.$langs->trans("Default").': '.$default.' '; @@ -532,8 +526,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($edit) print '
('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; print '';*/ } - else - { + else { print ''; print ''.$langs->trans("BackgroundColor").''; print ''; @@ -542,8 +535,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKBODY, array()), ''), 'THEME_ELDY_BACKBODY', 'formcolor', 1).' '; } - else - { + else { $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKBODY, array()), ''); if ($color) print ''; else print $langs->trans("Default"); @@ -578,8 +570,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($edit) print '
('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; print '';*/ } - else - { + else { $default = (empty($colorbackhmenu1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbackhmenu1))); print ''; @@ -589,8 +580,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1, array()), ''), 'THEME_ELDY_TOPMENU_BACK1', 'formcolor', 1).' '; } - else - { + else { $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1, array()), ''); if ($color) print ''; else print $langs->trans("Default"); @@ -625,8 +615,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($edit) print '
('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; print '';*/ } - else - { + else { $default = (empty($colorbackvmenu1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbackvmenu1))); print ''; @@ -636,8 +625,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_VERMENU_BACK1, array()), ''), 'THEME_ELDY_VERMENU_BACK1', 'formcolor', 1).' '; } - else - { + else { $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_VERMENU_BACK1, array()), ''); if ($color) print ''; else print $langs->trans("Default"); @@ -652,8 +640,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($foruserprofile) { } - else - { + else { $default = (empty($colortexttitlenotab) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitlenotab))); print ''; @@ -663,8 +650,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTTITLENOTAB, array()), ''), 'THEME_ELDY_TEXTTITLENOTAB', 'formcolor', 1).' '; } - else - { + else { print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLENOTAB, $langs->trans("Default")); } print '   '.$langs->trans("Default").': '.$default.' '; @@ -678,8 +664,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($foruserprofile) { } - else - { + else { $default = (empty($colorbacktitle1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacktitle1))); print ''; @@ -689,8 +674,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKTITLE1, array()), ''), 'THEME_ELDY_BACKTITLE1', 'formcolor', 1).' '; } - else - { + else { print $formother->showColor($conf->global->THEME_ELDY_BACKTITLE1, $langs->trans("Default")); } print '   '.$langs->trans("Default").': '.$default.' '; // $colorbacktitle1 in CSS @@ -704,8 +688,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($foruserprofile) { } - else - { + else { $default = (empty($colortexttitle) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitle))); print ''; @@ -715,8 +698,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTTITLE, array()), ''), 'THEME_ELDY_TEXTTITLE', 'formcolor', 1).' '; } - else - { + else { print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLE, $langs->trans("Default")); } print '   '.$langs->trans("Default").': '.$default.' '; @@ -730,8 +712,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($foruserprofile) { } - else - { + else { $default=(empty($colortexttitlelink) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitlelink))); print ''; @@ -741,8 +722,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTTITLELINK, array()), ''), 'THEME_ELDY_TEXTTITLELINK', 'formcolor', 1).' '; } - else - { + else { print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLELINK, $langs->trans("Default")); } print '   '.$langs->trans("Default").': '.$default.' '; @@ -757,8 +737,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($foruserprofile) { } - else - { + else { $default = (empty($colorbacklineimpair1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklineimpair1))); print ''; @@ -768,8 +747,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEIMPAIR1, array()), ''), 'THEME_ELDY_LINEIMPAIR1', 'formcolor', 1).' '; } - else - { + else { $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEIMPAIR1, array()), ''); if ($color) print ''; else print $langs->trans("Default"); @@ -784,8 +762,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($foruserprofile) { } - else - { + else { $default = (empty($colorbacklinepair1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepair1))); print ''; @@ -795,8 +772,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEPAIR1, array()), ''), 'THEME_ELDY_LINEPAIR1', 'formcolor', 1).' '; } - else - { + else { $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEPAIR1, array()), ''); if ($color) print ''; else print $langs->trans("Default"); @@ -831,8 +807,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) if ($edit) print '
('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; print '';*/ } - else - { + else { $default = (empty($colortextlink) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortextlink))); print ''; @@ -842,12 +817,10 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK, array()), ''), 'THEME_ELDY_TEXTLINK', 'formcolor', 1).' '; } - else - { + else { $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK, array()), ''); if ($color) print ''; - else - { + else { //print ''; //print ''.$langs->trans("Default").''; print $langs->trans("Default"); @@ -887,8 +860,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER, array()), ''); print $formother->selectColor($color, 'THEME_ELDY_USE_HOVER', 'formcolor', 1).' '; } - else - { + else { if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color = colorArrayToHex(colorStringToArray($colorbacklinepairhover)); else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER, array()), ''); if ($color) @@ -917,8 +889,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ''; */ } - else - { + else { $default = (empty($colorbacklinepairchecked) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepairchecked))); print ''; @@ -932,8 +903,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_CHECKED, array()), ''); print $formother->selectColor($color, 'THEME_ELDY_USE_CHECKED', 'formcolor', 1).' '; } - else - { + else { if ($conf->global->THEME_ELDY_USE_CHECKED == '1') $color = 'e6edf0'; else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_CHECKED, array()), ''); if ($color) @@ -962,14 +932,12 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $form->selectyesno('MAIN_OPTIMIZEFORTEXTBROWSER', $fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER, 1); } - else - { + else { if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { print yn($fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER); } - else - { + else { print yn(1); if (empty($fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER)) print ' ('.$langs->trans("ForcedByGlobalSetup").')'; } @@ -979,8 +947,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ''; print ''; } - else - { + else { /*var_dump($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER); $default=$langs->trans('No'); print ''; @@ -1024,8 +991,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $form->selectArray('MAIN_OPTIMIZEFORCOLORBLIND', $colorBlindOptions, $fuser->conf->MAIN_OPTIMIZEFORCOLORBLIND, 0); } - else - { + else { if (!empty($fuser->conf->MAIN_OPTIMIZEFORCOLORBLIND) && isset($colorBlindOptions[$fuser->conf->MAIN_OPTIMIZEFORCOLORBLIND])) { print $colorBlindOptions[$fuser->conf->MAIN_OPTIMIZEFORCOLORBLIND]; } @@ -1038,8 +1004,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ''; print ''; } - else - { + else { } print ''; } diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 1864ca27bea..9dd7708c36d 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -94,8 +94,7 @@ function dolKeepOnlyPhpCode($str) { $newstr .= $partlings[0].'?>'; } - else - { + else { $newstr .= $part.'?>'; } } @@ -300,7 +299,7 @@ function dolWebsiteOutput($content, $contenttype = 'html', $containerid = '') $content = str_replace('!~!~!~', '', $content); } } - else // REPLACEMENT OF LINKS When page called from virtual host + else // REPLACEMENT OF LINKS When page called from virtual host { $symlinktomediaexists = 1; if ($website->virtualhost) { @@ -336,8 +335,7 @@ function dolWebsiteOutput($content, $contenttype = 'html', $containerid = '') $content = preg_replace('/(]*src=")\/?viewimage\.php/', '\1/wrapper.php', $content, -1, $nbrep); $content = preg_replace('/(]*href=")\/?documents\.php/', '\1/wrapper.php', $content, -1, $nbrep); } - else - { + else { // ]*src=")\/?image\//', '\1/medias/image/', $content, -1, $nbrep); $content = preg_replace('/(url\(["\']?)\/?image\//', '\1/medias/image/', $content, -1, $nbrep); @@ -426,8 +424,7 @@ function redirectToContainer($containerref, $containeraliasalt = '', $containeri { $containerref = $tmpwebsitepage->pageurl; } - else - { + else { print "Error, page contains a redirect to the alternative alias '".$containeraliasalt."' that does not exists in web site (".$website->id." / ".$website->ref.")"; exit; } @@ -464,18 +461,16 @@ function redirectToContainer($containerref, $containeraliasalt = '', $containeri print "Error, page with uri '.$currenturi.' try a redirect to the same alias page '".$containerref."' in web site '".$website->ref."'"; exit; } - else - { + else { $newurl = preg_replace('/&pageref=([^&]+)/', '&pageref='.$containerref, $currenturi); } } - else - { + else { $newurl = $currenturi.'&pageref='.urlencode($containerref); } } } - else // When page called from virtual host server + else // When page called from virtual host server { $newurl = '/'.$containerref.'.php'; } @@ -488,8 +483,7 @@ function redirectToContainer($containerref, $containeraliasalt = '', $containeri header("Location: ".$newurl); exit; } - else - { + else { print "Error, page contains a redirect to the alias page '".$containerref."' that does not exists in web site (".$website->id." / ".$website->ref.")"; exit; } @@ -601,7 +595,7 @@ function getStructuredData($type, $data = array()) if (is_array($mysoc->socialnetworks) && count($mysoc->socialnetworks) > 0) { $ret .= '"sameAs": ['; $i = 0; - foreach($mysoc->socialnetworks as $key => $value) { + foreach ($mysoc->socialnetworks as $key => $value) { if ($key == 'linkedin') { $ret.= '"https://www.'.$key.'.com/company/'.dol_escape_json($value).'"'; } elseif ($key == 'youtube') { @@ -670,7 +664,7 @@ function getStructuredData($type, $data = array()) $ret .= '"keywords": ['; $i = 0; $arrayofkeywords = explode(',', $websitepage->keywords); - foreach($arrayofkeywords as $keyword) { + foreach ($arrayofkeywords as $keyword) { $ret.= '"'.dol_escape_json($keyword).'"'; $i++; if ($i < count($arrayofkeywords)) $ret .= ', '; @@ -810,8 +804,7 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so $arrayresult['code'] = 'KO'; $arrayresult['message'] = $weblangs->trans("ErrorSearchCriteriaTooSmall"); } - else - { + else { $tmparrayoftype = explode(',', $type); foreach ($tmparrayoftype as $tmptype) { if (!in_array($tmptype, array('', 'page', 'blogpost'))) { @@ -873,8 +866,7 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so $i++; } } - else - { + else { $error++; $arrayresult['code'] = $db->lasterrno(); $arrayresult['message'] = $db->lasterror(); @@ -934,8 +926,7 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so $arrayresult['message'] = $weblangs->trans("NoRecordFound"); } } - else - { + else { $error++; $arrayresult['code'] = 'KO'; $arrayresult['message'] = 'No supported algorithm found'; @@ -985,8 +976,7 @@ function getAllImages($object, $objectpage, $urltograb, &$tmp, &$action, $modify $urltograbdirrootwithoutslash = getRootURLFromURL($urltograb); $urltograbbis = $urltograbdirrootwithoutslash.$regs[2][$key]; // We use dirroot } - else - { + else { $urltograbbis = $urltograb.'/'.$regs[2][$key]; // We use dir of grabbed file } @@ -1029,8 +1019,7 @@ function getAllImages($object, $objectpage, $urltograb, &$tmp, &$action, $modify setEventMessages('Error getting '.$urltograbbis.': '.$tmpgeturl['http_code'], null, 'errors'); $action = 'create'; } - else - { + else { $alreadygrabbed[$urltograbbis] = 1; // Track that file was alreay grabbed. dol_mkdir(dirname($filetosave)); @@ -1062,8 +1051,7 @@ function getAllImages($object, $objectpage, $urltograb, &$tmp, &$action, $modify $urltograbdirrootwithoutslash = getRootURLFromURL($urltograb); $urltograbbis = $urltograbdirrootwithoutslash.$regs[2][$key]; // We use dirroot } - else - { + else { $urltograbbis = $urltograb.'/'.$regs[2][$key]; // We use dir of grabbed file } @@ -1108,8 +1096,7 @@ function getAllImages($object, $objectpage, $urltograb, &$tmp, &$action, $modify setEventMessages('Error getting '.$urltograbbis.': '.$tmpgeturl['http_code'], null, 'errors'); $action = 'create'; } - else - { + else { $alreadygrabbed[$urltograbbis] = 1; // Track that file was alreay grabbed. dol_mkdir(dirname($filetosave)); diff --git a/htdocs/core/lib/xcal.lib.php b/htdocs/core/lib/xcal.lib.php index 440f1147cbf..33db8490a75 100644 --- a/htdocs/core/lib/xcal.lib.php +++ b/htdocs/core/lib/xcal.lib.php @@ -230,8 +230,7 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) $enddate = dol_time_plus_duree($startdate, 1, "d"); } } - else - { + else { if (empty($enddate)) { $enddate = $startdate + $duration; @@ -316,8 +315,7 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) @chmod($outputfile, octdec($conf->global->MAIN_UMASK)); } } - else - { + else { dol_syslog("xcal.lib.php::build_calfile Failed to open file ".$outputfile." for writing"); return -2; } @@ -526,8 +524,7 @@ function calEncode($line) $out .= $newpara; } - else - { + else { $strlength = dol_strlen($line); for ($j = 0; $j < $strlength; $j++) diff --git a/htdocs/core/login/functions_dolibarr.php b/htdocs/core/login/functions_dolibarr.php index ea3fa2f3a19..333e4741cd1 100644 --- a/htdocs/core/login/functions_dolibarr.php +++ b/htdocs/core/login/functions_dolibarr.php @@ -107,8 +107,7 @@ function check_user_password_dolibarr($usertotest, $passwordtotest, $entitytotes { $login = $obj->login; } - else - { + else { sleep(2); // Anti brut force protection dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentication KO bad password for '".$usertotest."', cryptType=".$cryptType, LOG_NOTICE); @@ -124,8 +123,7 @@ function check_user_password_dolibarr($usertotest, $passwordtotest, $entitytotes global $mc; if (!isset($mc)) $conf->multicompany->enabled = false; // Global not available, disable $conf->multicompany->enabled for safety - else - { + else { $ret = $mc->checkRight($obj->rowid, $entitytotest); if ($ret < 0) { @@ -135,8 +133,7 @@ function check_user_password_dolibarr($usertotest, $passwordtotest, $entitytotes } } } - else - { + else { dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentication KO user not found for '".$usertotest."'", LOG_NOTICE); sleep(1); @@ -146,8 +143,7 @@ function check_user_password_dolibarr($usertotest, $passwordtotest, $entitytotes $_SESSION["dol_loginmesg"] = $langs->trans("ErrorBadLoginPassword"); } } - else - { + else { dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentication KO db error for '".$usertotest."' error=".$db->lasterror(), LOG_ERR); sleep(1); $_SESSION["dol_loginmesg"] = $db->lasterror(); diff --git a/htdocs/core/login/functions_ldap.php b/htdocs/core/login/functions_ldap.php index 3a8b274c109..9f7f5f1d81c 100644 --- a/htdocs/core/login/functions_ldap.php +++ b/htdocs/core/login/functions_ldap.php @@ -127,8 +127,7 @@ function check_user_password_ldap($usertotest, $passwordtotest, $entitytotest) return ''; } } - else - { + else { if ($ldapdebug) print "DEBUG: ".$ldap->error."
\n"; } $ldap->close(); @@ -219,8 +218,7 @@ function check_user_password_ldap($usertotest, $passwordtotest, $entitytotest) $_SESSION["dol_loginmesg"] = $langs->trans("ErrorBadLoginPassword"); } } - else - { + else { /* Login failed. Return false, together with the error code and text from ** the LDAP server. The common error codes and reasons are listed below : ** (for iPlanet, other servers may differ) diff --git a/htdocs/core/login/functions_openid.php b/htdocs/core/login/functions_openid.php index a401dfd7764..c354d2d8d0e 100644 --- a/htdocs/core/login/functions_openid.php +++ b/htdocs/core/login/functions_openid.php @@ -57,8 +57,7 @@ function check_user_password_openid($usertotest, $passwordtotest, $entitytotest) $openid->SetApprovedURL($protocol.$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"]); // Send Response from OpenID server to this script $openid->Redirect(); // This will redirect user to OpenID Server } - else - { + else { $error = $openid->GetError(); return false; } @@ -96,8 +95,7 @@ function check_user_password_openid($usertotest, $passwordtotest, $entitytotest) $error = $openid->GetError(); return false; } - else - { + else { // Signature Verification Failed //echo "INVALID AUTHORIZATION"; return false; diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index 4b4a4c54151..c58c8049c27 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -145,8 +145,7 @@ function print_auguria_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout { $urllogo=DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_mini); }*/ - else - { + else { $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo_squarred_alpha.png'; $logoContainerAdditionalClass = ''; } @@ -411,8 +410,7 @@ function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$t $i++; } } - else - { + else { // Should not happend. Entries are added $newmenu->add('', $langs->trans("NoJournalDefined"), 2, $user->rights->accounting->comptarapport->lire); } @@ -474,8 +472,7 @@ function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$t { print '
'."\n"; } - else - { + else { print '
'."\n"; } } @@ -539,8 +536,7 @@ function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$t print ''."\n"; $lastlevel0 = 'greyed'; } - else - { + else { $lastlevel0 = 'hidden'; } if ($showmenu) diff --git a/htdocs/core/menus/standard/auguria_menu.php b/htdocs/core/menus/standard/auguria_menu.php index 2a67d43c1e3..c654e823b5c 100644 --- a/htdocs/core/menus/standard/auguria_menu.php +++ b/htdocs/core/menus/standard/auguria_menu.php @@ -79,8 +79,7 @@ class MenuManager $_SESSION["mainmenu"] = $mainmenu; $_SESSION["leftmenuopened"] = ""; } - else - { + else { // On va le chercher en session si non defini par le lien $mainmenu = isset($_SESSION["mainmenu"]) ? $_SESSION["mainmenu"] : ''; } @@ -97,8 +96,7 @@ class MenuManager //$leftmenu=""; $_SESSION["leftmenuopened"] = ""; } - else - { + else { $_SESSION["leftmenuopened"] = $leftmenu; } } else { @@ -146,8 +144,7 @@ class MenuManager if ($mode == 'top') print_auguria_menu($this->db, $this->atarget, $this->type_user, $this->tabMenu, $this->menu, 0, $mode); if ($mode == 'left') print_left_auguria_menu($this->db, $this->menu_array, $this->menu_array_after, $this->tabMenu, $this->menu, 0, '', '', $moredata); } - else - { + else { $conf->global->MAIN_SHOW_LOGO = 0; if ($mode == 'top') print_left_auguria_menu($this->db, $this->menu_array, $this->menu_array_after, $this->tabMenu, $this->menu, 0); if ($mode == 'left') print_auguria_menu($this->db, $this->atarget, $this->type_user, $this->tabMenu, $this->menu, 0, $mode); @@ -226,8 +223,7 @@ class MenuManager { $lastlevel[0] = 'greyed'; } - else - { + else { $lastlevel[0] = 'hidden'; } } @@ -259,8 +255,7 @@ class MenuManager { $relurl2 = dol_buildpath($val2['url'], 1); } - else - { + else { $relurl2 = $val2['url']; } $canonurl2 = preg_replace('/\?.*$/', '', $val2['url']); @@ -286,20 +281,18 @@ class MenuManager print '>'; $lastlevel2[$val2['level']] = 'enabled'; } - else // Not allowed but visible (greyed) + else // Not allowed but visible (greyed) { print ''; $lastlevel2[$val2['level']] = 'greyed'; } } - else - { + else { if ($val2['enabled']) // Allowed { $lastlevel2[$val2['level']] = 'enabled'; } - else - { + else { $lastlevel2[$val2['level']] = 'greyed'; } } @@ -308,8 +301,7 @@ class MenuManager { if ($val2['enabled']) // Allowed print ''; - else - print ''; + else print ''; } print ''."\n"; } diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 3f539260856..39f94d6eb2f 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -440,8 +440,7 @@ function print_eldy_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout = $mtitle .= $langs->trans($item); } } - else - { + else { $mtitle = $langs->trans($smenu->title); } // Add item @@ -512,8 +511,7 @@ function print_eldy_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout = { $urllogo=DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_mini); }*/ - else - { + else { $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo_squarred_alpha.png'; $logoContainerAdditionalClass = ''; } @@ -1309,8 +1307,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM $i++; } } - else - { + else { // Should not happend. Entries are added $newmenu->add('', $langs->trans("NoJournalDefined"), 2, $user->rights->accounting->comptarapport->lire); } @@ -1625,8 +1622,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM $newmenu->add("/product/inventory/card.php?action=create", $langs->trans("NewInventory"), 1, $user->rights->stock->creer); $newmenu->add("/product/inventory/list.php", $langs->trans("List"), 1, $user->rights->stock->lire); } - else - { + else { $newmenu->add("/product/inventory/list.php?leftmenu=stock", $langs->trans("Inventory"), 0, $user->rights->stock->inventory_advance->read, '', $mainmenu, 'stock'); $newmenu->add("/product/inventory/card.php?action=create", $langs->trans("NewInventory"), 1, $user->rights->stock->inventory_advance->write); $newmenu->add("/product/inventory/list.php", $langs->trans("List"), 1, $user->rights->stock->inventory_advance->read); @@ -1987,8 +1983,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM { print '
'."\n"; } - else - { + else { print '
'."\n"; } } @@ -2052,8 +2047,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM print ''."\n"; $lastlevel0 = 'greyed'; } - else - { + else { $lastlevel0 = 'hidden'; } if ($showmenu) diff --git a/htdocs/core/menus/standard/eldy_menu.php b/htdocs/core/menus/standard/eldy_menu.php index 5276a509ae5..2d62f9f7275 100644 --- a/htdocs/core/menus/standard/eldy_menu.php +++ b/htdocs/core/menus/standard/eldy_menu.php @@ -78,8 +78,7 @@ class MenuManager $_SESSION["mainmenu"] = $mainmenu; $_SESSION["leftmenuopened"] = ""; } - else - { + else { // On va le chercher en session si non defini par le lien $mainmenu = isset($_SESSION["mainmenu"]) ? $_SESSION["mainmenu"] : ''; } @@ -96,8 +95,7 @@ class MenuManager //$leftmenu=""; $_SESSION["leftmenuopened"] = ""; } - else - { + else { $_SESSION["leftmenuopened"] = $leftmenu; } } else { @@ -147,8 +145,7 @@ class MenuManager if ($mode == 'top') print_eldy_menu($this->db, $this->atarget, $this->type_user, $this->tabMenu, $this->menu, 0, $mode); if ($mode == 'left') print_left_eldy_menu($this->db, $this->menu_array, $this->menu_array_after, $this->tabMenu, $this->menu, 0, '', '', $moredata); } - else - { + else { $conf->global->MAIN_SHOW_LOGO = 0; if ($mode == 'top') print_left_eldy_menu($this->db, $this->menu_array, $this->menu_array_after, $this->tabMenu, $this->menu, 0); if ($mode == 'left') print_eldy_menu($this->db, $this->atarget, $this->type_user, $this->tabMenu, $this->menu, 0, $mode); @@ -231,8 +228,7 @@ class MenuManager { $lastlevel[0] = 'greyed'; } - else - { + else { $lastlevel[0] = 'hidden'; } } @@ -264,8 +260,7 @@ class MenuManager { $relurl2 = dol_buildpath($val2['url'], 1); } - else - { + else { $relurl2 = $val2['url']; } $canonurl2 = preg_replace('/\?.*$/', '', $val2['url']); @@ -291,20 +286,18 @@ class MenuManager print '>'; $lastlevel2[$val2['level']] = 'enabled'; } - else // Not allowed but visible (greyed) + else // Not allowed but visible (greyed) { print ''; $lastlevel2[$val2['level']] = 'greyed'; } } - else - { + else { if ($val2['enabled']) // Allowed { $lastlevel2[$val2['level']] = 'enabled'; } - else - { + else { $lastlevel2[$val2['level']] = 'greyed'; } } @@ -313,8 +306,7 @@ class MenuManager { if ($val2['enabled']) // Allowed print ''; - else - print ''; + else print ''; } print ''."\n"; } diff --git a/htdocs/core/menus/standard/empty.php b/htdocs/core/menus/standard/empty.php index 923f4e84965..2b2a000fa3b 100644 --- a/htdocs/core/menus/standard/empty.php +++ b/htdocs/core/menus/standard/empty.php @@ -231,8 +231,7 @@ class MenuManager { $lastlevel[0] = 'greyed'; } - else - { + else { $lastlevel[0] = 'hidden'; } } @@ -282,20 +281,18 @@ class MenuManager print '>'; $lastlevel2[$val2['level']] = 'enabled'; } - else // Not allowed but visible (greyed) + else // Not allowed but visible (greyed) { print ''; $lastlevel2[$val2['level']] = 'greyed'; } } - else - { + else { if ($val2['enabled']) // Allowed { $lastlevel2[$val2['level']] = 'enabled'; } - else - { + else { $lastlevel2[$val2['level']] = 'greyed'; } } @@ -376,8 +373,7 @@ class MenuManager { print '
'."\n"; } - else - { + else { print '
'."\n"; } } @@ -398,8 +394,7 @@ class MenuManager { print ''."\n"; } - else - { + else { print ''."\n"; } print ''."\n"; @@ -420,8 +415,7 @@ class MenuManager if ($this->menu->liste[$i]['url']) print $this->menu->liste[$i]['titre'].''; else print ''; } - else - { + else { print $tabstring.''.$this->menu->liste[$i]['titre'].''; } diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index 24811ad854d..0911dc85719 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -438,8 +438,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it $this->error = $this->db->lasterror(); $err++; } - else - { + else { dol_syslog(get_class($this)."::_init Warning ".$this->db->lasterror(), LOG_WARNING); } } @@ -451,8 +450,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return 0; } @@ -538,8 +536,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return 0; } @@ -561,8 +558,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it // If module name translation exists return $langs->transnoentitiesnoconv("Module".$this->numero."Name"); } - else - { + else { // If module name translation using it's unique id does not exist, we try to use its name to find translation if (is_array($this->langfiles)) { foreach ($this->langfiles as $val) @@ -597,8 +593,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it // If module description translation exists return $langs->transnoentitiesnoconv("Module".$this->numero."Desc"); } - else - { + else { // If module description translation does not exist using its unique id, we can use its name to find translation if (is_array($this->langfiles)) { foreach ($this->langfiles as $val) @@ -651,13 +646,11 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it ) ); } - else - { + else { $content = nl2br($content); } } - else - { + else { // Mostly for internal modules if (!empty($this->descriptionlong)) { if (is_array($this->langfiles)) { @@ -746,8 +739,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it @include_once DOL_DOCUMENT_ROOT.'/core/lib/parsemd.lib.php'; $content = dolMd2Html($content, 'parsedown', array('doc/'=>dol_buildpath(strtolower($this->name).'/doc/', 1))); } - else - { + else { $content = nl2br($content); } } @@ -859,8 +851,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it // Translation not found return $langs->trans($this->export_label[$r]); } - else - { + else { // Translation found return $langs->trans($langstring); } @@ -884,8 +875,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it // Translation not found return $langs->transnoentitiesnoconv($this->import_label[$r]); } - else - { + else { // Translation found return $langs->transnoentitiesnoconv($langstring); } @@ -913,8 +903,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it { $err++; } - else - { + else { $obj = $this->db->fetch_object($resql); if ($obj) { return $this->db->jdate($obj->tms); @@ -946,8 +935,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it { $err++; } - else - { + else { $obj = $this->db->fetch_object($resql); $tmp = array(); if ($obj->note) { @@ -1233,16 +1221,14 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it if (!$err) { $this->db->commit(); } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); } } // else box already registered into database } - else - { + else { $this->error = $this->db->lasterror(); $err++; } @@ -1428,16 +1414,14 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it if (!$err) { $this->db->commit(); } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); } } // else box already registered into database } - else - { + else { $this->error = $this->db->lasterror(); $err++; } @@ -1629,13 +1613,11 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it $err++; } } - else - { + else { dol_syslog(get_class($this)."::insert_const constant '".$name."' already exists", LOG_WARNING); } } - else - { + else { $err++; } } @@ -1738,16 +1720,14 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it $sql .= " VALUES "; $sql .= "(".$r_id.",".$entity.",'".$this->db->escape($r_desc)."','".$r_modul."','".$r_type."',".$r_def.",'".$r_perms."','".$r_subperms."')"; } - else - { + else { $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def"; $sql .= " (id, entity, libelle, module, type, bydefault, perms)"; $sql .= " VALUES "; $sql .= "(".$r_id.",".$entity.",'".$this->db->escape($r_desc)."','".$r_modul."','".$r_type."',".$r_def.",'".$r_perms."')"; } } - else - { + else { $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def "; $sql .= " (id, entity, libelle, module, type, bydefault)"; $sql .= " VALUES "; @@ -1793,15 +1773,13 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it if ($result > 0) { $tmpuser->addrights($r_id, '', '', 0, 1); } - else - { + else { dol_syslog(get_class($this)."::insert_permissions Failed to add the permission to user because fetch return an error", LOG_ERR); } $i++; } } - else - { + else { dol_print_error($this->db); } } @@ -1816,8 +1794,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it } $this->db->free($resql); } - else - { + else { $this->error = $this->db->lasterror(); $err++; } @@ -1885,8 +1862,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it if (!$this->menu[$key]['fk_menu']) { $menu->fk_menu = 0; } - else - { + else { $foundparent = 0; $fk_parent = $this->menu[$key]['fk_menu']; if (preg_match('/^r=/', $fk_parent)) // old deprecated method @@ -1934,8 +1910,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it if ($result > 0) { $this->menu[$key]['rowid'] = $result; } - else - { + else { $this->error = $menu->error; dol_syslog(get_class($this).'::insert_menus result='.$result." ".$this->error, LOG_ERR); $err++; @@ -1947,8 +1922,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it if (!$err) { $this->db->commit(); } - else - { + else { dol_syslog(get_class($this)."::insert_menus ".$this->error, LOG_ERR); $this->db->rollback(); } @@ -2081,8 +2055,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it $this->db->query($sql); } } - else - { + else { $this->error = $this->db->lasterror(); $err++; } @@ -2153,7 +2126,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it if (isset($value['entity'])) { $entity = $value['entity']; } } - else // when hook is declared with syntax 'hook'=>array('hookcontext1','hookcontext2',...) + else // when hook is declared with syntax 'hook'=>array('hookcontext1','hookcontext2',...) { $newvalue = json_encode($value); } @@ -2184,8 +2157,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it $error++; $this->error = $this->db->lasterror(); } - else - { + else { dol_syslog(get_class($this)."::insert_module_parts for ".$this->const_name."_".strtoupper($key)." Record already exists.", LOG_WARNING); } } @@ -2291,8 +2263,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it if (preg_match('/^\//i', $this->picto)) print img_picto($alttext, $this->picto, 'class="inline-block valignmiddle"', 1); else print img_object($alttext, $this->picto, 'class="inline-block valignmiddle"'); } - else - { + else { print img_object($alttext, 'generic', 'class="inline-block valignmiddle"'); } diff --git a/htdocs/core/modules/action/modules_action.php b/htdocs/core/modules/action/modules_action.php index bf957175f84..ea3b961b63f 100644 --- a/htdocs/core/modules/action/modules_action.php +++ b/htdocs/core/modules/action/modules_action.php @@ -86,8 +86,7 @@ function action_create($db, $object, $modele, $outputlangs, $hidedetails = 0, $h { $modele = $conf->global->ACTION_EVENT_ADDON_PDF; } - else - { + else { $modele = 'soleil'; } } @@ -142,15 +141,13 @@ function action_create($db, $object, $modele, $outputlangs, $hidedetails = 0, $h return 1; } - else - { + else { $outputlangs->charset_output = $sav_charset_output; dol_print_error($db, "action_pdf_create Error: ".$obj->error); return 0; } } - else - { + else { print $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists", $file); return 0; } diff --git a/htdocs/core/modules/action/rapport.pdf.php b/htdocs/core/modules/action/rapport.pdf.php index b978bed1eab..0b489e7202c 100644 --- a/htdocs/core/modules/action/rapport.pdf.php +++ b/htdocs/core/modules/action/rapport.pdf.php @@ -295,8 +295,7 @@ class CommActionRapport if ($obj->dp2) { if (dol_print_date($this->db->jdate($obj->dp), "day") != dol_print_date($this->db->jdate($obj->dp2), "day")) $textdate .= " -> ".dol_print_date($this->db->jdate($obj->dp2), "day")." - ".dol_print_date($this->db->jdate($obj->dp2), "hour"); - else - $textdate .= " -> ".dol_print_date($this->db->jdate($obj->dp2), "hour"); + else $textdate .= " -> ".dol_print_date($this->db->jdate($obj->dp2), "hour"); } $textdate = $outputlangs->trans("ID").' '.$obj->id.' - '.$textdate; $pdf->MultiCell(45 - $this->marge_gauche, $height, $textdate, 0, 'L', 0); diff --git a/htdocs/core/modules/bank/doc/pdf_ban.modules.php b/htdocs/core/modules/bank/doc/pdf_ban.modules.php index 1bf2b836269..dc19b2c0907 100644 --- a/htdocs/core/modules/bank/doc/pdf_ban.modules.php +++ b/htdocs/core/modules/bank/doc/pdf_ban.modules.php @@ -119,8 +119,7 @@ class pdf_ban extends ModeleBankAccountDoc $dir = $conf->bank->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->bank->dir_output."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -204,8 +203,7 @@ class pdf_ban extends ModeleBankAccountDoc $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -224,8 +222,7 @@ class pdf_ban extends ModeleBankAccountDoc $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -263,8 +260,7 @@ class pdf_ban extends ModeleBankAccountDoc return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } @@ -332,8 +328,7 @@ class pdf_ban extends ModeleBankAccountDoc $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); diff --git a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php index 23868eef643..8bcb06b72da 100644 --- a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php +++ b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php @@ -124,8 +124,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc else $dir = $conf->bank->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); if (!empty($moreparams['force_dir_output'])) $dir = $moreparams['force_dir_output']; else $dir = $conf->bank->dir_output."/".$objectref; @@ -210,8 +209,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -368,8 +366,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -416,8 +413,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } @@ -567,8 +563,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); diff --git a/htdocs/core/modules/barcode/mod_barcode_product_standard.php b/htdocs/core/modules/barcode/mod_barcode_product_standard.php index 5b561f90c1c..b01df64c088 100644 --- a/htdocs/core/modules/barcode/mod_barcode_product_standard.php +++ b/htdocs/core/modules/barcode/mod_barcode_product_standard.php @@ -209,8 +209,7 @@ class mod_barcode_product_standard extends ModeleNumRefBarCode { $result = -2; } - else - { + else { if ($this->verif_syntax($code, $type) >= 0) { $is_dispo = $this->verif_dispo($db, $code, $product); @@ -218,19 +217,16 @@ class mod_barcode_product_standard extends ModeleNumRefBarCode { $result = -3; } - else - { + else { $result = 0; } } - else - { + else { if (dol_strlen($code) == 0) { $result = -2; } - else - { + else { $result = -1; } } @@ -264,13 +260,11 @@ class mod_barcode_product_standard extends ModeleNumRefBarCode { return 0; } - else - { + else { return -1; } } - else - { + else { return -2; } } diff --git a/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php b/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php index 9755369793e..4260cd4d8c4 100644 --- a/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php +++ b/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php @@ -130,8 +130,7 @@ class doc_generic_bom_odt extends ModelePDFBom unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -268,8 +267,7 @@ class doc_generic_bom_odt extends ModelePDFBom if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -302,8 +300,7 @@ class doc_generic_bom_odt extends ModelePDFBom $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } @@ -386,7 +383,7 @@ class doc_generic_bom_odt extends ModelePDFBom if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -397,8 +394,7 @@ class doc_generic_bom_odt extends ModelePDFBom } } // Replace tags of lines - try - { + try { $foundtagforlines = 1; try { $listlines = $odfHandler->setSegment('lines'); @@ -422,8 +418,7 @@ class doc_generic_bom_odt extends ModelePDFBom $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -497,8 +492,7 @@ class doc_generic_bom_odt extends ModelePDFBom return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/bom/mod_bom_standard.php b/htdocs/core/modules/bom/mod_bom_standard.php index 08acd30451c..2246412997b 100644 --- a/htdocs/core/modules/bom/mod_bom_standard.php +++ b/htdocs/core/modules/bom/mod_bom_standard.php @@ -130,8 +130,7 @@ class mod_bom_standard extends ModeleNumRefboms if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog("mod_bom_standard::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/cheque/mod_chequereceipt_mint.php b/htdocs/core/modules/cheque/mod_chequereceipt_mint.php index daa2e04366d..ea431b5a2ce 100644 --- a/htdocs/core/modules/cheque/mod_chequereceipt_mint.php +++ b/htdocs/core/modules/cheque/mod_chequereceipt_mint.php @@ -127,8 +127,7 @@ class mod_chequereceipt_mint extends ModeleNumRefChequeReceipts if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog(__METHOD__, LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/cheque/modules_chequereceipts.php b/htdocs/core/modules/cheque/modules_chequereceipts.php index 7cc72a865d8..bbe9bc119a4 100644 --- a/htdocs/core/modules/cheque/modules_chequereceipts.php +++ b/htdocs/core/modules/cheque/modules_chequereceipts.php @@ -179,8 +179,7 @@ function chequereceipt_pdf_create($db, $id, $message, $modele, $outputlangs) { $modele = $conf->global->CHEQUERECEIPT_ADDON_PDF; } - else - { + else { //print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_PDF_NotDefined"); //return 0; $modele = 'blochet'; @@ -204,15 +203,13 @@ function chequereceipt_pdf_create($db, $id, $message, $modele, $outputlangs) $outputlangs->charset_output = $sav_charset_output; return 1; } - else - { + else { $outputlangs->charset_output = $sav_charset_output; dol_print_error($db, "chequereceipt_pdf_create Error: ".$obj->error); return -1; } } - else - { + else { dol_print_error('', $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists", $dir.$file)); return -1; } diff --git a/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php b/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php index 75c5103c4ab..f992996403a 100644 --- a/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php +++ b/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php @@ -137,8 +137,7 @@ class doc_generic_order_odt extends ModelePDFCommandes unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -280,8 +279,7 @@ class doc_generic_order_odt extends ModelePDFCommandes if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -314,8 +312,7 @@ class doc_generic_order_odt extends ModelePDFCommandes $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } @@ -402,7 +399,7 @@ class doc_generic_order_odt extends ModelePDFCommandes if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -413,8 +410,7 @@ class doc_generic_order_odt extends ModelePDFCommandes } } // Replace tags of lines - try - { + try { $foundtagforlines = 1; try { $listlines = $odfHandler->setSegment('lines'); @@ -438,8 +434,7 @@ class doc_generic_order_odt extends ModelePDFCommandes $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -513,8 +508,7 @@ class doc_generic_order_odt extends ModelePDFCommandes return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index 3838b9146e6..f5568452221 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -173,8 +173,7 @@ class pdf_einstein extends ModelePDFCommandes $this->posxqty = 135; $this->posxunit = 151; } - else - { + else { $this->posxtva = 110; $this->posxup = 126; $this->posxqty = 145; @@ -240,8 +239,7 @@ class pdf_einstein extends ModelePDFCommandes $dir = $conf->commande->multidir_output[$conf->entity]; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->commande->multidir_output[$object->entity]."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -441,17 +439,15 @@ class pdf_einstein extends ModelePDFCommandes $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -567,8 +563,7 @@ class pdf_einstein extends ModelePDFCommandes { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -583,8 +578,7 @@ class pdf_einstein extends ModelePDFCommandes { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -599,8 +593,7 @@ class pdf_einstein extends ModelePDFCommandes // Show square if ($pagenb == 1) $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0, $object->multicurrency_code); - else - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); + else $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; // Affiche zone infos @@ -643,14 +636,12 @@ class pdf_einstein extends ModelePDFCommandes return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "COMMANDE_OUTPUTDIR"); return 0; } @@ -915,8 +906,7 @@ class pdf_einstein extends ModelePDFCommandes { // Nothing to do } - else - { + else { //Local tax 1 before VAT //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') //{ @@ -1282,16 +1272,14 @@ class pdf_einstein extends ModelePDFCommandes $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } diff --git a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php index 1910dd0c048..dc13ad237b7 100644 --- a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php @@ -233,8 +233,7 @@ class pdf_eratosthene extends ModelePDFCommandes $pdir[0] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; $pdir[1] = get_exdir(0, 0, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; } - else - { + else { $pdir[0] = get_exdir(0, 0, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; // default $pdir[1] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; // alternative } @@ -254,13 +253,11 @@ class pdf_eratosthene extends ModelePDFCommandes { $filename = $obj['photo_vignette']; } - else - { + else { $filename = $obj['photo']; } } - else - { + else { $filename = $obj['photo']; } @@ -289,8 +286,7 @@ class pdf_eratosthene extends ModelePDFCommandes $dir = $conf->commande->multidir_output[$conf->entity]; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->commande->multidir_output[$object->entity]."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -532,8 +528,7 @@ class pdf_eratosthene extends ModelePDFCommandes $tab_height = $tab_height - $height_note; $tab_top = $posyafter + 6; } - else - { + else { $height_note = 0; } @@ -583,8 +578,7 @@ class pdf_eratosthene extends ModelePDFCommandes // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } if (!empty($this->cols['photo']) && isset($imglinesize['width']) && isset($imglinesize['height'])) @@ -622,17 +616,15 @@ class pdf_eratosthene extends ModelePDFCommandes $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -785,8 +777,7 @@ class pdf_eratosthene extends ModelePDFCommandes { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -801,8 +792,7 @@ class pdf_eratosthene extends ModelePDFCommandes { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -817,8 +807,7 @@ class pdf_eratosthene extends ModelePDFCommandes // Show square if ($pagenb == $pageposbeforeprintlines) $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, $hidetop, 0, $object->multicurrency_code); - else - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); + else $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; // Affiche zone infos @@ -861,14 +850,12 @@ class pdf_eratosthene extends ModelePDFCommandes return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "COMMANDE_OUTPUTDIR"); return 0; } @@ -1130,8 +1117,7 @@ class pdf_eratosthene extends ModelePDFCommandes { // Nothing to do } - else - { + else { //Local tax 1 before VAT //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') //{ @@ -1450,16 +1436,14 @@ class pdf_eratosthene extends ModelePDFCommandes $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -1853,8 +1837,7 @@ class pdf_eratosthene extends ModelePDFCommandes { $this->cols = array_replace($this->cols, $hookmanager->resArray); // array_replace is used to preserve keys } - else - { + else { $this->cols = $hookmanager->resArray; } } diff --git a/htdocs/core/modules/commande/mod_commande_marbre.php b/htdocs/core/modules/commande/mod_commande_marbre.php index 87e5666be4b..a5558f2d0b2 100644 --- a/htdocs/core/modules/commande/mod_commande_marbre.php +++ b/htdocs/core/modules/commande/mod_commande_marbre.php @@ -130,8 +130,7 @@ class mod_commande_marbre extends ModeleNumRefCommandes if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog("mod_commande_marbre::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/contract/doc/doc_generic_contract_odt.modules.php b/htdocs/core/modules/contract/doc/doc_generic_contract_odt.modules.php index c938f40cfb2..b5bc55633ee 100644 --- a/htdocs/core/modules/contract/doc/doc_generic_contract_odt.modules.php +++ b/htdocs/core/modules/contract/doc/doc_generic_contract_odt.modules.php @@ -136,8 +136,7 @@ class doc_generic_contract_odt extends ModelePDFContract unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -267,8 +266,7 @@ class doc_generic_contract_odt extends ModelePDFContract if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -301,8 +299,7 @@ class doc_generic_contract_odt extends ModelePDFContract $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } @@ -382,7 +379,7 @@ class doc_generic_contract_odt extends ModelePDFContract if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -394,8 +391,7 @@ class doc_generic_contract_odt extends ModelePDFContract } // Replace tags of lines - try - { + try { $foundtagforlines = 1; try { $listlines = $odfHandler->setSegment('lines'); @@ -419,8 +415,7 @@ class doc_generic_contract_odt extends ModelePDFContract $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -490,8 +485,7 @@ class doc_generic_contract_odt extends ModelePDFContract return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/contract/doc/pdf_strato.modules.php b/htdocs/core/modules/contract/doc/pdf_strato.modules.php index f8b7908654b..68c8cd1b96c 100644 --- a/htdocs/core/modules/contract/doc/pdf_strato.modules.php +++ b/htdocs/core/modules/contract/doc/pdf_strato.modules.php @@ -194,8 +194,7 @@ class pdf_strato extends ModelePDFContract $dir = $conf->contrat->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->contrat->dir_output."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -388,18 +387,16 @@ class pdf_strato extends ModelePDFContract $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -426,8 +423,7 @@ class pdf_strato extends ModelePDFContract { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter - $heightforfreetext, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter - $heightforfreetext, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -442,8 +438,7 @@ class pdf_strato extends ModelePDFContract { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter - $heightforfreetext, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter - $heightforfreetext, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -462,8 +457,7 @@ class pdf_strato extends ModelePDFContract $this->tabSignature($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, $outputlangs); $bottomlasttab = $this->page_hauteur - $heightforfooter - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $this->tabSignature($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, $outputlangs); $bottomlasttab = $this->page_hauteur - $heightforfooter - $heightforfooter + 1; @@ -499,14 +493,12 @@ class pdf_strato extends ModelePDFContract return 1; } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "CONTRACT_OUTPUTDIR"); return 0; } @@ -636,16 +628,14 @@ class pdf_strato extends ModelePDFContract $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } diff --git a/htdocs/core/modules/contract/mod_contract_serpis.php b/htdocs/core/modules/contract/mod_contract_serpis.php index 52950778738..2becdf52219 100644 --- a/htdocs/core/modules/contract/mod_contract_serpis.php +++ b/htdocs/core/modules/contract/mod_contract_serpis.php @@ -139,8 +139,7 @@ class mod_contract_serpis extends ModelNumRefContracts if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog("mod_contract_serpis::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/dons/html_cerfafr.modules.php b/htdocs/core/modules/dons/html_cerfafr.modules.php index 4c025750f04..d3ee39e8a5f 100644 --- a/htdocs/core/modules/dons/html_cerfafr.modules.php +++ b/htdocs/core/modules/dons/html_cerfafr.modules.php @@ -104,8 +104,7 @@ class html_cerfafr extends ModeleDon $dir = $conf->don->dir_output; $file = $dir."/SPECIMEN.html"; } - else - { + else { $donref = dol_sanitizeFileName($don->ref); $dir = $conf->don->dir_output."/".$donref; $file = $dir."/".$donref.".html"; @@ -142,8 +141,7 @@ class html_cerfafr extends ModeleDon elseif ($don->modepaymentcode == 'VIR' || $don->modepaymentcode == 'PRE' || $don->modepaymentcode == 'CB') { $ModePaiement = ' Remise d\'espèces Chèque Virement, prélèvement, carte bancaire'; } - else - { + else { $ModePaiement = ' Remise d\'espèces Chèque Virement, prélèvement, carte bancaire'; } @@ -217,8 +215,7 @@ class html_cerfafr extends ModeleDon { $art200 = '200 du CGI'; } - else - { + else { $art200 = '200 du CGI'; } } @@ -230,8 +227,7 @@ class html_cerfafr extends ModeleDon { $art238 = '238 bis du CGI'; } - else - { + else { $art238 = '238 bis du CGI'; } } @@ -243,8 +239,7 @@ class html_cerfafr extends ModeleDon { $art978 = '978 du CGI'; } - else - { + else { $art978 = '978 du CGI'; } } @@ -262,14 +257,12 @@ class html_cerfafr extends ModeleDon return 1; } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "DON_OUTPUTDIR"); return 0; } @@ -412,15 +405,13 @@ class html_cerfafr extends ModeleDon $somme = $trio[3].' '.$secon[3].' '.$prim[3].' million '; elseif (($cent[3] != 0 && $cent[3] != '') || ($dix[3] != 0 && $dix[3] != '') || ($unite[3] != 0 && $unite[3] != '')) $somme = $trio[3].' '.$secon[3].' '.$prim[3].' millions '; - else - $somme = $trio[3].' '.$secon[3].' '.$prim[3]; + else $somme = $trio[3].' '.$secon[3].' '.$prim[3]; if (($cent[2] == 0 || $cent[2] == '') && ($dix[2] == 0 || $dix[2] == '') && ($unite[2] == 1)) $somme = $somme.' mille '; elseif (($cent[2] != 0 && $cent[2] != '') || ($dix[2] != 0 && $dix[2] != '') || ($unite[2] != 0 && $unite[2] != '')) $somme = $somme.$trio[2].' '.$secon[2].' '.$prim[2].' milles '; - else - $somme = $somme.$trio[2].' '.$secon[2].' '.$prim[2]; + else $somme = $somme.$trio[2].' '.$secon[2].' '.$prim[2]; $somme = $somme.$trio[1].' '.$secon[1].' '.$prim[1]; @@ -428,7 +419,6 @@ class html_cerfafr extends ModeleDon if (($cent_c == '0' || $cent_c == '') && ($dix_c == '0' || $dix_c == '')) return $somme.' et zéro '.$dev2; - else - return $somme.$trio_c.' '.$secon_c.' '.$dev2; + else return $somme.$trio_c.' '.$secon_c.' '.$dev2; } } diff --git a/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php b/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php index 1ea817709e1..a9be573f80d 100644 --- a/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php +++ b/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php @@ -138,8 +138,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -280,8 +279,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -385,7 +383,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -407,7 +405,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -431,7 +429,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -452,7 +450,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -478,7 +476,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -489,8 +487,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition } } // Replace tags of lines - try - { + try { $foundtagforlines = 1; try { $listlines = $odfHandler->setSegment('lines'); @@ -512,8 +509,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -585,8 +581,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php index c232edbe81c..2aa28f3b7db 100644 --- a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php @@ -196,8 +196,7 @@ class pdf_espadon extends ModelePdfExpedition $pdir = get_exdir($object->lines[$i]->fk_product, 2, 0, 0, $objphoto, 'product') . $object->lines[$i]->fk_product ."/photos/"; $dir = $conf->product->dir_output.'/'.$pdir; } - else - { + else { $pdir = get_exdir(0, 2, 0, 0, $objphoto, 'product') . dol_sanitizeFileName($objphoto->ref).'/'; $dir = $conf->product->dir_output.'/'.$pdir; } @@ -212,13 +211,11 @@ class pdf_espadon extends ModelePdfExpedition { $filename = $obj['photo_vignette']; } - else - { + else { $filename = $obj['photo']; } } - else - { + else { $filename = $obj['photo']; } @@ -241,8 +238,7 @@ class pdf_espadon extends ModelePdfExpedition $dir = $conf->expedition->dir_output."/sending"; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $expref = dol_sanitizeFileName($object->ref); $dir = $conf->expedition->dir_output."/sending/".$expref; $file = $dir."/".$expref.".pdf"; @@ -413,8 +409,7 @@ class pdf_espadon extends ModelePdfExpedition $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -464,8 +459,7 @@ class pdf_espadon extends ModelePdfExpedition // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } @@ -504,17 +498,15 @@ class pdf_espadon extends ModelePdfExpedition $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -608,8 +600,7 @@ class pdf_espadon extends ModelePdfExpedition { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -624,8 +615,7 @@ class pdf_espadon extends ModelePdfExpedition { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -643,8 +633,7 @@ class pdf_espadon extends ModelePdfExpedition $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -678,14 +667,12 @@ class pdf_espadon extends ModelePdfExpedition return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "EXP_OUTPUTDIR"); return 0; } @@ -889,16 +876,14 @@ class pdf_espadon extends ModelePdfExpedition $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -908,8 +893,7 @@ class pdf_espadon extends ModelePdfExpedition { $posx = 105; } - else - { + else { $posx = $this->marge_gauche + 3; } //$pdf->Rect($this->marge_gauche, $this->marge_haute, $this->page_largeur-$this->marge_gauche-$this->marge_droite, 30); @@ -1275,8 +1259,7 @@ class pdf_espadon extends ModelePdfExpedition { $this->cols = array_replace($this->cols, $hookmanager->resArray); // array_replace is used to preserve keys } - else - { + else { $this->cols = $hookmanager->resArray; } } diff --git a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php index 7899df494fc..bd698d72519 100644 --- a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php @@ -193,8 +193,7 @@ class pdf_merou extends ModelePdfExpedition $dir = $conf->expedition->dir_output."/sending"; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $expref = dol_sanitizeFileName($object->ref); $dir = $conf->expedition->dir_output."/sending/".$expref; $file = $dir."/".$expref.".pdf"; @@ -288,8 +287,7 @@ class pdf_merou extends ModelePdfExpedition $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -366,8 +364,7 @@ class pdf_merou extends ModelePdfExpedition { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage - 1, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -381,8 +378,7 @@ class pdf_merou extends ModelePdfExpedition { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage - 1, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -398,8 +394,7 @@ class pdf_merou extends ModelePdfExpedition $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage - 1, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -435,14 +430,12 @@ class pdf_merou extends ModelePdfExpedition return 1; } - else - { + else { $this->error = $outputlangs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $outputlangs->transnoentities("ErrorConstantNotDefined", "EXP_OUTPUTDIR"); return 0; } @@ -564,16 +557,14 @@ class pdf_merou extends ModelePdfExpedition $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, 10, 5, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(70, 3, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -673,8 +664,7 @@ class pdf_merou extends ModelePdfExpedition } } } - else - { + else { $pdf->MultiCell(50, 8, $outputlangs->transnoentities("Deliverer")." ".$outputlangs->convToOutputCharset($this->livreur->getFullName($outputlangs)), '', 'L'); } diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 2e0733f1ba2..99dfd20301f 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -219,8 +219,7 @@ class pdf_rouget extends ModelePdfExpedition $pdir = get_exdir($object->lines[$i]->fk_product, 2, 0, 0, $objphoto, 'product').$object->lines[$i]->fk_product."/photos/"; $dir = $conf->product->dir_output.'/'.$pdir; } - else - { + else { $pdir = get_exdir(0, 2, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; $dir = $conf->product->dir_output.'/'.$pdir; } @@ -234,13 +233,11 @@ class pdf_rouget extends ModelePdfExpedition { $filename = $obj['photo_vignette']; } - else - { + else { $filename = $obj['photo']; } } - else - { + else { $filename = $obj['photo']; } @@ -262,8 +259,7 @@ class pdf_rouget extends ModelePdfExpedition $dir = $conf->expedition->dir_output."/sending"; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $expref = dol_sanitizeFileName($object->ref); $dir = $conf->expedition->dir_output."/sending/".$expref; $file = $dir."/".$expref.".pdf"; @@ -422,8 +418,7 @@ class pdf_rouget extends ModelePdfExpedition $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -463,8 +458,7 @@ class pdf_rouget extends ModelePdfExpedition // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } if (isset($imglinesize['width']) && isset($imglinesize['height'])) @@ -503,18 +497,16 @@ class pdf_rouget extends ModelePdfExpedition $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -599,8 +591,7 @@ class pdf_rouget extends ModelePdfExpedition { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -615,8 +606,7 @@ class pdf_rouget extends ModelePdfExpedition { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -634,8 +624,7 @@ class pdf_rouget extends ModelePdfExpedition $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -669,14 +658,12 @@ class pdf_rouget extends ModelePdfExpedition return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "EXP_OUTPUTDIR"); return 0; } @@ -924,16 +911,14 @@ class pdf_rouget extends ModelePdfExpedition $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -943,8 +928,7 @@ class pdf_rouget extends ModelePdfExpedition { $posx = 105; } - else - { + else { $posx = $this->marge_gauche + 3; } //$pdf->Rect($this->marge_gauche, $this->marge_haute, $this->page_largeur-$this->marge_gauche-$this->marge_droite, 30); diff --git a/htdocs/core/modules/expedition/mod_expedition_safor.php b/htdocs/core/modules/expedition/mod_expedition_safor.php index afbeec748ea..f2d49ba6409 100644 --- a/htdocs/core/modules/expedition/mod_expedition_safor.php +++ b/htdocs/core/modules/expedition/mod_expedition_safor.php @@ -134,8 +134,7 @@ class mod_expedition_safor extends ModelNumRefExpedition if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog("mod_expedition_safor::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index 3a66a8ae961..91539b979c2 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -227,8 +227,7 @@ class pdf_standard extends ModeleExpenseReport $dir = $conf->expensereport->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->expensereport->dir_output."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -340,8 +339,7 @@ class pdf_standard extends ModeleExpenseReport $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -410,17 +408,15 @@ class pdf_standard extends ModeleExpenseReport $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -459,8 +455,7 @@ class pdf_standard extends ModeleExpenseReport { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -475,8 +470,7 @@ class pdf_standard extends ModeleExpenseReport { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -493,8 +487,7 @@ class pdf_standard extends ModeleExpenseReport $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -561,14 +554,12 @@ class pdf_standard extends ModeleExpenseReport return 1; // No error } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "EXPENSEREPORT_OUTPUTDIR"); return 0; } @@ -710,8 +701,7 @@ class pdf_standard extends ModeleExpenseReport $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -858,8 +848,7 @@ class pdf_standard extends ModeleExpenseReport $pdf->MultiCell(96, 4, $outputlangs->transnoentities("DATE_CANCEL")." : ".dol_print_date($object->date_cancel, "day", false, $outputlangs), 0, 'L'); } } - else - { + else { if ($object->fk_user_approve > 0) { $userfee = new User($this->db); $userfee->fetch($object->fk_user_approve); $posy += 6; @@ -1106,8 +1095,7 @@ class pdf_standard extends ModeleExpenseReport $pdf->MultiCell(30, 4, $outputlangs->transnoentitiesnoconv("RemainderToPay"), 0, 'L', 0); } } - else - { + else { $this->error = $this->db->lasterror(); return -1; } diff --git a/htdocs/core/modules/expensereport/mod_expensereport_jade.php b/htdocs/core/modules/expensereport/mod_expensereport_jade.php index 9093e55f78f..bae163227e4 100644 --- a/htdocs/core/modules/expensereport/mod_expensereport_jade.php +++ b/htdocs/core/modules/expensereport/mod_expensereport_jade.php @@ -187,8 +187,7 @@ class mod_expensereport_jade extends ModeleNumRefExpenseReport if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog("mod_expensereport_jade::getNextValue", LOG_DEBUG); return 0; } diff --git a/htdocs/core/modules/export/export_csv.modules.php b/htdocs/core/modules/export/export_csv.modules.php index 5124cb3f160..0e57634f488 100644 --- a/htdocs/core/modules/export/export_csv.modules.php +++ b/htdocs/core/modules/export/export_csv.modules.php @@ -218,8 +218,7 @@ class ExportCsv extends ModeleExports { $outputlangs->charset_output = $conf->global->EXPORT_CSV_FORCE_CHARSET; } - else - { + else { $outputlangs->charset_output = 'ISO-8859-1'; } @@ -254,8 +253,7 @@ class ExportCsv extends ModeleExports { $outputlangs->charset_output = $conf->global->EXPORT_CSV_FORCE_CHARSET; } - else - { + else { $outputlangs->charset_output = 'ISO-8859-1'; } diff --git a/htdocs/core/modules/export/export_excel2007new.modules.php b/htdocs/core/modules/export/export_excel2007new.modules.php index 779f2240155..a96d51634b0 100644 --- a/htdocs/core/modules/export/export_excel2007new.modules.php +++ b/htdocs/core/modules/export/export_excel2007new.modules.php @@ -274,8 +274,7 @@ class ExportExcel2007new extends ModeleExports { $this->worksheet->write($this->row, $this->col, $outputlangs->transnoentities($alias), $formatheader); } - else - { + else { $this->workbook->getActiveSheet()->SetCellValueByColumnAndRow($this->col, $this->row + 1, $outputlangs->transnoentities($alias)); if (!empty($array_types[$code]) && in_array($array_types[$code], array('Date', 'Numeric', 'TextAuto'))) // Set autowidth for some types { @@ -333,8 +332,7 @@ class ExportExcel2007new extends ModeleExports { $newvalue = $outputlangs->transnoentities($reg[1]); } - else - { + else { $newvalue = $outputlangs->convToOutputCharset($newvalue); } @@ -352,8 +350,7 @@ class ExportExcel2007new extends ModeleExports $coord = $this->workbook->getActiveSheet()->getCellByColumnAndRow($this->col, $this->row + 1)->getCoordinate(); $this->workbook->getActiveSheet()->getStyle($coord)->getNumberFormat()->setFormatCode('yyyy-mm-dd h:mm:ss'); } - else - { + else { if ($typefield == 'Text' || $typefield == 'TextAuto') { //$this->workbook->getActiveSheet()->getCellByColumnAndRow($this->col, $this->row+1)->setValueExplicit($newvalue, PHPExcel_Cell_DataType::TYPE_STRING); @@ -362,8 +359,7 @@ class ExportExcel2007new extends ModeleExports $this->workbook->getActiveSheet()->getStyle($coord)->getNumberFormat()->setFormatCode('@'); $this->workbook->getActiveSheet()->getStyle($coord)->getAlignment()->setHorizontal(PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT); } - else - { + else { $this->workbook->getActiveSheet()->SetCellValueByColumnAndRow($this->col, $this->row + 1, $newvalue); } } diff --git a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php index acbebd54da8..a25f07384a3 100644 --- a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php +++ b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php @@ -137,8 +137,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -280,8 +279,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -410,7 +408,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -421,8 +419,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures } } // Replace tags of lines - try - { + try { $foundtagforlines = 1; try { $listlines = $odfHandler->setSegment('lines'); @@ -446,8 +443,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -519,8 +515,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index cf91ec4806c..ea5376981a4 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -184,8 +184,7 @@ class pdf_crabe extends ModelePDFFactures $this->posxqty = 135; $this->posxunit = 151; } - else - { + else { $this->posxtva = 110; $this->posxup = 126; $this->posxqty = 145; @@ -288,8 +287,7 @@ class pdf_crabe extends ModelePDFFactures $dir = $conf->facture->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->facture->dir_output."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -518,8 +516,7 @@ class pdf_crabe extends ModelePDFFactures // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } if (isset($imglinesize['width']) && isset($imglinesize['height'])) @@ -556,18 +553,16 @@ class pdf_crabe extends ModelePDFFactures $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -701,8 +696,7 @@ class pdf_crabe extends ModelePDFFactures { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -717,8 +711,7 @@ class pdf_crabe extends ModelePDFFactures { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -736,8 +729,7 @@ class pdf_crabe extends ModelePDFFactures $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -780,14 +772,12 @@ class pdf_crabe extends ModelePDFFactures return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "FAC_OUTPUTDIR"); return 0; } @@ -882,8 +872,7 @@ class pdf_crabe extends ModelePDFFactures $i++; } } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -936,8 +925,7 @@ class pdf_crabe extends ModelePDFFactures return $tab3_top + $y + 3; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -1216,8 +1204,7 @@ class pdf_crabe extends ModelePDFFactures { // Nothing to do } - else - { + else { // FIXME amount of vat not supported with multicurrency //Local tax 1 before VAT @@ -1663,16 +1650,14 @@ class pdf_crabe extends ModelePDFFactures $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index 8f48f31fddb..acdb6063d5f 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -251,8 +251,7 @@ class pdf_sponge extends ModelePDFFactures $pdir[0] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; $pdir[1] = get_exdir(0, 0, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; } - else - { + else { $pdir[0] = get_exdir(0, 0, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; // default $pdir[1] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; // alternative } @@ -272,13 +271,11 @@ class pdf_sponge extends ModelePDFFactures { $filename = $obj['photo_vignette']; } - else - { + else { $filename = $obj['photo']; } } - else - { + else { $filename = $obj['photo']; } @@ -309,8 +306,7 @@ class pdf_sponge extends ModelePDFFactures $dir = $conf->facture->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->facture->dir_output."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -586,8 +582,7 @@ class pdf_sponge extends ModelePDFFactures $tab_height = $tab_height - $height_note; $tab_top = $posyafter + 6; } - else - { + else { $height_note = 0; } @@ -635,8 +630,7 @@ class pdf_sponge extends ModelePDFFactures // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } if (!empty($this->cols['photo']) && isset($imglinesize['width']) && isset($imglinesize['height'])) @@ -674,17 +668,15 @@ class pdf_sponge extends ModelePDFFactures $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -849,8 +841,7 @@ class pdf_sponge extends ModelePDFFactures if ($pagenb == $pageposbeforeprintlines) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code, $outputlangsbis); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code, $outputlangsbis); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -864,8 +855,7 @@ class pdf_sponge extends ModelePDFFactures if ($pagenb == $pageposafter) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code, $outputlangsbis); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code, $outputlangsbis); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -883,8 +873,7 @@ class pdf_sponge extends ModelePDFFactures $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, $hidetop, 0, $object->multicurrency_code, $outputlangsbis); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code, $outputlangsbis); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -927,14 +916,12 @@ class pdf_sponge extends ModelePDFFactures return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "FAC_OUTPUTDIR"); return 0; } @@ -1032,8 +1019,7 @@ class pdf_sponge extends ModelePDFFactures $i++; } } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -1075,8 +1061,7 @@ class pdf_sponge extends ModelePDFFactures return $tab3_top + $y + 3; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -1474,8 +1459,7 @@ class pdf_sponge extends ModelePDFFactures { // Nothing to do } - else - { + else { // FIXME amount of vat not supported with multicurrency //Local tax 1 before VAT @@ -1909,16 +1893,14 @@ class pdf_sponge extends ModelePDFFactures $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -2396,8 +2378,7 @@ class pdf_sponge extends ModelePDFFactures { $this->cols = array_replace($this->cols, $hookmanager->resArray); // array_replace is used to preserve keys } - else - { + else { $this->cols = $hookmanager->resArray; } } diff --git a/htdocs/core/modules/facture/mod_facture_mars.php b/htdocs/core/modules/facture/mod_facture_mars.php index 6b4b5f0451d..ae349f6f5cb 100644 --- a/htdocs/core/modules/facture/mod_facture_mars.php +++ b/htdocs/core/modules/facture/mod_facture_mars.php @@ -174,8 +174,7 @@ class mod_facture_mars extends ModeleNumRefFactures if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { return -1; } diff --git a/htdocs/core/modules/facture/mod_facture_terre.php b/htdocs/core/modules/facture/mod_facture_terre.php index caa47db3529..c16e751d7db 100644 --- a/htdocs/core/modules/facture/mod_facture_terre.php +++ b/htdocs/core/modules/facture/mod_facture_terre.php @@ -203,8 +203,7 @@ class mod_facture_terre extends ModeleNumRefFactures if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { return -1; } diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index d7509feff7c..a88e3c32bf3 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -186,8 +186,7 @@ class pdf_soleil extends ModelePDFFicheinter $dir = $conf->ficheinter->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->ficheinter->dir_output."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -289,8 +288,7 @@ class pdf_soleil extends ModelePDFFicheinter $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -378,7 +376,7 @@ class pdf_soleil extends ModelePDFFicheinter } } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -404,8 +402,7 @@ class pdf_soleil extends ModelePDFFicheinter { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -420,8 +417,7 @@ class pdf_soleil extends ModelePDFFicheinter { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -440,8 +436,7 @@ class pdf_soleil extends ModelePDFFicheinter $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -470,14 +465,12 @@ class pdf_soleil extends ModelePDFFicheinter return 1; } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "FICHEINTER_OUTPUTDIR"); return 0; } @@ -591,16 +584,14 @@ class pdf_soleil extends ModelePDFFicheinter $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } diff --git a/htdocs/core/modules/fichinter/mod_pacific.php b/htdocs/core/modules/fichinter/mod_pacific.php index b592e65b0d3..5a56b849e5f 100644 --- a/htdocs/core/modules/fichinter/mod_pacific.php +++ b/htdocs/core/modules/fichinter/mod_pacific.php @@ -107,8 +107,7 @@ class mod_pacific extends ModeleNumRefFicheinter { return true; } - else - { + else { $langs->load("errors"); $this->error = $langs->trans('ErrorNumRefModel', $max); return false; diff --git a/htdocs/core/modules/fichinter/modules_fichinter.php b/htdocs/core/modules/fichinter/modules_fichinter.php index 140ce27cf03..b3b5906f683 100644 --- a/htdocs/core/modules/fichinter/modules_fichinter.php +++ b/htdocs/core/modules/fichinter/modules_fichinter.php @@ -179,8 +179,7 @@ function fichinter_create($db, $object, $modele, $outputlangs, $hidedetails = 0, { $modele = $conf->global->FICHEINTER_ADDON_PDF; } - else - { + else { $modele = 'soleil'; } } @@ -235,15 +234,13 @@ function fichinter_create($db, $object, $modele, $outputlangs, $hidedetails = 0, return 1; } - else - { + else { $outputlangs->charset_output = $sav_charset_output; dol_print_error($db, "fichinter_pdf_create Error: ".$obj->error); return 0; } } - else - { + else { print $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists", $file); return 0; } diff --git a/htdocs/core/modules/holiday/mod_holiday_madonna.php b/htdocs/core/modules/holiday/mod_holiday_madonna.php index 3de92c4a05e..90c419bd260 100644 --- a/htdocs/core/modules/holiday/mod_holiday_madonna.php +++ b/htdocs/core/modules/holiday/mod_holiday_madonna.php @@ -140,8 +140,7 @@ class mod_holiday_madonna extends ModelNumRefHolidays if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog("mod_holiday_madonna::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index de32e84d43a..2e8d1d80097 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -199,8 +199,7 @@ class ImportCsv extends ModeleImports $this->error = $langs->trans("ErrorFailToOpenFile", $file); $ret = -1; } - else - { + else { $this->file = $file; } @@ -265,21 +264,19 @@ class ImportCsv extends ModeleImports $newarrayres[$key]['val'] = $val; $newarrayres[$key]['type'] = (dol_strlen($val) ? 1 : -1); // If empty we considere it's null } - else - { + else { $newarrayres[$key]['val'] = utf8_encode($val); $newarrayres[$key]['type'] = (dol_strlen($val) ? 1 : -1); // If empty we considere it's null } } - else // Autodetect format (UTF8 or ISO) + else // Autodetect format (UTF8 or ISO) { if (utf8_check($val)) { $newarrayres[$key]['val'] = $val; $newarrayres[$key]['type'] = (dol_strlen($val) ? 1 : -1); // If empty we considere it's null } - else - { + else { $newarrayres[$key]['val'] = utf8_encode($val); $newarrayres[$key]['type'] = (dol_strlen($val) ? 1 : -1); // If empty we considere it's null } @@ -347,8 +344,7 @@ class ImportCsv extends ModeleImports $this->warnings[$warning]['type'] = 'EMPTY'; $warning++; } - else - { + else { $last_insert_id_array = array(); // store the last inserted auto_increment id for each table, so that dependent tables can be inserted with the appropriate id (eg: extrafields fk_object will be set with the last inserted object's id) $updatedone = false; $insertdone = false; @@ -375,8 +371,7 @@ class ImportCsv extends ModeleImports } else dol_print_error($this->db); } - else - { + else { //dol_syslog("Table ".$tablename." check for entity into cache is ".$tablewithentity_cache[$tablename]); } @@ -411,8 +406,7 @@ class ImportCsv extends ModeleImports $error++; } // Test format only if field is not a missing mandatory field (field may be a value or empty but not mandatory) - else - { + else { // We convert field if required if (!empty($objimport->array_import_convertvalue[0][$val])) { @@ -438,8 +432,7 @@ class ImportCsv extends ModeleImports { $newval = $this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval]; } - else - { + else { $resultload = dol_include_once($file); if (empty($resultload)) { @@ -478,8 +471,7 @@ class ImportCsv extends ModeleImports { $newval = $classinstance->id; } - else - { + else { if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); elseif (!empty($objimport->array_import_convertvalue[0][$val]['element'])) $this->errors[$error]['lib'] = $langs->trans('ErrorFieldRefNotIn', $key, $newval, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['element'])); else $this->errors[$error]['lib'] = 'ErrorBadDefinitionOfImportProfile'; @@ -542,8 +534,7 @@ class ImportCsv extends ModeleImports { $newval = $this->cacheconvert[$file.'_'.$class.'_'.$method.'_'.$units][$newval]; } - else - { + else { $resultload = dol_include_once($file); if (empty($resultload)) { @@ -560,8 +551,7 @@ class ImportCsv extends ModeleImports { $newval = $scaleorid ? $scaleorid : 0; } - else - { + else { if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'scale', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); else $this->errors[$error]['lib'] = 'ErrorFieldValueNotIn'; $this->errors[$error]['type'] = 'FOREIGNKEY'; @@ -688,8 +678,7 @@ class ImportCsv extends ModeleImports $i++; } } - else - { + else { dol_print_error($this->db); } } @@ -761,8 +750,7 @@ class ImportCsv extends ModeleImports $listfields[] = preg_replace('/^'.preg_quote($alias, '/').'\./', '', $key); $listvalues[] = "'".$tmp[1]."'"; } - else - { + else { $this->errors[$error]['lib'] = 'Bad value of profile setup '.$val.' for array_import_fieldshidden'; $this->errors[$error]['type'] = 'Import profile setup'; $error++; @@ -812,8 +800,7 @@ class ImportCsv extends ModeleImports // No record found with filters, insert will be tried below } } - else - { + else { //print 'E'; $this->errors[$error]['lib'] = $this->db->lasterror(); $this->errors[$error]['type'] = 'SQL'; @@ -841,8 +828,7 @@ class ImportCsv extends ModeleImports $lastinsertid = 0; } } - else - { + else { //print 'E'; $this->errors[$error]['lib'] = $this->db->lasterror(); $this->errors[$error]['type'] = 'SQL'; @@ -872,8 +858,7 @@ class ImportCsv extends ModeleImports // No error, update has been done. $this->db->db->affected_rows can be 0 if data hasn't changed $updatedone = true; } - else - { + else { //print 'E'; $this->errors[$error]['lib'] = $this->db->lasterror(); $this->errors[$error]['type'] = 'SQL'; @@ -907,8 +892,7 @@ class ImportCsv extends ModeleImports $last_insert_id_array[$tablename] = $this->db->last_insert_id($tablename); // store the last inserted auto_increment id for each table, so that child tables can be inserted with the appropriate id. This must be done just after the INSERT request, else we risk losing the id (because another sql query will be issued somewhere in Dolibarr). $insertdone = true; } - else - { + else { //print 'E'; $this->errors[$error]['lib'] = $this->db->lasterror(); $this->errors[$error]['type'] = 'SQL'; diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 35aee35869e..dc5bac9568c 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -375,8 +375,7 @@ class ImportXlsx extends ModeleImports $this->warnings[$warning]['type'] = 'EMPTY'; $warning++; } - else - { + else { $last_insert_id_array = array(); // store the last inserted auto_increment id for each table, so that dependent tables can be inserted with the appropriate id (eg: extrafields fk_object will be set with the last inserted object's id) $updatedone = false; $insertdone = false; @@ -403,8 +402,7 @@ class ImportXlsx extends ModeleImports } else dol_print_error($this->db); } - else - { + else { //dol_syslog("Table ".$tablename." check for entity into cache is ".$tablewithentity_cache[$tablename]); } @@ -439,8 +437,7 @@ class ImportXlsx extends ModeleImports $error++; } // Test format only if field is not a missing mandatory field (field may be a value or empty but not mandatory) - else - { + else { // We convert field if required if (!empty($objimport->array_import_convertvalue[0][$val])) { @@ -465,8 +462,7 @@ class ImportXlsx extends ModeleImports { $newval = $this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval]; } - else - { + else { $resultload = dol_include_once($file); if (empty($resultload)) { @@ -505,8 +501,7 @@ class ImportXlsx extends ModeleImports { $newval = $classinstance->id; } - else - { + else { if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); elseif (!empty($objimport->array_import_convertvalue[0][$val]['element'])) $this->errors[$error]['lib'] = $langs->trans('ErrorFieldRefNotIn', $key, $newval, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['element'])); else $this->errors[$error]['lib'] = 'ErrorBadDefinitionOfImportProfile'; @@ -569,8 +564,7 @@ class ImportXlsx extends ModeleImports { $newval = $this->cacheconvert[$file.'_'.$class.'_'.$method.'_'.$units][$newval]; } - else - { + else { $resultload = dol_include_once($file); if (empty($resultload)) { @@ -587,8 +581,7 @@ class ImportXlsx extends ModeleImports { $newval = $scaleorid ? $scaleorid : 0; } - else - { + else { if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'scale', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); else $this->errors[$error]['lib'] = 'ErrorFieldValueNotIn'; $this->errors[$error]['type'] = 'FOREIGNKEY'; @@ -715,8 +708,7 @@ class ImportXlsx extends ModeleImports $i++; } } - else - { + else { dol_print_error($this->db); } } @@ -752,7 +744,7 @@ class ImportXlsx extends ModeleImports // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert if (empty($newval) && $arrayrecord[($key - 1)]['type'] < 0) $listvalues[] = ($newval == '0' ? $newval : "null"); elseif (empty($newval) && $arrayrecord[($key - 1)]['type'] == 0) $listvalues[] = "''"; - else $listvalues[] = "'".$this->db->escape($newval)."'"; + else $listvalues[] = "'".$this->db->escape($newval)."'"; } $i++; } @@ -784,8 +776,7 @@ class ImportXlsx extends ModeleImports $listfields[] = preg_replace('/^'.preg_quote($alias, '/').'\./', '', $key); $listvalues[] = "'".$tmp[1]."'"; } - else - { + else { $this->errors[$error]['lib'] = 'Bad value of profile setup '.$val.' for array_import_fieldshidden'; $this->errors[$error]['type'] = 'Import profile setup'; $error++; @@ -834,8 +825,7 @@ class ImportXlsx extends ModeleImports // No record found with filters, insert will be tried below } } - else - { + else { //print 'E'; $this->errors[$error]['lib'] = $this->db->lasterror(); $this->errors[$error]['type'] = 'SQL'; @@ -863,8 +853,7 @@ class ImportXlsx extends ModeleImports $lastinsertid = 0; } } - else - { + else { //print 'E'; $this->errors[$error]['lib'] = $this->db->lasterror(); $this->errors[$error]['type'] = 'SQL'; @@ -894,8 +883,7 @@ class ImportXlsx extends ModeleImports // No error, update has been done. $this->db->db->affected_rows can be 0 if data hasn't changed $updatedone = true; } - else - { + else { //print 'E'; $this->errors[$error]['lib'] = $this->db->lasterror(); $this->errors[$error]['type'] = 'SQL'; @@ -929,8 +917,7 @@ class ImportXlsx extends ModeleImports $last_insert_id_array[$tablename] = $this->db->last_insert_id($tablename); // store the last inserted auto_increment id for each table, so that child tables can be inserted with the appropriate id. This must be done just after the INSERT request, else we risk losing the id (because another sql query will be issued somewhere in Dolibarr). $insertdone = true; } - else - { + else { //print 'E'; $this->errors[$error]['lib'] = $this->db->lasterror(); $this->errors[$error]['type'] = 'SQL'; diff --git a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php index cda16561f8d..2a1b79bf4f3 100644 --- a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php +++ b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php @@ -205,8 +205,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder $dir = $conf->expedition->dir_output."/receipt"; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->expedition->dir_output."/receipt/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -358,8 +357,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -404,17 +402,15 @@ class pdf_typhon extends ModelePDFDeliveryOrder $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -490,8 +486,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -506,8 +501,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -525,8 +519,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -627,8 +620,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } @@ -775,8 +767,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); @@ -799,8 +790,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder { $pdf->MultiCell(100, 4, $outputlangs->transnoentities("Date")." : ".dol_print_date($object->date_delivery, "%d %b %Y", false, $outputlangs, true), '', 'R'); } - else - { + else { $pdf->SetTextColor(255, 0, 0); $pdf->MultiCell(100, 4, $outputlangs->transnoentities("DeliveryNotValidated"), '', 'R'); $pdf->SetTextColor(0, 0, 60); diff --git a/htdocs/core/modules/livraison/mod_livraison_jade.php b/htdocs/core/modules/livraison/mod_livraison_jade.php index 840b6a6f0a6..599a33578f5 100644 --- a/htdocs/core/modules/livraison/mod_livraison_jade.php +++ b/htdocs/core/modules/livraison/mod_livraison_jade.php @@ -143,8 +143,7 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { return -1; } diff --git a/htdocs/core/modules/mailings/advthirdparties.modules.php b/htdocs/core/modules/mailings/advthirdparties.modules.php index 464c657fa7b..858e44693b4 100644 --- a/htdocs/core/modules/mailings/advthirdparties.modules.php +++ b/htdocs/core/modules/mailings/advthirdparties.modules.php @@ -114,8 +114,7 @@ class mailing_advthirdparties extends MailingTargets $i++; } } - else - { + else { dol_syslog($this->db->error()); $this->error = $this->db->error(); return -1; @@ -169,8 +168,7 @@ class mailing_advthirdparties extends MailingTargets $i++; } } - else - { + else { dol_syslog($this->db->error()); $this->error = $this->db->error(); return -1; @@ -273,8 +271,7 @@ class mailing_advthirdparties extends MailingTargets $i++; } } - else - { + else { dol_print_error($this->db); } diff --git a/htdocs/core/modules/mailings/contacts1.modules.php b/htdocs/core/modules/mailings/contacts1.modules.php index 9d7a23ce9fd..1a4570df63f 100644 --- a/htdocs/core/modules/mailings/contacts1.modules.php +++ b/htdocs/core/modules/mailings/contacts1.modules.php @@ -191,8 +191,7 @@ class mailing_contacts1 extends MailingTargets $i++; } } - else - { + else { $s .= ''; } } @@ -266,8 +265,7 @@ class mailing_contacts1 extends MailingTargets $i++; } } - else - { + else { $s .= ''; } } @@ -308,8 +306,7 @@ class mailing_contacts1 extends MailingTargets $i++; } } - else - { + else { $s .= ''; } } @@ -448,8 +445,7 @@ class mailing_contacts1 extends MailingTargets $i++; } } - else - { + else { dol_syslog($this->db->error()); $this->error = $this->db->error(); return -1; diff --git a/htdocs/core/modules/mailings/fraise.modules.php b/htdocs/core/modules/mailings/fraise.modules.php index 8a504ff28b5..e94fe57aa3b 100644 --- a/htdocs/core/modules/mailings/fraise.modules.php +++ b/htdocs/core/modules/mailings/fraise.modules.php @@ -155,8 +155,7 @@ class mailing_fraise extends MailingTargets $i++; } } - else - { + else { dol_print_error($this->db); } @@ -194,8 +193,7 @@ class mailing_fraise extends MailingTargets $i++; } } - else - { + else { dol_print_error($this->db); } @@ -314,8 +312,7 @@ class mailing_fraise extends MailingTargets $i++; } } - else - { + else { dol_syslog($this->db->error()); $this->error = $this->db->error(); return -1; diff --git a/htdocs/core/modules/mailings/modules_mailings.php b/htdocs/core/modules/mailings/modules_mailings.php index ffba2571d23..9c042de1112 100644 --- a/htdocs/core/modules/mailings/modules_mailings.php +++ b/htdocs/core/modules/mailings/modules_mailings.php @@ -99,8 +99,7 @@ class MailingTargets // This can't be abstract as it is used for some method $obj = $this->db->fetch_object($result); return $obj->nb; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -193,8 +192,7 @@ class MailingTargets // This can't be abstract as it is used for some method { $j++; } - else - { + else { if ($this->db->errno() != 'DB_ERROR_RECORD_ALREADY_EXISTS') { // Si erreur autre que doublon diff --git a/htdocs/core/modules/mailings/pomme.modules.php b/htdocs/core/modules/mailings/pomme.modules.php index aa3e9bbc703..1f80623bece 100644 --- a/htdocs/core/modules/mailings/pomme.modules.php +++ b/htdocs/core/modules/mailings/pomme.modules.php @@ -214,8 +214,7 @@ class mailing_pomme extends MailingTargets $i++; } } - else - { + else { dol_syslog($this->db->error()); $this->error = $this->db->error(); return -1; diff --git a/htdocs/core/modules/mailings/thirdparties.modules.php b/htdocs/core/modules/mailings/thirdparties.modules.php index 05e9f4f12c4..4773203e5ad 100644 --- a/htdocs/core/modules/mailings/thirdparties.modules.php +++ b/htdocs/core/modules/mailings/thirdparties.modules.php @@ -80,8 +80,7 @@ class mailing_thirdparties extends MailingTargets $sql .= " AND s.entity IN (".getEntity('societe').")"; $sql .= " AND s.email NOT IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE fk_mailing=".$mailing_id.")"; } - else - { + else { $addFilter = ""; if (isset($_POST["filter_client"]) && $_POST["filter_client"] <> '-1') { @@ -103,8 +102,7 @@ class mailing_thirdparties extends MailingTargets { $addDescription .= $langs->trans('ProspectCustomer'); } - else - { + else { $addDescription .= "Unknown status ".$_POST["filter_client"]; } } @@ -120,8 +118,7 @@ class mailing_thirdparties extends MailingTargets $addFilter .= " AND s.status=1"; $addDescription .= $langs->trans("Enabled"); } - else - { + else { $addFilter .= " AND s.status=0"; $addDescription .= $langs->trans("Disabled"); } @@ -187,8 +184,7 @@ class mailing_thirdparties extends MailingTargets $i++; } } - else - { + else { dol_syslog($this->db->error()); $this->error = $this->db->error(); return -1; @@ -286,8 +282,7 @@ class mailing_thirdparties extends MailingTargets $i++; } } - else - { + else { dol_print_error($this->db); } diff --git a/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php b/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php index 866712d4bb0..1c76a924883 100644 --- a/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php +++ b/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php @@ -74,8 +74,7 @@ class mailing_thirdparties_services_expired extends MailingTargets $this->arrayofproducts[$i] = $obj->ref; } } - else - { + else { dol_print_error($this->db); } } @@ -154,8 +153,7 @@ class mailing_thirdparties_services_expired extends MailingTargets $i++; } } - else - { + else { dol_syslog($this->db->lasterror()); $this->error = $this->db->lasterror(); return -1; diff --git a/htdocs/core/modules/mailings/xinputfile.modules.php b/htdocs/core/modules/mailings/xinputfile.modules.php index 9d08cb3565d..040baddd7c2 100644 --- a/htdocs/core/modules/mailings/xinputfile.modules.php +++ b/htdocs/core/modules/mailings/xinputfile.modules.php @@ -180,8 +180,7 @@ class mailing_xinputfile extends MailingTargets $j++; } } - else - { + else { $i++; $langs->load("errors"); $msg = $langs->trans("ErrorFoundBadEmailInFile", $i, $cpt, $email); @@ -197,16 +196,14 @@ class mailing_xinputfile extends MailingTargets return -$i; } } - else - { + else { $this->error = $langs->trans("ErrorFaildToOpenFile"); return -1; } dol_syslog(get_class($this)."::add_to_target mailing ".$cpt." targets found"); } - else - { + else { $langs->load("errors"); if ($resupload < 0) // Unknown error { @@ -216,7 +213,7 @@ class mailing_xinputfile extends MailingTargets { $this->error = '
'.$langs->trans("ErrorFileIsInfectedWithAVirus").'
'; } - else // Known error + else // Known error { $this->error = '
'.$langs->trans($resupload).'
'; } diff --git a/htdocs/core/modules/mailings/xinputuser.modules.php b/htdocs/core/modules/mailings/xinputuser.modules.php index 0875b02ed56..56bbaa58137 100644 --- a/htdocs/core/modules/mailings/xinputuser.modules.php +++ b/htdocs/core/modules/mailings/xinputuser.modules.php @@ -149,15 +149,13 @@ class mailing_xinputuser extends MailingTargets return parent::addTargetsToDatabase($mailing_id, $cibles); } - else - { + else { $langs->load("errors"); $this->error = $langs->trans("ErrorBadEMail", $email); return -1; } } - else - { + else { $langs->load("errors"); $this->error = $langs->trans("ErrorBadEmail", $email); return -1; diff --git a/htdocs/core/modules/member/doc/pdf_standard.class.php b/htdocs/core/modules/member/doc/pdf_standard.class.php index 1582b1c1c34..e586de52b38 100644 --- a/htdocs/core/modules/member/doc/pdf_standard.class.php +++ b/htdocs/core/modules/member/doc/pdf_standard.class.php @@ -166,8 +166,7 @@ class pdf_standard extends CommonStickerGenerator // Output left area if ($textleft == '__LOGO__' && $logo) $pdf->Image($logo, $_PosX + $xleft, $_PosY + $ytop, $widthtouse, $heighttouse); elseif ($textleft == '__PHOTO__' && $photo) $pdf->Image($photo, $_PosX + $xleft, $_PosY + $ytop, $widthtouse, $heighttouse); - else - { + else { $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell($this->_Width, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); } @@ -188,7 +187,7 @@ class pdf_standard extends CommonStickerGenerator $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell($this->_Width - $widthtouse - $xleft - $xleft - 1, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); } - else // text on halft left and text on half right + else // text on halft left and text on half right { $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell(round($this->_Width / 2), $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); @@ -196,13 +195,12 @@ class pdf_standard extends CommonStickerGenerator $pdf->MultiCell(round($this->_Width / 2) - 2, $this->_Line_Height, $outputlangs->convToOutputCharset($textright), 0, 'R'); } } - else // Only a right part + else // Only a right part { // Output right area if ($textright == '__LOGO__' && $logo) $pdf->Image($logo, $_PosX + $this->_Width - $widthtouse - $xleft, $_PosY + $ytop, $widthtouse, $heighttouse); elseif ($textright == '__PHOTO__' && $photo) $pdf->Image($photo, $_PosX + $this->_Width - $widthtouse - $xleft, $_PosY + $ytop, $widthtouse, $heighttouse); - else - { + else { $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell($this->_Width - $xleft, $this->_Line_Height, $outputlangs->convToOutputCharset($textright), 0, 'R'); } @@ -306,8 +304,7 @@ class pdf_standard extends CommonStickerGenerator $arrayofrecords = $arrayofmembers; } - else - { + else { $arrayofrecords = $object; } @@ -337,8 +334,7 @@ class pdf_standard extends CommonStickerGenerator $title = $outputlangs->transnoentities('MembersCards'); $keywords = $outputlangs->transnoentities('MembersCards')." ".$outputlangs->transnoentities("Foundation")." ".$outputlangs->convToOutputCharset($mysoc->name); } - else - { + else { dol_print_error('', 'Bad value for $mode'); return -1; } @@ -350,8 +346,7 @@ class pdf_standard extends CommonStickerGenerator $dir = $outputdir."/".get_exdir(0, 0, 0, 0, $object, 'member'); $file = $dir.'/'.$filename; } - else - { + else { $outputdir = $conf->adherent->dir_temp; $dir = $outputdir; $file = $dir.'/'.$filename; diff --git a/htdocs/core/modules/member/modules_cards.php b/htdocs/core/modules/member/modules_cards.php index f9bdd58af24..5f2f7f8b8ae 100644 --- a/htdocs/core/modules/member/modules_cards.php +++ b/htdocs/core/modules/member/modules_cards.php @@ -100,8 +100,7 @@ function members_card_pdf_create($db, $arrayofmembers, $modele, $outputlangs, $o { $code = $conf->global->ADHERENT_CARDS_ADDON_PDF; } - else - { + else { $code = $modele; } } @@ -154,16 +153,14 @@ function members_card_pdf_create($db, $arrayofmembers, $modele, $outputlangs, $o $outputlangs->charset_output = $sav_charset_output; return 1; } - else - { + else { $outputlangs->charset_output = $sav_charset_output; dol_print_error($db, "members_card_pdf_create Error: ".$obj->error); return -1; } } - else - { + else { dol_print_error('', $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists", $file)); return -1; } diff --git a/htdocs/core/modules/modAgenda.class.php b/htdocs/core/modules/modAgenda.class.php index 2184500db8c..04283daf8b4 100644 --- a/htdocs/core/modules/modAgenda.class.php +++ b/htdocs/core/modules/modAgenda.class.php @@ -98,8 +98,7 @@ class modAgenda extends DolibarrModules $this->const[] = array('MAIN_AGENDA_ACTIONAUTO_'.$obj->code, "chaine", "1", '', 0, 'current'); } } - else - { + else { dol_print_error($this->db->lasterror()); } diff --git a/htdocs/core/modules/modBlockedLog.class.php b/htdocs/core/modules/modBlockedLog.class.php index 5b645747380..4527b620074 100644 --- a/htdocs/core/modules/modBlockedLog.class.php +++ b/htdocs/core/modules/modBlockedLog.class.php @@ -234,8 +234,7 @@ class modBlockedLog extends DolibarrModules { $res = $b->create($user, '0000000000'); // If already used for something else than SET or UNSET, we log with error } - else - { + else { $res = $b->create($user); } if ($res <= 0) { diff --git a/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php b/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php index e276fe1f5f7..ec0b497e7cd 100644 --- a/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php +++ b/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php @@ -137,8 +137,7 @@ class doc_generic_mo_odt extends ModelePDFMo unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -275,8 +274,7 @@ class doc_generic_mo_odt extends ModelePDFMo if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -309,8 +307,7 @@ class doc_generic_mo_odt extends ModelePDFMo $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } @@ -393,7 +390,7 @@ class doc_generic_mo_odt extends ModelePDFMo if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -404,8 +401,7 @@ class doc_generic_mo_odt extends ModelePDFMo } } // Replace tags of lines - try - { + try { $foundtagforlines = 1; try { $listlines = $odfHandler->setSegment('lines'); @@ -429,8 +425,7 @@ class doc_generic_mo_odt extends ModelePDFMo $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -504,8 +499,7 @@ class doc_generic_mo_odt extends ModelePDFMo return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/mrp/mod_mo_standard.php b/htdocs/core/modules/mrp/mod_mo_standard.php index 3fd3b1ad87e..8b0edd9c129 100644 --- a/htdocs/core/modules/mrp/mod_mo_standard.php +++ b/htdocs/core/modules/mrp/mod_mo_standard.php @@ -130,8 +130,7 @@ class mod_mo_standard extends ModeleNumRefMos if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog("mod_mo_standard::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/oauth/github_oauthcallback.php b/htdocs/core/modules/oauth/github_oauthcallback.php index 4320481abb1..766d615f884 100644 --- a/htdocs/core/modules/oauth/github_oauthcallback.php +++ b/htdocs/core/modules/oauth/github_oauthcallback.php @@ -153,8 +153,7 @@ else // If entry on page with no parameter, we arrive here { $url = $apiService->getAuthorizationUri(array('state'=>GETPOST('state'))); } - else - { + else { $url = $apiService->getAuthorizationUri(); // Parameter state will be randomly generated } diff --git a/htdocs/core/modules/oauth/google_oauthcallback.php b/htdocs/core/modules/oauth/google_oauthcallback.php index 68aba389f31..0af4113fb0a 100644 --- a/htdocs/core/modules/oauth/google_oauthcallback.php +++ b/htdocs/core/modules/oauth/google_oauthcallback.php @@ -151,8 +151,7 @@ else // If entry on page with no parameter, we arrive here { $url = $apiService->getAuthorizationUri(array('state'=>GETPOST('state'))); } - else - { + else { $url = $apiService->getAuthorizationUri(); // Parameter state will be randomly generated } diff --git a/htdocs/core/modules/oauth/stripelive_oauthcallback.php b/htdocs/core/modules/oauth/stripelive_oauthcallback.php index b2ff4165563..8be1be11cc8 100644 --- a/htdocs/core/modules/oauth/stripelive_oauthcallback.php +++ b/htdocs/core/modules/oauth/stripelive_oauthcallback.php @@ -157,8 +157,7 @@ else // If entry on page with no parameter, we arrive here { $url = $apiService->getAuthorizationUri(array('state'=>GETPOST('state'))); } - else - { + else { //$url = $apiService->getAuthorizationUri(); // Parameter state will be randomly generated //https://connect.stripe.com/oauth/authorize?response_type=code&client_id=ca_AX27ut70tJ1j6eyFCV3ObEXhNOo2jY6V&scope=read_write $url = 'https://connect.stripe.com/oauth/authorize?response_type=code&client_id='.$conf->global->OAUTH_STRIPE_LIVE_ID.'&scope=read_write'; diff --git a/htdocs/core/modules/oauth/stripetest_oauthcallback.php b/htdocs/core/modules/oauth/stripetest_oauthcallback.php index 925a55c7ca1..4374f65746e 100644 --- a/htdocs/core/modules/oauth/stripetest_oauthcallback.php +++ b/htdocs/core/modules/oauth/stripetest_oauthcallback.php @@ -157,8 +157,7 @@ else // If entry on page with no parameter, we arrive here { $url = $apiService->getAuthorizationUri(array('state'=>GETPOST('state'))); } - else - { + else { //$url = $apiService->getAuthorizationUri(); // Parameter state will be randomly generated //https://connect.stripe.com/oauth/authorize?response_type=code&client_id=ca_AX27ut70tJ1j6eyFCV3ObEXhNOo2jY6V&scope=read_write $url = 'https://connect.stripe.com/oauth/authorize?response_type=code&client_id='.$conf->global->OAUTH_STRIPE_TEST_ID.'&scope=read_write'; diff --git a/htdocs/core/modules/payment/mod_payment_cicada.php b/htdocs/core/modules/payment/mod_payment_cicada.php index 5650ad43707..b9909d64fea 100644 --- a/htdocs/core/modules/payment/mod_payment_cicada.php +++ b/htdocs/core/modules/payment/mod_payment_cicada.php @@ -137,8 +137,7 @@ class mod_payment_cicada extends ModeleNumRefPayments if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog(__METHOD__, LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php index 1a225518518..90f3825d007 100644 --- a/htdocs/core/modules/printing/printgcp.modules.php +++ b/htdocs/core/modules/printing/printgcp.modules.php @@ -157,8 +157,7 @@ class printing_printgcp extends PrintingDriver { $expiredat = $langs->trans("Unknown"); } - else - { + else { $expiredat = dol_print_date($endoflife, "dayhour"); } @@ -220,8 +219,7 @@ class printing_printgcp extends PrintingDriver { $html .= img_picto($langs->trans("Default"), 'on'); } - else - $html .= ''.img_picto($langs->trans("Disabled"), 'off').''; + else $html .= ''.img_picto($langs->trans("Disabled"), 'off').''; $html .= ''; $html .= ''."\n"; } @@ -326,14 +324,12 @@ class printing_printgcp extends PrintingDriver { $printer_id = $obj->printer_id; } - else - { + else { if (!empty($conf->global->PRINTING_GCP_DEFAULT)) { $printer_id = $conf->global->PRINTING_GCP_DEFAULT; } - else - { + else { $this->errors[] = 'NoDefaultPrinterDefined'; $error++; return $error; @@ -507,8 +503,7 @@ class printing_printgcp extends PrintingDriver $html .= ''; } } - else - { + else { $html .= ''; $html .= ''.$langs->trans("None").''; $html .= ''; diff --git a/htdocs/core/modules/printing/printipp.modules.php b/htdocs/core/modules/printing/printipp.modules.php index 5a3d2481c6d..a305b648cfe 100644 --- a/htdocs/core/modules/printing/printipp.modules.php +++ b/htdocs/core/modules/printing/printipp.modules.php @@ -116,15 +116,13 @@ class printing_printipp extends PrintingDriver dol_syslog("Found a default printer for user ".$user->id." = ".$obj->printer_id); $ipp->setPrinterURI($obj->printer_id); } - else - { + else { if (!empty($conf->global->PRINTIPP_URI_DEFAULT)) { dol_syslog("Will use default printer conf->global->PRINTIPP_URI_DEFAULT = ".$conf->global->PRINTIPP_URI_DEFAULT); $ipp->setPrinterURI($conf->global->PRINTIPP_URI_DEFAULT); } - else - { + else { $this->errors[] = 'NoDefaultPrinterDefined'; $error++; return $error; diff --git a/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php b/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php index f85984ab9bd..9155baa8aac 100644 --- a/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php +++ b/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php @@ -153,8 +153,7 @@ class pdf_standardlabel extends CommonStickerGenerator // Output left area if ($textleft == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX + $xleft, $_PosY + $ytop, $widthtouse, $heighttouse); elseif ($textleft == '%PHOTO%' && $photo) $pdf->Image($photo, $_PosX + $xleft, $_PosY + $ytop, $widthtouse, $heighttouse); - else - { + else { $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell($this->_Width, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); } @@ -175,7 +174,7 @@ class pdf_standardlabel extends CommonStickerGenerator $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell($this->_Width - $widthtouse - $xleft - $xleft - 1, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); } - else // text on halft left and text on half right + else // text on halft left and text on half right { $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell(round($this->_Width / 2), $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); @@ -183,13 +182,12 @@ class pdf_standardlabel extends CommonStickerGenerator $pdf->MultiCell(round($this->_Width / 2) - 2, $this->_Line_Height, $outputlangs->convToOutputCharset($textright), 0, 'R'); } } - else // Only a right part + else // Only a right part { // Output right area if ($textright == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX + $this->_Width - $widthtouse - $xleft, $_PosY + $ytop, $widthtouse, $heighttouse); elseif ($textright == '%PHOTO%' && $photo) $pdf->Image($photo, $_PosX + $this->_Width - $widthtouse - $xleft, $_PosY + $ytop, $widthtouse, $heighttouse); - else - { + else { $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell($this->_Width - $xleft, $this->_Line_Height, $outputlangs->convToOutputCharset($textright), 0, 'R'); } diff --git a/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php b/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php index 568d850765f..3a877049a26 100644 --- a/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php +++ b/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php @@ -167,8 +167,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator { $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX + $xleft, $_PosY + $ytop, $widthtouse, $heighttouse); } - else - { + else { $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell($this->_Width, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); } @@ -219,7 +218,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator $pdf->MultiCell($widthtouse - $logoWidth - 1, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); } } - else // text on halft left and text on half right + else // text on halft left and text on half right { $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell(round($this->_Width / 2), $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); @@ -227,7 +226,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator $pdf->MultiCell(round($this->_Width / 2) - 2, $this->_Line_Height, $outputlangs->convToOutputCharset($textright), 0, 'R'); } } - else // Only a right part + else // Only a right part { // Output right area if ($textright == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX + $this->_Width - $widthtouse - $xleft, $_PosY + $ytop, 0, $logoHeight); @@ -235,8 +234,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator { $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX + $this->_Width - $widthtouse - $xleft, $_PosY + $ytop, $widthtouse, $heighttouse); } - else - { + else { $pdf->SetXY($_PosX + $xleft, $_PosY + $ytop); $pdf->MultiCell($this->_Width - $xleft, $this->_Line_Height, $outputlangs->convToOutputCharset($textright), 0, 'R'); } diff --git a/htdocs/core/modules/printsheet/modules_labels.php b/htdocs/core/modules/printsheet/modules_labels.php index f99ddafc4b8..ddf6d73a2a3 100644 --- a/htdocs/core/modules/printsheet/modules_labels.php +++ b/htdocs/core/modules/printsheet/modules_labels.php @@ -101,8 +101,7 @@ function doc_label_pdf_create($db, $arrayofrecords, $modele, $outputlangs, $outp { $code = $conf->global->ADHERENT_ETIQUETTE_TYPE; } - else - { + else { $code = $modele; } } @@ -156,15 +155,13 @@ function doc_label_pdf_create($db, $arrayofrecords, $modele, $outputlangs, $outp $outputlangs->charset_output = $sav_charset_output; return 1; } - else - { + else { $outputlangs->charset_output = $sav_charset_output; dol_print_error($db, "doc_label_pdf_create Error: ".$obj->error); return -1; } } - else - { + else { dol_print_error('', $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists", $file)); return -1; } diff --git a/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php b/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php index c0fa4d0f6eb..3965bd1be5d 100644 --- a/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php +++ b/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php @@ -141,8 +141,7 @@ class doc_generic_product_odt extends ModelePDFProduct unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -294,8 +293,7 @@ class doc_generic_product_odt extends ModelePDFProduct if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -329,8 +327,7 @@ class doc_generic_product_odt extends ModelePDFProduct $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } // Make substitution @@ -417,7 +414,7 @@ class doc_generic_product_odt extends ModelePDFProduct if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -428,8 +425,7 @@ class doc_generic_product_odt extends ModelePDFProduct } } // Replace tags of lines - try - { + try { $listlines = $odfHandler->setSegment('supplierprices'); if (!empty($object->supplierprices)) { foreach ($object->supplierprices as $supplierprice) @@ -441,8 +437,7 @@ class doc_generic_product_odt extends ModelePDFProduct $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($array_lines as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -514,8 +509,7 @@ class doc_generic_product_odt extends ModelePDFProduct return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/product/doc/pdf_standard.modules.php b/htdocs/core/modules/product/doc/pdf_standard.modules.php index cbe618b488f..20c3ba9c087 100644 --- a/htdocs/core/modules/product/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/product/doc/pdf_standard.modules.php @@ -182,8 +182,7 @@ class pdf_standard extends ModelePDFProduct $dir = $conf->product->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->product->dir_output."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -335,8 +334,7 @@ class pdf_standard extends ModelePDFProduct $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -574,14 +572,12 @@ class pdf_standard extends ModelePDFProduct return 1; // No error } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "PRODUCT_OUTPUTDIR"); return 0; } @@ -741,16 +737,14 @@ class pdf_standard extends ModelePDFProduct $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } diff --git a/htdocs/core/modules/product/mod_codeproduct_elephant.php b/htdocs/core/modules/product/mod_codeproduct_elephant.php index ba6329004e3..dc6d7bfd6ef 100644 --- a/htdocs/core/modules/product/mod_codeproduct_elephant.php +++ b/htdocs/core/modules/product/mod_codeproduct_elephant.php @@ -280,8 +280,7 @@ class mod_codeproduct_elephant extends ModeleProductCode { $result = -2; } - else - { + else { // Get Mask value $mask = ''; if ($type == 0) $mask = empty($conf->global->PRODUCT_ELEPHANT_MASK_PRODUCT) ? '' : $conf->global->PRODUCT_ELEPHANT_MASK_PRODUCT; @@ -328,13 +327,11 @@ class mod_codeproduct_elephant extends ModeleProductCode { return 0; } - else - { + else { return -1; } } - else - { + else { return -2; } } diff --git a/htdocs/core/modules/product/modules_product.class.php b/htdocs/core/modules/product/modules_product.class.php index 80bc9f7ce0a..1ecd734dec2 100644 --- a/htdocs/core/modules/product/modules_product.class.php +++ b/htdocs/core/modules/product/modules_product.class.php @@ -170,8 +170,7 @@ abstract class ModeleProductCode $i++; } } - else - { + else { return -1; } return $liste; diff --git a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php index 542ea728f84..585edee00ee 100644 --- a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php +++ b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php @@ -408,8 +408,7 @@ class doc_generic_project_odt extends ModelePDFProjects unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -544,8 +543,7 @@ class doc_generic_project_odt extends ModelePDFProjects if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -636,7 +634,7 @@ class doc_generic_project_odt extends ModelePDFProjects if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -648,8 +646,7 @@ class doc_generic_project_odt extends ModelePDFProjects } // Replace tags of lines for tasks - try - { + try { $listlines = $odfHandler->setSegment('tasks'); $taskstatic = new Task($this->db); @@ -667,8 +664,7 @@ class doc_generic_project_odt extends ModelePDFProjects //complete_substitutions_array($tmparray, $outputlangs, $object, $task, "completesubstitutionarray_lines"); foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -718,8 +714,7 @@ class doc_generic_project_odt extends ModelePDFProjects foreach ($tmparray as $key => $val) { - try - { + try { $listlinestaskres->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -768,8 +763,7 @@ class doc_generic_project_odt extends ModelePDFProjects $tmparray = $this->get_substitutionarray_taskstime($row, $outputlangs); foreach ($tmparray as $key => $val) { - try - { + try { $listlinestasktime->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -808,8 +802,7 @@ class doc_generic_project_odt extends ModelePDFProjects foreach ($tmparray as $key => $val) { - try - { + try { $listlinestasktime->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -841,8 +834,7 @@ class doc_generic_project_odt extends ModelePDFProjects //dol_syslog(get_class($this).'::main $tmparray'.var_export($tmparray,true)); foreach ($tmparray as $key => $val) { - try - { + try { $listtasksfiles->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -873,8 +865,7 @@ class doc_generic_project_odt extends ModelePDFProjects } // Replace tags of project files - try - { + try { $listlines = $odfHandler->setSegment('projectfiles'); $upload_dir = $conf->projet->dir_output.'/'.dol_sanitizeFileName($object->ref); @@ -887,8 +878,7 @@ class doc_generic_project_odt extends ModelePDFProjects foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -923,8 +913,7 @@ class doc_generic_project_odt extends ModelePDFProjects } if ((is_array($contact_arrray) && count($contact_arrray) > 0)) { - try - { + try { $listlines = $odfHandler->setSegment('projectcontacts'); foreach ($contact_arrray as $contact) @@ -946,8 +935,7 @@ class doc_generic_project_odt extends ModelePDFProjects $tmparray = $this->get_substitutionarray_project_contacts($contact, $outputlangs); foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -1084,8 +1072,7 @@ class doc_generic_project_odt extends ModelePDFProjects ); //Insert reference - try - { + try { $listlines = $odfHandler->setSegment('projectrefs'); foreach ($listofreferent as $keyref => $valueref) @@ -1147,8 +1134,7 @@ class doc_generic_project_odt extends ModelePDFProjects foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -1217,8 +1203,7 @@ class doc_generic_project_odt extends ModelePDFProjects return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/project/doc/pdf_baleine.modules.php b/htdocs/core/modules/project/doc/pdf_baleine.modules.php index 59e3f855ebf..53b81ef5419 100644 --- a/htdocs/core/modules/project/doc/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/doc/pdf_baleine.modules.php @@ -301,8 +301,7 @@ class pdf_baleine extends ModelePDFProjects $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -359,15 +358,13 @@ class pdf_baleine extends ModelePDFProjects $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; $forcedesconsamepage = 1; if ($forcedesconsamepage) @@ -397,7 +394,7 @@ class pdf_baleine extends ModelePDFProjects } //var_dump($i.' '.$posybefore.' '.$posyafter.' '.($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforinfotot)).' '.$showpricebeforepagebreak); } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -452,8 +449,7 @@ class pdf_baleine extends ModelePDFProjects { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -468,8 +464,7 @@ class pdf_baleine extends ModelePDFProjects { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -484,8 +479,7 @@ class pdf_baleine extends ModelePDFProjects // Show square if ($pagenb == 1) $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); - else - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); + else $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; // Footer of the page @@ -514,14 +508,12 @@ class pdf_baleine extends ModelePDFProjects return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "PROJECT_OUTPUTDIR"); return 0; } @@ -613,8 +605,7 @@ class pdf_baleine extends ModelePDFProjects $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); diff --git a/htdocs/core/modules/project/doc/pdf_beluga.modules.php b/htdocs/core/modules/project/doc/pdf_beluga.modules.php index 4044676461e..0888a029d5b 100644 --- a/htdocs/core/modules/project/doc/pdf_beluga.modules.php +++ b/htdocs/core/modules/project/doc/pdf_beluga.modules.php @@ -274,8 +274,7 @@ class pdf_beluga extends ModelePDFProjects $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -509,15 +508,13 @@ class pdf_beluga extends ModelePDFProjects $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; $forcedesconsamepage = 1; if ($forcedesconsamepage) @@ -547,7 +544,7 @@ class pdf_beluga extends ModelePDFProjects } //var_dump($i.' '.$posybefore.' '.$posyafter.' '.($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforinfotot)).' '.$showpricebeforepagebreak); } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -590,8 +587,7 @@ class pdf_beluga extends ModelePDFProjects $fuser->fetch($element->fk_user_author); $pdf->MultiCell($this->posxamountht - $this->posxsociety, 3, $fuser->getFullName($outputlangs), 1, 'L'); } - else - { + else { $pdf->MultiCell($this->posxamountht - $this->posxsociety, 3, (is_object($element->thirdparty) ? $element->thirdparty->name : ''), 1, 'L'); } @@ -608,8 +604,7 @@ class pdf_beluga extends ModelePDFProjects $textforamount = dol_trunc($element->label, 26); $pdf->MultiCell($this->posxstatut - $this->posxamountht, 3, $textforamount, 1, 'L'); } - else - { + else { $pdf->MultiCell($this->posxstatut - $this->posxamountht, 3, "", 1, 'R'); } } @@ -688,14 +683,12 @@ class pdf_beluga extends ModelePDFProjects return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "PROJECT_OUTPUTDIR"); return 0; } @@ -787,8 +780,7 @@ class pdf_beluga extends ModelePDFProjects $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); diff --git a/htdocs/core/modules/project/doc/pdf_timespent.modules.php b/htdocs/core/modules/project/doc/pdf_timespent.modules.php index 2a13aa8ab57..0b0190cffd2 100644 --- a/htdocs/core/modules/project/doc/pdf_timespent.modules.php +++ b/htdocs/core/modules/project/doc/pdf_timespent.modules.php @@ -232,8 +232,7 @@ class pdf_timespent extends ModelePDFProjects $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -290,15 +289,13 @@ class pdf_timespent extends ModelePDFProjects $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; $forcedesconsamepage = 1; if ($forcedesconsamepage) @@ -328,7 +325,7 @@ class pdf_timespent extends ModelePDFProjects } //var_dump($i.' '.$posybefore.' '.$posyafter.' '.($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforinfotot)).' '.$showpricebeforepagebreak); } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -383,8 +380,7 @@ class pdf_timespent extends ModelePDFProjects { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -399,8 +395,7 @@ class pdf_timespent extends ModelePDFProjects { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -415,8 +410,7 @@ class pdf_timespent extends ModelePDFProjects // Show square if ($pagenb == 1) $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); - else - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); + else $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; // Pied de page @@ -445,14 +439,12 @@ class pdf_timespent extends ModelePDFProjects return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "PROJECT_OUTPUTDIR"); return 0; } @@ -544,8 +536,7 @@ class pdf_timespent extends ModelePDFProjects $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); diff --git a/htdocs/core/modules/project/mod_project_simple.php b/htdocs/core/modules/project/mod_project_simple.php index 301e226020c..9929dd357cb 100644 --- a/htdocs/core/modules/project/mod_project_simple.php +++ b/htdocs/core/modules/project/mod_project_simple.php @@ -107,8 +107,7 @@ class mod_project_simple extends ModeleNumRefProjects { return true; } - else - { + else { $langs->load("errors"); $this->error = $langs->trans('ErrorNumRefModel', $max); return false; @@ -141,8 +140,7 @@ class mod_project_simple extends ModeleNumRefProjects if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog("mod_project_simple::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php index 9b7b15a884d..eee9945bb8a 100644 --- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php +++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php @@ -377,8 +377,7 @@ class doc_generic_task_odt extends ModelePDFTask unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -565,7 +564,7 @@ class doc_generic_task_odt extends ModelePDFTask if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -575,8 +574,7 @@ class doc_generic_task_odt extends ModelePDFTask } // Replace tags of lines for tasks - try - { + try { // Security check $socid = 0; if (!empty($project->fk_soc)) $socid = $project->fk_soc; @@ -674,8 +672,7 @@ class doc_generic_task_odt extends ModelePDFTask foreach ($tmparray as $key => $val) { - try - { + try { $listlinestasktime->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -709,8 +706,7 @@ class doc_generic_task_odt extends ModelePDFTask //dol_syslog(get_class($this).'::main $tmparray'.var_export($tmparray,true)); foreach ($tmparray as $key => $val) { - try - { + try { $listtasksfiles->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -738,8 +734,7 @@ class doc_generic_task_odt extends ModelePDFTask // Replace tags of project files - try - { + try { $listlines = $odfHandler->setSegment('projectfiles'); $upload_dir = $conf->projet->dir_output.'/'.dol_sanitizeFileName($object->ref); @@ -753,8 +748,7 @@ class doc_generic_task_odt extends ModelePDFTask foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -789,8 +783,7 @@ class doc_generic_task_odt extends ModelePDFTask } if ((is_array($contact_arrray) && count($contact_arrray) > 0)) { - try - { + try { $listlines = $odfHandler->setSegment('projectcontacts'); foreach ($contact_arrray as $contact) @@ -813,8 +806,7 @@ class doc_generic_task_odt extends ModelePDFTask foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -875,8 +867,7 @@ class doc_generic_task_odt extends ModelePDFTask return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/project/task/mod_task_simple.php b/htdocs/core/modules/project/task/mod_task_simple.php index cb186594b84..8a409765526 100644 --- a/htdocs/core/modules/project/task/mod_task_simple.php +++ b/htdocs/core/modules/project/task/mod_task_simple.php @@ -108,8 +108,7 @@ class mod_task_simple extends ModeleNumRefTask { return true; } - else - { + else { $langs->load("errors"); $this->error = $langs->trans('ErrorNumRefModel', $max); return false; @@ -141,8 +140,7 @@ class mod_task_simple extends ModeleNumRefTask if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog("mod_task_simple::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php index 33850c5d882..e0bcefbd880 100644 --- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php +++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php @@ -140,8 +140,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -309,8 +308,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -343,8 +341,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } // Make substitution @@ -431,7 +428,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -442,8 +439,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales } } // Replace tags of lines - try - { + try { $foundtagforlines = 1; try { $listlines = $odfHandler->setSegment('lines'); @@ -467,8 +463,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -540,8 +535,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index c285f560678..409df828876 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -173,8 +173,7 @@ class pdf_azur extends ModelePDFPropales $this->posxqty = 135; $this->posxunit = 151; } - else - { + else { $this->posxtva = 110; $this->posxup = 126; $this->posxqty = 145; @@ -245,8 +244,7 @@ class pdf_azur extends ModelePDFPropales $pdir[0] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; $pdir[1] = get_exdir(0, 0, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; } - else - { + else { $pdir[0] = get_exdir(0, 0, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; // default $pdir[1] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; // alternative } @@ -270,13 +268,11 @@ class pdf_azur extends ModelePDFPropales { $filename = $obj['photo_vignette']; } - else - { + else { $filename = $obj['photo']; } } - else - { + else { $filename = $obj['photo']; } @@ -304,8 +300,7 @@ class pdf_azur extends ModelePDFPropales $dir = $conf->propal->multidir_output[$conf->entity]; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->propal->multidir_output[$object->entity]."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -509,8 +504,7 @@ class pdf_azur extends ModelePDFPropales // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } if (isset($imglinesize['width']) && isset($imglinesize['height'])) @@ -548,18 +542,16 @@ class pdf_azur extends ModelePDFPropales $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -677,8 +669,7 @@ class pdf_azur extends ModelePDFPropales { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -693,8 +684,7 @@ class pdf_azur extends ModelePDFPropales { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -712,8 +702,7 @@ class pdf_azur extends ModelePDFPropales $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter, 0, $outputlangs, 0, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter + 1; } @@ -782,8 +771,7 @@ class pdf_azur extends ModelePDFPropales $filetomerge_dir = $conf->service->multidir_output[$entity_product_file].'/'.get_exdir($product->id, 2, 0, 0, $product, 'product').$product->id."/photos"; } } - else - { + else { if (!empty($conf->product->enabled)) { $filetomerge_dir = $conf->product->multidir_output[$entity_product_file].'/'.get_exdir(0, 0, 0, 0, $product, 'product').dol_sanitizeFileName($product->ref); } elseif (!empty($conf->service->enabled)) { @@ -836,14 +824,12 @@ class pdf_azur extends ModelePDFPropales return 1; // No error } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "PROP_OUTPUTDIR"); return 0; } @@ -1101,8 +1087,7 @@ class pdf_azur extends ModelePDFPropales { // Nothing to do } - else - { + else { //Local tax 1 before VAT //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') //{ @@ -1494,16 +1479,14 @@ class pdf_azur extends ModelePDFPropales $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } diff --git a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php index 1af66ca645e..1490dfe4adc 100644 --- a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php @@ -232,8 +232,7 @@ class pdf_cyan extends ModelePDFPropales $pdir[0] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; $pdir[1] = get_exdir(0, 0, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; } - else - { + else { $pdir[0] = get_exdir(0, 0, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; // default $pdir[1] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; // alternative } @@ -257,13 +256,11 @@ class pdf_cyan extends ModelePDFPropales { $filename = $obj['photo_vignette']; } - else - { + else { $filename = $obj['photo']; } } - else - { + else { $filename = $obj['photo']; } @@ -292,8 +289,7 @@ class pdf_cyan extends ModelePDFPropales $dir = $conf->propal->multidir_output[$conf->entity]; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->propal->multidir_output[$object->entity]."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -551,8 +547,7 @@ class pdf_cyan extends ModelePDFPropales $tab_height = $tab_height - $height_note; $tab_top = $posyafter + 6; } - else - { + else { $height_note = 0; } @@ -602,8 +597,7 @@ class pdf_cyan extends ModelePDFPropales // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } @@ -644,17 +638,15 @@ class pdf_cyan extends ModelePDFPropales $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -808,8 +800,7 @@ class pdf_cyan extends ModelePDFPropales { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -824,8 +815,7 @@ class pdf_cyan extends ModelePDFPropales { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -843,8 +833,7 @@ class pdf_cyan extends ModelePDFPropales $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter, 0, $outputlangs, $hidetop, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter + 1; } @@ -913,8 +902,7 @@ class pdf_cyan extends ModelePDFPropales $filetomerge_dir = $conf->service->multidir_output[$entity_product_file].'/'.get_exdir($product->id, 2, 0, 0, $product, 'product').$product->id."/photos"; } } - else - { + else { if (!empty($conf->product->enabled)) { $filetomerge_dir = $conf->product->multidir_output[$entity_product_file].'/'.get_exdir(0, 0, 0, 0, $product, 'product').dol_sanitizeFileName($product->ref); } elseif (!empty($conf->service->enabled)) { @@ -967,14 +955,12 @@ class pdf_cyan extends ModelePDFPropales return 1; // No error } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "PROP_OUTPUTDIR"); return 0; } @@ -1232,8 +1218,7 @@ class pdf_cyan extends ModelePDFPropales { // Nothing to do } - else - { + else { //Local tax 1 before VAT //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') //{ @@ -1568,16 +1553,14 @@ class pdf_cyan extends ModelePDFPropales $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -2006,8 +1989,7 @@ class pdf_cyan extends ModelePDFPropales { $this->cols = array_replace($this->cols, $hookmanager->resArray); // array_replace is used to preserve keys } - else - { + else { $this->cols = $hookmanager->resArray; } } diff --git a/htdocs/core/modules/propale/mod_propale_marbre.php b/htdocs/core/modules/propale/mod_propale_marbre.php index 4dde423a5e6..d342f9d6a4a 100644 --- a/htdocs/core/modules/propale/mod_propale_marbre.php +++ b/htdocs/core/modules/propale/mod_propale_marbre.php @@ -109,8 +109,7 @@ class mod_propale_marbre extends ModeleNumRefPropales { return true; } - else - { + else { $langs->load("errors"); $this->error = $langs->trans('ErrorNumRefModel', $max); return false; @@ -142,8 +141,7 @@ class mod_propale_marbre extends ModeleNumRefPropales if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/rapport/pdf_paiement.class.php b/htdocs/core/modules/rapport/pdf_paiement.class.php index 103d0fdffba..4f8c8221e79 100644 --- a/htdocs/core/modules/rapport/pdf_paiement.class.php +++ b/htdocs/core/modules/rapport/pdf_paiement.class.php @@ -211,8 +211,7 @@ class pdf_paiement // If global param PAYMENTS_REPORT_GROUP_BY_MOD is set, payement are ordered by paiement_code if (!empty($conf->global->PAYMENTS_REPORT_GROUP_BY_MOD)) $sql .= " ORDER BY paiement_code ASC, p.datep ASC, pf.fk_paiement ASC"; - else - $sql .= " ORDER BY p.datep ASC, pf.fk_paiement ASC"; + else $sql .= " ORDER BY p.datep ASC, pf.fk_paiement ASC"; break; case "fourn": $sql = "SELECT p.datep as dp, f.ref as ref"; @@ -245,8 +244,7 @@ class pdf_paiement // If global param PAYMENTS_FOURN_REPORT_GROUP_BY_MOD is set, payement fourn are ordered by paiement_code if (!empty($conf->global->PAYMENTS_FOURN_REPORT_GROUP_BY_MOD)) $sql .= " ORDER BY paiement_code ASC, p.datep ASC, pf.fk_paiementfourn ASC"; - else - $sql .= " ORDER BY p.datep ASC, pf.fk_paiementfourn ASC"; + else $sql .= " ORDER BY p.datep ASC, pf.fk_paiementfourn ASC"; break; } @@ -274,8 +272,7 @@ class pdf_paiement $i++; } } - else - { + else { dol_print_error($this->db); } diff --git a/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php b/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php index 89a532c2556..1a7076095ec 100644 --- a/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php +++ b/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php @@ -132,8 +132,7 @@ class doc_generic_reception_odt extends ModelePdfReception unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -272,8 +271,7 @@ class doc_generic_reception_odt extends ModelePdfReception if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -301,8 +299,7 @@ class doc_generic_reception_odt extends ModelePdfReception if (!empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; else $socobject = $object->thirdparty; } - else - { + else { $socobject = $object->thirdparty; } @@ -371,7 +368,7 @@ class doc_generic_reception_odt extends ModelePdfReception if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -391,7 +388,7 @@ class doc_generic_reception_odt extends ModelePdfReception if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -409,7 +406,7 @@ class doc_generic_reception_odt extends ModelePdfReception if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -431,7 +428,7 @@ class doc_generic_reception_odt extends ModelePdfReception if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -440,8 +437,7 @@ class doc_generic_reception_odt extends ModelePdfReception } } // Replace tags of lines - try - { + try { $listlines = $odfHandler->setSegment('lines'); foreach ($object->lines as $line) { @@ -513,8 +509,7 @@ class doc_generic_reception_odt extends ModelePdfReception return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/reception/doc/pdf_squille.modules.php b/htdocs/core/modules/reception/doc/pdf_squille.modules.php index 25b7b62388f..1901a9fc044 100644 --- a/htdocs/core/modules/reception/doc/pdf_squille.modules.php +++ b/htdocs/core/modules/reception/doc/pdf_squille.modules.php @@ -149,13 +149,11 @@ class pdf_squille extends ModelePdfReception { $filename = $obj['photo_vignette']; } - else - { + else { $filename = $obj['photo']; } } - else - { + else { $filename = $obj['photo']; } @@ -177,8 +175,7 @@ class pdf_squille extends ModelePdfReception $dir = $conf->reception->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $rcpref = dol_sanitizeFileName($object->ref); $dir = $conf->reception->dir_output."/".$rcpref; $file = $dir."/".$rcpref.".pdf"; @@ -336,8 +333,7 @@ class pdf_squille extends ModelePdfReception $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -378,8 +374,7 @@ class pdf_squille extends ModelePdfReception // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } if (isset($imglinesize['width']) && isset($imglinesize['height'])) @@ -419,18 +414,16 @@ class pdf_squille extends ModelePdfReception $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -512,8 +505,7 @@ class pdf_squille extends ModelePdfReception { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -527,8 +519,7 @@ class pdf_squille extends ModelePdfReception { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -545,8 +536,7 @@ class pdf_squille extends ModelePdfReception $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -578,14 +568,12 @@ class pdf_squille extends ModelePdfReception return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "EXP_OUTPUTDIR"); return 0; } @@ -822,16 +810,14 @@ class pdf_squille extends ModelePdfReception $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -841,8 +827,7 @@ class pdf_squille extends ModelePdfReception { $posx = 105; } - else - { + else { $posx = $this->marge_gauche + 3; } //$pdf->Rect($this->marge_gauche, $this->marge_haute, $this->page_largeur-$this->marge_gauche-$this->marge_droite, 30); diff --git a/htdocs/core/modules/reception/mod_reception_beryl.php b/htdocs/core/modules/reception/mod_reception_beryl.php index 66576eaab76..ee3122749a3 100644 --- a/htdocs/core/modules/reception/mod_reception_beryl.php +++ b/htdocs/core/modules/reception/mod_reception_beryl.php @@ -114,8 +114,7 @@ class mod_reception_beryl extends ModelNumRefReception if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog("mod_reception_beryl::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php b/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php index 2a7e0cf287f..cff1ae3f897 100644 --- a/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php +++ b/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php @@ -117,8 +117,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc $tmpdir = preg_replace('/DOL_DATA_ROOT/', DOL_DATA_ROOT, $tmpdir); if (!$tmpdir) { unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.od(s|t)$', '', 'name', SORT_ASC, 0, true); // Disable hook for the moment if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -250,8 +249,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -313,8 +311,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc } if ((is_array($contact_arrray) && count($contact_arrray) > 0)) { - try - { + try { $listlines = $odfHandler->setSegment('companycontacts'); foreach ($contact_arrray as $array_key => $contact_id) @@ -323,8 +320,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc $tmparray = $this->get_substitutionarray_contact($contactstatic, $outputlangs, 'contact'); foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -370,7 +366,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -439,8 +435,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/societe/mod_codeclient_elephant.php b/htdocs/core/modules/societe/mod_codeclient_elephant.php index 22ec06c8aa6..ce85de4670d 100644 --- a/htdocs/core/modules/societe/mod_codeclient_elephant.php +++ b/htdocs/core/modules/societe/mod_codeclient_elephant.php @@ -286,8 +286,7 @@ class mod_codeclient_elephant extends ModeleThirdPartyCode { $result = -2; } - else - { + else { // Get Mask value $mask = ''; if ($type == 0) $mask = empty($conf->global->COMPANY_ELEPHANT_MASK_CUSTOMER) ? '' : $conf->global->COMPANY_ELEPHANT_MASK_CUSTOMER; @@ -336,13 +335,11 @@ class mod_codeclient_elephant extends ModeleThirdPartyCode { return 0; } - else - { + else { return -1; } } - else - { + else { return -2; } } diff --git a/htdocs/core/modules/societe/mod_codeclient_monkey.php b/htdocs/core/modules/societe/mod_codeclient_monkey.php index 15519688f98..5582e6459af 100644 --- a/htdocs/core/modules/societe/mod_codeclient_monkey.php +++ b/htdocs/core/modules/societe/mod_codeclient_monkey.php @@ -145,8 +145,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { return -1; } @@ -189,8 +188,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode { $result = -2; } - else - { + else { if ($this->verif_syntax($code) >= 0) { $is_dispo = $this->verif_dispo($db, $code, $soc, $type); @@ -198,19 +196,16 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode { $result = -3; } - else - { + else { $result = 0; } } - else - { + else { if (dol_strlen($code) == 0) { $result = -2; } - else - { + else { $result = -1; } } @@ -250,13 +245,11 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode { return 0; } - else - { + else { return -1; } } - else - { + else { return -2; } } @@ -278,8 +271,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode { $res = -1; } - else - { + else { $res = 0; } return $res; diff --git a/htdocs/core/modules/societe/mod_codecompta_aquarium.php b/htdocs/core/modules/societe/mod_codecompta_aquarium.php index 78b0e2fae8e..27b1572555e 100644 --- a/htdocs/core/modules/societe/mod_codecompta_aquarium.php +++ b/htdocs/core/modules/societe/mod_codecompta_aquarium.php @@ -147,8 +147,7 @@ class mod_codecompta_aquarium extends ModeleAccountancyCode $codetouse = (!empty($societe->code_fournisseur) ? $societe->code_fournisseur : 'SUPPCODE'); $prefix = $this->prefixsupplieraccountancycode; } - else - { + else { $this->error = 'Bad value for parameter type'; return -1; } @@ -172,8 +171,7 @@ class mod_codecompta_aquarium extends ModeleAccountancyCode { $this->code = $codetouse; } - else - { + else { // Pour retour $this->code = $codetouse; } @@ -211,14 +209,12 @@ class mod_codecompta_aquarium extends ModeleAccountancyCode dol_syslog("mod_codecompta_aquarium::verif code '".$code."' available"); return 1; // Dispo } - else - { + else { dol_syslog("mod_codecompta_aquarium::verif code '".$code."' not available"); return 0; // Non dispo } } - else - { + else { $this->error = $db->error()." sql=".$sql; return -1; // Erreur } diff --git a/htdocs/core/modules/societe/mod_codecompta_digitaria.php b/htdocs/core/modules/societe/mod_codecompta_digitaria.php index d97ac5df0ff..3a689b8df93 100644 --- a/htdocs/core/modules/societe/mod_codecompta_digitaria.php +++ b/htdocs/core/modules/societe/mod_codecompta_digitaria.php @@ -170,8 +170,7 @@ class mod_codecompta_digitaria extends ModeleAccountancyCode $prefix = $this->prefixcustomeraccountancycode; $width = $this->customeraccountancycodecharacternumber; } - else - { + else { $this->error = 'Bad value for parameter type'; return -1; } @@ -221,8 +220,7 @@ class mod_codecompta_digitaria extends ModeleAccountancyCode { return 0; // return ok } - else - { + else { return -1; // return ko } } @@ -245,8 +243,7 @@ class mod_codecompta_digitaria extends ModeleAccountancyCode { $typethirdparty = 'code_compta'; } - else - { + else { $this->error = 'Bad value for parameter type'; return -1; } @@ -262,14 +259,12 @@ class mod_codecompta_digitaria extends ModeleAccountancyCode dol_syslog("mod_codecompta_digitaria::checkIfAccountancyCodeIsAlreadyUsed '".$code."' available"); return 0; // Available } - else - { + else { dol_syslog("mod_codecompta_digitaria::checkIfAccountancyCodeIsAlreadyUsed '".$code."' not available"); return -1; // Not available } } - else - { + else { $this->error = $db->error()." sql=".$sql; return -2; // Error } diff --git a/htdocs/core/modules/societe/modules_societe.class.php b/htdocs/core/modules/societe/modules_societe.class.php index a6df7aaea20..ea10843a94a 100644 --- a/htdocs/core/modules/societe/modules_societe.class.php +++ b/htdocs/core/modules/societe/modules_societe.class.php @@ -173,8 +173,7 @@ abstract class ModeleThirdPartyCode $i++; } } - else - { + else { return -1; } return $liste; diff --git a/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php b/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php index d5ccf5dbd89..c68d1c37642 100644 --- a/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php +++ b/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php @@ -141,8 +141,7 @@ class doc_generic_stock_odt extends ModelePDFStock unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -295,8 +294,7 @@ class doc_generic_stock_odt extends ModelePDFStock if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -330,8 +328,7 @@ class doc_generic_stock_odt extends ModelePDFStock $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } // Make substitution @@ -418,7 +415,7 @@ class doc_generic_stock_odt extends ModelePDFStock if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -429,8 +426,7 @@ class doc_generic_stock_odt extends ModelePDFStock } } // Replace tags of lines - try - { + try { $listlines = $odfHandler->setSegment('supplierprices'); if (!empty($object->supplierprices)) { foreach ($object->supplierprices as $supplierprice) @@ -442,8 +438,7 @@ class doc_generic_stock_odt extends ModelePDFStock $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($array_lines as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -515,8 +510,7 @@ class doc_generic_stock_odt extends ModelePDFStock return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/stock/doc/pdf_standard.modules.php b/htdocs/core/modules/stock/doc/pdf_standard.modules.php index c50f3d2a2f8..708f06a4491 100644 --- a/htdocs/core/modules/stock/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/stock/doc/pdf_standard.modules.php @@ -211,8 +211,7 @@ class pdf_standard extends ModelePDFStock $dir = $conf->stock->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->stock->dir_output."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -380,18 +379,16 @@ class pdf_standard extends ModelePDFStock $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -476,8 +473,7 @@ class pdf_standard extends ModelePDFStock { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -492,8 +488,7 @@ class pdf_standard extends ModelePDFStock { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -544,8 +539,7 @@ class pdf_standard extends ModelePDFStock $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->postotalht, 3, price(price2num($totalvaluesell, 'MT'), 0, $outputlangs), 0, 'R', 0); } } - else - { + else { dol_print_error($db); } @@ -570,8 +564,7 @@ class pdf_standard extends ModelePDFStock $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -705,8 +698,7 @@ class pdf_standard extends ModelePDFStock $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -745,14 +737,12 @@ class pdf_standard extends ModelePDFStock return 1; // No error } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "PRODUCT_OUTPUTDIR"); return 0; } @@ -913,16 +903,14 @@ class pdf_standard extends ModelePDFStock $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -965,8 +953,7 @@ class pdf_standard extends ModelePDFStock { $pdf->MultiCell(150, 3, $e->label, '', 'R'); } - else - { + else { $pdf->MultiCell(150, 3, $outputlangs->transnoentities("None"), '', 'R'); } @@ -1004,8 +991,7 @@ class pdf_standard extends ModelePDFStock $obj = $db->fetch_object($resqlbis); $lastmovementdate = $db->jdate($obj->datem); } - else - { + else { dol_print_error($db); } @@ -1013,8 +999,7 @@ class pdf_standard extends ModelePDFStock { $toWrite = dol_print_date($lastmovementdate, 'dayhour').' '; } - else - { + else { $toWrite = $outputlangs->transnoentities("None"); } diff --git a/htdocs/core/modules/stock/doc/pdf_stdmovement.modules.php b/htdocs/core/modules/stock/doc/pdf_stdmovement.modules.php index d0e9ba9d1e4..dcf461fd9c0 100644 --- a/htdocs/core/modules/stock/doc/pdf_stdmovement.modules.php +++ b/htdocs/core/modules/stock/doc/pdf_stdmovement.modules.php @@ -286,8 +286,7 @@ class pdf_stdmovement extends ModelePDFMovement { if ($year > 0) $sql .= " AND m.datem BETWEEN '".$db->idate(dol_get_first_day($year, $month, false))."' AND '".$db->idate(dol_get_last_day($year, $month, false))."'"; - else - $sql .= " AND date_format(m.datem, '%m') = '$month'"; + else $sql .= " AND date_format(m.datem, '%m') = '$month'"; } elseif ($year > 0) { @@ -363,8 +362,7 @@ class pdf_stdmovement extends ModelePDFMovement $i = 0; $help_url = 'EN:Module_Stocks_En|FR:Module_Stock|ES:Módulo_Stocks'; if ($msid) $texte = $langs->trans('StockMovementForId', $msid); - else - { + else { $texte = $langs->trans("ListOfStockMovements"); if ($id) $texte .= ' ('.$langs->trans("ForThisWarehouse").')'; } @@ -376,8 +374,7 @@ class pdf_stdmovement extends ModelePDFMovement $dir = $conf->stock->dir_output."/movement"; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); if (!empty($search_inventorycode)) $objectref .= "_".$id."_".$search_inventorycode; if ($search_type_mouvement) $objectref .= "_".$search_type_mouvement; @@ -540,18 +537,16 @@ class pdf_stdmovement extends ModelePDFMovement $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -667,8 +662,7 @@ class pdf_stdmovement extends ModelePDFMovement { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -683,8 +677,7 @@ class pdf_stdmovement extends ModelePDFMovement { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -720,8 +713,7 @@ class pdf_stdmovement extends ModelePDFMovement $pdf->SetXY($this->postotalht, $curY); $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->postotalht, 3, $totalunit, 0, 'R', 0); } - else - { + else { dol_print_error($db); } @@ -746,8 +738,7 @@ class pdf_stdmovement extends ModelePDFMovement $tab_height = $tab_height - $height_note; $tab_top = $nexY + 6; } - else - { + else { $height_note = 0; } @@ -763,8 +754,7 @@ class pdf_stdmovement extends ModelePDFMovement $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -803,14 +793,12 @@ class pdf_stdmovement extends ModelePDFMovement return 1; // No error } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "PRODUCT_OUTPUTDIR"); return 0; } @@ -994,16 +982,14 @@ class pdf_stdmovement extends ModelePDFMovement $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -1046,8 +1032,7 @@ class pdf_stdmovement extends ModelePDFMovement { $pdf->MultiCell(150, 3, $e->label, '', 'R'); } - else - { + else { $pdf->MultiCell(150, 3, $outputlangs->transnoentities("None"), '', 'R'); } @@ -1085,8 +1070,7 @@ class pdf_stdmovement extends ModelePDFMovement $obj = $db->fetch_object($resqlbis); $lastmovementdate = $db->jdate($obj->datem); } - else - { + else { dol_print_error($db); } @@ -1094,8 +1078,7 @@ class pdf_stdmovement extends ModelePDFMovement { $toWrite = dol_print_date($lastmovementdate, 'dayhour').' '; } - else - { + else { $toWrite = $outputlangs->transnoentities("None"); } diff --git a/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php index 2e3b4e177d7..551d960008a 100644 --- a/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php @@ -234,8 +234,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $dir = $conf->fournisseur->facture->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $objectrefsupplier = dol_sanitizeFileName($object->ref_supplier); $dir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id, 2, 0, 0, $object, 'invoice_supplier').$objectref; @@ -425,17 +424,15 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -536,8 +533,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -552,8 +548,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -571,8 +566,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -615,14 +609,12 @@ class pdf_canelle extends ModelePDFSuppliersInvoices return 1; // No error } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->transnoentities("ErrorConstantNotDefined", "SUPPLIER_OUTPUTDIR"); return 0; } @@ -733,8 +725,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_localtax2, 0, $outputlangs), 0, 'R', 1); } } - else - { + else { //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') //{ //Local tax 1 @@ -1049,8 +1040,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $i++; } } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -1148,8 +1138,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->SetTextColor(0, 0, 60); $pdf->MultiCell(100, 4, $outputlangs->transnoentities("Date")." : ".dol_print_date($object->date, "day", false, $outputlangs, true), '', 'R'); } - else - { + else { $posy += 4; $pdf->SetXY($posx, $posy); $pdf->SetTextColor(255, 0, 0); diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php index c821e6b60aa..70c20a77fb3 100644 --- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php +++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php @@ -193,8 +193,7 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { return -1; } diff --git a/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php b/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php index d7f48915308..7be80850526 100644 --- a/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php +++ b/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php @@ -138,8 +138,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -239,8 +238,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders $dir = $conf->fournisseur->commande->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $objectrefsupplier = dol_sanitizeFileName($object->ref_supplier); $dir = $conf->fournisseur->commande->dir_output.'/'.$objectref; @@ -274,8 +272,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -308,8 +305,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } @@ -396,7 +392,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -407,8 +403,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders } } // Replace tags of lines - try - { + try { $foundtagforlines = 1; try { $listlines = $odfHandler->setSegment('lines'); @@ -432,8 +427,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -507,8 +501,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php b/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php index 657160a9a1b..b08adfcb97c 100644 --- a/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php +++ b/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php @@ -222,8 +222,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdir = get_exdir($object->lines[$i]->fk_product, 2, 0, 0, $objphoto, 'product').$object->lines[$i]->fk_product."/photos/"; $dir = $conf->product->dir_output.'/'.$pdir; } - else - { + else { $pdir = get_exdir(0, 2, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; $dir = $conf->product->dir_output.'/'.$pdir; } @@ -258,8 +257,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $dir = $conf->fournisseur->commande->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $objectrefsupplier = dol_sanitizeFileName($object->ref_supplier); $dir = $conf->fournisseur->commande->dir_output.'/'.$objectref; @@ -491,8 +489,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $tab_height = $tab_height - $height_note; $tab_top = $posyafter + 6; } - else - { + else { $height_note = 0; } @@ -535,8 +532,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } if (!empty($imglinesize['width']) && !empty($imglinesize['height'])) @@ -574,17 +570,15 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -734,8 +728,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -750,8 +743,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -769,8 +761,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, $hidetop, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -813,14 +804,12 @@ class pdf_cornas extends ModelePDFSuppliersOrders return 1; // No error } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "SUPPLIER_OUTPUTDIR"); return 0; } @@ -1009,8 +998,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_localtax2), $useborder, 'R', 1); } } - else - { + else { //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') //{ //Local tax 1 @@ -1243,16 +1231,14 @@ class pdf_cornas extends ModelePDFSuppliersOrders $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -1296,8 +1282,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdf->SetTextColor(0, 0, 60); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("OrderDate")." : ".dol_print_date($object->date_commande, "day", false, $outputlangs, true), '', 'R'); } - else - { + else { $posy += 5; $pdf->SetXY($posx, $posy); $pdf->SetTextColor(255, 0, 0); @@ -1645,8 +1630,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders { $this->cols = array_replace($this->cols, $hookmanager->resArray); // array_replace is used to preserve keys } - else - { + else { $this->cols = $hookmanager->resArray; } } diff --git a/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php index 4a27b58f8ae..c2a6af6c05e 100644 --- a/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php @@ -238,8 +238,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdir = get_exdir($object->lines[$i]->fk_product, 2, 0, 0, $objphoto, 'product').$object->lines[$i]->fk_product."/photos/"; $dir = $conf->product->dir_output.'/'.$pdir; } - else - { + else { $pdir = get_exdir(0, 2, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; $dir = $conf->product->dir_output.'/'.$pdir; } @@ -274,8 +273,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $dir = $conf->fournisseur->commande->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $objectrefsupplier = dol_sanitizeFileName($object->ref_supplier); $dir = $conf->fournisseur->commande->dir_output.'/'.$objectref; @@ -447,8 +445,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } if (!empty($imglinesize['width']) && !empty($imglinesize['height'])) @@ -467,8 +464,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders { $descWidth = $this->posxpicture - $curX; } - else - { + else { $descWidth = $this->posxtva - $curX; } pdf_writelinedesc($pdf, $object, $i, $outputlangs, $descWidth, 3, $curX, $curY, $hideref, $hidedesc, 1); @@ -492,17 +488,15 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -617,8 +611,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -633,8 +626,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object->multicurrency_code); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -652,8 +644,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -696,14 +687,12 @@ class pdf_muscadet extends ModelePDFSuppliersOrders return 1; // No error } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "SUPPLIER_OUTPUTDIR"); return 0; } @@ -892,8 +881,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_localtax2), $useborder, 'R', 1); } } - else - { + else { //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') //{ //Local tax 1 @@ -1159,16 +1147,14 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -1212,8 +1198,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetTextColor(0, 0, 60); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("OrderDate")." : ".dol_print_date($object->date_commande, "day", false, $outputlangs, true), '', 'R'); } - else - { + else { $posy += 5; $pdf->SetXY($posx, $posy); $pdf->SetTextColor(255, 0, 0); diff --git a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php index df4a60b10e2..c8129f1e491 100644 --- a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php +++ b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php @@ -117,8 +117,7 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders { return true; } - else - { + else { $langs->load("errors"); $this->error = $langs->trans('ErrorNumRefModel', $max); return false; 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 0ad8b391faf..060394beca6 100644 --- a/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php @@ -231,8 +231,7 @@ class pdf_standard extends ModelePDFSuppliersPayments $dir = $conf->fournisseur->payment->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $objectrefsupplier = dol_sanitizeFileName($object->ref_supplier); $dir = $conf->fournisseur->payment->dir_output.'/'.$objectref; @@ -360,17 +359,15 @@ class pdf_standard extends ModelePDFSuppliersPayments $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -433,8 +430,7 @@ class pdf_standard extends ModelePDFSuppliersPayments { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -449,8 +445,7 @@ class pdf_standard extends ModelePDFSuppliersPayments { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -468,8 +463,7 @@ class pdf_standard extends ModelePDFSuppliersPayments $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -506,14 +500,12 @@ class pdf_standard extends ModelePDFSuppliersPayments return 1; // No error } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "SUPPLIER_OUTPUTDIR"); return 0; } @@ -663,16 +655,14 @@ class pdf_standard extends ModelePDFSuppliersPayments $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } diff --git a/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php b/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php index 9baa8d2dafe..4ee8ed90490 100644 --- a/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php +++ b/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php @@ -137,8 +137,7 @@ class mod_supplier_payment_bronan extends ModeleNumRefSupplierPayments if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog(__METHOD__, LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php b/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php index c97d2f94d63..8b0d7f108a1 100644 --- a/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php +++ b/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php @@ -142,8 +142,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -307,8 +306,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -338,15 +336,13 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal { $socobject = $object->contact; } - else - { + else { $socobject = $object->thirdparty; // if we have a CUSTOMER contact and we dont use it as recipient we store the contact object for later use $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } @@ -432,7 +428,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -443,8 +439,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal } } // Replace tags of lines - try - { + try { $foundtagforlines = 1; try { $listlines = $odfHandler->setSegment('lines'); @@ -468,8 +463,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key => $val) { - try - { + try { $listlines->setVars($key, $val, true, 'UTF-8'); } catch (OdfException $e) @@ -541,8 +535,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } 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 afaf4987e04..fd5fb653a5a 100644 --- a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php +++ b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php @@ -234,8 +234,7 @@ class pdf_aurore extends ModelePDFSupplierProposal $pdir = get_exdir($object->lines[$i]->fk_product, 2, 0, 0, $objphoto, 'product').$object->lines[$i]->fk_product."/photos/"; $dir = $conf->product->dir_output.'/'.$pdir; } - else - { + else { $pdir = get_exdir(0, 2, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; $dir = $conf->product->dir_output.'/'.$pdir; } @@ -266,8 +265,7 @@ class pdf_aurore extends ModelePDFSupplierProposal $dir = $conf->supplier_proposal->dir_output; $file = $dir."/SPECIMEN.pdf"; } - else - { + else { $objectref = dol_sanitizeFileName($object->ref); $dir = $conf->supplier_proposal->dir_output."/".$objectref; $file = $dir."/".$objectref.".pdf"; @@ -432,8 +430,7 @@ class pdf_aurore extends ModelePDFSupplierProposal // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } if (!empty($imglinesize['width']) && !empty($imglinesize['height'])) @@ -452,8 +449,7 @@ class pdf_aurore extends ModelePDFSupplierProposal { $descWidth = $this->posxpicture - $curX; } - else - { + else { $descWidth = $this->posxtva - $curX; } pdf_writelinedesc($pdf, $object, $i, $outputlangs, $descWidth, 3, $curX, $curY, $hideref, $hidedesc, 1); @@ -480,17 +476,15 @@ class pdf_aurore extends ModelePDFSupplierProposal $pdf->setPage($pageposafter + 1); } } - else - { + else { // We found a page break // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) $showpricebeforepagebreak = 1; - else - $showpricebeforepagebreak = 0; + else $showpricebeforepagebreak = 0; } } - else // No pagebreak + else // No pagebreak { $pdf->commitTransaction(); } @@ -613,8 +607,7 @@ class pdf_aurore extends ModelePDFSupplierProposal { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -629,8 +622,7 @@ class pdf_aurore extends ModelePDFSupplierProposal { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf, $object, $outputlangs, 1); @@ -648,8 +640,7 @@ class pdf_aurore extends ModelePDFSupplierProposal $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - else - { + else { $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -694,14 +685,12 @@ class pdf_aurore extends ModelePDFSupplierProposal return 1; // No error } - else - { + else { $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorConstantNotDefined", "SUPPLIER_PROPOSAL_OUTPUTDIR"); return 0; } @@ -943,8 +932,7 @@ class pdf_aurore extends ModelePDFSupplierProposal { // Nothing to do } - else - { + else { //Local tax 1 before VAT //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') //{ @@ -1315,16 +1303,14 @@ class pdf_aurore extends ModelePDFSupplierProposal $height = pdf_getHeightForLogo($logo); $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) } - else - { + else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } - else - { + else { $text = $this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } @@ -1453,8 +1439,7 @@ class pdf_aurore extends ModelePDFSupplierProposal else $socname = $object->thirdparty->name; $carac_client_name = $outputlangs->convToOutputCharset($socname); } - else - { + else { $carac_client_name = $outputlangs->convToOutputCharset($object->thirdparty->name); } diff --git a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php index 37ba98b0058..02b1c5a6684 100644 --- a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php +++ b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php @@ -109,8 +109,7 @@ class mod_supplier_proposal_marbre extends ModeleNumRefSupplierProposal { return true; } - else - { + else { $langs->load("errors"); $this->error = $langs->trans('ErrorNumRefModel', $max); return false; @@ -142,8 +141,7 @@ class mod_supplier_proposal_marbre extends ModeleNumRefSupplierProposal if ($obj) $max = intval($obj->max); else $max = 0; } - else - { + else { dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG); return -1; } diff --git a/htdocs/core/modules/syslog/mod_syslog_file.php b/htdocs/core/modules/syslog/mod_syslog_file.php index dedf0844245..76869791d93 100644 --- a/htdocs/core/modules/syslog/mod_syslog_file.php +++ b/htdocs/core/modules/syslog/mod_syslog_file.php @@ -152,8 +152,7 @@ class mod_syslog_file extends LogHandler implements LogHandlerInterface print 'Failed to open log file '.($dolibarr_main_prod ?basename($logfile) : $logfile); } } - else - { + else { $logLevels = array( LOG_EMERG => 'EMERG', LOG_ALERT => 'ALERT', diff --git a/htdocs/core/modules/syslog/mod_syslog_syslog.php b/htdocs/core/modules/syslog/mod_syslog_syslog.php index 56ca1825ab4..d2f1200cc08 100644 --- a/htdocs/core/modules/syslog/mod_syslog_syslog.php +++ b/htdocs/core/modules/syslog/mod_syslog_syslog.php @@ -93,8 +93,7 @@ class mod_syslog_syslog extends LogHandler implements LogHandlerInterface dol_syslog("admin/syslog: facility ".$facility); } - else - { + else { $errors[] = $langs->trans("ErrorUnknownSyslogConstant", $facility); } diff --git a/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php b/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php index 881ba4cb469..5c2468e29c6 100644 --- a/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php +++ b/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php @@ -139,8 +139,7 @@ class doc_generic_user_odt extends ModelePDFUser unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -289,8 +288,7 @@ class doc_generic_user_odt extends ModelePDFUser if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -322,8 +320,7 @@ class doc_generic_user_odt extends ModelePDFUser $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } @@ -370,7 +367,7 @@ class doc_generic_user_odt extends ModelePDFUser if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -429,8 +426,7 @@ class doc_generic_user_odt extends ModelePDFUser return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php b/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php index 1b1d6ba1dab..9e227a43588 100644 --- a/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php +++ b/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php @@ -142,8 +142,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup unset($listofdir[$key]); continue; } if (!is_dir($tmpdir)) $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); - else - { + else { $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); if (count($tmpfiles)) $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -292,8 +291,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup if ($format == '1') $format = '%Y%m%d%H%M%S'; $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; } - else - { + else { $filename = $newfiletmp.'.'.$newfileformat; } $file = $dir.'/'.$filename; @@ -325,8 +323,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup $contactobject = $object->contact; } } - else - { + else { $socobject = $object->thirdparty; } // Make substitution @@ -402,14 +399,13 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup $reshook = $hookmanager->executeHooks('ODTSubstitution', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key=>$value) { - try - { + try { if (preg_match('/logo$/', $key)) // Image { if (file_exists($value)) $odfHandler->setImage($key, $value); else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - else // Text + else // Text { $odfHandler->setVars($key, $value, true, 'UTF-8'); } @@ -420,8 +416,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup } } // Replace tags of lines - try - { + try { $foundtagforlines = 1; try { $listlines = $odfHandler->setSegment('lines'); @@ -445,8 +440,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup $reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks foreach ($tmparray as $key => $val) { - try - { + try { if (!is_array($val)) { $listlines->setVars($key, $val, true, 'UTF-8'); } @@ -520,8 +514,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup return 1; // Success } - else - { + else { $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return -1; } diff --git a/htdocs/core/photos_resize.php b/htdocs/core/photos_resize.php index 2686efa6419..959d944352b 100644 --- a/htdocs/core/photos_resize.php +++ b/htdocs/core/photos_resize.php @@ -87,7 +87,7 @@ elseif ($modulepart == 'bank') if (!$user->rights->banque->lire) accessforbidden(); $accessallowed = 1; } -else // ticket, holiday, expensereport, societe... +else // ticket, holiday, expensereport, societe... { $result = restrictedArea($user, $modulepart, $id, $modulepart); if (empty($user->rights->$modulepart->read) && empty($user->rights->$modulepart->lire)) accessforbidden(); @@ -286,8 +286,7 @@ if ($cancel) header("Location: ".$backtourl); exit; } - else - { + else { dol_print_error('', 'Cancel on photo_resize with a not supported value of modulepart='.$modulepart); exit; } @@ -347,14 +346,12 @@ if ($action == 'confirm_resize' && GETPOSTISSET("file") && GETPOSTISSET("sizex") header("Location: ".$backtourl); exit; } - else - { + else { dol_print_error('', 'confirm_resize on photo_resize without backtourl defined for modulepart='.$modulepart); exit; } } - else - { + else { setEventMessages($result, null, 'errors'); $_GET['file'] = $_POST["file"]; $action = ''; @@ -417,14 +414,12 @@ if ($action == 'confirm_crop') header("Location: ".$backtourl); exit; } - else - { + else { dol_print_error('', 'confirm_crop on photo_resize without backtourl defined for modulepart='.$modulepart); exit; } } - else - { + else { setEventMessages($result, null, 'errors'); $_GET['file'] = $_POST["file"]; $action = ''; diff --git a/htdocs/core/search.php b/htdocs/core/search.php index b82536edbd2..01c7c078214 100644 --- a/htdocs/core/search.php +++ b/htdocs/core/search.php @@ -148,7 +148,6 @@ if (!empty($_SERVER['HTTP_REFERER'])) header("Location: ".$_SERVER['HTTP_REFERER']); exit; } -else -{ +else { print 'The wrapper search.php was called without any search criteria'; } diff --git a/htdocs/core/search_page.php b/htdocs/core/search_page.php index 119d7ff9a41..5d61ccecdb3 100644 --- a/htdocs/core/search_page.php +++ b/htdocs/core/search_page.php @@ -75,8 +75,7 @@ if ($conf->use_javascript_ajax && 1 == 2) // select2 is ko with jmobile $selected = -1; $searchform .= '

'.$form->selectArrayAjax('searchselectcombo', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, '', '', 0, 1, 'minwidth300', 1, $langs->trans("Search"), 0); } -else -{ +else { $usedbyinclude = 1; // Used into next include $showtitlebefore = GETPOST('showtitlebefore', 'int'); include DOL_DOCUMENT_ROOT.'/core/ajax/selectsearchbox.php'; diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php index 80a7cac7de3..960e0e57401 100644 --- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php @@ -218,8 +218,7 @@ if (in_array($type, array_keys($typewecanchangeinto))) } print ''; } -else -{ +else { print $type2label[$type]; print ''; } diff --git a/htdocs/core/tpl/admin_extrafields_view.tpl.php b/htdocs/core/tpl/admin_extrafields_view.tpl.php index 96620da28d9..4a6c7d67494 100644 --- a/htdocs/core/tpl/admin_extrafields_view.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_view.tpl.php @@ -118,8 +118,7 @@ if (is_array($extrafields->attributes[$elementtype]['type']) && count($extrafiel print ""; } } -else -{ +else { $colspan = 13; if (!empty($conf->multicompany->enabled)) $colspan++; diff --git a/htdocs/core/tpl/bloc_comment.tpl.php b/htdocs/core/tpl/bloc_comment.tpl.php index 0e9e63bff12..d20894d6a03 100644 --- a/htdocs/core/tpl/bloc_comment.tpl.php +++ b/htdocs/core/tpl/bloc_comment.tpl.php @@ -112,8 +112,7 @@ if (!empty($object->comments)) $doleditor = new DolEditor('comment_description', $comment->description, '', 80, 'dolibarr_notes', 'In', 0, true, true, ROWS_3, '100%'); print $doleditor->Create(1); } - else - { + else { print $comment->description; } print '
'; // End comment-description @@ -125,8 +124,7 @@ if (!empty($object->comments)) print ''; } - else - { + else { if ($fk_user == $user->id || $user->admin == 1) { print ''; diff --git a/htdocs/core/tpl/card_presend.tpl.php b/htdocs/core/tpl/card_presend.tpl.php index 7e2dc1f420e..6087ca6e906 100644 --- a/htdocs/core/tpl/card_presend.tpl.php +++ b/htdocs/core/tpl/card_presend.tpl.php @@ -52,8 +52,7 @@ if ($action == 'presend') { $fileparams = dol_most_recent_file($diroutput.'/'.get_exdir($object->id, 2, 0, 0, $object, $object->element).$ref, preg_quote($ref, '/').'([^\-])+'); } - else - { + else { $fileparams = dol_most_recent_file($diroutput.'/'.$ref, preg_quote($ref, '/').'[^\-]+'); } @@ -104,8 +103,7 @@ if ($action == 'presend') { $fileparams = dol_most_recent_file($diroutput.'/'.get_exdir($object->id, 2, 0, 0, $object, $object->element).$ref, preg_quote($ref, '/').'([^\-])+'); } - else - { + else { $fileparams = dol_most_recent_file($diroutput.'/'.$ref, preg_quote($ref, '/').'[^\-]+'); } @@ -161,8 +159,7 @@ if ($action == 'presend') { $liste['thirdparty'] = $object->getFullName($outputlangs)." <".$object->email.">"; } - else - { + else { if (is_object($object->thirdparty)) { foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key => $value) { diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index e9f881accd2..0c1931d480f 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -178,8 +178,7 @@ foreach (array('internal', 'external') as $source) { $contactlist = $objectsrc->liste_contact(-1, $source); } - else - { + else { $contactlist = $object->liste_contact(-1, $source); } diff --git a/htdocs/core/tpl/extrafields_list_print_fields.tpl.php b/htdocs/core/tpl/extrafields_list_print_fields.tpl.php index 0d2949b4e24..efb89043b6b 100644 --- a/htdocs/core/tpl/extrafields_list_print_fields.tpl.php +++ b/htdocs/core/tpl/extrafields_list_print_fields.tpl.php @@ -36,8 +36,7 @@ if (!empty($extrafieldsobjectkey)) // $extrafieldsobject is the $object->table_e } $value = $datenotinstring; } - else - { + else { $value = $obj->$tmpkey; } // If field is a computed field, we make computation to get value diff --git a/htdocs/core/tpl/extrafields_list_search_input.tpl.php b/htdocs/core/tpl/extrafields_list_search_input.tpl.php index d6ebb8b919f..b3512136a10 100644 --- a/htdocs/core/tpl/extrafields_list_search_input.tpl.php +++ b/htdocs/core/tpl/extrafields_list_search_input.tpl.php @@ -39,8 +39,7 @@ if (!empty($extrafieldsobjectkey)) // $extrafieldsobject is the $object->table_e // TODO // Use showInputField in a particular manner to have input with a comparison operator, not input for a specific value date-hour-minutes } - else - { + else { // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') $morecss = ''; if (in_array($typeofextrafield, array('link', 'sellist'))) $morecss = 'maxwidth200'; diff --git a/htdocs/core/tpl/extrafields_list_search_title.tpl.php b/htdocs/core/tpl/extrafields_list_search_title.tpl.php index 9a83cbb42aa..169dd34fee1 100644 --- a/htdocs/core/tpl/extrafields_list_search_title.tpl.php +++ b/htdocs/core/tpl/extrafields_list_search_title.tpl.php @@ -27,8 +27,7 @@ if (!empty($extrafieldsobjectkey)) // $extrafieldsobject is the $object->table_e if ($extrafields->attributes[$extrafieldsobjectkey]['type'][$key] == 'separate') { print ''; } - else - { + else { $tooltip = empty($extrafields->attributes[$extrafieldsobjectkey]['help'][$key]) ? '' : $extrafields->attributes[$extrafieldsobjectkey]['help'][$key]; print getTitleFieldOfList($extrafields->attributes[$extrafieldsobjectkey]['label'][$key], 0, $_SERVER["PHP_SELF"], $sortonfield, "", $param, ($align ? 'align="'.$align.'" data-titlekey="'.$key.'"' : 'data-titlekey="'.$key.'"'), $sortfield, $sortorder, '', $disablesortlink, $tooltip)."\n"; diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php index 198a3910747..a7379a69d94 100644 --- a/htdocs/core/tpl/extrafields_view.tpl.php +++ b/htdocs/core/tpl/extrafields_view.tpl.php @@ -87,8 +87,7 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element] { $value = (isset($_POST["options_".$key]) ? $_POST["options_".$key] : $object->array_options["options_".$key]); } - else - { + else { $value = $object->array_options["options_".$key]; //var_dump($key.' - '.$value); } @@ -114,8 +113,7 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element] $lastseparatorkeyfound = $key; } - else - { + else { print ''; print ''; } -else -{ +else { print ''; print ''; print ''; @@ -178,7 +177,7 @@ if (empty($action) || $action == 'editfile' || $action == 'file_manager' || preg print ''; } - else // Show filtree when ajax is disabled (rare) + else // Show filtree when ajax is disabled (rare) { print ''; diff --git a/htdocs/core/tpl/list_print_total.tpl.php b/htdocs/core/tpl/list_print_total.tpl.php index 33be5fb99d1..f4f6974ac08 100644 --- a/htdocs/core/tpl/list_print_total.tpl.php +++ b/htdocs/core/tpl/list_print_total.tpl.php @@ -15,8 +15,7 @@ if (isset($totalarray['pos'])) { $i++; if (!empty($totalarray['pos'][$i])) print ''.price($totalarray['val'][$totalarray['pos'][$i]]).''; - else - { + else { if ($i == 1) { if ($num < $limit) print ''.$langs->trans("Total").''; diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php index 97bece99852..e0245175768 100644 --- a/htdocs/core/tpl/login.tpl.php +++ b/htdocs/core/tpl/login.tpl.php @@ -254,8 +254,7 @@ if (isset($conf->file->main_authentication) && preg_match('/openid/', $conf->fil $url = $conf->global->MAIN_AUTHENTICATION_OPENID_URL; if (!empty($url)) print ''.$langs->trans("LoginUsingOpenID").''; - else - { + else { $langs->load("errors"); print ''.$langs->trans("ErrorOpenIDSetupNotComplete", 'MAIN_AUTHENTICATION_OPENID_URL').''; } diff --git a/htdocs/core/tpl/massactions_pre.tpl.php b/htdocs/core/tpl/massactions_pre.tpl.php index 492590c65e4..c507144b151 100644 --- a/htdocs/core/tpl/massactions_pre.tpl.php +++ b/htdocs/core/tpl/massactions_pre.tpl.php @@ -99,8 +99,7 @@ if ($massaction == 'presend') $fuser->fetch($thirdpartyid); $liste['thirdparty'] = $fuser->getFullName($langs)." <".$fuser->email.">"; } - else - { + else { $soc = new Societe($db); $soc->fetch($thirdpartyid); foreach ($soc->thirdparty_and_contact_email_array(1) as $key => $value) { @@ -159,8 +158,7 @@ if ($massaction == 'presend') print ' - '.$langs->trans("GoBack").''; $arrayofmassactions = array(); } - else - { + else { print $formmail->get_form(); } diff --git a/htdocs/core/tpl/object_discounts.tpl.php b/htdocs/core/tpl/object_discounts.tpl.php index 8af029ce071..10db8476bef 100644 --- a/htdocs/core/tpl/object_discounts.tpl.php +++ b/htdocs/core/tpl/object_discounts.tpl.php @@ -43,8 +43,7 @@ if ($fixedDiscount > 0) $translationKey = (!empty($discount_type)) ? 'HasRelativeDiscountFromSupplier' : 'CompanyHasRelativeDiscount'; print $langs->trans($translationKey, $fixedDiscount).'.'; } -else -{ +else { $translationKey = (!empty($discount_type)) ? 'HasNoRelativeDiscountFromSupplier' : 'CompanyHasNoRelativeDiscount'; print $langs->trans($translationKey).'.'; } diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 0fb1aff011d..baa57c7d1c9 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -136,8 +136,7 @@ if ($nolinesbefore) { print ''; if ($conf->global->MARGIN_TYPE == "1") echo $langs->trans('BuyingPrice'); - else - echo $langs->trans('CostPrice'); + else echo $langs->trans('CostPrice'); echo ''; if (!empty($conf->global->DISPLAY_MARGIN_RATES)) echo ''.$langs->trans('MarginRate').''; if (!empty($conf->global->DISPLAY_MARK_RATES)) echo ''.$langs->trans('MarkRate').''; @@ -187,8 +186,7 @@ if ($nolinesbefore) { echo ''; echo ' '; } - else - { + else { echo ''; // Show type selector if ($forceall >= 0) @@ -214,8 +212,7 @@ if ($nolinesbefore) { elseif ((empty($conf->product->enabled) && !empty($conf->service->enabled)) || ($object->element == 'contrat' && empty($conf->global->CONTRACT_SUPPORT_PRODUCTS))) echo $langs->trans('PredefinedServicesToSell'); else echo $langs->trans('PredefinedProductsAndServicesToSell'); } - else - { + else { if (!empty($conf->product->enabled) && empty($conf->service->enabled)) echo $langs->trans('PredefinedProductsToPurchase'); elseif (empty($conf->product->enabled) && !empty($conf->service->enabled)) echo $langs->trans('PredefinedServicesToPurchase'); else echo $langs->trans('PredefinedProductsAndServicesToPurchase'); @@ -232,8 +229,7 @@ if ($nolinesbefore) { // hide products in closed warehouse, but show products for internal transfer $form->select_produits(GETPOST('idprod'), 'idprod', $filtertype, $conf->product->limit_size, $buyer->price_level, $statustoshow, 2, '', 1, array(), $buyer->id, '1', 0, 'maxwidth500', 0, 'warehouseopen,warehouseinternal', GETPOST('combinations', 'array')); } - else - { + else { $form->select_produits(GETPOST('idprod'), 'idprod', $filtertype, $conf->product->limit_size, $buyer->price_level, $statustoshow, 2, '', 1, array(), $buyer->id, '1', 0, 'maxwidth500', 0, '', GETPOST('combinations', 'array')); } if (!empty($conf->global->MAIN_AUTO_OPEN_SELECT2_ON_FOCUS_FOR_CUSTOMER_PRODUCTS)) @@ -255,8 +251,7 @@ if ($nolinesbefore) { array('remise_percent' => 'discount') // html id tags that will be edited with each ajax json response key ); @@ -449,8 +443,7 @@ if ((!empty($conf->service->enabled) || ($object->element == 'contrat')) && $dat print '   '.$langs->trans("DateEndPlanned").' '; print $form->selectDate($date_end, "date_end", $usehm, $usehm, 1, "addproduct"); } - else - { + else { print $langs->trans('ServiceLimitedDuration').' '.$langs->trans('From').' '; print $form->selectDate($date_start, 'date_start', empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE) ? 0 : 1, empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE) ? 0 : 1, 1, "addproduct", 1, 0); print ' '.$langs->trans('to').' '; diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index d316afb6966..8957021d359 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -231,8 +231,7 @@ $coldisplay++; // if credit note, dont allow to modify margin if ($line->subprice < 0) echo ''.$margin_rate.'%'; - else - echo '%'; + else echo '%'; $coldisplay++; } elseif (!empty($conf->global->DISPLAY_MARK_RATES)) @@ -241,8 +240,7 @@ $coldisplay++; // if credit note, dont allow to modify margin if ($line->subprice < 0) echo ''.$mark_rate.'%'; - else - echo '%'; + else echo '%'; $coldisplay++; } } diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index 8849020b885..34f78ae7fcc 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -111,22 +111,19 @@ if (($line->info_bits & 2) == 2) { $discount->fetch($line->fk_remise_except); print ($txt ? ' - ' : '').$langs->transnoentities("DiscountFromExcessPaid", $discount->getNomUrl(0)); } - else - { + else { print ($txt ? ' - ' : '').dol_htmlentitiesbr($line->description); } } } -else -{ +else { $format = $conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE ? 'dayhour' : 'day'; if ($line->fk_product > 0) { print $form->textwithtooltip($text, $description, 3, '', '', $i, 0, (!empty($line->fk_parent_line) ?img_picto('', 'rightarrow') : '')); } - else - { + else { $type = (!empty($line->product_type) ? $line->product_type : $line->fk_product_type); if ($type == 1) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); @@ -178,8 +175,7 @@ if ($user->rights->fournisseur->lire && $line->fk_fournprice > 0) { print $productfourn->getNomUrl(); } - else - { + else { print $productfourn->ref_supplier; } } diff --git a/htdocs/core/tpl/resource_view.tpl.php b/htdocs/core/tpl/resource_view.tpl.php index 2680a763a59..3e92af33a4d 100644 --- a/htdocs/core/tpl/resource_view.tpl.php +++ b/htdocs/core/tpl/resource_view.tpl.php @@ -50,8 +50,7 @@ if ((array) $linked_resources && count($linked_resources) > 0) print '
'; print '
'; } - else - { + else { $class = ''; if ($linked_resource['rowid'] == GETPOST('lineid')) $class = 'highlight'; diff --git a/htdocs/core/triggers/interface_20_all_Logevents.class.php b/htdocs/core/triggers/interface_20_all_Logevents.class.php index fceb1552f0b..591939c6156 100644 --- a/htdocs/core/triggers/interface_20_all_Logevents.class.php +++ b/htdocs/core/triggers/interface_20_all_Logevents.class.php @@ -203,8 +203,7 @@ class InterfaceLogevents extends DolibarrTriggers { return 1; } - else - { + else { $error = "Failed to insert security event: ".$event->error; $this->errors[] = $error; $this->error = $error; diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index 49939277f49..46a5df282d2 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -812,8 +812,7 @@ class InterfaceActionsAuto extends DolibarrTriggers $tmpuser->fetch($object->oldcopy->fk_user_assign); $object->actionmsg .= "\n".$langs->transnoentities("OldUser").': '.$tmpuser->getFullName($langs); } - else - { + else { $object->actionmsg .= "\n".$langs->transnoentities("OldUser").': '.$langs->trans("None"); } if ($object->fk_user_assign > 0) @@ -822,14 +821,13 @@ class InterfaceActionsAuto extends DolibarrTriggers $tmpuser->fetch($object->fk_user_assign); $object->actionmsg .= "\n".$langs->transnoentities("NewUser").': '.$tmpuser->getFullName($langs); } - else - { + else { $object->actionmsg .= "\n".$langs->transnoentities("NewUser").': '.$langs->trans("None"); } $object->sendtoid = 0; } // TODO Merge all previous cases into this generic one - else // $action = BILL_DELETE, TICKET_CREATE, TICKET_MODIFY, TICKET_DELETE, ... + else // $action = BILL_DELETE, 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). // Note that these key can be set in agenda setup, only if defined into c_action_trigger @@ -867,8 +865,7 @@ class InterfaceActionsAuto extends DolibarrTriggers { if (count($object->sendtoid) == 1) $contactforaction->fetch(reset($object->sendtoid)); } - else - { + else { if ($object->sendtoid > 0) $contactforaction->fetch($object->sendtoid); } // Set societeforaction. @@ -952,8 +949,7 @@ class InterfaceActionsAuto extends DolibarrTriggers $_SESSION['LAST_ACTION_CREATED'] = $ret; return 1; } - else - { + else { $this->error = "Failed to insert event : ".$actioncomm->error." ".join(',', $actioncomm->errors); $this->errors = $actioncomm->errors; diff --git a/htdocs/core/triggers/interface_50_modBlockedlog_ActionsBlockedLog.class.php b/htdocs/core/triggers/interface_50_modBlockedlog_ActionsBlockedLog.class.php index 2135f463ca7..7740191c94b 100644 --- a/htdocs/core/triggers/interface_50_modBlockedlog_ActionsBlockedLog.class.php +++ b/htdocs/core/triggers/interface_50_modBlockedlog_ActionsBlockedLog.class.php @@ -143,8 +143,7 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers $this->errors = $b->errors; return -1; } - else - { + else { return 1; } } diff --git a/htdocs/core/triggers/interface_50_modMailmanspip_Mailmanspipsynchro.class.php b/htdocs/core/triggers/interface_50_modMailmanspip_Mailmanspipsynchro.class.php index be5465c06f2..ce9e156883d 100644 --- a/htdocs/core/triggers/interface_50_modMailmanspip_Mailmanspipsynchro.class.php +++ b/htdocs/core/triggers/interface_50_modMailmanspip_Mailmanspipsynchro.class.php @@ -72,8 +72,7 @@ class InterfaceMailmanSpipsynchro extends DolibarrTriggers $this->errors = $object->context['linkto']->errors; $return = -1; } - else - { + else { $return = 1; } @@ -90,8 +89,7 @@ class InterfaceMailmanSpipsynchro extends DolibarrTriggers $this->errors = $object->context['unlinkoff']->errors; $return = -1; } - else - { + else { $return = 1; } @@ -110,8 +108,7 @@ class InterfaceMailmanSpipsynchro extends DolibarrTriggers if (!empty($object->error)) $this->errors[] = $object->error; $return = -1; } - else - { + else { $return = 1; } @@ -133,8 +130,7 @@ class InterfaceMailmanSpipsynchro extends DolibarrTriggers if (!empty($object->oldcopy->error)) $this->errors[] = $object->oldcopy->error; $return = -1; } - else - { + else { $return = 1; } } @@ -145,8 +141,7 @@ class InterfaceMailmanSpipsynchro extends DolibarrTriggers if (!empty($object->error)) $this->errors[] = $object->error; $return = -1; } - else - { + else { $return = 1; } } @@ -165,8 +160,7 @@ class InterfaceMailmanSpipsynchro extends DolibarrTriggers if (!empty($object->error)) $this->errors[] = $object->error; $return = -1; } - else - { + else { $return = 1; } diff --git a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php index 6bd33c5b2f9..b3625c09e47 100644 --- a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php +++ b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php @@ -171,8 +171,7 @@ class InterfaceTicketEmail extends DolibarrTriggers $ok = 1; } - else - { + else { $this->error = $userstat->error; $this->errors = $userstat->errors; } diff --git a/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php b/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php index e6c2df36ee1..303f4a523ad 100644 --- a/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php +++ b/htdocs/core/triggers/interface_80_modStripe_Stripe.class.php @@ -178,8 +178,7 @@ class InterfaceStripe extends DolibarrTriggers $customer->createTaxId($customer->id, array('type'=>'eu_vat', 'value'=>$vatcleaned)); } } - else - { + else { $taxids = $customer->allTaxIds($customer->id); if (is_array($taxids->data)) { diff --git a/htdocs/core/website.inc.php b/htdocs/core/website.inc.php index 5c618b089a3..4ac9d00ca53 100644 --- a/htdocs/core/website.inc.php +++ b/htdocs/core/website.inc.php @@ -118,8 +118,7 @@ if ($_SERVER['PHP_SELF'] != DOL_URL_ROOT.'/website/index.php') // If we browsing header("Location: ".DOL_URL_ROOT.'/public/website/index.php?website='.$websitekey.'&pageid='.$newpageid.'&l='.GETPOST('l', 'aZ09')); exit; } - else - { + else { $newpageref = $obj->pageurl; header("Location: ".$newpageref.'.php?l='.GETPOST('l', 'aZ09')); exit; diff --git a/htdocs/stripe/admin/stripe.php b/htdocs/stripe/admin/stripe.php index a8bca51dda3..f20ac732fd4 100644 --- a/htdocs/stripe/admin/stripe.php +++ b/htdocs/stripe/admin/stripe.php @@ -137,8 +137,7 @@ if ($action == "setlive") if ($res > 0) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -238,15 +237,13 @@ if (empty($conf->stripeconnect->enabled)) print ''; print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } //print $endpoint; } - else - { + else { print img_picto($langs->trans("inactive"), 'statut5'); } } @@ -311,22 +308,19 @@ if (empty($conf->stripeconnect->enabled)) print ''; print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } //print $endpoint; } - else - { + else { print img_picto($langs->trans("inactive"), 'statut5'); } } print ''; } -else -{ +else { print ''.$langs->trans("StripeConnect").''; print ''.$langs->trans("StripeConnect_Mode").''; } diff --git a/htdocs/stripe/charge.php b/htdocs/stripe/charge.php index 44c7db306a2..74fa1aafc43 100644 --- a/htdocs/stripe/charge.php +++ b/htdocs/stripe/charge.php @@ -66,8 +66,7 @@ if (!empty($conf->stripe->enabled) && (empty($conf->global->STRIPE_LIVE) || GETP $servicestatus = '0'; dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); } -else -{ +else { $service = 'StripeLive'; $servicestatus = '1'; } @@ -86,8 +85,7 @@ if (!$rowid) { $list = \Stripe\Charge::all($option, array("stripe_account" => $stripeacc)); } - else - { + else { $list = \Stripe\Charge::all($option); } @@ -184,16 +182,14 @@ if (!$rowid) { $societestatic->fetch($charge->metadata->dol_thirdparty_id); } - else - { + else { $societestatic->id = 0; } if (!empty($tmparray['MEM']) && $tmparray['MEM'] > 0) { $memberstatic->fetch($tmparray['MEM']); } - else - { + else { $memberstatic->id = 0; } diff --git a/htdocs/stripe/class/actions_stripe.class.php b/htdocs/stripe/class/actions_stripe.class.php index 33b19384085..4b68ad72b09 100644 --- a/htdocs/stripe/class/actions_stripe.class.php +++ b/htdocs/stripe/class/actions_stripe.class.php @@ -76,8 +76,7 @@ class ActionsStripeconnect $service = 'StripeTest'; dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); } - else - { + else { $service = 'StripeLive'; } @@ -209,8 +208,7 @@ class ActionsStripeconnect $langs->load("withdrawals"); print ''.$langs->trans("StripeConnectPay").''; } - else - { + else { print ''.$langs->trans("StripeConnectPay").''; } } diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php index a72e5291f58..4a56a2a1542 100644 --- a/htdocs/stripe/class/stripe.class.php +++ b/htdocs/stripe/class/stripe.class.php @@ -261,8 +261,7 @@ class Stripe extends CommonObject } } } - else - { + else { dol_print_error($this->db); } @@ -499,8 +498,7 @@ class Stripe extends CommonObject } } } - else - { + else { $_SESSION["stripe_payment_intent"] = $paymentintent; } } @@ -532,8 +530,7 @@ class Stripe extends CommonObject { return $paymentintent; } - else - { + else { return null; } } @@ -675,8 +672,7 @@ class Stripe extends CommonObject dol_syslog("getSetupIntent ".(is_object($setupintent) ? $setupintent->id : ''), LOG_INFO, -1); return $setupintent; } - else - { + else { dol_syslog("getSetupIntent return error=".$error, LOG_INFO, -1); return null; } @@ -721,8 +717,7 @@ class Stripe extends CommonObject { $card = $cu->sources->retrieve($cardref); } - else - { + else { $card = \Stripe\PaymentMethod::retrieve($cardref); } } else { @@ -769,8 +764,7 @@ class Stripe extends CommonObject $this->error = 'Creation of card on Stripe has failed'; } } - else - { + else { $connect = ''; if (!empty($stripeacc)) $connect = $stripeacc.'/'; $url = 'https://dashboard.stripe.com/'.$connect.'test/customers/'.$cu->id; @@ -793,8 +787,7 @@ class Stripe extends CommonObject $this->error = 'Creation of card on Stripe has failed'; } } - else - { + else { $connect = ''; if (!empty($stripeacc)) $connect = $stripeacc.'/'; $url = 'https://dashboard.stripe.com/'.$connect.'test/customers/'.$cu->id; @@ -832,8 +825,7 @@ class Stripe extends CommonObject } } } - else - { + else { dol_print_error($this->db); } @@ -944,8 +936,7 @@ class Stripe extends CommonObject { $charge->status = 'ok'; } - else - { + else { $charge->status = 'failed'; $charge->failure_code = $stripe->code; $charge->failure_message = $stripe->error; @@ -1039,16 +1030,14 @@ class Stripe extends CommonObject $charge->status = 'ok'; $charge->id = $paymentintent->id; } - else - { + else { $charge->status = 'failed'; $charge->failure_code = $stripe->code; $charge->failure_message = $stripe->error; $charge->failure_declinecode = $stripe->declinecode; } } - else - { + else { $charge = \Stripe\Charge::create($paymentarray, array("idempotency_key" => "$description", "stripe_account" => "$account")); } } @@ -1061,8 +1050,7 @@ class Stripe extends CommonObject { $return->message = 'Payment retreived by card status = '.$charge->status; } - else - { + else { if ($charge->source->type == 'card') { $return->message = $charge->source->card->brand." ....".$charge->source->card->last4; } elseif ($charge->source->type == 'three_d_secure') { diff --git a/htdocs/stripe/config.php b/htdocs/stripe/config.php index 730203245f4..1efe9a7f386 100644 --- a/htdocs/stripe/config.php +++ b/htdocs/stripe/config.php @@ -48,8 +48,7 @@ if (empty($conf->global->STRIPE_LIVE) || GETPOST('forcesandbox', 'alpha')) { $stripearrayofkeys = $stripearrayofkeysbyenv[0]; // Test } -else -{ +else { $stripearrayofkeys = $stripearrayofkeysbyenv[1]; // Live } diff --git a/htdocs/stripe/payout.php b/htdocs/stripe/payout.php index 17f2423327f..741921ac63c 100644 --- a/htdocs/stripe/payout.php +++ b/htdocs/stripe/payout.php @@ -65,8 +65,7 @@ if (!empty($conf->stripe->enabled) && (empty($conf->global->STRIPE_LIVE) || GETP $servicestatus = '0'; dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); } -else -{ +else { $service = 'StripeLive'; $servicestatus = '1'; } @@ -115,8 +114,7 @@ if (!$rowid) { { $payout = \Stripe\Payout::all(array("limit" => $limit), array("stripe_account" => $stripeacc)); } - else - { + else { $payout = \Stripe\Payout::all(array("limit" => $limit)); } diff --git a/htdocs/stripe/transaction.php b/htdocs/stripe/transaction.php index 3829eba4d0d..eb0ce7df09e 100644 --- a/htdocs/stripe/transaction.php +++ b/htdocs/stripe/transaction.php @@ -66,8 +66,7 @@ if (!empty($conf->stripe->enabled) && (empty($conf->global->STRIPE_LIVE) || GETP $servicestatus = '0'; dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); } -else -{ +else { $service = 'StripeLive'; $servicestatus = '1'; } @@ -114,8 +113,7 @@ if (!$rowid) { { $txn = \Stripe\BalanceTransaction::all(array("limit" => $limit), array("stripe_account" => $stripeacc)); } - else - { + else { $txn = \Stripe\BalanceTransaction::all(array("limit" => $limit)); } diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 08479b95871..d911e310d90 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -134,16 +134,14 @@ if (empty($reshook)) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); } - else - { + else { if ($object->id > 0) { $result = $object->createFromClone($user, $socid); if ($result > 0) { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result); exit(); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } @@ -411,8 +409,7 @@ if (empty($reshook)) $error++; } } // Standard creation - else - { + else { $id = $object->create($user); } @@ -443,14 +440,12 @@ if (empty($reshook)) header('Location: '.$_SERVER["PHP_SELF"].'?id='.$id); exit(); } - else - { + else { $db->rollback(); $action = 'create'; } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); $action = 'create'; @@ -552,8 +547,7 @@ if (empty($reshook)) $price_ht = GETPOST('price_ht'); $tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); } - else - { + else { $idprod = GETPOST('idprod', 'int'); $price_ht = ''; $tva_tx = ''; @@ -622,8 +616,7 @@ if (empty($reshook)) $productsupplier->ref_supplier = ''; } } - else - { + else { $fksoctosearch = $object->thirdparty->id; $productsupplier->get_buyprice(0, -1, $idprod, 'none', $fksoctosearch); // We force qty to -1 to be sure to find if a supplier price exist } @@ -738,8 +731,7 @@ if (empty($reshook)) { $pu_ht = price2num($price_ht, 'MU'); // $pu_ht must be rounded according to settings } - else - { + else { $pu_ttc = price2num(GETPOST('price_ttc'), 'MU'); $pu_ht = price2num($pu_ttc / (1 + ($tva_tx / 100)), 'MU'); // $pu_ht must be rounded according to settings } @@ -835,8 +827,7 @@ if (empty($reshook)) unset($_POST['date_endmonth']); unset($_POST['date_endyear']); } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); @@ -1139,8 +1130,7 @@ if ($action == 'create') if (!empty($conf->global->MULTICURRENCY_USE_ORIGIN_TX) && !empty($objectsrc->multicurrency_tx)) $currency_tx = $objectsrc->multicurrency_tx; } } - else - { + else { $cond_reglement_id = $soc->cond_reglement_supplier_id; $mode_reglement_id = $soc->mode_reglement_supplier_id; if (!empty($conf->multicurrency->enabled) && !empty($soc->multicurrency_code)) $currency_code = $soc->multicurrency_code; @@ -1895,8 +1885,7 @@ if ($action == 'create') if ($object->statut == SupplierProposal::STATUS_VALIDATED || $object->statut == SupplierProposal::STATUS_SIGNED) { if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->supplier_proposal->send_advance) { print ''; - } else - print ''; + } else print ''; } } diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 97c0ee27e4e..42c30c333d6 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -274,8 +274,7 @@ class SupplierProposal extends CommonObject { $price = $prod->multiprices[$this->thirdparty->price_level]; } - else - { + else { $price = $prod->price; } @@ -347,21 +346,18 @@ class SupplierProposal extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = $supplier_proposalligne->error; $this->db->rollback(); return -2; } } - else - { + else { $this->db->rollback(); return -2; } @@ -431,8 +427,7 @@ class SupplierProposal extends CommonObject { $pu = $pu_ht; } - else - { + else { $pu = $pu_ttc; } @@ -493,16 +488,14 @@ class SupplierProposal extends CommonObject return -1; } } - else - { + else { $this->error = $prod->error; $this->db->rollback(); return -1; } } } - else - { + else { $product_type = $type; } @@ -623,22 +616,19 @@ class SupplierProposal extends CommonObject $this->db->commit(); return $this->line->id; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->line->error; $this->db->rollback(); return -2; } } - else - { + else { $this->error = 'BadStatusOfObjectToAddLine'; return -5; } @@ -809,15 +799,13 @@ class SupplierProposal extends CommonObject $this->db->commit(); return $result; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; } } - else - { + else { dol_syslog(get_class($this)."::updateline Erreur -2 SupplierProposal en mode incompatible pour cette action"); return -2; } @@ -845,13 +833,11 @@ class SupplierProposal extends CommonObject return 1; } - else - { + else { return -1; } } - else - { + else { return -2; } } @@ -1080,15 +1066,13 @@ class SupplierProposal extends CommonObject // End call triggers } } - else - { + else { $this->error = $this->db->lasterror(); $error++; } } } - else - { + else { $this->error = $this->db->lasterror(); $error++; } @@ -1099,14 +1083,12 @@ class SupplierProposal extends CommonObject dol_syslog(get_class($this)."::create done id=".$this->id); return $this->id; } - else - { + else { $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -1168,8 +1150,7 @@ class SupplierProposal extends CommonObject // TODO Change product price if multi-prices } - else - { + else { $objsoc->fetch($this->socid); } @@ -1218,8 +1199,7 @@ class SupplierProposal extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -1; } @@ -1411,8 +1391,7 @@ class SupplierProposal extends CommonObject } $this->db->free($result); } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -1427,8 +1406,7 @@ class SupplierProposal extends CommonObject $this->error = "Record Not Found"; return 0; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -1464,8 +1442,7 @@ class SupplierProposal extends CommonObject { $num = $this->getNextNumRef($soc); } - else - { + else { $num = $this->ref; } $this->newref = dol_sanitizeFileName($num); @@ -1539,14 +1516,12 @@ class SupplierProposal extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { dol_syslog("You don't have permission to validate supplier proposal", LOG_WARNING); return -2; } @@ -1574,8 +1549,7 @@ class SupplierProposal extends CommonObject $this->date_livraison = $date_livraison; return 1; } - else - { + else { $this->error = $this->db->error(); dol_syslog(get_class($this)."::set_date_livraison Erreur SQL"); return -1; @@ -1609,8 +1583,7 @@ class SupplierProposal extends CommonObject $this->update_price(1); return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -1645,8 +1618,7 @@ class SupplierProposal extends CommonObject $this->update_price(1); return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -1709,8 +1681,7 @@ class SupplierProposal extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -1783,14 +1754,12 @@ class SupplierProposal extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->db->lasterror(); $this->errors[] = $this->db->lasterror(); $this->db->rollback(); @@ -1958,8 +1927,7 @@ class SupplierProposal extends CommonObject return -1; } } - else - { + else { return -1; } } @@ -2024,8 +1992,7 @@ class SupplierProposal extends CommonObject { $ga[$obj->supplier_proposalid] = $obj->ref.' ('.$obj->name.')'; } - else - { + else { $ga[$i]['id'] = $obj->supplier_proposalid; $ga[$i]['ref'] = $obj->ref; $ga[$i]['name'] = $obj->name; @@ -2036,8 +2003,7 @@ class SupplierProposal extends CommonObject } return $ga; } - else - { + else { dol_print_error($this->db); return -1; } @@ -2134,29 +2100,25 @@ class SupplierProposal extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return 0; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -3; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; } } - else - { + else { $this->db->rollback(); return -1; } @@ -2210,8 +2172,7 @@ class SupplierProposal extends CommonObject } $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -2341,8 +2302,7 @@ class SupplierProposal extends CommonObject } return $response; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -2410,8 +2370,7 @@ class SupplierProposal extends CommonObject $line->total_tva = 9.8; $line->remise_percent = 50; } - else - { + else { $line->total_ht = 100; $line->total_ttc = 119.6; $line->total_tva = 19.6; @@ -2470,8 +2429,7 @@ class SupplierProposal extends CommonObject $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->lasterror(); return -1; @@ -2521,14 +2479,12 @@ class SupplierProposal extends CommonObject { return $numref; } - else - { + else { $this->error = $obj->error; return ""; } } - else - { + else { $langs->load("errors"); print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("SupplierProposal")); return ""; @@ -2699,8 +2655,7 @@ class SupplierProposal extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -2995,8 +2950,7 @@ class SupplierProposalLine extends CommonObjectLine $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -3042,8 +2996,7 @@ class SupplierProposalLine extends CommonObjectLine { return $result; } - else - { + else { $this->pa_ht = $result; } } @@ -3130,8 +3083,7 @@ class SupplierProposalLine extends CommonObjectLine $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; @@ -3178,8 +3130,7 @@ class SupplierProposalLine extends CommonObjectLine return 1; } - else - { + else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; @@ -3225,8 +3176,7 @@ class SupplierProposalLine extends CommonObjectLine { return $result; } - else - { + else { $this->pa_ht = $result; } } @@ -3301,8 +3251,7 @@ class SupplierProposalLine extends CommonObjectLine $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -2; @@ -3336,8 +3285,7 @@ class SupplierProposalLine extends CommonObjectLine $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -2; diff --git a/htdocs/supplier_proposal/contact.php b/htdocs/supplier_proposal/contact.php index 43c9b91f563..8f606ad4f67 100644 --- a/htdocs/supplier_proposal/contact.php +++ b/htdocs/supplier_proposal/contact.php @@ -66,15 +66,13 @@ if ($action == 'addcontact' && $permissiontoedit) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -87,8 +85,7 @@ elseif ($action == 'swapstatut' && $permissiontoedit) { $result = $object->swapContactStatus(GETPOST('ligne')); } - else - { + else { dol_print_error($db); } } @@ -195,8 +192,7 @@ if ($id > 0 || !empty($ref)) // Contacts lines include DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php'; } - else - { + else { // Contact not found print "ErrorRecordNotFound"; } diff --git a/htdocs/supplier_proposal/document.php b/htdocs/supplier_proposal/document.php index 3f471e28b3f..3096e6fbbdb 100644 --- a/htdocs/supplier_proposal/document.php +++ b/htdocs/supplier_proposal/document.php @@ -167,8 +167,7 @@ if ($object->id > 0) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/supplier_proposal/index.php b/htdocs/supplier_proposal/index.php index e8432ad8fe4..7a575007be2 100644 --- a/htdocs/supplier_proposal/index.php +++ b/htdocs/supplier_proposal/index.php @@ -163,8 +163,7 @@ if ($resql) print ''.$langs->trans("Total").''.$total.''; print "

"; } -else -{ +else { dol_print_error($db); } @@ -384,8 +383,7 @@ if (!empty($conf->supplier_proposal->enabled) && $user->rights->supplier_proposa print "

"; } } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index ded5d9ca2bf..eba1db92a94 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -359,8 +359,7 @@ if ($resql) $soc->fetch($socid); $title = $langs->trans('ListOfSupplierProposals').' - '.$soc->name; } - else - { + else { $title = $langs->trans('ListOfSupplierProposals'); } @@ -951,8 +950,7 @@ if ($resql) print $formfile->showdocuments('massfilesarea_supplier_proposal', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php index 7e5b6aaf531..3f09ac541d3 100644 --- a/htdocs/support/inc.php +++ b/htdocs/support/inc.php @@ -111,13 +111,11 @@ if (!defined('DONOTLOADCONF') && file_exists($conffile) && filesize($conffile) > } } } - else - { + else { $includeconferror = 'ErrorBadValueForDolibarrMainDocumentRoot'; } } - else - { + else { $includeconferror = 'ErrorBadFormatForConfFile'; } } diff --git a/htdocs/takepos/admin/bar.php b/htdocs/takepos/admin/bar.php index 2508ab56040..a33f337cc96 100644 --- a/htdocs/takepos/admin/bar.php +++ b/htdocs/takepos/admin/bar.php @@ -53,8 +53,7 @@ if (GETPOST('action', 'alpha') == 'set') $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } diff --git a/htdocs/takepos/admin/orderprinters.php b/htdocs/takepos/admin/orderprinters.php index 566f18ac1a4..f0410f812d9 100644 --- a/htdocs/takepos/admin/orderprinters.php +++ b/htdocs/takepos/admin/orderprinters.php @@ -147,8 +147,7 @@ if ($nbofentries > 0) } print ''; } -else -{ +else { print ''; print ''; print ''; } -else -{ +else { print ''; print '
'.img_picto_common('', 'treemenu/branchbottom.gif').''; @@ -177,8 +176,7 @@ if ($nbofentries > 0) } print '
'; print '\n"; @@ -122,8 +120,7 @@ if ($conf->receiptprinter->enabled) { { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print "\n"; @@ -139,8 +136,7 @@ if ($conf->global->TAKEPOS_PRINT_METHOD == "takeposconnector") { print img_picto($langs->trans("Activated"), 'switch_on'); } -else -{ +else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print "\n"; @@ -176,8 +172,7 @@ if ($conf->global->TAKEPOS_PRINT_METHOD == "browser" || $conf->global->TAKEPOS_P { print ''; } - else - { + else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); @@ -192,8 +187,7 @@ if ($conf->global->TAKEPOS_PRINT_METHOD == "browser" || $conf->global->TAKEPOS_P { print ''; } - else - { + else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index 85406c46faa..f4e86677a1b 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -97,8 +97,7 @@ if ($action == 'set') { $db->commit(); } - else - { + else { $db->rollback(); } } elseif ($action == 'updateMask') { @@ -196,8 +195,7 @@ foreach ($dirmodels as $reldir) { print img_picto($langs->trans("Activated"), 'switch_on'); } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; diff --git a/htdocs/takepos/admin/terminal.php b/htdocs/takepos/admin/terminal.php index 46d168ddd24..e2996ad763d 100644 --- a/htdocs/takepos/admin/terminal.php +++ b/htdocs/takepos/admin/terminal.php @@ -103,8 +103,7 @@ if (GETPOST('action', 'alpha') == 'set') $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } @@ -188,8 +187,7 @@ if (!empty($conf->stock->enabled)) if (empty($conf->productbatch->enabled) || !empty($conf->global->CASHDESK_FORCE_DECREASE_STOCK)) { print $form->selectyesno('CASHDESK_NO_DECREASE_STOCK'.$terminal, $conf->global->{'CASHDESK_NO_DECREASE_STOCK'.$terminal}, 1); } - else - { + else { if (!$conf->global->{'CASHDESK_NO_DECREASE_STOCK'.$terminal}) { $res = dolibarr_set_const($db, "CASHDESK_NO_DECREASE_STOCK".$terminal, 1, 'chaine', 0, '', $conf->entity); } @@ -208,8 +206,7 @@ if (!empty($conf->stock->enabled)) print $formproduct->selectWarehouses($conf->global->{'CASHDESK_ID_WAREHOUSE'.$terminal}, 'CASHDESK_ID_WAREHOUSE'.$terminal, '', 1, $disabled); print ' '; } - else - { + else { print ''.$langs->trans("StockDecreaseForPointOfSaleDisabled").''; } print ''; diff --git a/htdocs/takepos/ajax/ajax.php b/htdocs/takepos/ajax/ajax.php index d1f59325c1f..75c40e6607e 100644 --- a/htdocs/takepos/ajax/ajax.php +++ b/htdocs/takepos/ajax/ajax.php @@ -65,8 +65,7 @@ if ($action == 'getProducts') { } echo json_encode($prods); } - else - { + else { echo 'Failed to load category with id='.$category; } } diff --git a/htdocs/takepos/genimg/index.php b/htdocs/takepos/genimg/index.php index e668b01aacb..8a752a5d3a5 100644 --- a/htdocs/takepos/genimg/index.php +++ b/htdocs/takepos/genimg/index.php @@ -56,8 +56,7 @@ if ($query == "cat") { $filename = $obj['photo_vignette']; } - else - { + else { $filename = $obj['photo']; } $file = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=category&entity='.$object->entity.'&file='.urlencode($pdir.$filename); @@ -79,8 +78,7 @@ elseif ($query == "pro") if ($file == "") header('Location: ../../public/theme/common/nophoto.png'); else header('Location: '.$file.'&cache=1&publictakepos=1&modulepart=product'); } -else -{ +else { // TODO We don't need this. Size of image must be defined on HTML page, image must NOT be resize when downloaded. // The file diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php index dbc68afeaf4..94cc526434e 100644 --- a/htdocs/takepos/index.php +++ b/htdocs/takepos/index.php @@ -135,8 +135,7 @@ foreach ($categories as $key => $categorycursor) { $maincategories[$key] = $categorycursor; } - else - { + else { $subcategories[$key] = $categorycursor; } } @@ -858,8 +857,7 @@ if (empty($conf->global->TAKEPOS_BAR_RESTAURANT)) { $menus[$r++] = array('title'=>'
'.$langs->trans("New").'
', 'action'=>'New();'); } -else -{ +else { // BAR RESTAURANT specific menu $menus[$r++] = array('title'=>'
'.$langs->trans("Place").'
', 'action'=>'Floors();'); } @@ -988,8 +986,7 @@ if (!empty($conf->global->TAKEPOS_HIDE_HEAD_BAR)) { //echo ''; echo ''; } - else - { + else { echo ''; } ?> @@ -1023,8 +1020,7 @@ if (!empty($conf->global->TAKEPOS_HIDE_HEAD_BAR)) { //echo ''; print ''; } - else - { + else { print '
'; print ''; } diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 16012022dc9..274e47a1185 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -57,8 +57,7 @@ if (($conf->global->TAKEPOS_PHONE_BASIC_LAYOUT == 1 && $conf->browser->layout == if ($_SESSION["takeposterminal"] == "") { if ($conf->global->TAKEPOS_NUM_TERMINALS == "1") $_SESSION["takeposterminal"] = 1; - else - { + else { header("Location: ".DOL_URL_ROOT."/takepos/index.php"); exit; } @@ -118,8 +117,7 @@ if ($invoiceid > 0) { $ret = $invoice->fetch($invoiceid); } -else -{ +else { $ret = $invoice->fetch('', '(PROV-POS'.$_SESSION["takeposterminal"].'-'.$place.')'); } if ($ret > 0) @@ -143,8 +141,7 @@ if ($action == 'valid' && $user->rights->facture->creer) if ($pay == "cash") $bankaccount = $conf->global->{'CASHDESK_ID_BANKACCOUNT_CASH'.$_SESSION["takeposterminal"]}; // For backward compatibility elseif ($pay == "card") $bankaccount = $conf->global->{'CASHDESK_ID_BANKACCOUNT_CB'.$_SESSION["takeposterminal"]}; // For backward compatibility elseif ($pay == "cheque") $bankaccount = $conf->global->{'CASHDESK_ID_BANKACCOUNT_CHEQUE'.$_SESSION["takeposterminal"]}; // For backward compatibility - else - { + else { $accountname = "CASHDESK_ID_BANKACCOUNT_".$pay.$_SESSION["takeposterminal"]; $bankaccount = $conf->global->$accountname; } @@ -211,8 +208,7 @@ if ($action == 'valid' && $user->rights->facture->creer) $conf->global->STOCK_CALCULATE_ON_BILL = $savconst; } - else - { + else { $res = $invoice->validate($user); } @@ -275,8 +271,7 @@ if (($action == "addline" || $action == "freezone") && $placeid == 0) $langs->load('errors'); dol_htmloutput_errors($langs->trans("ErrorModuleSetupNotComplete", "TakePos"), null, 1); } - else - { + else { $placeid = $invoice->create($user); if ($placeid < 0) { @@ -421,8 +416,7 @@ if ($action == "delete") { { $db->commit(); } - else - { + else { $db->rollback(); } @@ -581,8 +575,7 @@ if ($action == "valid" || $action == "history") { $sectionwithinvoicelink .= $langs->trans('RemainToPay').': '.price($remaintopay, 1, $langs, 1, -1, -1, $conf->currency).''; } - else - { + else { if ($invoice->paye) $sectionwithinvoicelink .= ''.$langs->trans("Paid").''; else $sectionwithinvoicelink .= $langs->trans('BillShortStatusValidated'); } @@ -814,14 +807,12 @@ $( document ).ready(function() { $s .= " ".img_warning($langs->trans("Late")); } } - else - { + else { $s .= '
'.$langs->trans("SubscriptionNotReceived"); if ($adh->statut > 0) $s .= " ".img_warning($langs->trans("Late")); // displays delay Pictogram only if not a draft and not terminated } } - else - { + else { $s .= '
'.$langs->trans("ThirdpartyNotLinkedToMember"); } $s .= ''; @@ -968,8 +959,7 @@ if ($placeid > 0) { $htmlsupplements[$line->fk_parent_line] .= $form->textwithpicto(dolGetFirstLineOfText($line->desc), $line->desc); } - else - { + else { $htmlsupplements[$line->fk_parent_line] .= $line->desc; } } @@ -1019,8 +1009,7 @@ if ($placeid > 0) { $htmlforlines .= $form->textwithpicto(dolGetFirstLineOfText($line->desc), $line->desc); } - else - { + else { $htmlforlines .= $line->desc; } } @@ -1048,8 +1037,7 @@ if ($placeid > 0) print $htmlforlines; } } - else - { + else { print ''; } } diff --git a/htdocs/takepos/pay.php b/htdocs/takepos/pay.php index b2534272ae2..f370387d72e 100644 --- a/htdocs/takepos/pay.php +++ b/htdocs/takepos/pay.php @@ -52,8 +52,7 @@ if ($invoiceid > 0) { $invoice->fetch($invoiceid); } -else -{ +else { $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."facture where ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")'"; $resql = $db->query($sql); $obj = $db->fetch_object($resql); @@ -65,8 +64,7 @@ else { $invoiceid = 0; // Invoice does not exist yet } - else - { + else { $invoice->fetch($invoiceid); } } diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index 90f0aa363dc..1cad9a9ede4 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -136,8 +136,7 @@ else { { $maincategories[$key] = $categorycursor; } - else - { + else { $subcategories[$key] = $categorycursor; } } diff --git a/htdocs/takepos/reduction.php b/htdocs/takepos/reduction.php index 7be5ee85938..4d11663ea85 100644 --- a/htdocs/takepos/reduction.php +++ b/htdocs/takepos/reduction.php @@ -52,8 +52,7 @@ if ($invoiceid > 0) { $invoice->fetch($invoiceid); } -else -{ +else { $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."facture where ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")'"; $resql = $db->query($sql); $obj = $db->fetch_object($resql); @@ -65,8 +64,7 @@ else { $invoiceid = 0; // Invoice does not exist yet } - else - { + else { $invoice->fetch($invoiceid); } } diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index fc365ae5812..dc25fa4b44a 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -2120,8 +2120,7 @@ a.tmenuimage:hover{ content: "\f249"; }'."\n"; } - else - { + else { print "/* A mainmenu entry was found but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one */\n"; $url = dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.(min($generic, 4))."_over.png", 1); print "div.mainmenu.".$val." {\n"; @@ -2130,8 +2129,7 @@ a.tmenuimage:hover{ } $generic++; } - else - { + else { print "div.mainmenu.".$val." {\n"; print " background-image: url(".$url.");\n"; print "}\n"; diff --git a/htdocs/theme/eldy/theme_vars.inc.php b/htdocs/theme/eldy/theme_vars.inc.php index d2a11725ecf..6a4f1ebf7e1 100644 --- a/htdocs/theme/eldy/theme_vars.inc.php +++ b/htdocs/theme/eldy/theme_vars.inc.php @@ -41,8 +41,7 @@ if (!defined('ISLOADEDBYSTEELSHEET')) // File is run after an include of a php p { $theme_datacolor = array(array(157, 56, 191), array(0, 147, 183), array(250, 190, 30), array(221, 75, 57), array(0, 166, 90), array(140, 140, 220), array(190, 120, 120), array(190, 190, 100), array(115, 125, 150), array(100, 170, 20), array(150, 135, 125), array(85, 135, 150), array(150, 135, 80), array(150, 80, 150)); } - else - { + else { // for now we use the same configuration for all types of color blind $theme_datacolor = array(array(248, 220, 1), array(9, 85, 187), array(42, 208, 255), array(0, 0, 0), array(169, 169, 169), array(253, 102, 136), array(120, 154, 190), array(146, 146, 55), array(0, 52, 251), array(196, 226, 161), array(222, 160, 41), array(85, 135, 150), array(150, 135, 80), array(150, 80, 150)); } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index c43fa9cd7d9..a7b759cfea0 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2148,8 +2148,7 @@ div.mainmenu.website { content: "\f249"; }'; } - else - { + else { print "/* A mainmenu entry was found but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one. */\n"; print "/* Overwrite this definition in your own css with a different content to use your own font awesome icon. */\n"; $url = dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.(min($generic, 4))."_over.png", 1); @@ -2159,8 +2158,7 @@ div.mainmenu.website { } $generic++; } - else - { + else { print "div.mainmenu.".$val." {\n"; print " background-image: url(".$url.");\n"; print "}\n"; diff --git a/htdocs/theme/md/theme_vars.inc.php b/htdocs/theme/md/theme_vars.inc.php index ffad2cc66b5..7d492bcae6a 100644 --- a/htdocs/theme/md/theme_vars.inc.php +++ b/htdocs/theme/md/theme_vars.inc.php @@ -37,8 +37,7 @@ if (!defined('ISLOADEDBYSTEELSHEET')) // File is run after an include of a php p { $theme_datacolor = array(array(157, 56, 191), array(0, 147, 183), array(250, 190, 30), array(221, 75, 57), array(0, 166, 90), array(140, 140, 220), array(190, 120, 120), array(190, 190, 100), array(115, 125, 150), array(100, 170, 20), array(150, 135, 125), array(85, 135, 150), array(150, 135, 80), array(150, 80, 150)); } - else - { + else { // for now we use the same configuration for all types of color blind $theme_datacolor = array(array(248, 220, 1), array(9, 85, 187), array(42, 208, 255), array(0, 0, 0), array(169, 169, 169), array(253, 102, 136), array(120, 154, 190), array(146, 146, 55), array(0, 52, 251), array(196, 226, 161), array(222, 160, 41), array(85, 135, 150), array(150, 135, 80), array(150, 80, 150)); } diff --git a/htdocs/ticket/agenda.php b/htdocs/ticket/agenda.php index 2c473a9de54..2fd3b2643e0 100644 --- a/htdocs/ticket/agenda.php +++ b/htdocs/ticket/agenda.php @@ -57,8 +57,7 @@ if (GETPOST('actioncode', 'array')) $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; } -else -{ +else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index 6e400b3eeaa..2e61ce15045 100644 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -1207,8 +1207,7 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd } print ''."\n"; } - else - { + else { print '
'; } diff --git a/htdocs/ticket/class/actions_ticket.class.php b/htdocs/ticket/class/actions_ticket.class.php index 0fb5835cb4c..f701fabc2c0 100644 --- a/htdocs/ticket/class/actions_ticket.class.php +++ b/htdocs/ticket/class/actions_ticket.class.php @@ -397,8 +397,7 @@ class ActionsTicket { $urlforbutton = $_SERVER['PHP_SELF'].'?track_id='.$object->track_id.'&action=mark_ticket_read'; // To set as read, we use a dedicated action } - else - { + else { $urlforbutton = $_SERVER['PHP_SELF'].'?track_id='.$object->track_id.'&action=set_status&new_status='.$status; } diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 4db98cfe7ad..0f6994d6a03 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -542,8 +542,7 @@ class Ticket extends CommonObject $this->db->free($resql); return 1; } - else - { + else { return 0; } } else { @@ -1354,8 +1353,7 @@ class Ticket extends CommonObject { $sql .= " SET fk_user_assign=".$id_assign_user.", fk_statut = ".Ticket::STATUS_ASSIGNED; } - else - { + else { $sql .= " SET fk_user_assign=null, fk_statut = ".Ticket::STATUS_READ; } $sql .= " WHERE rowid = ".$this->id; @@ -2767,8 +2765,7 @@ class Ticket extends CommonObject } return $response; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -2810,8 +2807,7 @@ class Ticket extends CommonObject $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->lasterror(); return -1; diff --git a/htdocs/ticket/document.php b/htdocs/ticket/document.php index d48001a680e..86f671d876b 100644 --- a/htdocs/ticket/document.php +++ b/htdocs/ticket/document.php @@ -196,8 +196,7 @@ if ($object->id) include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { accessforbidden('', 0, 1); } diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index 1331e2be12e..4d1cb7a5d60 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -286,8 +286,7 @@ if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) { $num = $nbtotalofrecords; } -else -{ +else { $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); diff --git a/htdocs/ticket/messaging.php b/htdocs/ticket/messaging.php index 0a6c8067db5..c35b60ab42e 100644 --- a/htdocs/ticket/messaging.php +++ b/htdocs/ticket/messaging.php @@ -57,8 +57,7 @@ if (GETPOST('actioncode', 'array')) $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; } -else -{ +else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/ticket/stats/index.php b/htdocs/ticket/stats/index.php index b39ba0fd366..e6760ba9c4d 100644 --- a/htdocs/ticket/stats/index.php +++ b/htdocs/ticket/stats/index.php @@ -85,8 +85,7 @@ if (!$user->rights->societe->client->voir || $user->socid) $filenamenb = $dir.'/ticketsnbinyear-'.$user->id.'-'.$year.'.png'; $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=ticketstats&file=ticketsnbinyear-'.$user->id.'-'.$year.'.png'; } -else -{ +else { $filenamenb = $dir.'/ticketsnbinyear-'.$year.'.png'; $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=ticketstats&file=ticketsnbinyear-'.$year.'.png'; } @@ -126,8 +125,7 @@ if (!$user->rights->societe->client->voir || $user->socid) $filenameamount = $dir.'/ticketsamountinyear-'.$user->id.'-'.$year.'.png'; $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=ticketstats&file=ticketsamountinyear-'.$user->id.'-'.$year.'.png'; } -else -{ +else { $filenameamount = $dir.'/ticketsamountinyear-'.$year.'.png'; $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=ticketstats&file=ticketsamountinyear-'.$year.'.png'; } @@ -165,8 +163,7 @@ if (!$user->rights->societe->client->voir || $user->socid) $filename_avg = $dir.'/ticketsaverage-'.$user->id.'-'.$year.'.png'; $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=ticketstats&file=ticketsaverage-'.$user->id.'-'.$year.'.png'; } -else -{ +else { $filename_avg = $dir.'/ticketsaverage-'.$year.'.png'; $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=ticketstats&file=ticketsaverage-'.$year.'.png'; } diff --git a/htdocs/user/bank.php b/htdocs/user/bank.php index 3bdc6b5390c..a02e2c17ec6 100644 --- a/htdocs/user/bank.php +++ b/htdocs/user/bank.php @@ -72,8 +72,7 @@ if (!$bankid) { $account->fetch(0, '', $id); } -else -{ +else { $account->fetch($bankid); } if (empty($account->userid)) $account->userid = $object->id; @@ -107,8 +106,7 @@ if ($action == 'add' && !$cancel) setEventMessages($account->error, $account->errors, 'errors'); $action = 'edit'; // Force chargement page edition } - else - { + else { setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); $action = ''; } @@ -138,8 +136,7 @@ if ($action == 'update' && !$cancel) setEventMessages($account->error, $account->errors, 'errors'); $action = 'edit'; // Force chargement page edition } - else - { + else { setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); $action = ''; } @@ -284,8 +281,7 @@ if ($action != 'edit' && $action != 'create') // If not bank account yet, $acco if ($num <= 0) print '
'.img_picto_common('', 'treemenu/branchbottom.gif').''; diff --git a/htdocs/takepos/admin/receipt.php b/htdocs/takepos/admin/receipt.php index 83b31569a7b..7ed4f2786b2 100644 --- a/htdocs/takepos/admin/receipt.php +++ b/htdocs/takepos/admin/receipt.php @@ -58,8 +58,7 @@ if (GETPOST('action', 'alpha') == 'set') $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } @@ -105,8 +104,7 @@ if ($conf->global->TAKEPOS_PRINT_METHOD == "browser") { print img_picto($langs->trans("Activated"), 'switch_on'); } -else -{ +else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print "
'.$langs->trans("Empty").'
'.$langs->trans("None").''; print "
"; } - else - { + else { dol_print_error($db); } } @@ -340,8 +336,7 @@ if ($action != 'edit' && $action != 'create') // If not bank account yet, $acco if ($num <= 0) print '
'.$langs->trans("None").''; print "
"; } - else - { + else { dol_print_error($db); } } @@ -395,8 +390,7 @@ if ($action != 'edit' && $action != 'create') // If not bank account yet, $acco if ($num <= 0) print ''.$langs->trans("None").''; print ""; } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/user/card.php b/htdocs/user/card.php index cd115dbe292..3e7b36e5189 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -295,8 +295,7 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$id); exit; } - else - { + else { $langs->load("errors"); $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); @@ -326,8 +325,7 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -429,13 +427,11 @@ if (empty($reshook)) { { $object->entity = 1; // all users in master entity } - else - { + else { $object->entity = (!GETPOST('entity', 'int') ? 0 : GETPOST('entity', 'int')); } } - else - { + else { $object->entity = (!GETPOST('entity', 'int') ? 0 : GETPOST('entity', 'int')); } @@ -455,8 +451,7 @@ if (empty($reshook)) { { $object->photo = dol_sanitizeFileName($_FILES['photo']['name']); } - else - { + else { $error++; $langs->load("errors"); setEventMessages($langs->trans("ErrorBadImageFormat"), null, 'errors'); @@ -472,8 +467,7 @@ if (empty($reshook)) { $langs->load("errors"); setEventMessages($langs->trans("ErrorLoginAlreadyExists", $object->login), null, 'errors'); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -565,8 +559,7 @@ if (empty($reshook)) { } } } - else - { + else { if ($caneditpassword) // Case we can edit only password { dol_syslog("Not allowed to change fields, only password"); @@ -603,13 +596,11 @@ if (empty($reshook)) { { setEventMessages($langs->trans("PasswordChangedAndSentTo", $object->email), null, 'mesgs'); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages($langs->trans("PasswordChangedTo", $newpassword), null, 'warnings'); } } @@ -666,8 +657,7 @@ if (empty($reshook)) { } } } - else - { + else { setEventMessages($ldap->error, $ldap->errors, 'errors'); } } @@ -765,13 +755,11 @@ if ($action == 'create' || $action == 'adduserldap') $liste[$key] = $label; } } - else - { + else { setEventMessages($ldap->error, $ldap->errors, 'errors'); } } - else - { + else { setEventMessages($ldap->error, $ldap->errors, 'errors'); } @@ -822,8 +810,7 @@ if ($action == 'create' || $action == 'adduserldap') print ''; print $ldap_lastname; } - else - { + else { print ''; } print ''; @@ -836,8 +823,7 @@ if ($action == 'create' || $action == 'adduserldap') print ''; print $ldap_firstname; } - else - { + else { print ''; } print ''; @@ -855,8 +841,7 @@ if ($action == 'create' || $action == 'adduserldap') print ''; print $ldap_loginsmb; } - else - { + else { print ''; } print ''; @@ -887,8 +872,7 @@ if ($action == 'create' || $action == 'adduserldap') $valuetoshow .= ($valuetoshow ? ', ' : '').''; // Dolibarr password is preffiled with LDAP known password $valuetoshow .= preg_replace('/./i', '*', $ldap_pass); } - else - { + else { // We do not use a field password but a field text to show new password to use. $valuetoshow .= ($valuetoshow ? ', ' : '').''; } @@ -914,8 +898,7 @@ if ($action == 'create' || $action == 'adduserldap') print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_api_key" class="linkobject"'); print ''; } - else - { + else { // PARTIAL WORKAROUND $generated_fake_api_key = getRandomPassword(false); print ''; @@ -1060,8 +1043,7 @@ if ($action == 'create' || $action == 'adduserldap') print ''; print $ldap_phone; } - else - { + else { print ''; } print ''; @@ -1074,8 +1056,7 @@ if ($action == 'create' || $action == 'adduserldap') print ''; print $ldap_mobile; } - else - { + else { print ''; } print ''; @@ -1088,8 +1069,7 @@ if ($action == 'create' || $action == 'adduserldap') print ''; print $ldap_fax; } - else - { + else { print ''; } print ''; @@ -1102,8 +1082,7 @@ if ($action == 'create' || $action == 'adduserldap') print ''; print $ldap_mail; } - else - { + else { print ''; } print ''; @@ -1237,8 +1216,7 @@ if ($action == 'create' || $action == 'adduserldap') print "".$mc->select_entities($conf->entity); print "\n"; } - else - { + else { print ''; } } @@ -1358,8 +1336,7 @@ if ($action == 'create' || $action == 'adduserldap') print ""; } -else -{ +else { /* ************************************************************************** */ /* */ /* View and edition */ @@ -1411,8 +1388,7 @@ else } } } - else - { + else { $userDisabled = 1; $statutUACF = "ACCOUNTDISABLE"; } @@ -1430,8 +1406,7 @@ else $title = $langs->trans("Employee"); $linkback = ''.$langs->trans("BackToList").''; } - else - { + else { $title = $langs->trans("User"); $linkback = ''; @@ -1503,8 +1478,7 @@ else { print ''.$langs->trans("LoginAccountDisableInDolibarr").''; } - else - { + else { print ''.$object->login.''; } print ''."\n"; @@ -1530,13 +1504,11 @@ else { $valuetoshow .= ($valuetoshow ? (' '.$langs->trans("or").' ') : '').''.$langs->trans("LdapUacf_".$statutUACF, $ldap->domainFQDN).''; } - else - { + else { $valuetoshow .= ($valuetoshow ? (' '.$langs->trans("or").' ') : '').$langs->trans("PasswordOfUserInLDAP"); } } - else - { + else { $valuetoshow .= ($valuetoshow ? (' '.$langs->trans("or").' ') : '').$langs->trans("PasswordOfUserInLDAP"); } } @@ -1547,8 +1519,7 @@ else if (preg_match('/dolibarr/', $dolibarr_main_authentication)) { if ($object->pass) $valuetoshow .= ($valuetoshow ? (' '.$langs->trans("or").' ') : '').preg_replace('/./i', '*', $object->pass); - else - { + else { if ($user->admin) $valuetoshow .= ($valuetoshow ? (' '.$langs->trans("or").' ') : '').$langs->trans("Crypted").': '.$object->pass_indatabase_crypted; else $valuetoshow .= ($valuetoshow ? (' '.$langs->trans("or").' ') : '').''.$langs->trans("Hidden").''; } @@ -1582,8 +1553,7 @@ else { print $form->textwithpicto(yn($object->admin), $langs->trans("AdministratorDesc"), 1, "admin"); } - else - { + else { print yn($object->admin); } print ''."\n"; @@ -1826,8 +1796,7 @@ else $societe->fetch($object->socid); print $societe->getNomUrl(1, ''); } - else - { + else { print $langs->trans("ThisUserIsNot"); } if (!empty($object->contactid)) @@ -1855,8 +1824,7 @@ else $adh->ref = $adh->getFullname($langs); // Force to show login instead of id print $adh->getNomUrl(1); } - else - { + else { print $langs->trans("UserNotLinkedToMember"); } print ''; @@ -1894,8 +1862,7 @@ else $langs->load("mails"); print ''; } - else - { + else { $langs->load("mails"); print ''; } @@ -1907,8 +1874,7 @@ else { print ''; } - else - { + else { print ''; } } @@ -1955,8 +1921,7 @@ else { print ''; } - else - { + else { if ($user->id == $id) { print ''; @@ -1970,8 +1935,7 @@ else { print ''; } - else - { + else { print ''; } } @@ -2055,8 +2019,7 @@ else { print $group->getNomUrl(1); } - else - { + else { print img_object($langs->trans("ShowGroup"), "group").' '.$group->name; } print ''; @@ -2067,15 +2030,13 @@ else print img_picto($langs->trans("RemoveFromGroup"), 'unlink'); print ''; } - else - { + else { print " "; } print "\n"; } } - else - { + else { print ''.$langs->trans("None").''; } @@ -2123,8 +2084,7 @@ else { print ''; } - else - { + else { print ''; print $object->lastname; } @@ -2138,8 +2098,7 @@ else { print ''; } - else - { + else { print ''; print $object->firstname; } @@ -2152,8 +2111,7 @@ else { print ''; } - else - { + else { print ''; print $object->login; } @@ -2178,8 +2136,7 @@ else { $valuetoshow .= ($valuetoshow ? (' '.$langs->trans("or").' ') : '').''; } - else - { + else { $valuetoshow .= ($valuetoshow ? (' '.$langs->trans("or").' ') : '').preg_replace('/./i', '*', $object->pass); } } @@ -2214,8 +2171,7 @@ else print ' ('.$langs->trans("ExternalUser").')'; print ''; } - else - { + else { print ''; $nbAdmin = $user->getNbOfUsers('active', '', 1); $nbSuperAdmin = $user->getNbOfUsers('active', 'superadmin', 1); @@ -2276,8 +2232,7 @@ else print ' '.$langs->trans("SuperAdministrator"); } } - else - { + else { $yn = yn($object->admin); print ''; print ''; @@ -2298,8 +2253,7 @@ else print $form->textwithpicto($type, $langs->trans("InternalExternalDesc")); if ($object->ldap_sid) print ' ('.$langs->trans("DomainUser").')'; } - else - { + else { // Select mode $type = 0; if ($object->contactid) $type = $object->contactid; @@ -2351,8 +2305,7 @@ else { print $form->select_dolusers($object->fk_user, 'fk_user', 1, array($object->id), 0, '', 0, $object->entity, 0, 0, '', 0, '', 'maxwidth300'); } - else - { + else { print ''; $huser = new User($db); $huser->fetch($object->fk_user); @@ -2371,8 +2324,7 @@ else { print $form->select_dolusers($object->fk_user_expense_validator, 'fk_user_expense_validator', 1, array($object->id), 0, '', 0, $object->entity, 0, 0, '', 0, '', 'maxwidth300'); } - else - { + else { print ''; $evuser = new User($db); $evuser->fetch($object->fk_user_expense_validator); @@ -2391,8 +2343,7 @@ else { print $form->select_dolusers($object->fk_user_holiday_validator, 'fk_user_holiday_validator', 1, array($object->id), 0, '', 0, $object->entity, 0, 0, '', 0, '', 'maxwidth300'); } - else - { + else { print ''; $hvuser = new User($db); $hvuser->fetch($object->fk_user_holiday_validator); @@ -2461,8 +2412,7 @@ else { print ''; } - else - { + else { print ''; print $object->office_phone; } @@ -2475,8 +2425,7 @@ else { print ''; } - else - { + else { print ''; print $object->user_mobile; } @@ -2489,8 +2438,7 @@ else { print ''; } - else - { + else { print ''; print $object->office_fax; } @@ -2503,8 +2451,7 @@ else { print ''; } - else - { + else { print ''; print $object->email; } @@ -2538,8 +2485,7 @@ else { print ''; } - else - { + else { print ''; print $object->openid; } @@ -2558,8 +2504,7 @@ else { print ''; } - else - { + else { print ''; print $object->accountancy_code; } @@ -2632,8 +2577,7 @@ else print ' / '.img_object($langs->trans("ShowContact"), 'contact').' '.dol_trunc($contact->getFullName($langs), 32).''; } } - else - { + else { print $langs->trans("ThisUserIsNot"); } print ' ('.$langs->trans("UseTypeFieldToChange").')'; @@ -2654,8 +2598,7 @@ else $adh->ref = $adh->login; // Force to show login instead of id print $adh->getNomUrl(1); } - else - { + else { print $langs->trans("UserNotLinkedToMember"); } print ''; @@ -2675,8 +2618,7 @@ else print "".$mc->select_entities($object->entity, 'entity', '', 0, 1, false, false, 1); // last parameter 1 means, show also a choice 0=>'all entities' print "\n"; } - else - { + else { print ''; } } @@ -2705,8 +2647,7 @@ else $doleditor = new DolEditor('signature', $object->signature, '', 138, 'dolibarr_notes', 'In', false, true, empty($conf->global->FCKEDITOR_ENABLE_USERSIGN) ? 0 : 1, ROWS_4, '90%'); print $doleditor->Create(1); } - else - { + else { print dol_htmlentitiesbr($object->signature); } print ''; @@ -2733,8 +2674,7 @@ else { print ''; } - else - { + else { print ''; print $object->job; } diff --git a/htdocs/user/class/api_users.class.php b/htdocs/user/class/api_users.class.php index 46022d066f3..54681974e04 100644 --- a/htdocs/user/class/api_users.class.php +++ b/htdocs/user/class/api_users.class.php @@ -289,8 +289,7 @@ class Users extends DolibarrApi { return $this->get($id); } - else - { + else { throw new RestException(500, $this->useraccount->error); } } @@ -364,8 +363,7 @@ class Users extends DolibarrApi { $entity = (!empty($entity) ? $entity : $conf->entity); } - else - { + else { // When using API, action is done on entity of logged user because a user of entity X with permission to create user should not be able to // hack the security by giving himself permissions on another entity. $entity = (DolibarrApiAccess::$user->entity > 0 ? DolibarrApiAccess::$user->entity : $conf->entity); diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 11d0cec3654..a4daebe3b9a 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -295,17 +295,15 @@ class User extends CommonObject { $sql .= " WHERE u.entity IN (0,".$conf->entity.")"; } - else - { + else { $sql .= " WHERE u.entity IS NOT NULL"; // multicompany is on in transverse mode or user making fetch is on entity 0, so user is allowed to fetch anywhere into database } } - else // The fetch was forced on an entity + else // The fetch was forced on an entity { if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) $sql .= " WHERE u.entity IS NOT NULL"; // multicompany is on in transverse mode or user making fetch is on entity 0, so user is allowed to fetch anywhere into database - else - $sql .= " WHERE u.entity IN (0, ".(($entity != '' && $entity >= 0) ? $entity : $conf->entity).")"; // search in entity provided in parameter + else $sql .= " WHERE u.entity IN (0, ".(($entity != '' && $entity >= 0) ? $entity : $conf->entity).")"; // search in entity provided in parameter } if ($sid) // permet une recherche du user par son SID ActiveDirectory ou Samba @@ -320,8 +318,7 @@ class User extends CommonObject { $sql .= " AND u.email = '".$this->db->escape($email)."'"; } - else - { + else { $sql .= " AND u.rowid = ".$id; } $sql .= " ORDER BY u.entity ASC"; // Avoid random result when there is 2 login in 2 different entities @@ -420,8 +417,7 @@ class User extends CommonObject $this->db->free($result); } - else - { + else { $this->error = "USERNOTFOUND"; dol_syslog(get_class($this)."::fetch user not found", LOG_DEBUG); @@ -429,8 +425,7 @@ class User extends CommonObject return 0; } } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -457,8 +452,7 @@ class User extends CommonObject } $this->db->free($resql); } - else - { + else { $this->error = $this->db->lasterror(); return -2; } @@ -525,8 +519,7 @@ class User extends CommonObject return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -592,8 +585,7 @@ class User extends CommonObject { $whereforadd = 'allmodules'; } - else - { + else { $whereforadd = "module='".$this->db->escape($allmodule)."'"; if (!empty($allperms)) $whereforadd .= " AND perms='".$this->db->escape($allperms)."'"; } @@ -629,8 +621,7 @@ class User extends CommonObject $i++; } } - else - { + else { $error++; dol_print_error($this->db); } @@ -713,8 +704,7 @@ class User extends CommonObject { $wherefordel = 'allmodules'; } - else - { + else { $wherefordel = "module='".$this->db->escape($allmodule)."'"; if (!empty($allperms)) $whereforadd .= " AND perms='".$this->db->escape($allperms)."'"; } @@ -750,8 +740,7 @@ class User extends CommonObject $i++; } } - else - { + else { $error++; dol_print_error($this->db); } @@ -833,8 +822,7 @@ class User extends CommonObject { $sql .= " AND r.entity IN (0,".(!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) ? "1," : "").$conf->entity.")"; } - else - { + else { $sql .= " AND ur.entity = ".$conf->entity; } $sql .= " AND ur.fk_user= ".$this->id; @@ -866,8 +854,7 @@ class User extends CommonObject if (empty($this->rights->$module->$perms->$subperms)) $this->nb_rights++; $this->rights->$module->$perms->$subperms = 1; } - else - { + else { if (empty($this->rights->$module->$perms)) $this->nb_rights++; $this->rights->$module->$perms = 1; } @@ -892,8 +879,7 @@ class User extends CommonObject $sql .= " AND r.entity = ".$conf->entity; } } - else - { + else { $sql .= " AND gr.entity = ".$conf->entity; $sql .= " AND gu.entity = ".$conf->entity; $sql .= " AND r.entity = ".$conf->entity; @@ -926,8 +912,7 @@ class User extends CommonObject if (empty($this->rights->$module->$perms->$subperms)) $this->nb_rights++; $this->rights->$module->$perms->$subperms = 1; } - else - { + else { if (empty($this->rights->$module->$perms)) $this->nb_rights++; // if we have already define a subperm like this $this->rights->$module->level1->level2 with llx_user_rights, we don't want override level1 because the level2 can be not define on user group if (!is_object($this->rights->$module->$perms)) $this->rights->$module->$perms = 1; @@ -948,8 +933,7 @@ class User extends CommonObject // que les droits sont en cache (car tous charges) pour cet instance de user $this->all_permissions_are_loaded = 1; } - else - { + else { // If module defined, we flag it as loaded into cache $this->_tab_loaded[$moduletag] = 1; } @@ -993,8 +977,7 @@ class User extends CommonObject $this->db->rollback(); return -$error; } - else - { + else { $this->db->commit(); return 1; } @@ -1133,8 +1116,7 @@ class User extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -1200,8 +1182,7 @@ class User extends CommonObject $this->db->rollback(); return -6; } - else - { + else { $sql = "INSERT INTO ".MAIN_DB_PREFIX."user (datec,login,ldap_sid,entity)"; $sql .= " VALUES('".$this->db->idate($this->datec)."','".$this->db->escape($this->login)."','".$this->db->escape($this->ldap_sid)."',".$this->db->escape($this->entity).")"; $result = $this->db->query($sql); @@ -1253,24 +1234,21 @@ class User extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { //$this->error=$interface->error; dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR); $this->db->rollback(); return -3; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; } } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -1339,16 +1317,14 @@ class User extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; } } - else - { + else { // $this->error deja positionne dol_syslog(get_class($this)."::create_from_contact - 0"); @@ -1424,8 +1400,7 @@ class User extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); @@ -1439,8 +1414,7 @@ class User extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { // $this->error deja positionne $this->db->rollback(); return -2; @@ -1752,8 +1726,7 @@ class User extends CommonObject $error++; } } - else - { + else { $this->error = $tmpobj->error; $this->errors = $tmpobj->errors; $error++; @@ -1786,15 +1759,13 @@ class User extends CommonObject $this->db->commit(); return $nbrowsaffected; } - else - { + else { dol_syslog(get_class($this)."::update error=".$this->error, LOG_ERR); $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; @@ -1827,8 +1798,7 @@ class User extends CommonObject $this->datelastlogin = $now; return 1; } - else - { + else { $this->error = $this->db->lasterror().' sql='.$sql; return -1; } @@ -1877,8 +1847,7 @@ class User extends CommonObject { $sql .= ", pass = null"; } - else - { + else { $sql .= ", pass = '".$this->db->escape($password)."'"; } $sql .= " WHERE rowid = ".$this->id; @@ -1912,8 +1881,7 @@ class User extends CommonObject $error++; } } - else - { + else { $this->error = $adh->error; $error++; } @@ -1932,21 +1900,18 @@ class User extends CommonObject $this->db->commit(); return $this->pass; } - else - { + else { $this->db->rollback(); return 0; } } - else - { + else { $this->db->rollback(); dol_print_error($this->db); return -1; } } - else - { + else { // We store clear password in password temporary field. // After receiving confirmation link, we will crypt it and store it in pass_crypted $sql = "UPDATE ".MAIN_DB_PREFIX."user"; @@ -1959,8 +1924,7 @@ class User extends CommonObject { return $password; } - else - { + else { dol_print_error($this->db); return -3; } @@ -2001,8 +1965,7 @@ class User extends CommonObject if ($this->conf->MAIN_LANG_DEFAULT) { $outputlangs->setDefaultLang($this->conf->MAIN_LANG_DEFAULT); } - else - { // If user has not defined its own language, we used current language + else { // If user has not defined its own language, we used current language $outputlangs = $langs; } @@ -2033,8 +1996,7 @@ class User extends CommonObject dol_syslog(get_class($this)."::send_password changelater is off, url=".$url); } - else - { + else { $url = $urlwithroot.'/user/passwordforgotten.php?action=validatenewpassword&username='.urlencode($this->login)."&passwordhash=".dol_hash($password); $mesg .= $outputlangs->transnoentitiesnoconv("RequestToResetPasswordReceived")."\n"; @@ -2072,8 +2034,7 @@ class User extends CommonObject { return 1; } - else - { + else { $langs->trans("errors"); $this->error = $langs->trans("ErrorFailedToSendPassword").' '.$mailfile->error; return -1; @@ -2122,8 +2083,7 @@ class User extends CommonObject $this->db->free($resql); return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -2161,8 +2121,7 @@ class User extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; @@ -2217,15 +2176,13 @@ class User extends CommonObject $this->db->commit(); return 1; } - else - { + else { dol_syslog(get_class($this)."::SetInGroup ".$this->error, LOG_ERR); $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -2274,15 +2231,13 @@ class User extends CommonObject $this->db->commit(); return 1; } - else - { + else { dol_syslog(get_class($this)."::RemoveFromGroup ".$this->error, LOG_ERR); $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -2774,8 +2729,7 @@ class User extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -2802,8 +2756,7 @@ class User extends CommonObject $this->db->free($resql); return $nb; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -2828,8 +2781,7 @@ class User extends CommonObject $sql .= " WHERE entity = 0"; if ($admin >= 0) $sql .= " AND admin = ".$admin; } - else - { + else { $sql .= " WHERE entity IN (".getEntity('user', 0).")"; if ($limitTo == 'active') $sql .= " AND statut = 1"; if ($admin >= 0) $sql .= " AND admin = ".$admin; @@ -2844,8 +2796,7 @@ class User extends CommonObject $this->db->free($resql); return $nb; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -2917,8 +2868,7 @@ class User extends CommonObject } return $users; } - else - { + else { dol_print_error($this->db); return -1; } @@ -2952,8 +2902,7 @@ class User extends CommonObject } return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -3023,8 +2972,7 @@ class User extends CommonObject $i++; } } - else - { + else { dol_print_error($this->db); return -1; } @@ -3083,8 +3031,7 @@ class User extends CommonObject { $childids = $this->cache_childids[$this->id]; } - else - { + else { // Init this->users $this->get_full_tree(); @@ -3196,8 +3143,7 @@ class User extends CommonObject $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -3228,8 +3174,7 @@ class User extends CommonObject { $modele = $conf->global->USER_ADDON_PDF; } - else - { + else { $modele = 'bluesky'; } } @@ -3272,8 +3217,7 @@ class User extends CommonObject } return $user_property; } - else - { + else { dol_print_error($this->db); } } @@ -3310,13 +3254,11 @@ class User extends CommonObject $sql .= " OR t.entity = 0)"; // Show always superadmin } } - else - { + else { $sql .= " WHERE t.entity IN (".getEntity('user').")"; } } - else - { + else { $sql .= " WHERE 1"; } @@ -3365,8 +3307,7 @@ class User extends CommonObject } return $num; } - else - { + else { $this->errors[] = $this->db->lasterror(); return -1; } diff --git a/htdocs/user/class/userbankaccount.class.php b/htdocs/user/class/userbankaccount.class.php index 79df9d287ec..02a046a60ad 100644 --- a/htdocs/user/class/userbankaccount.class.php +++ b/htdocs/user/class/userbankaccount.class.php @@ -105,8 +105,7 @@ class UserBankAccount extends Account return $this->update($user); } } - else - { + else { print $this->db->error(); return 0; } @@ -142,8 +141,7 @@ class UserBankAccount extends Account if (trim($this->label) != '') $sql .= ",label = '".$this->db->escape($this->label)."'"; - else - $sql .= ",label = NULL"; + else $sql .= ",label = NULL"; $sql .= " WHERE rowid = ".$this->id; $result = $this->db->query($sql); @@ -151,8 +149,7 @@ class UserBankAccount extends Account { return 1; } - else - { + else { dol_print_error($this->db); return 0; } @@ -204,8 +201,7 @@ class UserBankAccount extends Account return 1; } - else - { + else { dol_print_error($this->db); return -1; } diff --git a/htdocs/user/class/usergroup.class.php b/htdocs/user/class/usergroup.class.php index bc5396e9f51..f56358963c9 100644 --- a/htdocs/user/class/usergroup.class.php +++ b/htdocs/user/class/usergroup.class.php @@ -155,8 +155,7 @@ class UserGroup extends CommonObject { $result = $this->fetchCommon(0, '', ' AND nom = \''.$this->db->escape($groupname).'\''); } - else - { + else { $result = $this->fetchCommon($id); } @@ -171,8 +170,7 @@ class UserGroup extends CommonObject return 1; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -201,8 +199,7 @@ class UserGroup extends CommonObject { $sql .= " AND g.entity IS NOT NULL"; } - else - { + else { $sql .= " AND g.entity IN (0,".$conf->entity.")"; } $sql .= " ORDER BY g.nom"; @@ -227,8 +224,7 @@ class UserGroup extends CommonObject return $ret; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -258,8 +254,7 @@ class UserGroup extends CommonObject { $sql .= " AND u.entity IS NOT NULL"; } - else - { + else { $sql .= " AND u.entity IN (0,".$conf->entity.")"; } if (!empty($excludefilter)) $sql .= ' AND ('.$excludefilter.')'; @@ -290,8 +285,7 @@ class UserGroup extends CommonObject return $ret; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -357,8 +351,7 @@ class UserGroup extends CommonObject { $whereforadd = 'allmodules'; } - else - { + else { $whereforadd = "module='".$this->db->escape($allmodule)."'"; if (!empty($allperms)) $whereforadd .= " AND perms='".$this->db->escape($allperms)."'"; } @@ -394,8 +387,7 @@ class UserGroup extends CommonObject $i++; } } - else - { + else { $error++; dol_print_error($this->db); } @@ -481,8 +473,7 @@ class UserGroup extends CommonObject { $wherefordel = 'allmodules'; } - else - { + else { $wherefordel = "module='".$this->db->escape($allmodule)."'"; if (!empty($allperms)) $whereforadd .= " AND perms='".$this->db->escape($allperms)."'"; } @@ -518,8 +509,7 @@ class UserGroup extends CommonObject $i++; } } - else - { + else { $error++; dol_print_error($this->db); } @@ -605,8 +595,7 @@ class UserGroup extends CommonObject if (empty($this->rights->$module->$perms->$subperms)) $this->nb_rights++; $this->rights->$module->$perms->$subperms = 1; } - else - { + else { if (empty($this->rights->$module->$perms)) $this->nb_rights++; $this->rights->$module->$perms = 1; } @@ -623,8 +612,7 @@ class UserGroup extends CommonObject // que les droits sont en cache (car tous charges) pour cet instance de group $this->all_permissions_are_loaded = 1; } - else - { + else { // If module defined, we flag it as loaded into cache $this->_tab_loaded[$moduletag] = 1; } @@ -902,8 +890,7 @@ class UserGroup extends CommonObject { $modele = $conf->global->USERGROUP_ADDON_PDF; } - else - { + else { $modele = 'grass'; } } diff --git a/htdocs/user/clicktodial.php b/htdocs/user/clicktodial.php index c81e4068558..302e0729bb8 100644 --- a/htdocs/user/clicktodial.php +++ b/htdocs/user/clicktodial.php @@ -122,8 +122,7 @@ if ($id > 0) $langs->load("errors"); print ''.$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("ClickToDial")).''; } - else - { + else { print '     '.$form->textwithpicto($langs->trans("KeepEmptyToUseDefault").': '.$conf->global->CLICKTODIAL_URL, $langs->trans("ClickToDialUrlDesc")); } print ''; @@ -147,7 +146,7 @@ if ($id > 0) print ''; } - else // View mode + else // View mode { print ''; @@ -162,8 +161,7 @@ if ($id > 0) $langs->load("errors"); print ''.$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("ClickToDial")).''; } - else - { + else { print $form->textwithpicto((empty($object->clicktodial_url) ? $langs->trans("DefaultLink").': ' : '').$url, $langs->trans("ClickToDialUrlDesc")); } print ''; diff --git a/htdocs/user/document.php b/htdocs/user/document.php index 2b8c67d7ae6..912675dd636 100644 --- a/htdocs/user/document.php +++ b/htdocs/user/document.php @@ -172,8 +172,7 @@ if ($object->id) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { accessforbidden('', 0, 1); } diff --git a/htdocs/user/group/card.php b/htdocs/user/group/card.php index 1cd3b3edc37..524fc25b51a 100644 --- a/htdocs/user/group/card.php +++ b/htdocs/user/group/card.php @@ -115,8 +115,7 @@ if (empty($reshook)) { header("Location: ".DOL_URL_ROOT."/user/group/list.php?restore_lastsearch_values=1"); exit; } - else - { + else { $langs->load("errors"); setEventMessages($langs->trans('ErrorForbidden'), null, 'errors'); } @@ -153,8 +152,7 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { $db->rollback(); $langs->load("errors"); @@ -163,8 +161,7 @@ if (empty($reshook)) { } } } - else - { + else { $langs->load("errors"); setEventMessages($langs->trans('ErrorForbidden'), null, 'errors'); } @@ -190,14 +187,12 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { setEventMessages($edituser->error, $edituser->errors, 'errors'); } } } - else - { + else { $langs->load("errors"); setEventMessages($langs->trans('ErrorForbidden'), null, 'errors'); } @@ -232,14 +227,12 @@ if (empty($reshook)) { setEventMessages($langs->trans("GroupModified"), null, 'mesgs'); $db->commit(); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } } - else - { + else { $langs->load("errors"); setEventMessages($langs->trans('ErrorForbidden'), null, 'mesgs'); } @@ -287,8 +280,7 @@ if ($action == 'create') print "\n"; } - else - { + else { print ''; } } @@ -318,8 +310,7 @@ if ($action == 'create') /* Visu et edition */ /* */ /* ************************************************************************** */ -else -{ +else { if ($id) { $res = $object->fetch_optionals(); @@ -488,15 +479,13 @@ else print img_picto($langs->trans("RemoveFromGroup"), 'unlink'); print ''; } - else - { + else { print "-"; } print "\n"; } } - else - { + else { print ''; } print "
".$mc->select_entities($conf->entity); print "
'.$langs->trans("None").'
"; @@ -557,8 +546,7 @@ else print "".$mc->select_entities($object->entity); print "\n"; } - else - { + else { print ''; } } diff --git a/htdocs/user/group/ldap.php b/htdocs/user/group/ldap.php index 5462167b4af..b72fc7718f9 100644 --- a/htdocs/user/group/ldap.php +++ b/htdocs/user/group/ldap.php @@ -84,8 +84,7 @@ if ($action == 'dolibarr2ldap') { setEventMessages($langs->trans("GroupSynchronized"), null, 'mesgs'); } - else - { + else { setEventMessages($ldap->error, $ldap->errors, 'errors'); } } @@ -196,20 +195,17 @@ if ($result > 0) { print ''.$langs->trans("ErrorFailedToReadLDAP").''; } - else - { + else { $result = show_ldap_content($records, 0, $records['count'], true); } } - else - { + else { print ''.$langs->trans("LDAPRecordNotFound").' (dn='.$dn.' - search='.$search.')'; } $ldap->unbind(); $ldap->close(); } -else -{ +else { setEventMessages($ldap->error, $ldap->errors, 'errors'); } diff --git a/htdocs/user/group/list.php b/htdocs/user/group/list.php index 1701d2ae9c1..48c56a20218 100644 --- a/htdocs/user/group/list.php +++ b/htdocs/user/group/list.php @@ -117,8 +117,7 @@ if (!empty($conf->multicompany->enabled) && $conf->entity == 1 && ($conf->global { $sql .= " WHERE g.entity IS NOT NULL"; } -else -{ +else { $sql .= " WHERE g.entity IN (0,".$conf->entity.")"; } if (!empty($search_group)) natural_search(array("g.nom", "g.note"), $search_group); @@ -222,8 +221,7 @@ if ($resql) $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/user/group/perms.php b/htdocs/user/group/perms.php index 70030dbf1af..8c8a59fa536 100644 --- a/htdocs/user/group/perms.php +++ b/htdocs/user/group/perms.php @@ -189,8 +189,7 @@ if ($object->id > 0) } $db->free($result); } - else - { + else { dol_print_error($db); } @@ -325,8 +324,7 @@ if ($object->id > 0) print img_picto($langs->trans("Active"), 'tick'); print ''; } - else - { + else { // Do not own permission if ($caneditperms) { @@ -335,8 +333,7 @@ if ($object->id > 0) print ' '; } } - else - { + else { // Do not own permission if ($caneditperms) { diff --git a/htdocs/user/hierarchy.php b/htdocs/user/hierarchy.php index 3a05bb3d640..520821ad84f 100644 --- a/htdocs/user/hierarchy.php +++ b/htdocs/user/hierarchy.php @@ -80,8 +80,7 @@ if (!is_array($user_arbo) && $user_arbo < 0) { setEventMessages($userstatic->error, $userstatic->errors, 'warnings'); } -else -{ +else { // Define fulltree array $fulltree = $user_arbo; //var_dump($fulltree); @@ -113,8 +112,7 @@ else { $entitystring = $langs->trans("AllEntities"); } - else - { + else { $mc->getInfo($entity); $entitystring = $mc->label; } @@ -197,8 +195,7 @@ else print ''; print ''; } - else - { + else { print ''; print ''; print ''; diff --git a/htdocs/user/home.php b/htdocs/user/home.php index 4c46c502acc..cec26f72dcc 100644 --- a/htdocs/user/home.php +++ b/htdocs/user/home.php @@ -170,8 +170,7 @@ if ($resql) { print $companystatic->getNomUrl(1); } - else - { + else { print $langs->trans("InternalUser"); } if ($obj->ldap_sid) @@ -188,8 +187,7 @@ if ($resql) { $entitystring = $langs->trans("AllEntities"); } - else - { + else { $mc->getInfo($entity); $entitystring = $mc->label; } @@ -210,8 +208,7 @@ if ($resql) $db->free($resql); } -else -{ +else { dol_print_error($db); } @@ -229,8 +226,7 @@ if ($canreadperms) { $sql .= " WHERE g.entity IS NOT NULL"; } - else - { + else { $sql .= " WHERE g.entity IN (0,".$conf->entity.")"; } $sql .= $db->order("g.datec", "DESC"); @@ -284,8 +280,7 @@ if ($canreadperms) $db->free($resql); } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/user/ldap.php b/htdocs/user/ldap.php index 71410eb223a..674ef0f64b6 100644 --- a/htdocs/user/ldap.php +++ b/htdocs/user/ldap.php @@ -114,8 +114,7 @@ if ($object->ldap_sid) { print ''; } -else -{ +else { print ''; } print ''; @@ -199,21 +198,18 @@ if ($result > 0) { print ''; } - else - { + else { $result = show_ldap_content($records, 0, $records['count'], true); } } - else - { + else { print ''; } $ldap->unbind(); $ldap->close(); } -else -{ +else { setEventMessages($ldap->error, $ldap->errors, 'errors'); } diff --git a/htdocs/user/list.php b/htdocs/user/list.php index ef6e205fd0d..ca2f39b4e9f 100644 --- a/htdocs/user/list.php +++ b/htdocs/user/list.php @@ -580,8 +580,7 @@ while ($i < min($num, $limit)) { print $langs->trans("DomainUser"); } - else - { + else { print $langs->trans("InternalUser"); } print ''; @@ -597,8 +596,7 @@ while ($i < min($num, $limit)) { print $langs->trans("AllEntities"); } - else - { + else { $mc->getInfo($obj->entity); print $mc->label; } diff --git a/htdocs/user/note.php b/htdocs/user/note.php index ab4df07e193..988b879653f 100644 --- a/htdocs/user/note.php +++ b/htdocs/user/note.php @@ -121,8 +121,7 @@ if ($id) $doleditor = new DolEditor('note_private', $object->note_private, '', 280, 'dolibarr_notes', 'In', true, false, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_8, '90%'); $doleditor->Create(); } - else - { + else { print dol_string_onlythesehtmltags(dol_htmlentitiesbr($object->note_private)); } print ""; diff --git a/htdocs/user/notify/card.php b/htdocs/user/notify/card.php index 84fbf2793e3..33dded8a304 100644 --- a/htdocs/user/notify/card.php +++ b/htdocs/user/notify/card.php @@ -88,8 +88,7 @@ if ($action == 'add') dol_print_error($db); } } - else - { + else { dol_print_error($db); } @@ -97,8 +96,7 @@ if ($action == 'add') { $db->commit(); } - else - { + else { $db->rollback(); } } @@ -152,8 +150,7 @@ if ($result > 0) { print ''; } - else - { + else { print ''; } print ''."\n"; @@ -228,8 +225,7 @@ if ($result > 0) { print ' <'.$object->email.'>'; } - else - { + else { $langs->load("errors"); print '   '.img_warning().' '.$langs->trans("ErrorBadEMail", $object->email); } @@ -244,8 +240,7 @@ if ($result > 0) print ''; print ''; } - else - { + else { print ''; @@ -272,8 +267,7 @@ if ($result > 0) { $num = $db->num_rows($resql); } - else - { + else { dol_print_error($db); } @@ -312,8 +306,7 @@ if ($result > 0) { print ' <'.$obj->email.'>'; } - else - { + else { $langs->load("errors"); print '   '.img_warning().' '.$langs->trans("ErrorBadEMail", $obj->email); } @@ -421,8 +414,7 @@ if ($result > 0) { $num = $db->num_rows($resql); } - else - { + else { dol_print_error($db); } @@ -471,8 +463,7 @@ if ($result > 0) print $userstatic->getNomUrl(1); print $obj->email ? ' <'.$obj->email.'>' : $langs->trans("NoMail"); } - else - { + else { print $obj->email; } print ''; diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index f9ebd310cfa..068ea0047b1 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -325,8 +325,7 @@ if ($action == 'edit') print ''; print ''; } -else -{ +else { dol_fiche_head($head, 'guisetup', $title, -1, 'user'); $linkback = ''.$langs->trans("BackToList").''; @@ -397,14 +396,12 @@ else { print "trans("FeatureDisabledInDemo")."\" href=\"#\">".$langs->trans("Modify").""; } - else - { + else { if ($caneditfield || !empty($user->admin)) // Si utilisateur edite = utilisateur courant (pas besoin de droits particulier car il s'agit d'une page de modif d'output et non de données) ou si admin { print 'id.'">'.$langs->trans("Modify").''; } - else - { + else { print "trans("NotEnoughPermissions")."\" href=\"#\">".$langs->trans("Modify").""; } } diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index 83289521538..43202a01028 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -73,8 +73,7 @@ if ($action == 'validatenewpassword' && $username && $passwordhash) { $message = '
'.$langs->trans("ErrorLoginDoesNotExists", $username).'
'; } - else - { + else { if (dol_verifyHash($edituser->pass_temp, $passwordhash)) { // Clear session @@ -86,8 +85,7 @@ if ($action == 'validatenewpassword' && $username && $passwordhash) header("Location: ".DOL_URL_ROOT.'/'); exit; } - else - { + else { $langs->load("errors"); $message = '
'.$langs->trans("ErrorFailedToValidatePasswordReset").'
'; } @@ -104,8 +102,7 @@ if ($action == 'buildnewpassword' && $username) { $message = '
'.$langs->trans("ErrorBadValueForCode").'
'; } - else - { + else { $edituser = new User($db); $result = $edituser->fetch('', $username, '', 1); if ($result == 0 && preg_match('/@/', $username)) @@ -118,30 +115,26 @@ if ($action == 'buildnewpassword' && $username) $message = '
'.$langs->trans("ErrorLoginDoesNotExists", $username).'
'; $username = ''; } - else - { + else { if (!$edituser->email) { $message = '
'.$langs->trans("ErrorLoginHasNoEmail").'
'; } - else - { + else { $newpassword = $edituser->setPassword($user, '', 1); if ($newpassword < 0) { // Failed $message = '
'.$langs->trans("ErrorFailedToChangePassword").'
'; } - else - { + else { // Success if ($edituser->send_password($user, $newpassword, 1) > 0) { $message = ''; $username = ''; } - else - { + else { $message .= '
'.$edituser->error.'
'; } } @@ -166,8 +159,7 @@ if (file_exists(DOL_DOCUMENT_ROOT."/theme/".$conf->theme."/tpl/passwordforgotten { $template_dir = DOL_DOCUMENT_ROOT."/theme/".$conf->theme."/tpl/"; } -else -{ +else { $template_dir = DOL_DOCUMENT_ROOT."/core/tpl/"; } diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php index 5d06973abf6..408900eb406 100644 --- a/htdocs/user/perms.php +++ b/htdocs/user/perms.php @@ -209,8 +209,7 @@ if ($result) } $db->free($result); } -else -{ +else { dol_print_error($db); } @@ -240,8 +239,7 @@ if ($result) } $db->free($result); } -else -{ +else { dol_print_error($db); } @@ -411,8 +409,7 @@ if ($result) print img_picto($langs->trans("Active"), 'tick'); print ''; } - else - { + else { // Do not own permission if ($caneditperms) { @@ -421,8 +418,7 @@ if ($result) print ''; } } - else - { + else { // Do not own permission if ($caneditperms) { diff --git a/htdocs/variants/combinations.php b/htdocs/variants/combinations.php index 15e019dd311..f29cc49f35b 100644 --- a/htdocs/variants/combinations.php +++ b/htdocs/variants/combinations.php @@ -106,8 +106,7 @@ if ($_POST) { if (!$features) { setEventMessages($langs->trans('ErrorFieldsRequired'), null, 'errors'); } - else - { + else { $reference = trim($reference); if (empty($reference)) { $reference = false; @@ -361,8 +360,7 @@ if (!empty($id) || !empty($ref)) { print $object->weight." ".measuringUnitString(0, "weight", $object->weight_units); } - else - { + else { print ' '; } print "\n"; @@ -628,8 +626,7 @@ if (!empty($id) || !empty($ref)) print ''; } - else - { + else { if ($action === 'delete') { if ($prodcomb->fetch($valueid) > 0) { $prodstatic->fetch($prodcomb->fk_product_child); @@ -801,8 +798,7 @@ if (!empty($id) || !empty($ref)) print ''; } } - else - { + else { print ''; } print '
'.img_picto_common('', 'treemenu/branchbottom.gif').''.$langs->trans("LoginAccountDisableInDolibarr").''.$object->login.'
'.$langs->trans("ErrorFailedToReadLDAP").'
'.$langs->trans("LDAPRecordNotFound").' (dn='.$dn.' - search='.$search.')
'.$langs->trans("LoginAccountDisableInDolibarr").''.$object->login.'
'; print $langs->trans("YouMustAssignUserMailFirst"); print '
 
'.$langs->trans("None").'
'; diff --git a/htdocs/variants/create.php b/htdocs/variants/create.php index 55bf1c81f34..567dc902a5a 100644 --- a/htdocs/variants/create.php +++ b/htdocs/variants/create.php @@ -43,8 +43,7 @@ if ($_POST) { { header('Location: '.$backtopage); } - else - { + else { header('Location: '.DOL_URL_ROOT.'/variants/card.php?id='.$resid.'&backtopage='.urlencode($backtopage)); } exit; diff --git a/htdocs/webservices/admin/index.php b/htdocs/webservices/admin/index.php index 819694f5041..cb0940bb61c 100644 --- a/htdocs/webservices/admin/index.php +++ b/htdocs/webservices/admin/index.php @@ -48,8 +48,7 @@ if ($actionsave) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } diff --git a/htdocs/webservices/server_actioncomm.php b/htdocs/webservices/server_actioncomm.php index 39ed3b3cdf5..10ef9cfbd7e 100644 --- a/htdocs/webservices/server_actioncomm.php +++ b/htdocs/webservices/server_actioncomm.php @@ -328,14 +328,12 @@ function getActionComm($authentication, $id) 'result'=>array('result_code'=>'OK', 'result_label'=>''), 'actioncomm'=>$actioncomm_result_fields); } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } @@ -389,14 +387,12 @@ function getListActionCommType($authentication) 'result'=>array('result_code'=>'OK', 'result_label'=>''), 'actioncommtypes'=>$resultarray); } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } @@ -482,8 +478,7 @@ function createActionComm($authentication, $actioncomm) $db->commit(); $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'id'=>$newobject->id); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; diff --git a/htdocs/webservices/server_category.php b/htdocs/webservices/server_category.php index de1fb73d3c0..d7382447749 100644 --- a/htdocs/webservices/server_category.php +++ b/htdocs/webservices/server_category.php @@ -262,14 +262,12 @@ function getCategory($authentication, $id) 'categorie'=> $cat ); } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } diff --git a/htdocs/webservices/server_contact.php b/htdocs/webservices/server_contact.php index 804cb3f7db1..023cdc1c4ac 100644 --- a/htdocs/webservices/server_contact.php +++ b/htdocs/webservices/server_contact.php @@ -333,14 +333,12 @@ function getContact($authentication, $id, $ref_ext) 'contact'=>$contact_result_fields ); } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref_ext='.$ref_ext; } @@ -451,8 +449,7 @@ function createContact($authentication, $contact) $db->commit(); $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'id'=>$newobject->id, 'ref'=>$newobject->ref); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; @@ -584,8 +581,7 @@ function getContactsForThirdParty($authentication, $idthirdparty) ); } - else - { + else { $error++; $errorcode = $db->lasterrno(); $errorlabel = $db->lasterror(); } diff --git a/htdocs/webservices/server_invoice.php b/htdocs/webservices/server_invoice.php index 46590688f88..8b15ade0a6a 100644 --- a/htdocs/webservices/server_invoice.php +++ b/htdocs/webservices/server_invoice.php @@ -370,14 +370,12 @@ function getInvoice($authentication, $id = '', $ref = '', $ref_ext = '') 'lines' => $linesresp )); } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } @@ -511,8 +509,7 @@ function getInvoicesForThirdParty($authentication, $idthirdparty) ); } - else - { + else { $error++; $errorcode = $db->lasterrno(); $errorlabel = $db->lasterror(); } @@ -627,8 +624,7 @@ function createInvoice($authentication, $invoice) $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'id'=>$new_invoice->id, 'ref'=>$new_invoice->ref, 'ref_ext'=>$new_invoice->ref_ext); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; @@ -707,14 +703,12 @@ function createInvoiceFromOrder($authentication, $id_order = '', $ref_order = '' } } } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id_order.' nor ref='.$ref_order.' nor ref_ext='.$ref_ext_order; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } @@ -724,8 +718,7 @@ function createInvoiceFromOrder($authentication, $id_order = '', $ref_order = '' { $objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)); } - else - { + else { $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'id'=>$newobject->id, 'ref'=>$newobject->ref, 'ref_ext'=>$newobject->ref_ext); } diff --git a/htdocs/webservices/server_order.php b/htdocs/webservices/server_order.php index 0b22ea9aab6..7018f5fb5c8 100644 --- a/htdocs/webservices/server_order.php +++ b/htdocs/webservices/server_order.php @@ -473,15 +473,13 @@ function getOrder($authentication, $id = '', $ref = '', $ref_ext = '') )); } } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; @@ -640,8 +638,7 @@ function getOrdersForThirdParty($authentication, $idthirdparty) ); } - else - { + else { $error++; $errorcode = $db->lasterrno(); $errorlabel = $db->lasterror(); } @@ -786,8 +783,7 @@ function createOrder($authentication, $order) $db->commit(); $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'id'=>$newobject->id, 'ref'=>$newobject->ref); } - else - { + else { dol_syslog("Webservice server_order:: order creation or validation failed, rollback", LOG_ERR); $db->rollback(); $error++; @@ -848,24 +844,21 @@ function validOrder($authentication, $id = '', $id_warehouse = 0) $outputlangs = $langs; $order->generateDocument($order->modelpdf, $outputlangs); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; $errorlabel = $order->error; } } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; $errorlabel = $order->error; } } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; @@ -877,8 +870,7 @@ function validOrder($authentication, $id = '', $id_warehouse = 0) { $objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)); } - else - { + else { $db->commit(); $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>'')); } diff --git a/htdocs/webservices/server_other.php b/htdocs/webservices/server_other.php index 4ae702ade15..71ee78d3c4d 100644 --- a/htdocs/webservices/server_other.php +++ b/htdocs/webservices/server_other.php @@ -304,8 +304,7 @@ function getDocument($authentication, $modulepart, $file, $refname = '') 'document'=>$objectret ); } - else - { + else { dol_syslog("File doesn't exist ".$original_file); $errorcode = 'NOT_FOUND'; $errorlabel = ''; diff --git a/htdocs/webservices/server_payment.php b/htdocs/webservices/server_payment.php index 38dab505bac..5145c4a3b7b 100644 --- a/htdocs/webservices/server_payment.php +++ b/htdocs/webservices/server_payment.php @@ -197,8 +197,7 @@ function createPayment($authentication, $payment) $db->commit(); $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'id'=>$new_payment->id); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; diff --git a/htdocs/webservices/server_productorservice.php b/htdocs/webservices/server_productorservice.php index a98d8b2a6cd..68563bfab38 100644 --- a/htdocs/webservices/server_productorservice.php +++ b/htdocs/webservices/server_productorservice.php @@ -450,14 +450,12 @@ function getProductOrService($authentication, $id = '', $ref = '', $ref_ext = '' 'product'=>$productorservice_result_fields ); } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } @@ -613,8 +611,7 @@ function createProductOrService($authentication, $product) $newobject->error = 'You set a different value for stock, but correction of stock count (before='.$getstockreal.', after='.$savstockreal.') fails with error '.$newobject->error; } } - else - { + else { $error++; $newobject->error = 'You set a different value for stock but we failed to find warehouse '.$product['warehouse_ref'].' to make correction.'; } @@ -627,8 +624,7 @@ function createProductOrService($authentication, $product) $db->commit(); $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'id'=>$newobject->id, 'ref'=>$newobject->ref); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; @@ -754,8 +750,7 @@ function updateProductOrService($authentication, $product) { $error++; } - else - { + else { // Update stock if stock count is provided and differs from database after creation or update if (isset($product['stock_real']) && $product['stock_real'] != '' && !empty($conf->global->stock->enabled)) { @@ -785,8 +780,7 @@ function updateProductOrService($authentication, $product) $newobject->error = 'You set a different value for stock, but correction of stock count (before='.$getstockreal.', after='.$savstockreal.') fails with error '.$newobject->error; } } - else - { + else { $error++; $newobject->error = 'You set a different value for stock but we failed to find warehouse '.$product['warehouse_ref'].' to make correction.'; } @@ -819,8 +813,7 @@ function updateProductOrService($authentication, $product) $db->commit(); $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'id'=>$newobject->id, 'ref'=>$newobject->ref); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; @@ -890,8 +883,7 @@ function deleteProductOrService($authentication, $listofidstring) $firsterror = 'Product or service with id '.$id.' not found'; break; } - else - { + else { $result = $newobject->delete($user); if ($result <= 0) { @@ -910,8 +902,7 @@ function deleteProductOrService($authentication, $listofidstring) //$objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'listofid'=>$listofiddeleted); $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'nbdeleted'=>count($listofiddeleted)); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; @@ -983,8 +974,7 @@ function getListOfProductsOrServices($authentication, $filterproduct) $i++; } } - else - { + else { $error++; $errorcode = $db->lasterrno(); $errorlabel = $db->lasterror(); @@ -998,8 +988,7 @@ function getListOfProductsOrServices($authentication, $filterproduct) 'products'=>$arrayproducts ); } - else - { + else { $objectresp = array( 'result'=>array('result_code' => 'OK', 'result_label' => ''), 'products'=>$arrayproducts @@ -1139,21 +1128,18 @@ function getProductsForCategory($authentication, $id, $lang = '') 'products'=> $products ); } - else - { + else { $errorcode = 'NORECORDS_FOR_ASSOCIATION'; $errorlabel = 'No products associated'.$sql; $objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)); dol_syslog("getProductsForCategory:: ".$errorcode, LOG_DEBUG); } } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } diff --git a/htdocs/webservices/server_project.php b/htdocs/webservices/server_project.php index 5bbaaaf035a..dc8fc81db2c 100644 --- a/htdocs/webservices/server_project.php +++ b/htdocs/webservices/server_project.php @@ -298,8 +298,7 @@ function createProject($authentication, $project) $error++; } } - else - { + else { $error++; } @@ -308,16 +307,14 @@ function createProject($authentication, $project) $db->commit(); $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'id'=>$newobject->id, 'ref'=>$newobject->ref); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; $errorlabel = $newobject->error; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } @@ -424,14 +421,12 @@ function getProject($authentication, $id = '', $ref = '') 'project'=>$project_result_fields ); } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref='.$ref; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } diff --git a/htdocs/webservices/server_supplier_invoice.php b/htdocs/webservices/server_supplier_invoice.php index 78a00ced40e..ecf2c51fd1f 100644 --- a/htdocs/webservices/server_supplier_invoice.php +++ b/htdocs/webservices/server_supplier_invoice.php @@ -303,14 +303,12 @@ function getSupplierInvoice($authentication, $id = '', $ref = '', $ref_ext = '') )); } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } @@ -441,8 +439,7 @@ function getSupplierInvoicesForThirdParty($authentication, $idthirdparty) ); } - else - { + else { $error++; $errorcode = $db->lasterrno(); $errorlabel = $db->lasterror(); } diff --git a/htdocs/webservices/server_thirdparty.php b/htdocs/webservices/server_thirdparty.php index d69b481323e..1e9f8355d52 100644 --- a/htdocs/webservices/server_thirdparty.php +++ b/htdocs/webservices/server_thirdparty.php @@ -378,14 +378,12 @@ function getThirdParty($authentication, $id = '', $ref = '', $ref_ext = '') 'result'=>array('result_code'=>'OK', 'result_label'=>''), 'thirdparty'=>$thirdparty_result_fields); } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } @@ -515,8 +513,7 @@ function createThirdParty($authentication, $thirdparty) $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''), 'id'=>$newobject->id, 'ref'=>$newobject->ref); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; @@ -750,8 +747,7 @@ function getListOfThirdParties($authentication, $filterthirdparty) $i++; } } - else - { + else { $error++; $errorcode = $db->lasterrno(); $errorlabel = $db->lasterror(); @@ -765,8 +761,7 @@ function getListOfThirdParties($authentication, $filterthirdparty) 'thirdparties'=>$arraythirdparties ); } - else - { + else { $objectresp = array( 'result'=>array('result_code' => 'OK', 'result_label' => ''), 'thirdparties'=>$arraythirdparties @@ -828,8 +823,7 @@ function deleteThirdParty($authentication, $id = '', $ref = '', $ref_ext = '') $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>'')); } - else - { + else { $db->rollback(); $error++; $errorcode = 'KO'; @@ -837,14 +831,12 @@ function deleteThirdParty($authentication, $id = '', $ref = '', $ref_ext = '') dol_syslog("Function: deleteThirdParty cant delete"); } } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } diff --git a/htdocs/webservices/server_user.php b/htdocs/webservices/server_user.php index 8793d2f02fa..c37e920f61d 100644 --- a/htdocs/webservices/server_user.php +++ b/htdocs/webservices/server_user.php @@ -372,14 +372,12 @@ function getUser($authentication, $id, $ref = '', $ref_ext = '') ) ); } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } @@ -426,8 +424,7 @@ function getListOfGroups($authentication) { $sql .= " WHERE g.entity IS NOT NULL"; } - else - { + else { $sql .= " WHERE g.entity IN (0,".$conf->entity.")"; } $sql .= " GROUP BY g.rowid, g.nom, g.entity, g.datec"; @@ -444,8 +441,7 @@ function getListOfGroups($authentication) $i++; } } - else - { + else { $error++; $errorcode = $db->lasterrno(); $errorlabel = $db->lasterror(); @@ -459,8 +455,7 @@ function getListOfGroups($authentication) 'groups'=>$arraygroups ); } - else - { + else { $objectresp = array( 'result'=>array('result_code' => 'OK', 'result_label' => ''), 'groups'=>$arraygroups @@ -526,8 +521,7 @@ function createUserFromThirdparty($authentication, $thirdpartywithuser) $error++; $errorcode = 'ALREADY_EXIST'; $errorlabel = 'Object not create : company or contact exists '.$thirdpartywithuser['email']; } - else - { + else { $db->begin(); /* * Company creation @@ -633,14 +627,12 @@ function createUserFromThirdparty($authentication, $thirdpartywithuser) if ($thirdpartywithuser['group_id'] > 0) $edituser->SetInGroup($thirdpartywithuser['group_id'], $conf->entity); } - else - { + else { $error++; $errorcode = 'NOT_CREATE'; $errorlabel = 'Object not create : '.$edituser->error; } } - else - { + else { $error++; $errorcode = 'NOT_CREATE'; $errorlabel = 'Object not create : '.$contact->error; } @@ -651,22 +643,19 @@ function createUserFromThirdparty($authentication, $thirdpartywithuser) $error = 0; } } - else - { + else { $error++; $errors = ($thirdparty->error ? array($thirdparty->error) : $thirdparty->errors); } } } - else - { + else { // retour creation KO $error++; $errorcode = 'NOT_CREATE'; $errorlabel = 'Object not create'; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } @@ -732,20 +721,17 @@ function setUserPassword($authentication, $shortuser) 'groups'=>$arraygroups ); } - else - { + else { $error++; $errorcode = 'NOT_MODIFIED'; $errorlabel = 'Error when changing password'; } } - else - { + else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'User not found'; } } - else - { + else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } From f5688b2eecf8a56effd263936ac1ac8bf0dbdf6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 21 May 2020 01:52:25 +0200 Subject: [PATCH 639/780] add new rule --- htdocs/compta/accounting-files.php | 12 +- htdocs/compta/ajaxpayment.php | 6 +- htdocs/compta/bank/annuel.php | 27 +-- htdocs/compta/bank/bankentries_list.php | 71 ++---- htdocs/compta/bank/budget.php | 3 +- htdocs/compta/bank/card.php | 30 +-- htdocs/compta/bank/categ.php | 3 +- htdocs/compta/bank/class/account.class.php | 72 ++---- .../bank/class/api_bankaccounts.class.php | 9 +- .../bank/class/paymentvarious.class.php | 24 +- htdocs/compta/bank/graph.php | 54 ++--- htdocs/compta/bank/line.php | 51 ++--- htdocs/compta/bank/list.php | 6 +- htdocs/compta/bank/releve.php | 24 +- htdocs/compta/bank/transfer.php | 9 +- htdocs/compta/bank/treso.php | 9 +- htdocs/compta/bank/various_payment/card.php | 21 +- .../compta/bank/various_payment/document.php | 3 +- htdocs/compta/bank/various_payment/list.php | 6 +- .../compta/cashcontrol/cashcontrol_card.php | 24 +- .../compta/cashcontrol/cashcontrol_list.php | 3 +- htdocs/compta/cashcontrol/report.php | 6 +- htdocs/compta/charges/index.php | 18 +- htdocs/compta/clients.php | 3 +- htdocs/compta/deplacement/card.php | 45 ++-- .../deplacement/class/deplacement.class.php | 21 +- htdocs/compta/deplacement/document.php | 3 +- htdocs/compta/deplacement/index.php | 3 +- htdocs/compta/deplacement/list.php | 3 +- htdocs/compta/deplacement/stats/index.php | 3 +- htdocs/compta/facture/card-rec.php | 99 +++----- htdocs/compta/facture/card.php | 131 ++++------- .../facture/class/api_invoices.class.php | 9 +- .../facture/class/facture-rec.class.php | 97 +++----- htdocs/compta/facture/class/facture.class.php | 214 ++++++------------ .../facture/class/paymentterm.class.php | 18 +- htdocs/compta/facture/contact.php | 12 +- htdocs/compta/facture/document.php | 6 +- .../compta/facture/invoicetemplate_list.php | 15 +- htdocs/compta/facture/list.php | 21 +- htdocs/compta/facture/prelevement.php | 48 ++-- htdocs/compta/facture/stats/index.php | 9 +- .../facture/tpl/linkedobjectblock.tpl.php | 3 +- htdocs/compta/index.php | 48 ++-- htdocs/compta/journal/purchasesjournal.php | 5 +- htdocs/compta/journal/sellsjournal.php | 5 +- htdocs/compta/localtax/card.php | 15 +- .../compta/localtax/class/localtax.class.php | 45 ++-- htdocs/compta/localtax/clients.php | 24 +- htdocs/compta/localtax/index.php | 12 +- htdocs/compta/localtax/list.php | 3 +- htdocs/compta/localtax/quadri_detail.php | 21 +- htdocs/compta/paiement.php | 21 +- htdocs/compta/paiement/card.php | 24 +- htdocs/compta/paiement/cheque/card.php | 60 ++--- .../cheque/class/remisecheque.class.php | 75 ++---- htdocs/compta/paiement/cheque/index.php | 6 +- htdocs/compta/paiement/cheque/list.php | 6 +- .../compta/paiement/class/paiement.class.php | 69 ++---- htdocs/compta/paiement/list.php | 8 +- htdocs/compta/paiement/rapport.php | 3 +- htdocs/compta/paiement/tovalidate.php | 3 +- htdocs/compta/paiement_charge.php | 9 +- htdocs/compta/payment_sc/card.php | 9 +- htdocs/compta/paymentbybanktransfer/index.php | 9 +- htdocs/compta/prelevement/bons.php | 3 +- htdocs/compta/prelevement/card.php | 6 +- .../class/bonprelevement.class.php | 123 ++++------ .../class/ligneprelevement.class.php | 6 +- .../class/rejetprelevement.class.php | 27 +-- htdocs/compta/prelevement/create.php | 18 +- htdocs/compta/prelevement/demandes.php | 6 +- htdocs/compta/prelevement/factures.php | 6 +- htdocs/compta/prelevement/fiche-rejet.php | 9 +- htdocs/compta/prelevement/fiche-stat.php | 6 +- htdocs/compta/prelevement/index.php | 9 +- htdocs/compta/prelevement/line.php | 24 +- htdocs/compta/prelevement/list.php | 3 +- htdocs/compta/prelevement/rejets.php | 3 +- htdocs/compta/prelevement/stats.php | 6 +- htdocs/compta/recap-compta.php | 9 +- htdocs/compta/resultat/clientfourn.php | 53 ++--- htdocs/compta/resultat/index.php | 26 +-- htdocs/compta/resultat/result.php | 4 +- htdocs/compta/sociales/card.php | 30 +-- .../sociales/class/chargesociales.class.php | 27 +-- .../class/paymentsocialcontribution.class.php | 27 +-- htdocs/compta/sociales/document.php | 3 +- htdocs/compta/sociales/list.php | 12 +- htdocs/compta/sociales/payments.php | 18 +- htdocs/compta/stats/byratecountry.php | 3 +- htdocs/compta/stats/cabyprodserv.php | 3 +- htdocs/compta/stats/cabyuser.php | 5 +- htdocs/compta/stats/casoc.php | 5 +- htdocs/compta/stats/index.php | 23 +- htdocs/compta/stats/supplier_turnover.php | 18 +- .../stats/supplier_turnover_by_prodserv.php | 3 +- .../stats/supplier_turnover_by_thirdparty.php | 3 +- htdocs/compta/tva/card.php | 18 +- htdocs/compta/tva/class/tva.class.php | 51 ++--- htdocs/compta/tva/clients.php | 12 +- htdocs/compta/tva/document.php | 3 +- htdocs/compta/tva/index.php | 12 +- htdocs/compta/tva/list.php | 9 +- htdocs/compta/tva/quadri_detail.php | 18 +- htdocs/contact/agenda.php | 6 +- .../actions_contactcard_common.class.php | 9 +- .../actions_contactcard_default.class.php | 3 +- htdocs/contact/card.php | 69 ++---- htdocs/contact/class/contact.class.php | 60 ++--- htdocs/contact/consumption.php | 12 +- htdocs/contact/ldap.php | 15 +- htdocs/contact/list.php | 9 +- htdocs/contact/perso.php | 24 +- htdocs/contact/vcard.php | 3 +- htdocs/contrat/agenda.php | 3 +- htdocs/contrat/card.php | 102 +++------ htdocs/contrat/class/api_contracts.class.php | 6 +- htdocs/contrat/class/contrat.class.php | 113 ++++----- htdocs/contrat/contact.php | 6 +- htdocs/contrat/document.php | 3 +- htdocs/contrat/index.php | 33 +-- htdocs/contrat/list.php | 3 +- htdocs/contrat/services_list.php | 12 +- htdocs/cron/admin/cron.php | 6 +- htdocs/cron/card.php | 33 +-- htdocs/cron/class/cronjob.class.php | 42 ++-- htdocs/cron/list.php | 15 +- htdocs/dav/dav.class.php | 30 +-- htdocs/dav/dav.lib.php | 6 +- .../class/DataCollector/DolLogsCollector.php | 3 +- htdocs/ecm/ajax/ecmdatabase.php | 9 +- htdocs/ecm/class/ecmdirectory.class.php | 48 ++-- htdocs/ecm/class/ecmfiles.class.php | 6 +- htdocs/ecm/class/htmlecm.form.class.php | 6 +- htdocs/ecm/dir_add_card.php | 16 +- htdocs/ecm/dir_card.php | 46 ++-- htdocs/ecm/file_card.php | 27 +-- htdocs/ecm/index.php | 15 +- htdocs/ecm/index_auto.php | 15 +- .../class/emailcollector.class.php | 72 ++---- .../class/emailcollectoraction.class.php | 3 +- .../class/emailcollectorfilter.class.php | 3 +- htdocs/expedition/card.php | 150 ++++-------- .../expedition/class/api_shipments.class.php | 6 +- htdocs/expedition/class/expedition.class.php | 174 +++++--------- .../class/expeditionbatch.class.php | 12 +- htdocs/expedition/contact.php | 3 +- htdocs/expedition/index.php | 3 +- htdocs/expedition/list.php | 6 +- htdocs/expedition/shipment.php | 33 +-- htdocs/expedition/stats/index.php | 3 +- htdocs/expensereport/ajax/ajaxik.php | 12 +- htdocs/expensereport/ajax/ajaxprojet.php | 6 +- htdocs/expensereport/card.php | 159 +++++-------- .../class/api_expensereports.class.php | 3 +- .../class/expensereport.class.php | 192 ++++++---------- .../class/expensereport_ik.class.php | 12 +- .../class/expensereport_rule.class.php | 9 +- .../class/paymentexpensereport.class.php | 30 +-- htdocs/expensereport/document.php | 3 +- htdocs/expensereport/index.php | 3 +- htdocs/expensereport/list.php | 18 +- htdocs/expensereport/payment/card.php | 12 +- htdocs/expensereport/payment/payment.php | 6 +- htdocs/expensereport/stats/index.php | 3 +- .../tpl/expensereport_linktofile.tpl.php | 6 +- htdocs/fichinter/card-rec.php | 21 +- htdocs/fichinter/card.php | 72 ++---- htdocs/fichinter/class/fichinter.class.php | 87 +++---- htdocs/fichinter/contact.php | 3 +- htdocs/fichinter/document.php | 3 +- htdocs/fichinter/index.php | 3 +- htdocs/fichinter/list.php | 3 +- htdocs/fichinter/stats/index.php | 9 +- htdocs/fourn/card.php | 36 +-- .../class/api_supplier_invoices.class.php | 3 +- htdocs/fourn/class/fournisseur.class.php | 12 +- .../class/fournisseur.commande.class.php | 210 ++++++----------- .../fournisseur.commande.dispatch.class.php | 15 +- .../fourn/class/fournisseur.facture.class.php | 133 ++++------- .../fourn/class/fournisseur.product.class.php | 44 ++-- htdocs/fourn/class/paiementfourn.class.php | 48 ++-- htdocs/fourn/commande/card.php | 144 ++++-------- htdocs/fourn/commande/contact.php | 12 +- htdocs/fourn/commande/dispatch.php | 24 +- htdocs/fourn/commande/document.php | 3 +- htdocs/fourn/commande/index.php | 9 +- htdocs/fourn/commande/info.php | 6 +- htdocs/fourn/commande/list.php | 18 +- htdocs/fourn/commande/note.php | 3 +- htdocs/fourn/commande/orderstoinvoice.php | 6 +- htdocs/fourn/contact.php | 3 +- htdocs/fourn/facture/card.php | 131 ++++------- htdocs/fourn/facture/contact.php | 12 +- htdocs/fourn/facture/document.php | 3 +- htdocs/fourn/facture/impayees.php | 3 +- htdocs/fourn/facture/list.php | 6 +- htdocs/fourn/facture/paiement.php | 27 +-- htdocs/fourn/facture/rapport.php | 3 +- .../facture/tpl/linkedobjectblock.tpl.php | 3 +- htdocs/fourn/index.php | 9 +- htdocs/fourn/paiement/card.php | 24 +- htdocs/fourn/product/list.php | 3 +- htdocs/fourn/recap-fourn.php | 9 +- htdocs/ftp/admin/ftpclient.php | 15 +- htdocs/ftp/index.php | 71 ++---- htdocs/holiday/card.php | 78 +++---- htdocs/holiday/class/holiday.class.php | 108 +++------ htdocs/holiday/define_holiday.php | 12 +- htdocs/holiday/document.php | 12 +- htdocs/holiday/list.php | 9 +- htdocs/holiday/month_report.php | 3 +- htdocs/imports/class/import.class.php | 12 +- htdocs/imports/import.php | 71 ++---- 215 files changed, 1910 insertions(+), 3784 deletions(-) diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index faf2feeb7a0..b14e3adafad 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -335,8 +335,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { $filesarray[$nofile['item'].'_'.$nofile['id']] = $nofile; } - else - { + else { foreach ($files as $key => $file) { $file['id'] = $objd->id; @@ -384,8 +383,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { $i++; } } - else - { + else { dol_print_error($db); } @@ -492,8 +490,7 @@ if ($result && $action == "dl" && !$error) exit(); } - else - { + else { setEventMessages($langs->trans("FailedToOpenFile", $zipname), null, 'errors'); } } @@ -626,8 +623,7 @@ if (!empty($date_start) && !empty($date_stop)) { print ''.$langs->trans("NoItem").''; } - else - { + else { // Sort array by date ASC to calculate balance $totalET_debit = 0; diff --git a/htdocs/compta/ajaxpayment.php b/htdocs/compta/ajaxpayment.php index f380d8b4ee5..0129d1e5f43 100644 --- a/htdocs/compta/ajaxpayment.php +++ b/htdocs/compta/ajaxpayment.php @@ -81,13 +81,11 @@ if ($currentInvId) // Here to breakdown $remainAmount = $currentRemain - $currentAmount; // To keep value between curRemain and curAmount $result += $remainAmount; // result must be deduced by $currentAmount += $remainAmount; // curAmount put to curRemain - } else - { + } else { $currentAmount = $currentRemain; $result += $currentRemain; } - } else - { + } else { // Reset the substraction for this amount $result += price2num($currentAmount); $currentAmount = 0; diff --git a/htdocs/compta/bank/annuel.php b/htdocs/compta/bank/annuel.php index 1f6e5e6620c..51d838878b8 100644 --- a/htdocs/compta/bank/annuel.php +++ b/htdocs/compta/bank/annuel.php @@ -51,8 +51,7 @@ if (!$year_start) $year_start = $year_current - 2; $year_end = $year_current; } -else -{ +else { $year_end = $year_start + 2; } @@ -108,8 +107,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -136,8 +134,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -158,8 +155,7 @@ if (!empty($id)) { dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref, '', 0, '', '', 1); } - else - { + else { $bankaccount = new Account($db); $listid = explode(',', $id); foreach ($listid as $key => $aId) @@ -171,8 +167,7 @@ if (!empty($id)) } } } -else -{ +else { print $langs->trans("AllAccounts"); } @@ -281,8 +276,7 @@ if ($result < 0) $error++; setEventMessages($langs->trans("ErrorFailedToCreateDir"), null, 'errors'); } -else -{ +else { // Calcul de $min et $max $sql = "SELECT MIN(b.datev) as min, MAX(b.datev) as max"; $sql .= " FROM ".MAIN_DB_PREFIX."bank as b"; @@ -299,8 +293,7 @@ else $min = $db->jdate($obj->min); $max = $db->jdate($obj->max); } - else - { + else { dol_print_error($db); } $log = "graph.php: min=".$min." max=".$max; @@ -339,8 +332,7 @@ else } $db->free($resql); } - else - { + else { dol_print_error($db); } } @@ -426,8 +418,7 @@ else } $db->free($resql); } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index 7d059734126..d5fb533016e 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -69,8 +69,7 @@ if ($fielvalue) if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'banque', $fieldvalue, 'bank_account&bank_account', '', '', $fieldtype); } -else -{ +else { if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'banque'); } @@ -242,15 +241,13 @@ if ((GETPOST('confirm_savestatement', 'alpha') || GETPOST('confirm_reconcile', ' } } } - else - { + else { $error++; $langs->load("errors"); setEventMessages($langs->trans("NoRecordSelected"), null, 'errors'); } } - else - { + else { $error++; $langs->load("errors"); setEventMessages($langs->trans("ErrorPleaseTypeBankTransactionReportName"), null, 'errors'); @@ -287,8 +284,7 @@ if (GETPOST('save') && !$cancel && $user->rights->banque->modifier) { $amount = price2num($_POST["addcredit"]); } - else - { + else { $amount = - price2num($_POST["adddebit"]); } @@ -338,13 +334,11 @@ if (GETPOST('save') && !$cancel && $user->rights->banque->modifier) header("Location: ".$_SERVER['PHP_SELF'].($id ? "?id=".$id : '')); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { $action = 'addline'; } } @@ -469,8 +463,7 @@ if ($id > 0 || !empty($ref)) } } } -else -{ +else { llxHeader('', $langs->trans("BankTransactions"), '', '', 0, 0, array(), array(), $param); } @@ -675,8 +668,7 @@ if ($resql) print $liste; if ($numr <= 0) print ''.$langs->trans("None").''; } - else - { + else { dol_print_error($db); } @@ -793,13 +785,12 @@ if ($resql) { $newcardbutton = dolGetButtonTitle($langs->trans('AddBankRecord'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/compta/bank/various_payment/card.php?action=create&accountid='.$search_account.'&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.urlencode($search_account)), '', $user->rights->banque->modifier); } - else // If direct entries is not done using miscellaneous payments + else // If direct entries is not done using miscellaneous payments { $newcardbutton = dolGetButtonTitle($langs->trans('AddBankRecord'), '', 'fa fa-plus-circle', $_SERVER["PHP_SELF"].'?action=addline&page='.$page.$param, '', $user->rights->banque->modifier); } } - else - { + else { $newcardbutton = dolGetButtonTitle($langs->trans('AddBankRecord'), '', 'fa fa-plus-circle', $_SERVER["PHP_SELF"].'?action=addline&page='.$page.$param, '', -1); } } @@ -1041,8 +1032,7 @@ if ($resql) $balancebefore = $objforbalance->previoustotal + ($sign * $objp->amount); } // If sort is asc,asc,asc then total of previous date is balance of line before the next line to show - else - { + else { $balance = $objforbalance->previoustotal; } } @@ -1129,8 +1119,7 @@ if ($resql) $balance = price2num($balancebefore, 'MT'); // balance = balancebefore of previous line (sort is desc) $balancebefore = price2num($balancebefore - ($sign * $objp->amount), 'MT'); } - else - { + else { $balancebefore = price2num($balance, 'MT'); // balancebefore = balance of previous line (sort is asc) $balance = price2num($balance + ($sign * $objp->amount), 'MT'); } @@ -1142,8 +1131,7 @@ if ($resql) $cachebankaccount[$objp->bankid] = $bankaccounttmp; $bankaccount = $bankaccounttmp; } - else - { + else { $bankaccount = $cachebankaccount[$objp->bankid]; } @@ -1279,8 +1267,7 @@ if ($resql) print $bankstatic->getNomUrl(1, ''); print ')'; } - else - { + else { $bankstatic->id = $objp->bankid; $bankstatic->label = $objp->bankref; print ' ('.$langs->trans("TransferFrom").' '; @@ -1306,8 +1293,7 @@ if ($resql) elseif ($links[$key]['type'] == 'sc') { } - else - { + else { // Show link with label $links[$key]['label'] if (!empty($objp->label) && !empty($links[$key]['label'])) print ' - '; print ''; @@ -1317,8 +1303,7 @@ if ($resql) if ($reg[1] == 'paiement') $reg[1] = 'Payment'; print ' '.$langs->trans($reg[1]); } - else - { + else { print ' '.$links[$key]['label']; } print ''; @@ -1396,8 +1381,7 @@ if ($resql) $companystatic->code_compta_fournisseur = $objp->code_compta_fournisseur; print $companystatic->getNomUrl(1); } - else - { + else { print ' '; } print ''; @@ -1450,13 +1434,11 @@ if ($resql) { print ' '.price($balancebefore).''; } - else - { + else { print ' '.price($balancebefore).''; } } - else - { + else { print '-'; } if (!$i) $totalarray['nbfield']++; @@ -1470,13 +1452,11 @@ if ($resql) { print ' '.price($balance).''; } - else - { + else { print ' '.price($balance).''; } } - else - { + else { print '-'; } if (!$i) $totalarray['nbfield']++; @@ -1523,16 +1503,14 @@ if ($resql) print img_edit(); print ''; } - else - { + else { if ($user->rights->banque->modifier || $user->rights->banque->consolidate) { print ''; print img_edit(); print ''; } - else - { + else { print ''; print img_view(); print ''; @@ -1610,8 +1588,7 @@ if ($resql) print ''; $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/bank/budget.php b/htdocs/compta/bank/budget.php index 042117808d5..3a15ddf72e1 100644 --- a/htdocs/compta/bank/budget.php +++ b/htdocs/compta/bank/budget.php @@ -90,8 +90,7 @@ if ($result) print ''.price($total).''; print ''.price($totalnb ?price2num($total / $totalnb, 'MT') : 0).''; } -else -{ +else { dol_print_error($db); } print ""; diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index 593893878e0..3af40ffb2a0 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -100,8 +100,7 @@ if ($action == 'add') { $object->account_number = ''; } - else - { + else { $object->account_number = $account_number; } $fk_accountancy_journal = GETPOST('fk_accountancy_journal', 'int'); @@ -168,8 +167,7 @@ if ($action == 'add') { $db->commit(); } - else - { + else { $db->rollback(); } } @@ -206,8 +204,7 @@ if ($action == 'update') { $object->account_number = ''; } - else - { + else { $object->account_number = $account_number; } $fk_accountancy_journal = GETPOST('fk_accountancy_journal', 'int'); @@ -260,8 +257,7 @@ if ($action == 'update') $_GET["id"] = $_POST["id"]; // Force chargement page en mode visu } - else - { + else { $error++; setEventMessages($object->error, $object->errors, 'errors'); $action = 'edit'; // Force chargement page edition @@ -272,8 +268,7 @@ if ($action == 'update') { $db->commit(); } - else - { + else { $db->rollback(); } } @@ -291,8 +286,7 @@ if ($action == 'confirm_delete' && $_POST["confirm"] == "yes" && $user->rights-> header("Location: ".DOL_URL_ROOT."/compta/bank/list.php"); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } @@ -399,8 +393,7 @@ if ($action == 'create') { $formcompany->select_departement(isset($_POST["account_state_id"]) ? $_POST["account_state_id"] : '', $selectedcode, 'account_state_id'); } - else - { + else { print $countrynotdefined; } print ''; @@ -545,8 +538,7 @@ if ($action == 'create') print $formaccounting->select_account($object->account_number, 'account_number', 1, '', 1, 1); print ''; } - else - { + else { print ''.$langs->trans("AccountancyCode").''; print 'account_number).'">'; } @@ -577,8 +569,7 @@ if ($action == 'create') /* Visu et edition */ /* */ /* ************************************************************************** */ -else -{ +else { if (($_GET["id"] || $_GET["ref"]) && $action != 'edit') { $object = new Account($db); @@ -887,8 +878,7 @@ else { print $formcompany->select_state(isset($_POST["account_state_id"]) ? $_POST["account_state_id"] : $object->state_id, $selectedcode, 'account_state_id'); } - else - { + else { print $countrynotdefined; } print ''; diff --git a/htdocs/compta/bank/categ.php b/htdocs/compta/bank/categ.php index 308dad5dbca..b7bbb4d157e 100644 --- a/htdocs/compta/bank/categ.php +++ b/htdocs/compta/bank/categ.php @@ -133,8 +133,7 @@ if ($result) print ''; print ""; } - else - { + else { print "".$objp->label.""; print ''; print ''.img_edit().''; diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 3fcbffba3b2..cae83563b42 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -404,8 +404,7 @@ class Account extends CommonObject $rowid = $this->db->last_insert_id(MAIN_DB_PREFIX."bank_url"); return $rowid; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -510,8 +509,7 @@ class Account extends CommonObject $obj = $this->db->fetch_object($resql); $oper = $obj->code; } - else - { + else { dol_print_error($this->db, 'Failed to get payment type code'); return -1; } @@ -721,13 +719,11 @@ class Account extends CommonObject // End call triggers } } - else - { + else { $error++; } } - else - { + else { if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $this->error = $langs->trans("ErrorBankLabelAlreadyExists"); @@ -744,8 +740,7 @@ class Account extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -1 * $error; } @@ -837,8 +832,7 @@ class Account extends CommonObject // End call triggers } } - else - { + else { $error++; $this->error = $this->db->lasterror(); dol_print_error($this->db); @@ -849,8 +843,7 @@ class Account extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -1 * $error; } @@ -908,8 +901,7 @@ class Account extends CommonObject { return 1; } - else - { + else { $this->error = $this->db->lasterror(); dol_print_error($this->db); return -1; @@ -1007,13 +999,11 @@ class Account extends CommonObject return 1; } - else - { + else { return 0; } } - else - { + else { $this->error = $this->db->lasterror; $this->errors[] = $this->error; return -1; @@ -1114,8 +1104,7 @@ class Account extends CommonObject } } } - else - { + else { $error++; $this->error = "Error ".$this->db->lasterror(); } @@ -1126,8 +1115,7 @@ class Account extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -1292,8 +1280,7 @@ class Account extends CommonObject return $response; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -1331,8 +1318,7 @@ class Account extends CommonObject } $this->db->free($resql); } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -1476,8 +1462,7 @@ class Account extends CommonObject { return 1; } - else - { + else { return 0; } } @@ -1897,8 +1882,7 @@ class AccountLine extends CommonObject $this->db->free($result); return $ret; } - else - { + else { return -1; } } @@ -2015,8 +1999,7 @@ class AccountLine extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -$nbko; } @@ -2054,8 +2037,7 @@ class AccountLine extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -$nbko; } @@ -2086,8 +2068,7 @@ class AccountLine extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -1; @@ -2152,8 +2133,7 @@ class AccountLine extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -2190,8 +2170,7 @@ class AccountLine extends CommonObject return 1; } } - else - { + else { dol_print_error($this->db); return 0; } @@ -2257,8 +2236,7 @@ class AccountLine extends CommonObject return 1; } } - else - { + else { dol_print_error($this->db); return 0; } @@ -2334,8 +2312,7 @@ class AccountLine extends CommonObject } $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -2477,8 +2454,7 @@ class AccountLine extends CommonObject $alreadydispatched = $obj->nb; } } - else - { + else { $this->error = $this->db->lasterror(); return -1; } diff --git a/htdocs/compta/bank/class/api_bankaccounts.class.php b/htdocs/compta/bank/class/api_bankaccounts.class.php index ad75559b362..6943d2bc5e1 100644 --- a/htdocs/compta/bank/class/api_bankaccounts.class.php +++ b/htdocs/compta/bank/class/api_bankaccounts.class.php @@ -226,8 +226,7 @@ class BankAccounts extends DolibarrApi { $amount_to = $amount; } - else - { + else { if (!$amount_to || empty($amount_to)) { throw new RestException(422, 'You must provide amount_to value since bankaccount_from and bankaccount_to does not share the same currency.'); @@ -304,8 +303,7 @@ class BankAccounts extends DolibarrApi ) ); } - else - { + else { $this->db->rollback(); throw new RestException(500, $accountfrom->error.' '.$accountto->error); } @@ -339,8 +337,7 @@ class BankAccounts extends DolibarrApi { return $this->get($id); } - else - { + else { throw new RestException(500, $account->error); } } diff --git a/htdocs/compta/bank/class/paymentvarious.class.php b/htdocs/compta/bank/class/paymentvarious.class.php index 6af394ad4b4..ec88fea3f84 100644 --- a/htdocs/compta/bank/class/paymentvarious.class.php +++ b/htdocs/compta/bank/class/paymentvarious.class.php @@ -170,8 +170,7 @@ class PaymentVarious extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -245,8 +244,7 @@ class PaymentVarious extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -431,8 +429,7 @@ class PaymentVarious extends CommonObject { $this->update_fk_bank($bank_line_id); } - else - { + else { $this->error = $acc->error; $error++; } @@ -469,14 +466,12 @@ class PaymentVarious extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -500,8 +495,7 @@ class PaymentVarious extends CommonObject { return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -677,8 +671,7 @@ class PaymentVarious extends CommonObject } $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -706,8 +699,7 @@ class PaymentVarious extends CommonObject $alreadydispatched = $obj->nb; } } - else - { + else { $this->error = $this->db->lasterror(); return -1; } diff --git a/htdocs/compta/bank/graph.php b/htdocs/compta/bank/graph.php index 347353be84f..796529a24d9 100644 --- a/htdocs/compta/bank/graph.php +++ b/htdocs/compta/bank/graph.php @@ -85,8 +85,7 @@ if ($result < 0) $error++; setEventMessages($langs->trans("ErrorFailedToCreateDir"), null, 'errors'); } -else -{ +else { // Calcul $min and $max $sql = "SELECT MIN(b.datev) as min, MAX(b.datev) as max"; $sql .= " FROM ".MAIN_DB_PREFIX."bank as b"; @@ -103,8 +102,7 @@ else $min = $db->jdate($obj->min); $max = $db->jdate($obj->max); } - else - { + else { dol_print_error($db); } if (empty($min)) $min = dol_now() - 3600 * 24; @@ -152,8 +150,7 @@ else } $db->free($resql); } - else - { + else { dol_print_error($db); } @@ -175,8 +172,7 @@ else $solde = $row[0]; $db->free($resql); } - else - { + else { dol_print_error($db); } @@ -200,8 +196,7 @@ else { $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph } - else - { + else { $datas[$i] = $solde + $subtotal; } $datamin[$i] = $object->min_desired; @@ -295,8 +290,7 @@ else } $db->free($resql); } - else - { + else { dol_print_error($db); } @@ -318,8 +312,7 @@ else $solde = $row[0]; $db->free($resql); } - else - { + else { dol_print_error($db); } @@ -344,8 +337,7 @@ else { $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph } - else - { + else { $datas[$i] = $solde + $subtotal; } $datamin[$i] = $object->min_desired; @@ -432,8 +424,7 @@ else $i++; } } - else - { + else { dol_print_error($db); } @@ -460,8 +451,7 @@ else { $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph } - else - { + else { $datas[$i] = 0 + $solde + $subtotal; } $datamin[$i] = $object->min_desired; @@ -558,8 +548,7 @@ else } $db->free($resql); } - else - { + else { dol_print_error($db); } @@ -592,8 +581,7 @@ else } $db->free($resql); } - else - { + else { dol_print_error($db); } @@ -675,8 +663,7 @@ else } $db->free($resql); } - else - { + else { dol_print_error($db); } $sql = "SELECT date_format(b.datev,'%m')"; @@ -700,8 +687,7 @@ else } $db->free($resql); } - else - { + else { dol_print_error($db); } @@ -771,15 +757,13 @@ if ($account) $morehtml = ''.$langs->trans("ShowAllAccounts").''; dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', '', $moreparam, 0, '', '', 1); } - else - { + else { $morehtml = ''.$langs->trans("BackToAccount").''; print $langs->trans("AllAccounts"); //print $morehtml; } } - else - { + else { $bankaccount = new Account($db); $listid = explode(',', $account); foreach ($listid as $key => $id) @@ -791,8 +775,7 @@ if ($account) } } } -else -{ +else { print $langs->trans("AllAccounts"); } @@ -809,8 +792,7 @@ if ($mode == 'showalltime') print $langs->trans("GoBack"); print ''; } -else -{ +else { print ''; print $langs->trans("ShowAllTimeBalance"); print ''; diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index bf8dc6f5649..a1c37d59050 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -100,8 +100,7 @@ if ($action == 'confirm_delete_categ' && $confirm == "yes" && $user->rights->ban dol_print_error($db); } } - else - { + else { setEventMessages($langs->trans("MissingIds"), null, 'errors'); } } @@ -121,8 +120,7 @@ if ($user->rights->banque->modifier && $action == "update") { $actarget->fetch(GETPOST('accountid', 'int')); } - else - { + else { $actarget->fetch($id); } @@ -192,8 +190,7 @@ if ($user->rights->banque->modifier && $action == "update") setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); $db->commit(); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -230,8 +227,7 @@ if ($user->rights->banque->consolidate && ($action == 'num_releve' || $action == setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); $db->commit(); } - else - { + else { $db->rollback(); dol_print_error($db); } @@ -325,8 +321,7 @@ if ($result) { $form->select_comptes($acct->id, 'accountid', 0, '', 0); } - else - { + else { print $acct->getNomUrl(1, 'transactions', 'reflabel'); } print ''; @@ -464,8 +459,7 @@ if ($result) } print ''; } - else - { + else { print ''.$objp->fk_type.' '.$objp->num_chq.''; } print ""; @@ -480,8 +474,7 @@ if ($result) print ''; print ''; } - else - { + else { print ''.$objp->emetteur.''; } print ""; @@ -496,8 +489,7 @@ if ($result) print ''; print ''; } - else - { + else { print ''.$objp->banque.''; } print ""; @@ -518,8 +510,7 @@ if ($result) } print ''; } - else - { + else { print ''; print dol_print_date($db->jdate($objp->do), "day"); print ''; @@ -542,8 +533,7 @@ if ($result) } print ''; } - else - { + else { print ''; print dol_print_date($db->jdate($objp->dv), "day"); print ''; @@ -561,23 +551,20 @@ if ($result) // Label generique car entre parentheses. On l'affiche en le traduisant print $langs->trans($reg[1]); } - else - { + else { print $objp->label; } print '">'; print ''; } - else - { + else { print ''; if (preg_match('/^\((.*)\)$/i', $objp->label, $reg)) { // Label generique car entre parentheses. On l'affiche en le traduisant print $langs->trans($reg[1]); } - else - { + else { print $objp->label; } print ''; @@ -592,8 +579,7 @@ if ($result) print 'rappro ? ' disabled' : '').' value="'.price($objp->amount).'"> '.$langs->trans("Currency".$acct->currency_code); print ''; } - else - { + else { print ''; print price($objp->amount); print ''; @@ -650,15 +636,13 @@ if ($result) print $langs->trans("AccountStatement").' rappro ? ' disabled' : '').'>'; print ''; } - else - { + else { print $langs->trans("AccountStatement").' rappro ? ' disabled' : '').'>'; } if ($objp->num_releve) print '   ('.$langs->trans("AccountStatement").' '.$objp->num_releve.')'; print ''; } - else - { + else { print ''.$objp->num_releve.' '; } print ''; @@ -670,8 +654,7 @@ if ($result) print 'rappro ? ' checked="checked"' : '')).'">'; print ''; } - else - { + else { print ''.yn($objp->rappro).''; } print ''; diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index b1c76c529ad..bc45c708f33 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -488,8 +488,7 @@ foreach ($accounts as $key=>$type) $accountingaccount->fetch('', $objecttmp->account_number, 1); print $accountingaccount->getNomUrl(0, 1, 1, '', 1); } - else - { + else { print $objecttmp->account_number; } print ''; @@ -506,8 +505,7 @@ foreach ($accounts as $key=>$type) $accountingjournal->fetch($objecttmp->fk_accountancy_journal); print $accountingjournal->getNomUrl(0, 1, 1, '', 1); } - else - { + else { print ''; } print ''; diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php index c737af4a89e..65476665963 100644 --- a/htdocs/compta/bank/releve.php +++ b/htdocs/compta/bank/releve.php @@ -296,16 +296,14 @@ if (empty($numref)) { // } - else - { + else { print ''; print ''; if ($action != 'editbankreceipt' || $objp->numr != $brref) { print ''.$objp->numr.''; } - else - { + else { print ''; print ''; print ''; @@ -356,13 +354,11 @@ if (empty($numref)) print "\n
\n"; } - else - { + else { dol_print_error($db); } } -else -{ +else { /** * Show list of record into a bank statement */ @@ -554,8 +550,7 @@ else print $bankstatic->getNomUrl(1, ''); print ')'; } - else - { + else { $bankstatic->id = $objp->bankid; $bankstatic->label = $objp->bankref; print ' ('.$langs->trans("from").' '; @@ -626,8 +621,7 @@ else $ii++; } } - else - { + else { dol_print_error($db); } } @@ -639,8 +633,7 @@ else $totald = $totald + abs($objp->amount); print ''.price($objp->amount * -1)." \n"; } - else - { + else { $totalc = $totalc + abs($objp->amount); print ' '.price($objp->amount)."\n"; } @@ -653,8 +646,7 @@ else print img_edit(); print ""; } - else - { + else { print " "; } print ""; diff --git a/htdocs/compta/bank/transfer.php b/htdocs/compta/bank/transfer.php index aa4c39e55ee..99a66321648 100644 --- a/htdocs/compta/bank/transfer.php +++ b/htdocs/compta/bank/transfer.php @@ -88,8 +88,7 @@ if ($action == 'add') { $amountto = $amount; } - else - { + else { if (!$amountto) { $error++; @@ -131,14 +130,12 @@ if ($action == 'add') setEventMessages($mesgs, null, 'mesgs'); $db->commit(); } - else - { + else { setEventMessages($accountfrom->error.' '.$accountto->error, null, 'errors'); $db->rollback(); } } - else - { + else { $error++; setEventMessages($langs->trans("ErrorFromToAccountsMustDiffers"), null, 'errors'); } diff --git a/htdocs/compta/bank/treso.php b/htdocs/compta/bank/treso.php index b8d259cdc8d..929a1611775 100644 --- a/htdocs/compta/bank/treso.php +++ b/htdocs/compta/bank/treso.php @@ -73,8 +73,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) { $viewline = $vline; } - else - { + else { $viewline = 20; } @@ -305,8 +304,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) $i++; } } - else - { + else { dol_print_error($db); } @@ -327,8 +325,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) print ""; print "
"; } -else -{ +else { print $langs->trans("ErrorBankAccountNotFound"); } diff --git a/htdocs/compta/bank/various_payment/card.php b/htdocs/compta/bank/various_payment/card.php index c4fdc3be56a..ffabd082bfa 100644 --- a/htdocs/compta/bank/various_payment/card.php +++ b/htdocs/compta/bank/various_payment/card.php @@ -164,8 +164,7 @@ if (empty($reshook)) header("Location: ".$urltogo); exit; } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); $action = "create"; @@ -199,21 +198,18 @@ if (empty($reshook)) header("Location: ".DOL_URL_ROOT.'/compta/bank/various_payment/list.php'); exit; } - else - { + else { $object->error = $accountline->error; $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages('Error try do delete a line linked to a conciliated bank transaction', null, 'errors'); } } @@ -392,8 +388,7 @@ if ($action == 'create') { print $formaccounting->select_auxaccount($subledger_account, 'subledger_account', 1, ''); } - else - { + else { print ''; } print ''; @@ -565,13 +560,11 @@ if ($id) print ''; } } - else - { + else { print ''; } } - else - { + else { print ''; } diff --git a/htdocs/compta/bank/various_payment/document.php b/htdocs/compta/bank/various_payment/document.php index d81b9bdd41a..624ead86073 100644 --- a/htdocs/compta/bank/various_payment/document.php +++ b/htdocs/compta/bank/various_payment/document.php @@ -150,8 +150,7 @@ if ($object->id) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/compta/bank/various_payment/list.php b/htdocs/compta/bank/various_payment/list.php index 5f68440809c..5fa44ba8555 100644 --- a/htdocs/compta/bank/various_payment/list.php +++ b/htdocs/compta/bank/various_payment/list.php @@ -76,8 +76,7 @@ if (!GETPOST('typeid')) if ($part[0] == 'v.fk_typepayment') $typeid = $part[1]; } } -else -{ +else { $typeid = GETPOST('typeid'); } @@ -374,8 +373,7 @@ if ($result) $db->free($result); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index 3780fbc1afe..fce50a977e4 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -178,8 +178,7 @@ elseif ($action == "add") $db->commit(); $action = "view"; } - else - { + else { $db->rollback; $action = "view"; } @@ -218,8 +217,7 @@ if ($action == "valid") // validate = close setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } - else - { + else { setEventMessages($langs->trans("CashFenceDone"), null); $db->commit(); } @@ -254,8 +252,7 @@ if ($action == 'confirm_delete' && !empty($permissiontodelete)) header("Location: ".$backurlforlist); exit; } - else - { + else { if (!empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); else setEventMessages($object->error, null, 'errors'); } @@ -330,8 +327,7 @@ if ($action == "create" || $action == "start" || $action == 'close') } else dol_print_error($db); } - else - { + else { setEventMessages($langs->trans("SetupOfTerminalNotComplete", $terminaltouse), null, 'errors'); $error++; } @@ -350,8 +346,7 @@ if ($action == "create" || $action == "start" || $action == 'close') 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 - { + else { dol_print_error('Value for key = '.$key.' not supported'); exit; } @@ -394,8 +389,7 @@ if ($action == "create" || $action == "start" || $action == 'close') print ''; print ''; } - else - { + else { print ''; } @@ -470,8 +464,7 @@ if ($action == "create" || $action == "start" || $action == 'close') { print ''; } - else - { + else { print ''; } print ''; @@ -712,8 +705,7 @@ if (empty($action) || $action == "view" || $action == "close") print ''; print ''; } - else - { + else { print ''; } diff --git a/htdocs/compta/cashcontrol/cashcontrol_list.php b/htdocs/compta/cashcontrol/cashcontrol_list.php index a98c9ea83f5..5269c07bab2 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_list.php +++ b/htdocs/compta/cashcontrol/cashcontrol_list.php @@ -260,8 +260,7 @@ if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) { $num = $nbtotalofrecords; } -else -{ +else { $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); diff --git a/htdocs/compta/cashcontrol/report.php b/htdocs/compta/cashcontrol/report.php index 1ea06eba9e9..5b9079f9d72 100644 --- a/htdocs/compta/cashcontrol/report.php +++ b/htdocs/compta/cashcontrol/report.php @@ -173,8 +173,7 @@ if ($resql) $cachebankaccount[$objp->bankid] = $bankaccounttmp; $bankaccount = $bankaccounttmp; } - else - { + else { $bankaccount = $cachebankaccount[$objp->bankid]; } @@ -312,8 +311,7 @@ if ($resql) $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index 93065219248..991d039d1fb 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -104,8 +104,7 @@ if ($mode != 'sconly') $center = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 1); } -else -{ +else { print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 0); } @@ -241,8 +240,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) print ''.price($totalpaye).""; print ""; } - else - { + else { dol_print_error($db); } print ''; @@ -357,8 +355,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) print ""; $db->free($result); } - else - { + else { dol_print_error($db); } } @@ -380,8 +377,7 @@ elseif ($mysoc->localtax2_assuj == "1") $j = 2; $numlt = 3; } -else -{ +else { $j = 0; $numlt = 0; } @@ -452,8 +448,7 @@ while ($j < $numlt) print ""; $db->free($result); } - else - { + else { dol_print_error($db); } } @@ -566,8 +561,7 @@ if (!empty($conf->salaries->enabled) && !empty($user->rights->salaries->read)) print "
"; } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/compta/clients.php b/htdocs/compta/clients.php index 6c1439d5466..74cc0d594e5 100644 --- a/htdocs/compta/clients.php +++ b/htdocs/compta/clients.php @@ -197,8 +197,7 @@ if ($resql) $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/deplacement/card.php b/htdocs/compta/deplacement/card.php index 463d9ea699f..b688bd17907 100644 --- a/htdocs/compta/deplacement/card.php +++ b/htdocs/compta/deplacement/card.php @@ -71,8 +71,7 @@ if ($action == 'validate' && $user->rights->deplacement->creer) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -89,8 +88,7 @@ elseif ($action == 'classifyrefunded' && $user->rights->deplacement->creer) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -104,8 +102,7 @@ elseif ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->depla header("Location: index.php"); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -150,19 +147,16 @@ elseif ($action == 'add' && $user->rights->deplacement->creer) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $action = 'create'; } } - else - { + else { $action = 'create'; } } - else - { + else { header("Location: index.php"); exit; } @@ -190,13 +184,11 @@ elseif ($action == 'update' && $user->rights->deplacement->creer) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } @@ -413,8 +405,7 @@ elseif ($id) print ''; } - else - { + else { /* * Confirm delete trip */ @@ -493,8 +484,7 @@ elseif ($id) { $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1); } - else - { + else { $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0); } print ''; @@ -529,8 +519,7 @@ elseif ($id) { print ''.$langs->trans('Modify').''; } - else - { + else { print ''.$langs->trans('Modify').''; } } @@ -541,8 +530,7 @@ elseif ($id) { print ''.$langs->trans('Validate').''; } - else - { + else { print ''.$langs->trans('Validate').''; } } @@ -553,8 +541,7 @@ elseif ($id) { print ''.$langs->trans('ClassifyRefunded').''; } - else - { + else { print ''.$langs->trans('ClassifyRefunded').''; } } @@ -563,16 +550,14 @@ elseif ($id) { print ''.$langs->trans('Delete').''; } - else - { + else { print ''.$langs->trans('Delete').''; } print ''; } } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/compta/deplacement/class/deplacement.class.php b/htdocs/compta/deplacement/class/deplacement.class.php index ec4610179e2..8051d074db5 100644 --- a/htdocs/compta/deplacement/class/deplacement.class.php +++ b/htdocs/compta/deplacement/class/deplacement.class.php @@ -200,15 +200,13 @@ class Deplacement extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return $result; } } - else - { + else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; @@ -268,8 +266,7 @@ class Deplacement extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -313,8 +310,7 @@ class Deplacement extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -339,8 +335,7 @@ class Deplacement extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -461,8 +456,7 @@ class Deplacement extends CommonObject $i++; } } - else - { + else { dol_print_error($this->db); } @@ -508,8 +502,7 @@ class Deplacement extends CommonObject } $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/compta/deplacement/document.php b/htdocs/compta/deplacement/document.php index 2cef0b3e6cd..4ad2044c0f1 100644 --- a/htdocs/compta/deplacement/document.php +++ b/htdocs/compta/deplacement/document.php @@ -124,8 +124,7 @@ if ($object->id) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/compta/deplacement/index.php b/htdocs/compta/deplacement/index.php index 9d45bafd20f..9ed6e430c4c 100644 --- a/htdocs/compta/deplacement/index.php +++ b/htdocs/compta/deplacement/index.php @@ -193,8 +193,7 @@ if ($result) $i++; } } - else - { + else { print ''.$langs->trans("None").''; } print '
'; diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php index a4cc8f24019..1ebaeb5c6fa 100644 --- a/htdocs/compta/deplacement/list.php +++ b/htdocs/compta/deplacement/list.php @@ -197,8 +197,7 @@ if ($resql) print "\n"; $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/deplacement/stats/index.php b/htdocs/compta/deplacement/stats/index.php index cf745b784fc..91c6546a83c 100644 --- a/htdocs/compta/deplacement/stats/index.php +++ b/htdocs/compta/deplacement/stats/index.php @@ -168,8 +168,7 @@ if (!$user->rights->societe->client->voir || $user->socid) if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$user->id.'-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$user->id.'-'.$year.'.png'; } -else -{ +else { $filename_avg = $dir.'/ordersaverage-'.$year.'.png'; if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$year.'.png'; diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index cad443940f4..8256aeacc5a 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -239,8 +239,7 @@ if (empty($reshook)) $action = "create"; } } - else - { + else { $error++; setEventMessages($object->error, $object->errors, 'errors'); $action = "create"; @@ -253,8 +252,7 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF'].'?facid='.$object->id); exit; } - else - { + else { $db->rollback(); $error++; @@ -357,8 +355,7 @@ if (empty($reshook)) { $db->commit(); } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } @@ -381,8 +378,7 @@ if (empty($reshook)) { $db->commit(); } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } @@ -419,14 +415,12 @@ if (empty($reshook)) $db->commit(); $object->fetch($object->id); // Reload lines } - else - { + else { $db->rollback(); setEventMessages($db->lasterror(), null, 'errors'); } } - else - { + else { $db->rollback(); setEventMessages($line->error, $line->errors, 'errors'); } @@ -467,8 +461,7 @@ if (empty($reshook)) $idprod = 0; $tva_tx = (GETPOST('tva_tx', 'alpha') ? GETPOST('tva_tx', 'alpha') : 0); } - else - { + else { $idprod = GETPOST('idprod', 'int'); $tva_tx = ''; } @@ -579,8 +572,7 @@ if (empty($reshook)) { $pu_ht = price2num($pu_ttc / (1 + ($tmpvat / 100)), 'MU'); } - else - { + else { $pu_ttc = price2num($pu_ht * (1 + ($tmpvat / 100)), 'MU'); } } @@ -604,8 +596,7 @@ if (empty($reshook)) $desc = (!empty($prod->multilangs [$outputlangs->defaultlang] ["description"])) ? $prod->multilangs [$outputlangs->defaultlang] ["description"] : $prod->description; } - else - { + else { $desc = $prod->description; } @@ -641,8 +632,7 @@ if (empty($reshook)) $type = $prod->type; $fk_unit = $prod->fk_unit; } - else - { + else { $pu_ht = price2num($price_ht, 'MU'); $pu_ttc = price2num(GETPOST('price_ttc'), 'MU'); $tva_npr = (preg_match('/\*/', $tva_tx) ? 1 : 0); @@ -673,8 +663,7 @@ if (empty($reshook)) $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)); setEventMessages($mesg, null, 'errors'); } - else - { + else { // Insert line $result = $object->addline($desc, $pu_ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idprod, $remise_percent, $price_base_type, $info_bits, '', $pu_ttc, $type, - 1, $special_code, $label, $fk_unit, 0, $date_start_fill, $date_end_fill, $fournprice, $buyingprice); @@ -739,8 +728,7 @@ if (empty($reshook)) unset($_POST['situations']); unset($_POST['progress']); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } @@ -948,8 +936,7 @@ if (empty($reshook)) unset($_POST['situations']); unset($_POST['progress']); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -1145,8 +1132,7 @@ if ($action == 'create') print $form->selectarray('generate_pdf', $select, GETPOST('generate_pdf')); print ""; } - else - { + else { print ''; } @@ -1199,13 +1185,11 @@ if ($action == 'create') print ''; print "\n"; } - else - { + else { dol_print_error('', "Error, no invoice ".$object->id); } } -else -{ +else { /* * View mode */ @@ -1329,8 +1313,7 @@ else { $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->cond_reglement_id, 'cond_reglement_id'); } - else - { + else { $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->cond_reglement_id, 'none'); } } else { @@ -1351,8 +1334,7 @@ else { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT', 1, 1); } - else - { + else { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'none'); } print ''; @@ -1460,8 +1442,7 @@ else { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1); } - else - { + else { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none'); } print ""; @@ -1487,8 +1468,7 @@ else $select = 'select;'.implode(',', $list); print $form->editfieldval($langs->trans("Model"), 'modelpdf', $object->modelpdf, $object, $user->rights->facture->creer, $select); } - else - { + else { print $object->modelpdf; } print ""; @@ -1537,14 +1517,12 @@ else print ''; print ''; } - else - { + else { if ($object->frequency > 0) { print $langs->trans('FrequencyPer_'.$object->unit_frequency, $object->frequency); } - else - { + else { print $langs->trans("NotARecurringInvoiceTemplate"); } } @@ -1556,8 +1534,7 @@ else { print $form->editfieldkey($langs->trans("NextDateToExecution"), 'date_when', $object->date_when, $object, $user->rights->facture->creer, 'day'); } - else - { + else { print $langs->trans("NextDateToExecution"); } print ''; @@ -1570,8 +1547,7 @@ else { if (!$object->suspended && $action != 'editdate_when' && $object->frequency > 0 && $object->date_when && $object->date_when < $now) print img_warning($langs->trans("Late")); } - else - { + else { print img_info($langs->trans("MaxNumberOfGenerationReached")); } print ''; @@ -1583,8 +1559,7 @@ else { print $form->editfieldkey($langs->trans("MaxPeriodNumber"), 'nb_gen_max', $object->nb_gen_max, $object, $user->rights->facture->creer); } - else - { + else { print $langs->trans("MaxPeriodNumber"); } print ''; @@ -1592,8 +1567,7 @@ else { print $form->editfieldval($langs->trans("MaxPeriodNumber"), 'nb_gen_max', $object->nb_gen_max ? $object->nb_gen_max : '', $object, $user->rights->facture->creer); } - else - { + else { print ''; } print ''; @@ -1603,8 +1577,7 @@ else print ''; if ($action == 'auto_validate' || $object->frequency > 0) print $form->editfieldkey($langs->trans("StatusOfGeneratedInvoices"), 'auto_validate', $object->auto_validate, $object, $user->rights->facture->creer); - else - print $langs->trans("StatusOfGeneratedInvoices"); + else print $langs->trans("StatusOfGeneratedInvoices"); print ''; $select = 'select;0:'.$langs->trans('BillStatusDraft').',1:'.$langs->trans('BillStatusValidated'); if ($action == 'auto_validate' || $object->frequency > 0) @@ -1619,8 +1592,7 @@ else print ''; if ($action == 'generate_pdf' || $object->frequency > 0) print $form->editfieldkey($langs->trans("StatusOfGeneratedDocuments"), 'generate_pdf', $object->generate_pdf, $object, $user->rights->facture->creer); - else - print $langs->trans("StatusOfGeneratedDocuments"); + else print $langs->trans("StatusOfGeneratedDocuments"); print ''; print ''; $select = 'select;0:'.$langs->trans('DoNotGenerateDoc').',1:'.$langs->trans('AutogenerateDoc'); @@ -1631,8 +1603,7 @@ else print ''; print ''; } - else - { + else { print ''; } @@ -1734,20 +1705,17 @@ else { print ''; } - else - { + else { if (empty($object->frequency) || $object->date_when <= $today) { print ''; } - else - { + else { print ''; } } } - else - { + else { print ''; } } @@ -1758,8 +1726,7 @@ else { print ''; } - else - { + else { print ''; } } diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index ab2262844bf..68b1a6e91df 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -619,8 +619,7 @@ if (empty($reshook)) } } } - else - { + else { //var_dump($conf->global->SOCIETE_EMAIL_MANDATORY); if ($key == 'EMAIL') { @@ -696,8 +695,7 @@ if (empty($reshook)) if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { if (count($object->errors)) setEventMessages(null, $object->errors, 'errors'); else setEventMessages($object->error, $object->errors, 'errors'); } @@ -972,8 +970,7 @@ if (empty($reshook)) { $db->commit(); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } @@ -981,8 +978,7 @@ if (empty($reshook)) $db->commit(); } } - else - { + else { setEventMessages($discount->error, $discount->errors, 'errors'); $db->rollback(); } @@ -1176,8 +1172,7 @@ if (empty($reshook)) $searchPreviousInvoice = false; // find, exit; break; } - else - { + else { $lineIndex--; // go to previous invoice in cycle } } @@ -1470,8 +1465,7 @@ if (empty($reshook)) $amountdeposit[$tva] += $am / (1 + $tva / 100); // Convert into HT for the addline } } - else - { + else { if ($typeamount == 'amount') { $amountdeposit[0] = $valuedeposit; @@ -1725,8 +1719,7 @@ if (empty($reshook)) $error++; } } - else - { // If some invoice's lines coming from page + else { // If some invoice's lines coming from page $id = $object->create($user); for ($i = 1; $i <= $NBLINES; $i++) { @@ -1853,8 +1846,7 @@ if (empty($reshook)) { $mesg = $object->error; } - else - { + else { $nextSituationInvoice = new Facture($db); $nextSituationInvoice->fetch($id); @@ -1895,8 +1887,7 @@ if (empty($reshook)) header('Location: '.$_SERVER["PHP_SELF"].'?facid='.$id); exit(); } - else - { + else { $db->rollback(); $action = 'create'; $_GET["origin"] = $_POST["origin"]; @@ -1922,8 +1913,7 @@ if (empty($reshook)) $idprod = 0; $tva_tx = (GETPOST('tva_tx', 'alpha') ? GETPOST('tva_tx', 'alpha') : 0); } - else - { + else { $idprod = GETPOST('idprod', 'int'); $tva_tx = ''; } @@ -1971,8 +1961,7 @@ if (empty($reshook)) } $error++; } - else - { + else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors'); $error++; } @@ -1999,8 +1988,7 @@ if (empty($reshook)) if ($res = $prodcomb->fetchByProductCombination2ValuePairs($idprod, $combinations)) { $idprod = $res->fk_product_child; } - else - { + else { setEventMessages($langs->trans('ErrorProductCombinationNotFound'), null, 'errors'); $error++; } @@ -2065,8 +2053,7 @@ if (empty($reshook)) { $pu_ht = price2num($pu_ttc / (1 + ($tmpvat / 100)), 'MU'); } - else - { + else { $pu_ttc = price2num($pu_ht * (1 + ($tmpvat / 100)), 'MU'); } } @@ -2357,8 +2344,7 @@ if (empty($reshook)) } $error++; } - else - { + else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors'); $error++; } @@ -2458,8 +2444,7 @@ if (empty($reshook)) $mesg = $langs->trans("Line").' '.$i.' : '.$langs->trans("CantBeLessThanMinPercent"); setEventMessages($mesg, null, 'warnings'); $result = -1; - } else - $object->update_percent($line, $_POST['all_progress']); + } else $object->update_percent($line, $_POST['all_progress']); } } } @@ -2540,8 +2525,7 @@ if (empty($reshook)) $searchPreviousInvoice = false; // find, exit; break; } - else - { + else { $lineIndex--; // go to previous invoice in cycle } } @@ -2569,18 +2553,15 @@ if (empty($reshook)) setEventMessages($langs->trans('Updated'), '', 'mesgs'); header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); } - else - { + else { setEventMessages($langs->trans('ErrorOutingSituationInvoiceCreditNote'), array(), 'errors'); } } - else - { + else { setEventMessages($langs->trans('ErrorOutingSituationInvoiceOnUpdate'), array(), 'errors'); } } - else - { + else { setEventMessages($langs->trans('ErrorFindNextSituationInvoice'), array(), 'errors'); } } @@ -2875,8 +2856,7 @@ if ($action == 'create') $expesrc->fetch_optionals(); $object->array_options = $expesrc->array_options; } - else - { + else { $cond_reglement_id = (!empty($objectsrc->cond_reglement_id) ? $objectsrc->cond_reglement_id : (!empty($soc->cond_reglement_id) ? $soc->cond_reglement_id : 0)); $mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0)); $fk_account = (!empty($objectsrc->fk_account) ? $objectsrc->fk_account : (!empty($soc->fk_account) ? $soc->fk_account : 0)); @@ -2895,8 +2875,7 @@ if ($action == 'create') } } } - else - { + else { $cond_reglement_id = $soc->cond_reglement_id; $mode_reglement_id = $soc->mode_reglement_id; $fk_account = $soc->fk_account; @@ -2979,8 +2958,7 @@ if ($action == 'create') print ''; print ''."\n"; } - else - { + else { print ''.$langs->trans('Customer').''; print ''; print $form->select_company($soc->id, 'socid', '((s.client = 1 OR s.client = 3) AND s.status=1)', 'SelectThirdParty', 0, 0, null, 0, 'minwidth300'); @@ -3204,8 +3182,7 @@ if ($action == 'create') print ''; } } - else - { + else { if (!empty($conf->global->INVOICE_USE_SITUATION)) { print '
'; @@ -3311,8 +3288,7 @@ if ($action == 'create') print '
'; } } - else - { + else { print '
'; if (empty($conf->global->INVOICE_CREDIT_NOTE_STANDALONE)) $tmp = ' '; else $tmp = ' '; @@ -3790,8 +3766,7 @@ elseif ($id > 0 || !empty($ref)) ); $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id, $langs->trans('DeleteBill'), $text, 'confirm_delete', $formquestion, "yes", 1); } - else - { + else { $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id, $langs->trans('DeleteBill'), $text, 'confirm_delete', '', 'no', 1); } } else { @@ -4128,8 +4103,7 @@ elseif ($id > 0 || !empty($ref)) foreach ($facidavoir as $id) { if ($i == 0) print ' '; - else - print ','; + else print ','; $facavoir = new Facture($db); $facavoir->fetch($id); print $facavoir->getNomUrl(1); @@ -4274,8 +4248,7 @@ elseif ($id > 0 || !empty($ref)) { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT', 1, 1); } - else - { + else { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'none', 'CRDT'); } print ''; @@ -4339,8 +4312,7 @@ elseif ($id > 0 || !empty($ref)) { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1); } - else - { + else { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none'); } print ""; @@ -4362,8 +4334,7 @@ elseif ($id > 0 || !empty($ref)) { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); } - else - { + else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?id='.$object->id); } print ''; @@ -4377,7 +4348,7 @@ elseif ($id > 0 || !empty($ref)) $displayWarranty = false; } - if($displayWarranty) { + if ($displayWarranty) { // Retained Warranty print ''; print ''; @@ -4433,8 +4403,7 @@ elseif ($id > 0 || !empty($ref)) print ''; print ''; } - else - { + else { $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->retained_warranty_fk_cond_reglement, 'none'); if (!$displayWarranty) { print img_picto($langs->trans('RetainedWarrantyNeed100Percent'), 'warning.png', 'class="pictowarning valignmiddle" '); @@ -4468,8 +4437,7 @@ elseif ($id > 0 || !empty($ref)) print ''; print ''; } - else - { + else { print dol_print_date($object->retained_warranty_date_limit, 'day'); } print ''; @@ -4831,8 +4799,7 @@ elseif ($id > 0 || !empty($ref)) print ''; $resteapayeraffiche = $resteapayer; @@ -4928,8 +4895,7 @@ elseif ($id > 0 || !empty($ref)) { $retainedWarranty = $total_global_ttc * $object->retained_warranty / 100; } - else - { + else { // Because one day retained warranty could be used on standard invoices $retainedWarranty = $object->total_ttc * $object->retained_warranty / 100; } @@ -5119,8 +5085,7 @@ elseif ($id > 0 || !empty($ref)) } } } - else - { + else { print ''.$langs->trans('Modify').''; } } @@ -5159,8 +5124,7 @@ elseif ($id > 0 || !empty($ref)) } else { if ($usercansend) { print ''.$langs->trans('SendMail').''; - } else - print ''.$langs->trans('SendMail').''; + } else print ''.$langs->trans('SendMail').''; } } } @@ -5179,13 +5143,11 @@ elseif ($id > 0 || !empty($ref)) print ''.$langs->trans('MakeWithdrawRequest').''; } } - else - { + else { //print ''.$langs->trans("MakeWithdrawRequest").''; } } - else - { + else { //print ''.$langs->trans("MakeWithdrawRequest").''; } } @@ -5220,8 +5182,7 @@ elseif ($id > 0 || !empty($ref)) { print ''.$langs->trans('DoPaymentBack').''; } - else - { + else { print ''.$langs->trans('DoPaymentBack').''; } } @@ -5261,16 +5222,14 @@ elseif ($id > 0 || !empty($ref)) // If one payment or one credit note was linked to this invoice print ''.$langs->trans('ClassifyPaidPartially').''; } - else - { + else { if (empty($conf->global->INVOICE_CAN_NEVER_BE_CANCELED)) { if ($objectidnext) { print ''.$langs->trans('ClassifyCanceled').''; } - else - { + else { print ''.$langs->trans('ClassifyCanceled').''; } } @@ -5333,8 +5292,7 @@ elseif ($id > 0 || !empty($ref)) { print ''.$langs->trans("RemoveSituationFromCycle").''; } - else - { + else { print ''.$langs->trans("RemoveSituationFromCycle").''; } } @@ -5375,8 +5333,7 @@ elseif ($id > 0 || !empty($ref)) { print ''.$langs->trans('Delete').''; } - else - { + else { print ''.$langs->trans('Delete').''; } } else { diff --git a/htdocs/compta/facture/class/api_invoices.class.php b/htdocs/compta/facture/class/api_invoices.class.php index 85da9cd5c37..d56d1b5cfef 100644 --- a/htdocs/compta/facture/class/api_invoices.class.php +++ b/htdocs/compta/facture/class/api_invoices.class.php @@ -549,8 +549,7 @@ class Invoices extends DolibarrApi if ($updateRes > 0) { return $this->get($id); } - else - { + else { throw new RestException(405, $this->invoice->error); } } @@ -1125,8 +1124,7 @@ class Invoices extends DolibarrApi { $this->db->commit(); } - else - { + else { $this->db->rollback(); throw new RestException(500, 'Could not set paid'); } @@ -1134,8 +1132,7 @@ class Invoices extends DolibarrApi $this->db->commit(); } } - else - { + else { $this->db->rollback(); throw new RestException(500, 'Discount creation error'); } diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 71be89f30f5..904f59ea432 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -378,7 +378,7 @@ class FactureRec extends CommonInvoice } } } - else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) + else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) { $origin_id = $tmp_origin_id; $ret = $this->add_object_linked($origin, $origin_id); @@ -395,21 +395,18 @@ class FactureRec extends CommonInvoice { $this->db->rollback(); } - else - { + else { $this->db->commit(); return $this->id; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; } } - else - { + else { $this->db->rollback(); return -1; } @@ -461,8 +458,7 @@ class FactureRec extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; @@ -585,15 +581,13 @@ class FactureRec extends CommonInvoice } return 1; } - else - { + else { $this->error = 'Bill with id '.$rowid.' or ref '.$ref.' not found sql='.$sql; dol_syslog('Facture::Fetch Error '.$this->error, LOG_ERR); return -2; } } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -723,8 +717,7 @@ class FactureRec extends CommonInvoice $this->db->free($result); return 1; } - else - { + else { $this->error = $this->db->lasterror(); return -3; } @@ -767,14 +760,12 @@ class FactureRec extends CommonInvoice $res = $this->deleteExtraFields(); if ($res < 0) $error = -4; } - else - { + else { $this->error = $this->db->lasterror(); $error = -1; } } - else - { + else { $this->error = $this->db->lasterror(); $error = -2; } @@ -784,8 +775,7 @@ class FactureRec extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return $error; } @@ -861,8 +851,7 @@ class FactureRec extends CommonInvoice { $pu = $pu_ht; } - else - { + else { $pu = $pu_ttc; } @@ -970,8 +959,7 @@ class FactureRec extends CommonInvoice $this->update_price(); return $lineId; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -1046,8 +1034,7 @@ class FactureRec extends CommonInvoice { $pu = $pu_ht; } - else - { + else { $pu = $pu_ttc; } @@ -1132,8 +1119,7 @@ class FactureRec extends CommonInvoice $this->update_price(); return 1; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -1226,8 +1212,7 @@ class FactureRec extends CommonInvoice if ($num) $this->output .= $langs->trans("FoundXQualifiedRecurringInvoiceTemplate", $num)."\n"; - else - $this->output .= $langs->trans("NoQualifiedRecurringInvoiceTemplateFound"); + else $this->output .= $langs->trans("NoQualifiedRecurringInvoiceTemplateFound"); $saventity = $conf->entity; @@ -1289,8 +1274,7 @@ class FactureRec extends CommonInvoice } } } - else - { + else { $error++; $this->error = "Failed to load invoice template with id=".$line->rowid.", entity=".$conf->entity."\n"; $this->errors[] = "Failed to load invoice template with id=".$line->rowid.", entity=".$conf->entity; @@ -1304,8 +1288,7 @@ class FactureRec extends CommonInvoice $nb_create++; $this->output .= $langs->trans("InvoiceGeneratedFromTemplate", $facture->ref, $facturerec->ref)."\n"; } - else - { + else { $db->rollback("createRecurringInvoices Process invoice template id=".$facturerec->id.", ref=".$facturerec->ref); } @@ -1435,8 +1418,7 @@ class FactureRec extends CommonInvoice $labelStatus = $langs->trans('Active'); } } - else - { + else { if ($status == self::STATUS_SUSPENDED) { $labelStatus = $langs->trans('Disabled'); } @@ -1457,8 +1439,7 @@ class FactureRec extends CommonInvoice $labelStatus = $langs->trans('Active'); } } - else - { + else { if ($status == self::STATUS_SUSPENDED) { $labelStatus = $langs->trans('Disabled'); } @@ -1480,8 +1461,7 @@ class FactureRec extends CommonInvoice $labelStatus = $langs->trans('Active'); } } - else - { + else { if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); @@ -1506,8 +1486,7 @@ class FactureRec extends CommonInvoice $labelStatus = $langs->trans('Active'); } } - else - { + else { if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); @@ -1532,8 +1511,7 @@ class FactureRec extends CommonInvoice $labelStatus = $langs->trans('Active'); } } - else - { + else { if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); @@ -1559,8 +1537,7 @@ class FactureRec extends CommonInvoice $labelStatus = $langs->trans('Active'); } } - else - { + else { if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); @@ -1672,7 +1649,7 @@ class FactureRec extends CommonInvoice $line->total_tva = 9.8; $line->remise_percent = 50; } - else // (product line) + else // (product line) { $prodid = mt_rand(1, $num_prods); $line->fk_product = $prodids[$prodid]; @@ -1762,8 +1739,7 @@ class FactureRec extends CommonInvoice if (!empty($unit)) $this->unit_frequency = $unit; return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -1795,8 +1771,7 @@ class FactureRec extends CommonInvoice if ($increment_nb_gen_done > 0) $this->nb_gen_done++; return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -1828,8 +1803,7 @@ class FactureRec extends CommonInvoice $this->nb_gen_max = $nb; return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -1859,8 +1833,7 @@ class FactureRec extends CommonInvoice $this->auto_validate = $validate; return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -1890,8 +1863,7 @@ class FactureRec extends CommonInvoice $this->generate_pdf = $validate; return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -1921,8 +1893,7 @@ class FactureRec extends CommonInvoice $this->modelpdf = $model; return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -2068,8 +2039,7 @@ class FactureLigneRec extends CommonInvoiceLine $this->db->free($result); return 1; } - else - { + else { $this->error = $this->db->lasterror(); return -3; } @@ -2150,8 +2120,7 @@ class FactureLigneRec extends CommonInvoiceLine $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index fd6a6d32642..55adb5eb138 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -679,7 +679,7 @@ class Facture extends CommonInvoice } } } - else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) + else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) { $origin_id = $tmp_origin_id; $ret = $this->add_object_linked($origin, $origin_id); @@ -988,28 +988,24 @@ class Facture extends CommonInvoice $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -4; } } - else - { + else { $this->error = $langs->trans('FailedToUpdatePrice'); $this->db->rollback(); return -3; } } - else - { + else { dol_syslog(get_class($this)."::create error ".$this->error, LOG_ERR); $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -1241,8 +1237,7 @@ class Facture extends CommonInvoice $this->db->commit(); return $object->id; } - else - { + else { $this->db->rollback(); return -1; } @@ -1646,15 +1641,13 @@ class Facture extends CommonInvoice } return 1; } - else - { + else { $this->error = 'Invoice with id='.$rowid.' or ref='.$ref.' or ref_ext='.$ref_ext.' not found'; dol_syslog(get_class($this)."::fetch Error ".$this->error, LOG_ERR); return 0; } } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -1776,8 +1769,7 @@ class Facture extends CommonInvoice $this->db->free($result); return 1; } - else - { + else { $this->error = $this->db->error(); return -3; } @@ -1816,8 +1808,7 @@ class Facture extends CommonInvoice { $this->tab_previous_situation_invoice[] = $invoice; } - else - { + else { $this->tab_next_situation_invoice[] = $invoice; } } @@ -1934,8 +1925,7 @@ class Facture extends CommonInvoice $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -2022,22 +2012,19 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { $this->error = $facligne->error; $this->db->rollback(); return -1; } } - else - { + else { $this->error = $facligne->error; $this->db->rollback(); return -2; } } - else - { + else { $this->db->rollback(); return -3; } @@ -2063,8 +2050,7 @@ class Facture extends CommonInvoice $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture'; if (empty($ref_client)) $sql .= ' SET ref_client = NULL'; - else - $sql .= ' SET ref_client = \''.$this->db->escape($ref_client).'\''; + else $sql .= ' SET ref_client = \''.$this->db->escape($ref_client).'\''; $sql .= ' WHERE rowid = '.$this->id; dol_syslog(__METHOD__.' this->id='.$this->id.', ref_client='.$ref_client, LOG_DEBUG); @@ -2095,8 +2081,7 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2261,22 +2246,19 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->lasterror()." sql=".$sql; $this->db->rollback(); return -6; } } - else - { + else { $this->error = $this->db->lasterror()." sql=".$sql; $this->db->rollback(); return -4; } } - else - { + else { $this->db->rollback(); return -2; } @@ -2322,8 +2304,7 @@ class Facture extends CommonInvoice if ($result < 0) $error++; // End call triggers } - else - { + else { $error++; $this->error = $this->db->lasterror(); } @@ -2333,14 +2314,12 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { return 0; } } @@ -2377,8 +2356,7 @@ class Facture extends CommonInvoice if ($result < 0) $error++; // End call triggers } - else - { + else { $error++; $this->error = $this->db->error(); dol_print_error($this->db); @@ -2389,8 +2367,7 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -2446,15 +2423,13 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -2; @@ -2573,8 +2548,7 @@ class Facture extends CommonInvoice } $num = $this->getNextNumRef($this->thirdparty); } - else - { + else { $num = $this->ref; } $this->newref = dol_sanitizeFileName($num); @@ -2804,8 +2778,7 @@ class Facture extends CommonInvoice } } } - else - { + else { $error++; } @@ -2814,8 +2787,7 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -2943,14 +2915,12 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -3070,8 +3040,7 @@ class Facture extends CommonInvoice { $pu = $pu_ht; } - else - { + else { $pu = $pu_ttc; } @@ -3213,22 +3182,19 @@ class Facture extends CommonInvoice $this->db->commit(); return $this->line->id; } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->line->error; $this->db->rollback(); return -2; } } - else - { + else { dol_syslog(get_class($this)."::addline status of order must be Draft to allow use of ->addline()", LOG_ERR); return -3; } @@ -3444,15 +3410,13 @@ class Facture extends CommonInvoice $this->db->commit(); return $result; } - else - { + else { $this->error = $this->line->error; $this->db->rollback(); return -1; } } - else - { + else { $this->error = "Invoice statut makes operation forbidden"; return -2; } @@ -3573,15 +3537,13 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; } } - else - { + else { $this->db->rollback(); $this->error = $line->error; return -1; @@ -3640,8 +3602,7 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -3709,8 +3670,7 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -3869,8 +3829,7 @@ class Facture extends CommonInvoice } $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -3933,8 +3892,7 @@ class Facture extends CommonInvoice { $ga[$obj->fid] = $obj->ref.' ('.$obj->name.')'; } - else - { + else { $ga[$i]['id'] = $obj->fid; $ga[$i]['ref'] = $obj->ref; $ga[$i]['name'] = $obj->name; @@ -3944,8 +3902,7 @@ class Facture extends CommonInvoice } return $ga; } - else - { + else { dol_print_error($this->db); return -1; } @@ -3994,8 +3951,7 @@ class Facture extends CommonInvoice //print_r($return); return $return; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -4042,8 +3998,7 @@ class Facture extends CommonInvoice $sqlSit .= " ORDER BY fs.situation_counter"; $sql .= " AND ( f.type != ".self::TYPE_SITUATION." OR f.rowid IN (".$sqlSit.") )"; // Type non 5 si facture non avoir } - else - { + else { $sql .= " AND f.type != ".self::TYPE_SITUATION; // Type non 5 si facture non avoir } @@ -4069,8 +4024,7 @@ class Facture extends CommonInvoice return $return; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -4147,8 +4101,7 @@ class Facture extends CommonInvoice $error++; } } - else - { + else { $this->error = 'WithdrawRequestErrorNilAmount'; dol_syslog(get_class($this).'::demandeprelevement WithdrawRequestErrorNilAmount'); $error++; @@ -4167,22 +4120,19 @@ class Facture extends CommonInvoice if ($error) return -1; return 1; } - else - { + else { $this->error = "A request already exists"; dol_syslog(get_class($this).'::demandeprelevement Impossible de creer une demande, demande deja en cours'); return 0; } } - else - { + else { $this->error = $this->db->error(); dol_syslog(get_class($this).'::demandeprelevement Erreur -2'); return -2; } } - else - { + else { $this->error = "Status of invoice does not allow this"; dol_syslog(get_class($this)."::demandeprelevement ".$this->error." $this->statut, $this->paye, $this->mode_reglement_id"); return -3; @@ -4207,8 +4157,7 @@ class Facture extends CommonInvoice { return 0; } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::demande_prelevement_delete Error '.$this->error); return -1; @@ -4274,8 +4223,7 @@ class Facture extends CommonInvoice return $response; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -4419,7 +4367,7 @@ class Facture extends CommonInvoice $line->multicurrency_total_tva = 19.6; $line->remise_percent = 50; } - else // (product line) + else // (product line) { $prodid = mt_rand(1, $num_prods); $line->fk_product = $prodids[$prodid]; @@ -4506,8 +4454,7 @@ class Facture extends CommonInvoice $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -4669,8 +4616,7 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -4760,8 +4706,7 @@ class Facture extends CommonInvoice { $hasDelay = 1; } - else - { + else { $hasDelay = 0; } } @@ -4852,8 +4797,7 @@ class Facture extends CommonInvoice return -1; } } - else - { + else { // Because one day retained warranty could be used on standard invoices $retainedWarrantyAmount = $this->total_ttc * $this->retained_warranty / 100; } @@ -4890,15 +4834,13 @@ class Facture extends CommonInvoice $this->retained_warranty = floatval($value); return 1; } - else - { + else { dol_syslog(get_class($this).'::setRetainedWarranty Erreur '.$sql.' - '.$this->db->error()); $this->error = $this->db->error(); return -1; } } - else - { + else { dol_syslog(get_class($this).'::setRetainedWarranty, status of the object is incompatible'); $this->error = 'Status of the object is incompatible '.$this->statut; return -2; @@ -4933,15 +4875,13 @@ class Facture extends CommonInvoice $this->retained_warranty_date_limit = $timestamp; return 1; } - else - { + else { dol_syslog(get_class($this).'::setRetainedWarrantyDateLimit Erreur '.$sql.' - '.$this->db->error()); $this->error = $this->db->error(); return -1; } } - else - { + else { dol_syslog(get_class($this).'::setRetainedWarrantyDateLimit, status of the object is incompatible'); $this->error = 'Status of the object is incompatible '.$this->statut; return -2; @@ -5123,8 +5063,7 @@ class FactureLigne extends CommonInvoiceLine return 1; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -5178,8 +5117,7 @@ class FactureLigne extends CommonInvoiceLine { return $result; } - else - { + else { $this->pa_ht = $result; } } @@ -5296,8 +5234,7 @@ class FactureLigne extends CommonInvoiceLine return -3; } } - else - { + else { $result = $discount->link_to_invoice($this->rowid, 0); if ($result < 0) { @@ -5308,16 +5245,14 @@ class FactureLigne extends CommonInvoiceLine } } } - else - { + else { $this->error = $langs->trans("ErrorADiscountThatHasBeenRemovedIsIncluded"); dol_syslog(get_class($this)."::insert Error ".$this->error, LOG_ERR); $this->db->rollback(); return -3; } } - else - { + else { $this->error = $discount->error; dol_syslog(get_class($this)."::insert Error ".$this->error, LOG_ERR); $this->db->rollback(); @@ -5340,8 +5275,7 @@ class FactureLigne extends CommonInvoiceLine $this->db->commit(); return $this->id; } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; @@ -5395,8 +5329,7 @@ class FactureLigne extends CommonInvoiceLine { return $result; } - else - { + else { $this->pa_ht = $result; } } @@ -5475,8 +5408,7 @@ class FactureLigne extends CommonInvoiceLine $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -2; @@ -5519,8 +5451,7 @@ class FactureLigne extends CommonInvoiceLine $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; @@ -5561,8 +5492,7 @@ class FactureLigne extends CommonInvoiceLine $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -2; diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php index 427daf445c5..1fddf20b023 100644 --- a/htdocs/compta/facture/class/paymentterm.class.php +++ b/htdocs/compta/facture/class/paymentterm.class.php @@ -146,8 +146,7 @@ class PaymentTerm // extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return $this->id; } @@ -203,8 +202,7 @@ class PaymentTerm // extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -240,8 +238,7 @@ class PaymentTerm // extends CommonObject $this->db->free($resql); return $ret; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -306,8 +303,7 @@ class PaymentTerm // extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -346,8 +342,7 @@ class PaymentTerm // extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -397,8 +392,7 @@ class PaymentTerm // extends CommonObject $this->db->commit(); return $object->id; } - else - { + else { $this->db->rollback(); return -1; } diff --git a/htdocs/compta/facture/contact.php b/htdocs/compta/facture/contact.php index 8eb47268186..77ff0f813c3 100644 --- a/htdocs/compta/facture/contact.php +++ b/htdocs/compta/facture/contact.php @@ -70,15 +70,13 @@ if ($action == 'addcontact' && $user->rights->facture->creer) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -91,8 +89,7 @@ elseif ($action == 'swapstatut' && $user->rights->facture->creer) { $result = $object->swapContactStatus(GETPOST('ligne')); } - else - { + else { dol_print_error($db); } } @@ -208,8 +205,7 @@ if ($id > 0 || !empty($ref)) if ($res) break; } } - else - { + else { // Record not found print "ErrorRecordNotFound"; } diff --git a/htdocs/compta/facture/document.php b/htdocs/compta/facture/document.php index a901b985342..7e95b92cc3d 100644 --- a/htdocs/compta/facture/document.php +++ b/htdocs/compta/facture/document.php @@ -182,13 +182,11 @@ if ($id > 0 || !empty($ref)) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } - else - { + else { dol_print_error($db); } } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php index 65e9044f4f7..8275dbcf450 100644 --- a/htdocs/compta/facture/invoicetemplate_list.php +++ b/htdocs/compta/facture/invoicetemplate_list.php @@ -610,8 +610,7 @@ if ($resql) { if (!$objp->suspended && $objp->frequency > 0 && $db->jdate($objp->date_when) && $db->jdate($objp->date_when) < $now) print img_warning($langs->trans("Late")); } - else - { + else { print img_info($langs->trans("MaxNumberOfGenerationReached")); } print ''; @@ -660,13 +659,11 @@ if ($resql) print ''; print $langs->trans("CreateBill").''; } - else - { + else { print $form->textwithpicto('', $langs->trans("DateIsNotEnough")); } } - else - { + else { print " "; } if (!$i) $totalarray['nbfield']++; @@ -677,8 +674,7 @@ if ($resql) $i++; } } - else - { + else { $colspan = 1; foreach ($arrayfields as $key => $val) { if (!empty($val['checked'])) $colspan++; } print ''; @@ -694,8 +690,7 @@ if ($resql) $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 8b9e204f17e..7b3025db810 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -314,8 +314,7 @@ elseif ($massaction == 'withdrawrequest') $error++; setEventMessages($langs->trans("NotEnoughPermissions"), null, 'errors'); } - else - { + else { //Checking error $error = 0; @@ -387,8 +386,7 @@ elseif ($massaction == 'withdrawrequest') $db->commit(); $nbwithdrawrequestok++; } - else - { + else { $db->rollback(); setEventMessages($aBill->error, $aBill->errors, 'errors'); } @@ -516,8 +514,7 @@ if ($search_status != '-1' && $search_status != '') if ($search_status == '2') $sql .= " AND f.fk_statut = 2"; // payed Not that some corrupted data may contains f.fk_statut = 1 AND f.paye = 1 (it means payed too but should not happend. If yes, reopen and reclassify billed) if ($search_status == '3') $sql .= " AND f.fk_statut = 3"; // abandonned } - else - { + else { $sql .= " AND f.fk_statut IN (".$db->escape($search_status).")"; // When search_status is '1,2' for example } } @@ -564,8 +561,7 @@ if (!$sall) foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? ", ef.".$key : ''); } } -else -{ +else { $sql .= natural_search(array_keys($fieldstosearchall), $sall); } @@ -1220,8 +1216,7 @@ if ($resql) { print $obj->ref; } - else - { + else { print $facturestatic->getNomUrl(1, '', 200, 0, '', 0, 1); } @@ -1317,8 +1312,7 @@ if ($resql) { print $thirdpartystatic->name; } - else - { + else { print $thirdpartystatic->getNomUrl(1, 'customer'); } print ''; @@ -1620,8 +1614,7 @@ if ($resql) print $formfile->showdocuments('massfilesarea_invoices', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php index 74de1c640d4..109231a240d 100644 --- a/htdocs/compta/facture/prelevement.php +++ b/htdocs/compta/facture/prelevement.php @@ -87,8 +87,7 @@ if (empty($reshook)) setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } @@ -293,13 +292,11 @@ if ($object->id > 0) { $form->form_date($_SERVER['PHP_SELF'].'?id='.$object->id, $object->date, 'invoicedate'); } - else - { + else { print dol_print_date($object->date, 'daytext'); } } - else - { + else { print dol_print_date($object->date, 'daytext'); } print ''; @@ -319,13 +316,11 @@ if ($object->id > 0) { $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'cond_reglement_id'); } - else - { + else { $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'none'); } } - else - { + else { print ' '; } print ''; @@ -344,16 +339,14 @@ if ($object->id > 0) { $form->form_date($_SERVER['PHP_SELF'].'?id='.$object->id, $object->date_lim_reglement, 'paymentterm'); } - else - { + else { print dol_print_date($object->date_lim_reglement, 'daytext'); if ($object->hasDelay()) { print img_warning($langs->trans('Late')); } } } - else - { + else { print ' '; } print ''; @@ -370,8 +363,7 @@ if ($object->id > 0) { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->mode_reglement_id, 'mode_reglement_id'); } - else - { + else { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->mode_reglement_id, 'none'); } print ''; @@ -389,8 +381,7 @@ if ($object->id > 0) { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1); } - else - { + else { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none'); } print ""; @@ -503,8 +494,7 @@ if ($object->id > 0) $num = $db->num_rows($result_sql); $numopen = $num; } - else - { + else { dol_print_error($db); } @@ -521,8 +511,7 @@ if ($object->id > 0) $obj = $db->fetch_object($result_sql); if ($obj) $pending = $obj->amount; } - else - { + else { dol_print_error($db); } @@ -550,18 +539,15 @@ if ($object->id > 0) print ''; print ''; } - else - { + else { print ''.$langs->trans("MakeWithdrawRequest").''; } } - else - { + else { print ''.$langs->trans("MakeWithdrawRequest").''; } } - else - { + else { if ($num == 0) { if ($object->statut > Facture::STATUS_DRAFT) print ''.$langs->trans("MakeWithdrawRequest").''; @@ -635,8 +621,7 @@ if ($object->id > 0) $db->free($result_sql); } - else - { + else { dol_print_error($db); } @@ -697,8 +682,7 @@ if ($object->id > 0) $db->free($result); } - else - { + else { dol_print_error($db); } diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 284186b73ce..d0c7eacffc6 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facturestats.class.php'; -if(!empty($conf->category->enabled)) require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; +if (!empty($conf->category->enabled)) require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; $WIDTH = DolGraph::getDefaultGraphSizeForStats('width'); $HEIGHT = DolGraph::getDefaultGraphSizeForStats('height'); @@ -60,7 +60,7 @@ if ($user->socid > 0) $nowyear = strftime("%Y", dol_now()); $year = GETPOST('year') > 0 ?GETPOST('year') : $nowyear; -if(!empty($conf->global->INVOICE_STATS_GRAPHS_SHOW_2_YEARS)) $startyear=$year-2; +if (!empty($conf->global->INVOICE_STATS_GRAPHS_SHOW_2_YEARS)) $startyear=$year-2; else $startyear=$year-1; $endyear = $year; @@ -68,7 +68,7 @@ $endyear = $year; /* * View */ -if(!empty($conf->category->enabled)) $langs->load('categories'); +if (!empty($conf->category->enabled)) $langs->load('categories'); $form = new Form($db); $formcompany = new FormCompany($db); $formother = new FormOther($db); @@ -181,8 +181,7 @@ if (!$user->rights->societe->client->voir || $user->socid) if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$user->id.'-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$user->id.'-'.$year.'.png'; } -else -{ +else { $filename_avg = $dir.'/ordersaverage-'.$year.'.png'; if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$year.'.png'; diff --git a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php index a02a0fc1682..571a00d6b47 100644 --- a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php @@ -79,8 +79,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) $total = $total + $sign * $objectlink->total_ht; echo price($objectlink->total_ht); } - else - { + else { echo ''.price($objectlink->total_ht).''; } } diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index 00b4987ad66..2efe20a2fc5 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -215,15 +215,13 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) print ''; print ''; } - else - { + else { print ''; } print "
'; @@ -4398,8 +4369,7 @@ elseif ($id > 0 || !empty($ref)) print ''; print ''; } - else - { + else { print price($object->retained_warranty).'%'; } print '
'; if ($object->type != Facture::TYPE_DEPOSIT) print $langs->trans('AlreadyPaidNoCreditNotesNoDeposits'); - else - print $langs->trans('AlreadyPaid'); + else print $langs->trans('AlreadyPaid'); print ' :'.price($totalpaye).' 
'.$langs->trans("NoRecordFound").'
'.price($tot_ttc).'
'.$langs->trans("NoInvoice").'

"; $db->free($resql); } - else - { + else { dol_print_error($db); } } @@ -303,15 +301,13 @@ if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SU print ''.price($tot_ttc).''; print ''; } - else - { + else { print ''.$langs->trans("NoInvoice").''; } print "

"; $db->free($resql); } - else - { + else { dol_print_error($db); } } @@ -429,8 +425,7 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) $i++; } } - else - { + else { $colspan = 5; if (!empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) $colspan++; print ''.$langs->trans("NoInvoice").''; @@ -438,8 +433,7 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) print '
'; $db->free($resql); } - else - { + else { dol_print_error($db); } } @@ -530,16 +524,14 @@ if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SU $i++; } } - else - { + else { $colspan = 5; if (!empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) $colspan++; print ''.$langs->trans("NoInvoice").''; } print '
'; } - else - { + else { dol_print_error($db); } } @@ -609,8 +601,7 @@ if (!empty($conf->don->enabled) && $user->rights->don->lire) $i++; } } - else - { + else { print ''.$langs->trans("None").''; } print '
'; @@ -687,15 +678,13 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) print ' '; print ''; } - else - { + else { print ''.$langs->trans("None").''; } print "
"; $db->free($resql); } - else - { + else { dol_print_error($db); } } @@ -816,8 +805,7 @@ if (!empty($conf->facture->enabled) && !empty($conf->commande->enabled) && $user } $db->free($resql); } - else - { + else { dol_print_error($db); } } @@ -940,8 +928,7 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) print ' '; print ''; } - else - { + else { $colspan = 6; if (!empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) $colspan++; print ''.$langs->trans("NoInvoice").''; @@ -949,8 +936,7 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) print '
'; $db->free($resql); } - else - { + else { dol_print_error($db); } } @@ -1050,16 +1036,14 @@ if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SU print ' '; print ''; } - else - { + else { $colspan = 6; if (!empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) $colspan++; print ''.$langs->trans("NoInvoice").''; } print '
'; } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/compta/journal/purchasesjournal.php b/htdocs/compta/journal/purchasesjournal.php index 1459bbf2402..91d855d4454 100644 --- a/htdocs/compta/journal/purchasesjournal.php +++ b/htdocs/compta/journal/purchasesjournal.php @@ -91,7 +91,7 @@ $exportlink = ''; $builddate = dol_now(); $description = $langs->trans("DescPurchasesJournal").'
'; if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description .= $langs->trans("DepositsAreNotIncluded"); -else $description .= $langs->trans("DepositsAreIncluded"); +else $description .= $langs->trans("DepositsAreIncluded"); $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); report_header($name, '', $period, $periodlink, $description, $builddate, $exportlink); @@ -239,8 +239,7 @@ foreach ($tabfac as $key => $val) print ''.($mt < 0 ?price(-$mt) : '').""; print ''.($mt >= 0 ?price($mt) : '').""; } - else - { + else { print ''.($mt >= 0 ?price($mt) : '').""; print ''.($mt < 0 ?price(-$mt) : '').""; } diff --git a/htdocs/compta/journal/sellsjournal.php b/htdocs/compta/journal/sellsjournal.php index 98bd5e989f7..a7eb09de31a 100644 --- a/htdocs/compta/journal/sellsjournal.php +++ b/htdocs/compta/journal/sellsjournal.php @@ -93,7 +93,7 @@ $exportlink = ''; $builddate = dol_now(); $description = $langs->trans("DescSellsJournal").'
'; if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description .= $langs->trans("DepositsAreNotIncluded"); -else $description .= $langs->trans("DepositsAreIncluded"); +else $description .= $langs->trans("DepositsAreIncluded"); $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); report_header($name, '', $period, $periodlink, $description, $builddate, $exportlink); @@ -269,8 +269,7 @@ foreach ($tabfac as $key => $val) print ''.($mt >= 0 ?price($mt) : '').""; print ''.($mt < 0 ?price(-$mt) : '').""; } - else - { + else { print ''.($mt < 0 ?price(-$mt) : '').""; print ''.($mt >= 0 ?price($mt) : '').""; } diff --git a/htdocs/compta/localtax/card.php b/htdocs/compta/localtax/card.php index 51275c7159f..e5a20b5486b 100644 --- a/htdocs/compta/localtax/card.php +++ b/htdocs/compta/localtax/card.php @@ -81,8 +81,7 @@ if ($action == 'add' && $_POST["cancel"] <> $langs->trans("Cancel")) header("Location: list.php?localTaxType=".$lttype); exit; } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); $_GET["action"] = "create"; @@ -114,21 +113,18 @@ if ($action == 'delete') header("Location: ".DOL_URL_ROOT.'/compta/localtax/list.php?localTaxType='.$object->ltt); exit; } - else - { + else { $object->error = $accountline->error; $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { $mesg = 'Error try do delete a line linked to a conciliated bank transaction'; setEventMessages($mesg, null, 'errors'); } @@ -290,8 +286,7 @@ if ($id) { print ''.$langs->trans("Delete").''; } - else - { + else { print ''.$langs->trans("Delete").''; } print ""; diff --git a/htdocs/compta/localtax/class/localtax.class.php b/htdocs/compta/localtax/class/localtax.class.php index 6aa7c2b1a87..59adc220c8f 100644 --- a/htdocs/compta/localtax/class/localtax.class.php +++ b/htdocs/compta/localtax/class/localtax.class.php @@ -138,14 +138,12 @@ class Localtax extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = "Error ".$this->db->lasterror(); $this->db->rollback(); return -1; @@ -207,8 +205,7 @@ class Localtax extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -271,8 +268,7 @@ class Localtax extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -378,14 +374,12 @@ class Localtax extends CommonObject $this->db->free($result); return $ret; } - else - { + else { $this->db->free($result); return 0; } } - else - { + else { print $this->db->lasterror(); return -1; } @@ -419,14 +413,12 @@ class Localtax extends CommonObject $this->db->free($result); return $ret; } - else - { + else { $this->db->free($result); return 0; } } - else - { + else { print $this->db->lasterror(); return -1; } @@ -462,14 +454,12 @@ class Localtax extends CommonObject $this->db->free($result); return $ret; } - else - { + else { $this->db->free($result); return 0; } } - else - { + else { print $this->db->lasterror(); return -1; } @@ -548,8 +538,7 @@ class Localtax extends CommonObject { $this->update_fk_bank($bank_line_id); } - else - { + else { $this->error = $acc->error; $ok = 0; } @@ -568,21 +557,18 @@ class Localtax extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -3; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -605,8 +591,7 @@ class Localtax extends CommonObject if ($result) { return 1; } - else - { + else { dol_print_error($this->db); return -1; } diff --git a/htdocs/compta/localtax/clients.php b/htdocs/compta/localtax/clients.php index 61a11a042f2..12112766c24 100644 --- a/htdocs/compta/localtax/clients.php +++ b/htdocs/compta/localtax/clients.php @@ -54,16 +54,14 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if (empty($q)) { if (GETPOST("month")) { $date_start = dol_get_first_day($year_start, GETPOST("month"), false); $date_end = dol_get_last_day($year_start, GETPOST("month"), false); } - else - { + else { $date_start = dol_get_first_day($year_start, empty($conf->global->SOCIETE_FISCAL_MONTH_START) ? 1 : $conf->global->SOCIETE_FISCAL_MONTH_START, false); if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1; elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1; elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) $date_end = dol_time_plus_duree($date_start, 1, 'm') - 1; } } - else - { + else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -202,8 +200,7 @@ if ($calc == 0 || $calc == 2) { $intra = $langs->trans('Unknown'); } - else - { + else { $intra = ''; } } @@ -230,15 +227,13 @@ if ($calc == 0 || $calc == 2) print ''.price($total).''; print ''; } - else - { + else { $langs->load("errors"); if ($coll_list == -1) print ''.$langs->trans("ErrorNoAccountancyModuleLoaded").''; elseif ($coll_list == -2) print ''.$langs->trans("FeatureNotYetAvailable").''; - else - print ''.$langs->trans("Error").''; + else print ''.$langs->trans("Error").''; } } @@ -275,8 +270,7 @@ if ($calc == 0 || $calc == 1) { { $intra = $langs->trans('Unknown'); } - else - { + else { $intra = ''; } } @@ -305,15 +299,13 @@ if ($calc == 0 || $calc == 1) { print ''; } - else - { + else { $langs->load("errors"); if ($coll_list == -1) print ''.$langs->trans("ErrorNoAccountancyModuleLoaded").''; elseif ($coll_list == -2) print ''.$langs->trans("FeatureNotYetAvailable").''; - else - print ''.$langs->trans("Error").''; + else print ''.$langs->trans("Error").''; } } diff --git a/htdocs/compta/localtax/index.php b/htdocs/compta/localtax/index.php index a08ac99d6bd..b8a906ac818 100644 --- a/htdocs/compta/localtax/index.php +++ b/htdocs/compta/localtax/index.php @@ -53,14 +53,12 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if (empty($q)) { if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } - else - { + else { $date_start = dol_get_first_day($year_start, $conf->global->SOCIETE_FISCAL_MONTH_START, false); $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1; } } - else - { + else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -153,8 +151,7 @@ function pt($db, $sql, $date) $previousmode = ''; $previousmonth = ''; } - else - { + else { $previousmode = $obj->mode; $previousmonth = $obj->dm; } @@ -389,8 +386,7 @@ while ((($y < $yend) || ($y == $yend && $m <= $mend)) && $mcursor < 1000) // $mc //'link' =>$expensereport->getNomUrl(1) ); } - else - { + else { //$invoice_supplier->id=$x_paye[$my_paye_rate]['facid'][$id]; //$invoice_supplier->ref=$x_paye[$my_paye_rate]['facnum'][$id]; //$invoice_supplier->type=$x_paye[$my_paye_rate]['type'][$id]; diff --git a/htdocs/compta/localtax/list.php b/htdocs/compta/localtax/list.php index 47a0f44be47..58ec8cb090e 100644 --- a/htdocs/compta/localtax/list.php +++ b/htdocs/compta/localtax/list.php @@ -96,8 +96,7 @@ if ($result) print ""; $db->free($result); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php index 8e2e871251f..45d34f10cce 100644 --- a/htdocs/compta/localtax/quadri_detail.php +++ b/htdocs/compta/localtax/quadri_detail.php @@ -64,16 +64,14 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if (empty($q)) { if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } - else - { + else { $date_start = dol_get_first_day($year_start, empty($conf->global->SOCIETE_FISCAL_MONTH_START) ? 1 : $conf->global->SOCIETE_FISCAL_MONTH_START, false); if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1; elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1; elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) $date_end = dol_time_plus_duree($date_start, 1, 'm') - 1; } } - else - { + else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -222,11 +220,9 @@ if (!is_array($x_coll) || !is_array($x_paye)) print ''.$langs->trans("ErrorNoAccountancyModuleLoaded").''; elseif ($x_coll == -2) print ''.$langs->trans("FeatureNotYetAvailable").''; - else - print ''.$langs->trans("Error").''; + else print ''.$langs->trans("Error").''; } -else -{ +else { $x_both = array(); //now, from these two arrays, get another array with one rate per line @@ -373,8 +369,7 @@ else print $product_static->getNomUrl(1); if (dol_string_nohtmltag($fields['descr'])) print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']), 16); } - else - { + else { if ($type) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); if (preg_match('/^\((.*)\)$/', $fields['descr'], $reg)) @@ -533,8 +528,7 @@ else print $product_static->getNomUrl(1); if (dol_string_nohtmltag($fields['descr'])) print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']), 16); } - else - { + else { if ($type) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']), 16); @@ -573,8 +567,7 @@ else { print $langs->trans("NA"); } - else - { + else { print price(price2num($fields['payment_amount'], 'MT')); if (isset($fields['payment_amount'])) { print ' ('.round($ratiopaymentinvoice * 100, 2).'%)'; diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php index 4a7e387987c..5c0f258a091 100644 --- a/htdocs/compta/paiement.php +++ b/htdocs/compta/paiement.php @@ -313,8 +313,7 @@ if (empty($reshook)) header('Location: '.$loc); exit; } - else - { + else { $db->rollback(); } } @@ -504,8 +503,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie $form->select_comptes($accountid, 'accountid', 0, '', 2); print ''; } - else - { + else { print ' '; } print "\n"; @@ -561,8 +559,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie { $sql .= ' AND type IN (0,1,3,5)'; // Standard invoice, replacement, deposit, situation } - else - { + else { $sql .= ' AND type = 2'; // If paying back a credit note, we show all credit notes } // Sort invoices by date and serial number: the older one comes first @@ -666,8 +663,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print ''; } - else - { + else { print ''; } @@ -711,8 +707,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print ''; print ''; } - else - { + else { print ''; print ''; } @@ -747,8 +742,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print ''; print ''; } - else - { + else { print ''; print ''; } @@ -804,8 +798,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie } $db->free($resql); } - else - { + else { dol_print_error($db); } diff --git a/htdocs/compta/paiement/card.php b/htdocs/compta/paiement/card.php index e14581f6531..f67a2e2c12a 100644 --- a/htdocs/compta/paiement/card.php +++ b/htdocs/compta/paiement/card.php @@ -66,8 +66,7 @@ if ($action == 'setnote' && $user->rights->facture->paiement) $db->commit(); $action = ''; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } @@ -88,14 +87,12 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->facture-> header("Location: ".$backtopage); exit; } - else - { + else { header("Location: list.php"); exit; } } - else - { + else { $langs->load("errors"); setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); @@ -132,8 +129,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->facture-> header('Location: '.$_SERVER['PHP_SELF'].'?id='.$object->id); exit; } - else - { + else { $langs->load("errors"); setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); @@ -148,8 +144,7 @@ if ($action == 'setnum_paiement' && !empty($_POST['num_paiement'])) { setEventMessages($langs->trans('PaymentNumberUpdateSucceeded'), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans('PaymentNumberUpdateFailed'), null, 'errors'); } } @@ -163,8 +158,7 @@ if ($action == 'setdatep' && !empty($_POST['datepday'])) { setEventMessages($langs->trans('PaymentDateUpdateSucceeded'), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans('PaymentDateUpdateFailed'), null, 'errors'); } } @@ -414,8 +408,7 @@ if ($resql) $db->free($resql); } -else -{ +else { dol_print_error($db); } @@ -446,8 +439,7 @@ if ($user->socid == 0 && $action == '') { print ''.$langs->trans('Delete').''; } - else - { + else { print ''.$langs->trans('Delete').''; } } diff --git a/htdocs/compta/paiement/cheque/card.php b/htdocs/compta/paiement/cheque/card.php index eeb578ad731..44a160b35e0 100644 --- a/htdocs/compta/paiement/cheque/card.php +++ b/htdocs/compta/paiement/cheque/card.php @@ -80,8 +80,7 @@ if ($action == 'setdate' && $user->rights->banque->cheque) setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -99,8 +98,7 @@ if ($action == 'setrefext' && $user->rights->banque->cheque) setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -118,8 +116,7 @@ if ($action == 'setref' && $user->rights->banque->cheque) setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -150,13 +147,11 @@ if ($action == 'create' && $_POST["accountid"] > 0 && $user->rights->banque->che header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages($langs->trans("ErrorSelectAtLeastOne"), null, 'mesgs'); $action = 'new'; } @@ -171,8 +166,7 @@ if ($action == 'remove' && $id > 0 && $_GET["lineid"] > 0 && $user->rights->banq header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -186,8 +180,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->banque->c header("Location: index.php"); exit; } - else - { + else { setEventMessages($paiement->error, $paiement->errors, 'errors'); } } @@ -213,8 +206,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->banque->c header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -233,8 +225,7 @@ if ($action == 'confirm_reject_check' && $confirm == 'yes' && $user->rights->ban //exit; $action = ''; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } @@ -262,8 +253,7 @@ if ($action == 'builddoc' && $user->rights->banque->cheque) dol_print_error($db, $object->error); exit; } - else - { + else { header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id.(empty($conf->global->MAIN_JUMP_TAG) ? '' : '#builddoc')); exit; } @@ -315,8 +305,7 @@ if ($action == 'new') print load_fiche_titre($langs->trans("Cheques"), '', 'bank_account'); } -else -{ +else { $result = $object->fetch($id, $ref); if ($result < 0) { @@ -510,8 +499,7 @@ if ($action == 'new') { print $paymentstatic->getNomUrl(1); } - else - { + else { print ' '; } print ''; @@ -522,8 +510,7 @@ if ($action == 'new') { print $accountlinestatic->getNomUrl(1); } - else - { + else { print ' '; } print ''; @@ -544,16 +531,14 @@ if ($action == 'new') { print ''; } - else - { + else { print ''.$langs->trans('NewCheckDepositOn', $account_label).''; } print '
'; print ''; } } -else -{ +else { $paymentstatic = new Paiement($db); $accountlinestatic = new AccountLine($db); $accountstatic = new Account($db); @@ -588,8 +573,7 @@ else print ''; print ''; } - else - { + else { print $object->date_bordereau ? dol_print_date($object->date_bordereau, 'day') : ' '; } @@ -700,8 +684,7 @@ else { print $paymentstatic->getNomUrl(1); } - else - { + else { print ' '; } print ''; @@ -712,8 +695,7 @@ else { print $accountlinestatic->getNomUrl(1); } - else - { + else { print ' '; } print ''; @@ -737,8 +719,7 @@ else $i++; } } - else - { + else { print ''; print $langs->trans("None"); print ''; @@ -756,8 +737,7 @@ else print ""; } - else - { + else { dol_print_error($db); } diff --git a/htdocs/compta/paiement/cheque/class/remisecheque.class.php b/htdocs/compta/paiement/cheque/class/remisecheque.class.php index 746065647d5..9d252a7456e 100644 --- a/htdocs/compta/paiement/cheque/class/remisecheque.class.php +++ b/htdocs/compta/paiement/cheque/class/remisecheque.class.php @@ -121,8 +121,7 @@ class RemiseCheque extends CommonObject { $this->ref = "(PROV".$this->id.")"; } - else - { + else { $this->ref = $obj->ref; } } @@ -130,8 +129,7 @@ class RemiseCheque extends CommonObject return 1; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -228,8 +226,7 @@ class RemiseCheque extends CommonObject } $this->db->free($resql); } - else - { + else { $this->errno = -1026; dol_syslog("RemiseCheque::Create Error ".$this->errno, LOG_ERR); } @@ -270,8 +267,7 @@ class RemiseCheque extends CommonObject } } } - else - { + else { $this->errno = -1; $this->error = $this->db->lasterror(); $this->errno = $this->db->lasterrno(); @@ -289,8 +285,7 @@ class RemiseCheque extends CommonObject dol_syslog("RemiseCheque::Create end", LOG_DEBUG); return $this->id; } - else - { + else { $this->db->rollback(); dol_syslog("RemiseCheque::Create end", LOG_DEBUG); return $this->errno; @@ -342,8 +337,7 @@ class RemiseCheque extends CommonObject { $this->db->commit(); } - else - { + else { $this->db->rollback(); dol_syslog("RemiseCheque::Delete ROLLBACK ($this->errno)"); } @@ -386,14 +380,12 @@ class RemiseCheque extends CommonObject $this->ref = $numref; $this->statut = 1; } - else - { + else { $this->errno = -1029; dol_syslog("Remisecheque::Validate Error ".$this->errno, LOG_ERR); } } - else - { + else { $this->errno = -1033; dol_syslog("Remisecheque::Validate Error ".$this->errno, LOG_ERR); } @@ -405,8 +397,7 @@ class RemiseCheque extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); dol_syslog("RemiseCheque::Validate ".$this->errno, LOG_ERR); return $this->errno; @@ -489,8 +480,7 @@ class RemiseCheque extends CommonObject return $numref; } - else - { + else { $langs->load("errors"); print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Bank")); return ""; @@ -545,8 +535,7 @@ class RemiseCheque extends CommonObject return $response; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -585,8 +574,7 @@ class RemiseCheque extends CommonObject $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -665,16 +653,14 @@ class RemiseCheque extends CommonObject //$outputlangs->charset_output=$sav_charset_output; return 1; } - else - { + else { //$outputlangs->charset_output=$sav_charset_output; dol_syslog("Error"); dol_print_error($this->db, $docmodel->error); return 0; } } - else - { + else { $this->error = $langs->trans("ErrorFileDoesNotExists", $dir.$file); return -1; } @@ -721,8 +707,7 @@ class RemiseCheque extends CommonObject dol_syslog("RemiseCheque::updateAmount ERREUR UPDATE ($this->errno)"); } } - else - { + else { $this->errno = -1031; dol_syslog("RemiseCheque::updateAmount ERREUR SELECT ($this->errno)"); } @@ -731,8 +716,7 @@ class RemiseCheque extends CommonObject { $this->db->commit(); } - else - { + else { $this->db->rollback(); dol_syslog("RemiseCheque::updateAmount ROLLBACK ($this->errno)"); } @@ -762,8 +746,7 @@ class RemiseCheque extends CommonObject { $this->updateAmount(); } - else - { + else { $this->errno = -1032; dol_syslog("RemiseCheque::removeCheck ERREUR UPDATE ($this->errno)"); } @@ -839,30 +822,26 @@ class RemiseCheque extends CommonObject $this->db->commit(); return $rejectedPayment->id; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = $rejectedPayment->error; $this->errors = $rejectedPayment->errors; $this->db->rollback(); return -1; } } - else - { + else { $this->error = $rejectedPayment->error; $this->errors = $rejectedPayment->errors; $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -936,14 +915,12 @@ class RemiseCheque extends CommonObject $this->date_bordereau = $date; return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } } - else - { + else { return -2; } } @@ -971,14 +948,12 @@ class RemiseCheque extends CommonObject { return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } } - else - { + else { return -2; } } diff --git a/htdocs/compta/paiement/cheque/index.php b/htdocs/compta/paiement/cheque/index.php index c85553d59a8..7971a34db0d 100644 --- a/htdocs/compta/paiement/cheque/index.php +++ b/htdocs/compta/paiement/cheque/index.php @@ -77,8 +77,7 @@ if ($resql) { print ''; print "\n"; } -else -{ +else { dol_print_error($db); } @@ -141,8 +140,7 @@ if ($resql) $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index fe1f7c31050..cda8c2a679d 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -222,8 +222,7 @@ if ($resql) $i++; } } - else - { + else { print ''; print ''.$langs->trans("None").""; print ''; @@ -232,8 +231,7 @@ if ($resql) print ""; print "\n"; } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 9b0ee645fc7..99250bd9373 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -201,14 +201,12 @@ class Paiement extends CommonObject $this->db->free($resql); return 1; } - else - { + else { $this->db->free($resql); return 0; } } - else - { + else { dol_print_error($this->db); return -1; } @@ -243,8 +241,7 @@ class Paiement extends CommonObject $amounts = &$this->amounts; $amounts_to_update = &$this->multicurrency_amounts; } - else - { + else { $amounts = &$this->multicurrency_amounts; $amounts_to_update = &$this->amounts; } @@ -283,8 +280,7 @@ class Paiement extends CommonObject $total = $totalamount; $mtotal = $totalamount_converted; // Maybe use price2num with MT for the converted value } - else - { + else { $total = $totalamount_converted; // Maybe use price2num with MT for the converted value $mtotal = $totalamount; } @@ -340,8 +336,7 @@ class Paiement extends CommonObject if (!in_array($invoice->type, $affected_types)) dol_syslog("Invoice ".$facid." is not a standard, nor replacement invoice, nor credit note, nor deposit invoice, nor situation invoice. We do nothing more."); elseif ($remaintopay) dol_syslog("Remain to pay for invoice ".$facid." not null. We do nothing more."); //else if ($mustwait) dol_syslog("There is ".$mustwait." differed payment to process, we do nothing more."); - else - { + else { // If invoice is a down payment, we also convert down payment to discount if ($invoice->type == Facture::TYPE_DEPOSIT) { @@ -430,14 +425,12 @@ class Paiement extends CommonObject } } } - else - { + else { $this->error = $this->db->lasterror(); $error++; } } - else - { + else { dol_syslog(get_class($this).'::Create Amount line '.$key.' not a number. We discard it.'); } } @@ -450,8 +443,7 @@ class Paiement extends CommonObject // Fin appel triggers } } - else - { + else { $this->error = $this->db->lasterror(); $error++; } @@ -464,8 +456,7 @@ class Paiement extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -1; } @@ -502,8 +493,7 @@ class Paiement extends CommonObject return -1; } } - else - { + else { $this->db->rollback(); return -2; } @@ -568,8 +558,7 @@ class Paiement extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error; $this->db->rollback(); return -5; @@ -731,8 +720,7 @@ class Paiement extends CommonObject // Fin appel triggers } } - else - { + else { $this->error = $acc->error; $error++; } @@ -741,8 +729,7 @@ class Paiement extends CommonObject { $this->db->commit(); } - else - { + else { $this->db->rollback(); } } @@ -751,8 +738,7 @@ class Paiement extends CommonObject { return $bank_line_id; } - else - { + else { return -1; } } @@ -777,8 +763,7 @@ class Paiement extends CommonObject { return 1; } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::update_fk_bank '.$this->error); return -1; @@ -840,8 +825,7 @@ class Paiement extends CommonObject $this->db->commit(); return 0; } - else - { + else { $this->db->rollback(); return -2; } @@ -871,8 +855,7 @@ class Paiement extends CommonObject $this->num_payment = $this->db->escape($num); return 0; } - else - { + else { $this->error = 'Error -1 '.$this->db->error(); return -2; } @@ -896,8 +879,7 @@ class Paiement extends CommonObject { return 1; } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::valide '.$this->error); return -1; @@ -920,8 +902,7 @@ class Paiement extends CommonObject { return 1; } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::reject '.$this->error); return -1; @@ -966,8 +947,7 @@ class Paiement extends CommonObject } $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -1000,8 +980,7 @@ class Paiement extends CommonObject return $billsarray; } - else - { + else { $this->error = $this->db->error(); dol_syslog(get_class($this).'::getBillsArray Error '.$this->error.' -', LOG_DEBUG); return -1; @@ -1034,8 +1013,7 @@ class Paiement extends CommonObject return $amounts; } - else - { + else { $this->error = $this->db->error(); dol_syslog(get_class($this).'::getAmountsArray Error '.$this->error.' -', LOG_DEBUG); return -1; @@ -1119,8 +1097,7 @@ class Paiement extends CommonObject return $numref; } - else - { + else { $langs->load("errors"); print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Invoice")); return ""; diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index 20401d81a1a..dbdf4f4675e 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -130,8 +130,7 @@ if (GETPOST("orphelins", "alpha")) $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; } -else -{ +else { $sql = "SELECT DISTINCT p.rowid, p.ref, p.datep as dp, p.amount,"; // DISTINCT is to avoid duplicate when there is a link to sales representatives $sql .= " p.statut, p.num_paiement as num_payment,"; $sql .= " c.code as paiement_code,"; @@ -161,7 +160,7 @@ else if ($userid) { if ($userid == -1) $sql .= " AND f.fk_user_author IS NULL"; - else $sql .= " AND f.fk_user_author = ".$userid; + else $sql .= " AND f.fk_user_author = ".$userid; } // Search criteria $sql .= dolSqlDateFilter("p.datep", $day, $month, $year); @@ -379,8 +378,7 @@ if ($resql) print ""; print "\n"; } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/paiement/rapport.php b/htdocs/compta/paiement/rapport.php index 76a1ce72d76..66f239fdf96 100644 --- a/htdocs/compta/paiement/rapport.php +++ b/htdocs/compta/paiement/rapport.php @@ -71,8 +71,7 @@ if ($action == 'builddoc') { $outputlangs->charset_output = $sav_charset_output; } - else - { + else { $outputlangs->charset_output = $sav_charset_output; dol_print_error($db, $obj->error); } diff --git a/htdocs/compta/paiement/tovalidate.php b/htdocs/compta/paiement/tovalidate.php index 91ef2c215e6..b978fc8e218 100644 --- a/htdocs/compta/paiement/tovalidate.php +++ b/htdocs/compta/paiement/tovalidate.php @@ -127,8 +127,7 @@ if ($resql) { print ''.$langs->trans("PaymentStatusToValidShort").''; } - else - { + else { print "-"; } diff --git a/htdocs/compta/paiement_charge.php b/htdocs/compta/paiement_charge.php index 509e20f3613..d1b448c5932 100644 --- a/htdocs/compta/paiement_charge.php +++ b/htdocs/compta/paiement_charge.php @@ -142,8 +142,7 @@ if ($action == 'add_payment' || ($action == 'confirm_paiement' && $confirm == 'y header('Location: '.$loc); exit; } - else - { + else { $db->rollback(); } } @@ -284,8 +283,7 @@ if ($action == 'create') { print ''.dol_print_date($objp->date_ech, 'day').''."\n"; } - else - { + else { print "!!!\n"; } @@ -306,8 +304,7 @@ if ($action == 'create') print ''; print ''; } - else - { + else { print '-'; } print ""; diff --git a/htdocs/compta/payment_sc/card.php b/htdocs/compta/payment_sc/card.php index 5fdfe327056..69b425356d1 100644 --- a/htdocs/compta/payment_sc/card.php +++ b/htdocs/compta/payment_sc/card.php @@ -67,8 +67,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->tax->char header("Location: ".DOL_URL_ROOT."/compta/sociales/payments.php?mode=sconly"); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } @@ -284,8 +283,7 @@ if ($resql) print "\n"; $db->free($resql); } -else -{ +else { dol_print_error($db); } @@ -317,8 +315,7 @@ if ($action == '') { print ''.$langs->trans('Delete').''; } - else - { + else { print ''.$langs->trans('Delete').''; } } diff --git a/htdocs/compta/paymentbybanktransfer/index.php b/htdocs/compta/paymentbybanktransfer/index.php index fd87dd5e447..d2611e8a354 100644 --- a/htdocs/compta/paymentbybanktransfer/index.php +++ b/htdocs/compta/paymentbybanktransfer/index.php @@ -159,14 +159,12 @@ if ($resql) $i++; } } - else - { + else { print ''.$langs->trans("NoSupplierInvoiceToWithdraw", $langs->transnoentitiesnoconv("BankTransfer")).''; } print "
"; } -else -{ +else { dol_print_error($db); } @@ -221,8 +219,7 @@ if ($result) print "
"; $db->free($result); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/bons.php b/htdocs/compta/prelevement/bons.php index c7c717e702b..106f848f732 100644 --- a/htdocs/compta/prelevement/bons.php +++ b/htdocs/compta/prelevement/bons.php @@ -191,8 +191,7 @@ if ($result) $db->free($result); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php index d81e101be3d..d5051e06bfa 100644 --- a/htdocs/compta/prelevement/card.php +++ b/htdocs/compta/prelevement/card.php @@ -409,8 +409,7 @@ if ($id > 0 || $ref) { print ''.$langs->trans("StatusRefused").''; } - else - { + else { print " "; } @@ -443,8 +442,7 @@ if ($id > 0 || $ref) $db->free($result); } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 0c21a3e6d2b..91a165ee454 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -152,20 +152,17 @@ class BonPrelevement extends CommonObject { $result = 0; } - else - { + else { $result = -1; dol_syslog(get_class($this)."::AddFacture Erreur $result"); } } - else - { + else { $result = -2; dol_syslog(get_class($this)."::AddFacture Erreur $result"); } } - else - { + else { $result = -3; dol_syslog(get_class($this)."::AddFacture Erreur $result"); } @@ -209,13 +206,11 @@ class BonPrelevement extends CommonObject { $num = $this->db->num_rows($resql); } - else - { + else { $result = -1; } } - else - { + else { /* * No aggregate */ @@ -244,8 +239,7 @@ class BonPrelevement extends CommonObject $line_id = $this->db->last_insert_id(MAIN_DB_PREFIX."prelevement_lignes"); $result = 0; } - else - { + else { dol_syslog(get_class($this)."::addline Error -2"); $result = -2; } @@ -321,14 +315,12 @@ class BonPrelevement extends CommonObject return 1; } - else - { + else { dol_syslog(get_class($this)."::Fetch Erreur aucune ligne retournee"); return -1; } } - else - { + else { return -2; } } @@ -397,16 +389,14 @@ class BonPrelevement extends CommonObject $this->db->commit(); return 0; } - else - { + else { $this->db->rollback(); dol_syslog(get_class($this)."::set_credite ROLLBACK "); return -1; } } - else - { + else { dol_syslog(get_class($this)."::set_credite Ouverture transaction SQL impossible "); return -2; } @@ -491,8 +481,7 @@ class BonPrelevement extends CommonObject dol_syslog(get_class($this)."::set_infocredit AddPayment Error"); $error++; } - else - { + else { $result = $paiement->addPaymentToBank($user, 'payment', '(WithdrawalPayment)', $bankaccount, '', ''); if ($result < 0) { @@ -517,8 +506,7 @@ class BonPrelevement extends CommonObject $error++; } } - else - { + else { dol_syslog(get_class($this)."::set_infocredit Update Bons Error"); $error++; } @@ -534,27 +522,23 @@ class BonPrelevement extends CommonObject $this->db->commit(); return 0; } - else - { + else { $this->db->rollback(); dol_syslog("bon-prelevment::set_infocredit ROLLBACK "); return -1; } } - else - { + else { dol_syslog(get_class($this)."::set_infocredit 1025 Open SQL transaction impossible "); return -1025; } } - else - { + else { dol_syslog("bon-prelevment::set_infocredit 1027 Date de credit < Date de trans "); return -1027; } } - else - { + else { return -1026; } } @@ -597,8 +581,7 @@ class BonPrelevement extends CommonObject // TODO Call trigger to create a notification using notification module } - else - { + else { $error++; } @@ -610,16 +593,14 @@ class BonPrelevement extends CommonObject return 0; } - else - { + else { $this->db->rollback(); dol_syslog(get_class($this)."::set_infotrans ROLLBACK", LOG_ERR); return -1; } } - else - { + else { dol_syslog(get_class($this)."::set_infotrans Ouverture transaction SQL impossible", LOG_CRIT); return -2; } @@ -664,8 +645,7 @@ class BonPrelevement extends CommonObject { $row = $this->db->fetch_row($resql); if (!$amounts) $arr[$i] = $row[0]; - else - { + else { $arr[$i] = array( $row[0], $row[1] @@ -676,8 +656,7 @@ class BonPrelevement extends CommonObject } $this->db->free($resql); } - else - { + else { dol_syslog(get_class($this)."::getListInvoices Erreur"); } @@ -715,8 +694,7 @@ class BonPrelevement extends CommonObject return $obj->nb; } - else - { + else { $error = 1; dol_syslog(get_class($this)."::SommeAPrelever Erreur -1"); dol_syslog($this->db->error()); @@ -760,8 +738,7 @@ class BonPrelevement extends CommonObject return $obj->nb; } - else - { + else { $this->error = get_class($this)."::NbFactureAPrelever Erreur -1 sql=".$this->db->error(); return -1; } @@ -849,8 +826,7 @@ class BonPrelevement extends CommonObject $this->db->free($resql); dol_syslog(__METHOD__."::Read invoices, ".$i." invoices to withdraw", LOG_DEBUG); } - else - { + else { $error++; dol_syslog(__METHOD__."::Read invoices error ".$this->db->error(), LOG_ERR); } @@ -895,26 +871,22 @@ class BonPrelevement extends CommonObject $i++; //dol_syslog(__METHOD__."::RIB is ok", LOG_DEBUG); } - else - { + else { dol_syslog(__METHOD__."::Check RIB Error on default bank number IBAN/BIC for thirdparty reported by verif() ".$fact->socid." ".$soc->name, LOG_WARNING); $this->invoice_in_error[$fac[0]] = "Error on default bank number IBAN/BIC for invoice ".$fact->getNomUrl(0)." for thirdparty ".$soc->getNomUrl(0); $this->thirdparty_in_error[$soc->id] = "Error on default bank number IBAN/BIC for invoice ".$fact->getNomUrl(0)." for thirdparty ".$soc->getNomUrl(0); } } - else - { + else { dol_syslog(__METHOD__."::Check RIB Failed to read company", LOG_WARNING); } } - else - { + else { dol_syslog(__METHOD__."::Check RIB Failed to read invoice", LOG_WARNING); } } } - else - { + else { dol_syslog(__METHOD__."::Check RIB No invoice to process", LOG_WARNING); } } @@ -941,8 +913,7 @@ class BonPrelevement extends CommonObject { $ok = 1; } - else - { + else { print $langs->trans("ModeWarning"); //"Option for real mode was not set, we stop after this simulation\n"; } } @@ -1000,14 +971,12 @@ class BonPrelevement extends CommonObject $this->id = $prev_id; $this->ref = $ref; } - else - { + else { $error++; dol_syslog(__METHOD__."::Create withdraw receipt ".$this->db->lasterror(), LOG_ERR); } } - else - { + else { $error++; dol_syslog(__METHOD__."::Get last withdraw receipt ".$this->db->lasterror(), LOG_ERR); } @@ -1129,15 +1098,13 @@ class BonPrelevement extends CommonObject { $this->db->commit(); } - else - { + else { $this->db->rollback(); } return count($factures_prev); } - else - { + else { return 0; } } @@ -1198,8 +1165,7 @@ class BonPrelevement extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -1301,8 +1267,7 @@ class BonPrelevement extends CommonObject { return 0; } - else - { + else { return -1; } } @@ -1327,8 +1292,7 @@ class BonPrelevement extends CommonObject { return 0; } - else - { + else { return -1; } } @@ -1359,8 +1323,7 @@ class BonPrelevement extends CommonObject { $result = 0; } - else - { + else { $result = -1; dol_syslog(get_class($this)."::AddNotification Error $result"); } @@ -1464,8 +1427,7 @@ class BonPrelevement extends CommonObject } $nbtotalDrctDbtTxInf = $i; } - else - { + else { fputs($this->file, 'ERROR DEBITOR '.$sql.$CrLf); // DEBITOR = Customers $result = -2; } @@ -1475,8 +1437,7 @@ class BonPrelevement extends CommonObject { $fileEmetteurSection .= $this->EnregEmetteurSEPA($conf, $date_actu, $nbtotalDrctDbtTxInf, $this->total, $CrLf, $format); } - else - { + else { fputs($this->file, 'ERROR CREDITOR'.$CrLf); // CREDITOR = My company } @@ -1543,8 +1504,7 @@ class BonPrelevement extends CommonObject $i++; } } - else - { + else { $result = -2; } @@ -1915,8 +1875,7 @@ class BonPrelevement extends CommonObject $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; } - else - { + else { fputs($this->file, 'INCORRECT EMETTEUR '.$XML_SEPA_INFO.$CrLf); $result = -2; } diff --git a/htdocs/compta/prelevement/class/ligneprelevement.class.php b/htdocs/compta/prelevement/class/ligneprelevement.class.php index 88b612554df..accd64e2694 100644 --- a/htdocs/compta/prelevement/class/ligneprelevement.class.php +++ b/htdocs/compta/prelevement/class/ligneprelevement.class.php @@ -97,16 +97,14 @@ class LignePrelevement $this->bon_ref = $obj->ref; $this->bon_rowid = $obj->bon_rowid; } - else - { + else { $result++; dol_syslog("LignePrelevement::Fetch rowid=$rowid numrows=0"); } $this->db->free($resql); } - else - { + else { $result++; dol_syslog("LignePrelevement::Fetch rowid=$rowid"); dol_syslog($this->db->error()); diff --git a/htdocs/compta/prelevement/class/rejetprelevement.class.php b/htdocs/compta/prelevement/class/rejetprelevement.class.php index 8c033353637..1edd942fc42 100644 --- a/htdocs/compta/prelevement/class/rejetprelevement.class.php +++ b/htdocs/compta/prelevement/class/rejetprelevement.class.php @@ -161,8 +161,7 @@ class RejetPrelevement $error++; dol_syslog("RejetPrelevement::Create Error creation payment invoice ".$facs[$i][0]); } - else - { + else { $result = $pai->addPaymentToBank($user, 'payment', '(InvoiceRefused)', $bankaccount, '', ''); if ($result < 0) { @@ -192,8 +191,7 @@ class RejetPrelevement dol_syslog("RejetPrelevement::Create Commit"); $this->db->commit(); } - else - { + else { dol_syslog("RejetPrelevement::Create Rollback"); $this->db->rollback(); } @@ -228,8 +226,7 @@ class RejetPrelevement $userid = $row[0]; } } - else - { + else { dol_syslog("RejetPrelevement::_send_email Erreur lecture user"); } @@ -266,13 +263,11 @@ class RejetPrelevement { dol_syslog("RejetPrelevement::_send_email email envoye"); } - else - { + else { dol_syslog("RejetPrelevement::_send_email Erreur envoi email"); } } - else - { + else { dol_syslog("RejetPrelevement::_send_email Userid invalide"); } } @@ -310,8 +305,7 @@ class RejetPrelevement { $row = $this->db->fetch_row($resql); if (!$amounts) $arr[$i] = $row[0]; - else - { + else { $arr[$i] = array( $row[0], $row[1] @@ -322,8 +316,7 @@ class RejetPrelevement } $this->db->free($resql); } - else - { + else { dol_syslog("getListInvoices", LOG_ERR); } @@ -359,14 +352,12 @@ class RejetPrelevement return 0; } - else - { + else { dol_syslog("RejetPrelevement::Fetch Erreur rowid=$rowid numrows=0"); return -1; } } - else - { + else { dol_syslog("RejetPrelevement::Fetch Erreur rowid=$rowid"); return -2; } diff --git a/htdocs/compta/prelevement/create.php b/htdocs/compta/prelevement/create.php index 5306b6799b9..505ad070645 100644 --- a/htdocs/compta/prelevement/create.php +++ b/htdocs/compta/prelevement/create.php @@ -94,8 +94,7 @@ if (empty($reshook)) $mesg .= ''.$val."
\n"; } } - else - { + else { setEventMessages($langs->trans("DirectDebitOrderCreated", $bprev->getNomUrl(1)), null); } } @@ -175,21 +174,18 @@ if ($nb) { print ''.$langs->trans("CreateAll")."\n"; } } - else - { + else { if ($mysoc->isInEEC()) { print ''.$langs->trans("CreateForSepaFRST")."\n"; print ''.$langs->trans("CreateForSepaRCUR")."\n"; } - else - { + else { print ''.$langs->trans("CreateAll")."\n"; } } } -else -{ +else { print 'transnoentitiesnoconv("StandingOrders"))).'">'.$langs->trans("CreateAll")."\n"; } @@ -308,16 +304,14 @@ if ($resql) $i++; } } - else - { + else { print ''.$langs->trans("None").''; } print ""; print ""; print "
\n"; } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/demandes.php b/htdocs/compta/prelevement/demandes.php index 181f71a678c..64ac904db6c 100644 --- a/htdocs/compta/prelevement/demandes.php +++ b/htdocs/compta/prelevement/demandes.php @@ -89,8 +89,7 @@ if (!$status) { $title = $langs->trans("RequestStandingOrderToTreat"); } -else -{ +else { $title = $langs->trans("RequestStandingOrderTreated"); } @@ -143,8 +142,7 @@ if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) { $num = $nbtotalofrecords; } -else -{ +else { $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); diff --git a/htdocs/compta/prelevement/factures.php b/htdocs/compta/prelevement/factures.php index fb0a5548426..bb3cced3eb4 100644 --- a/htdocs/compta/prelevement/factures.php +++ b/htdocs/compta/prelevement/factures.php @@ -135,8 +135,7 @@ if ($prev_id > 0 || $ref) dol_fiche_end(); } - else - { + else { dol_print_error($db); } } @@ -290,8 +289,7 @@ if ($result) $db->free($result); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/fiche-rejet.php b/htdocs/compta/prelevement/fiche-rejet.php index 1cc454a3d4d..4bfc07b0292 100644 --- a/htdocs/compta/prelevement/fiche-rejet.php +++ b/htdocs/compta/prelevement/fiche-rejet.php @@ -136,8 +136,7 @@ if ($prev_id > 0 || $ref) dol_fiche_end(); } - else - { + else { dol_print_error($db); } } @@ -221,8 +220,7 @@ if ($resql) $i++; } } - else - { + else { print ''.$langs->trans("None").''; } @@ -239,8 +237,7 @@ if ($resql) $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/fiche-stat.php b/htdocs/compta/prelevement/fiche-stat.php index 18028e2059a..5dd01bad41d 100644 --- a/htdocs/compta/prelevement/fiche-stat.php +++ b/htdocs/compta/prelevement/fiche-stat.php @@ -133,8 +133,7 @@ if ($prev_id > 0 || $ref) dol_fiche_end(); } - else - { + else { $langs->load("errors"); print $langs->trans("Error"); } @@ -186,8 +185,7 @@ if ($prev_id > 0 || $ref) print ""; $db->free($resql); } - else - { + else { print $db->error().' '.$sql; } } diff --git a/htdocs/compta/prelevement/index.php b/htdocs/compta/prelevement/index.php index eb2932fd4cb..faa56184891 100644 --- a/htdocs/compta/prelevement/index.php +++ b/htdocs/compta/prelevement/index.php @@ -159,14 +159,12 @@ if ($resql) $i++; } } - else - { + else { print ''.$langs->trans("NoInvoiceToWithdraw", $langs->transnoentitiesnoconv("StandingOrders")).''; } print "
"; } -else -{ +else { dol_print_error($db); } @@ -221,8 +219,7 @@ if ($result) print "
"; $db->free($result); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/line.php b/htdocs/compta/prelevement/line.php index 9169f71a377..89d6ad93636 100644 --- a/htdocs/compta/prelevement/line.php +++ b/htdocs/compta/prelevement/line.php @@ -103,13 +103,11 @@ if ($action == 'confirm_rejet') exit; } } - else - { + else { $action = "rejet"; } } - else - { + else { header("Location: line.php?id=".$id); exit; } @@ -162,15 +160,13 @@ if ($id) /* Historique pour certaines install */ print $langs->trans("Unknown"); } - else - { + else { print dol_print_date($rej->date_rejet, 'day'); } print ''; print ''.$langs->trans("RefusedInvoicing").''.$rej->invoicing.''; } - else - { + else { print ''.$resf.''; } } @@ -178,8 +174,7 @@ if ($id) print ''; dol_fiche_end(); } - else - { + else { dol_print_error($db); } @@ -246,13 +241,11 @@ if ($id) { print "id\">".$langs->trans("StandingOrderReject").""; } - else - { + else { print "trans("NotAllowed")."\">".$langs->trans("StandingOrderReject").""; } } - else - { + else { print "trans("NotPossibleForThisStatusOfWithdrawReceiptORLine")."\">".$langs->trans("StandingOrderReject").""; } } @@ -330,8 +323,7 @@ if ($id) $db->free($result); } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/compta/prelevement/list.php b/htdocs/compta/prelevement/list.php index 48f9bcc7c54..b93042df8e6 100644 --- a/htdocs/compta/prelevement/list.php +++ b/htdocs/compta/prelevement/list.php @@ -236,8 +236,7 @@ if ($result) $db->free($result); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/rejets.php b/htdocs/compta/prelevement/rejets.php index 6d1994b7a4b..a7e7a6f3a53 100644 --- a/htdocs/compta/prelevement/rejets.php +++ b/htdocs/compta/prelevement/rejets.php @@ -118,8 +118,7 @@ if ($result) print ""; $db->free($result); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/stats.php b/htdocs/compta/prelevement/stats.php index c6d1962ff46..609c75e065d 100644 --- a/htdocs/compta/prelevement/stats.php +++ b/htdocs/compta/prelevement/stats.php @@ -126,8 +126,7 @@ if ($resql) print ""; $db->free(); } -else -{ +else { dol_print_error($db); } @@ -220,8 +219,7 @@ if ($resql) print ""; $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/recap-compta.php b/htdocs/compta/recap-compta.php index 3f2112537b1..83388f21e49 100644 --- a/htdocs/compta/recap-compta.php +++ b/htdocs/compta/recap-compta.php @@ -212,14 +212,12 @@ if ($id > 0) $db->free($resqlp); } - else - { + else { dol_print_error($db); } } } - else - { + else { dol_print_error($db); } @@ -289,8 +287,7 @@ if ($id > 0) print ""; } } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 27bc4526a3e..8d7c0343b30 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -151,7 +151,7 @@ if ($modecompta == "CREANCES-DETTES") $periodlink = ($year_start ? "".img_previous()." ".img_next()."" : ""); $description = $langs->trans("RulesResultDue"); if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description .= $langs->trans("DepositsAreNotIncluded"); - else $description .= $langs->trans("DepositsAreIncluded"); + else $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); } @@ -213,8 +213,7 @@ if ($modecompta == 'BOOKKEEPING') { print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], 'amount', '', $param, 'class="right"', $sortfield, $sortorder); } -else -{ +else { if ($modecompta == 'CREANCES-DETTES') { print_liste_field_titre("AmountHT", $_SERVER["PHP_SELF"], 'amount_ht', '', $param, 'class="right"', $sortfield, $sortorder); @@ -313,15 +312,13 @@ if ($modecompta == 'BOOKKEEPING') $i++; } } - else - { + else { print ''.$langs->trans("NoRecordFound").''; } } else dol_print_error($db); } -else -{ +else { /* * Factures clients */ @@ -336,8 +333,7 @@ else $sql .= " AND f.fk_statut IN (1,2)"; if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2,5)"; - else - $sql .= " AND f.type IN (0,1,2,3,5)"; + else $sql .= " AND f.type IN (0,1,2,3,5)"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; } @@ -463,8 +459,7 @@ else $sql .= " AND f.fk_statut IN (1,2)"; if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2)"; - else - $sql .= " AND f.type IN (0,1,2,3)"; + else $sql .= " AND f.type IN (0,1,2,3)"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; } @@ -518,8 +513,7 @@ else $i++; } } - else - { + else { print ' '; print ''.$langs->trans("None").''; print ''; @@ -768,15 +762,13 @@ else $i++; } } - else - { + else { print ' '; print ''.$langs->trans("None").''; print ''; } } - else - { + else { dol_print_error($db); } print ''; @@ -854,15 +846,13 @@ else print ''; } } - else - { + else { print ' '; print ''.$langs->trans("None").''; print ''; } } - else - { + else { dol_print_error($db); } print ''; @@ -888,8 +878,7 @@ else $sql .= " WHERE p.entity IN (".getEntity('donation').")"; $sql .= " AND fk_statut in (1,2)"; } - else - { + else { $sql = "SELECT p.societe as nom, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."don as p"; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."payment_donation as pe ON pe.fk_donation = p.rowid"; @@ -936,15 +925,13 @@ else $i++; } } - else - { + else { print ' '; print ''.$langs->trans("None").''; print ''; } } - else - { + else { dol_print_error($db); } print ''; @@ -1083,8 +1070,7 @@ else $sql .= " WHERE f.fk_statut IN (1,2)"; if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2,5)"; - else - $sql .= " AND f.type IN (0,1,2,3,5)"; + else $sql .= " AND f.type IN (0,1,2,3,5)"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; $sql .= " AND f.entity IN (".getEntity('invoice').")"; @@ -1131,8 +1117,7 @@ else $sql .= " WHERE f.fk_statut IN (1,2)"; if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2)"; - else - $sql .= " AND f.type IN (0,1,2,3)"; + else $sql .= " AND f.type IN (0,1,2,3)"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; $sql .= " AND f.entity = ".$conf->entity; @@ -1173,8 +1158,7 @@ else print ''.price($amount)."\n"; print "\n"; } - else - { + else { // VAT really already paid $amount = 0; $sql = "SELECT date_format(t.datev,'%Y-%m') as dm, sum(t.amount) as amount"; @@ -1254,8 +1238,7 @@ else } $db->free($result); } - else - { + else { dol_print_error($db); } print ' '; diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index ad81a3943c1..04bed25d6b2 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -131,7 +131,7 @@ if ($modecompta == 'CREANCES-DETTES') $description = $langs->trans("RulesAmountWithTaxIncluded"); $description .= '
'.$langs->trans("RulesResultDue"); if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description .= "
".$langs->trans("DepositsAreNotIncluded"); - else $description .= "
".$langs->trans("DepositsAreIncluded"); + else $description .= "
".$langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); } @@ -724,8 +724,7 @@ if (!empty($conf->expensereport->enabled) && ($modecompta == 'CREANCES-DETTES' | } } } - else - { + else { dol_print_error($db); } } @@ -786,8 +785,7 @@ if (!empty($conf->don->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom } } } - else - { + else { dol_print_error($db); } } @@ -826,8 +824,7 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->ba } } } - else - { + else { dol_print_error($db); } @@ -856,8 +853,7 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->ba } } } - else - { + else { dol_print_error($db); } } @@ -894,8 +890,7 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_LOAN) && !empty($conf->loan } } } - else - { + else { dol_print_error($db); } } @@ -961,8 +956,7 @@ if (!empty($conf->accounting->enabled) && ($modecompta == 'BOOKKEEPING')) } } } - else - { + else { dol_print_error($db); } } @@ -1042,8 +1036,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) $totsorties[$annee] += $decaiss[$case]; } } - else - { + else { if (isset($decaiss_ttc[$case]) && $decaiss_ttc[$case] != 0) { print ''.price(price2num($decaiss_ttc[$case], 'MT')).''; @@ -1063,8 +1056,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) $totentrees[$annee] += $encaiss[$case]; } } - else - { + else { if (isset($encaiss_ttc[$case])) { print ''.price(price2num($encaiss_ttc[$case], 'MT')).''; diff --git a/htdocs/compta/resultat/result.php b/htdocs/compta/resultat/result.php index 66adea3371f..172929aabff 100644 --- a/htdocs/compta/resultat/result.php +++ b/htdocs/compta/resultat/result.php @@ -178,7 +178,7 @@ if ($modecompta == "CREANCES-DETTES") //$periodlink=''.img_previous().' '.img_next().''; $description = $langs->trans("RulesResultDue"); if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description .= $langs->trans("DepositsAreNotIncluded"); - else $description .= $langs->trans("DepositsAreIncluded"); + else $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); } @@ -375,7 +375,7 @@ elseif ($modecompta == "BOOKKEEPING") print "\n"; //var_dump($sommes); - } else // normal category + } else // normal category { $code = $cat['code']; // Category code we process diff --git a/htdocs/compta/sociales/card.php b/htdocs/compta/sociales/card.php index d7f20622a43..0cb706d3177 100644 --- a/htdocs/compta/sociales/card.php +++ b/htdocs/compta/sociales/card.php @@ -129,8 +129,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes') header("Location: list.php"); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -166,8 +165,7 @@ if ($action == 'add' && $user->rights->tax->charges->creer) setEventMessages($langs->trans("ErrorFieldMustBeANumeric", $langs->transnoentities("Amount")), null, 'errors'); $action = 'create'; } - else - { + else { $object->type = $actioncode; $object->label = GETPOST('label', 'alpha'); $object->date_ech = $dateech; @@ -211,8 +209,7 @@ if ($action == 'update' && !$_POST["cancel"] && $user->rights->tax->charges->cre setEventMessages($langs->trans("ErrorFieldMustBeANumeric", $langs->transnoentities("Amount")), null, 'errors'); $action = 'create'; } - else - { + else { $result = $object->fetch($id); $object->date_ech = $dateech; @@ -272,8 +269,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->tax->char header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { $id = $originalId; $db->rollback(); @@ -281,8 +277,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->tax->char } } } - else - { + else { $db->rollback(); dol_print_error($db, $object->error); } @@ -432,8 +427,7 @@ if ($id > 0) { $formquestion[] = array('type' => 'checkbox', 'name' => 'clone_for_next_month', 'label' => $langs->trans("CloneTaxForNextMonth"), 'value' => 1); } - else - { + else { $formquestion[] = array('type' => 'date', 'name' => 'clone_date_ech', 'label' => $langs->trans("Date"), 'value' => -1); $formquestion[] = array('type' => 'date', 'name' => 'clone_period', 'label' => $langs->trans("PeriodEndDate"), 'value' => -1); } @@ -536,8 +530,7 @@ if ($id > 0) { print $form->selectDate($object->periode, 'period', 0, 0, 0, 'charge', 1); } - else - { + else { print dol_print_date($object->periode, "day"); } print ""; @@ -675,8 +668,7 @@ if ($id > 0) $i++; } } - else - { + else { print ''.$langs->trans("None").''; print ''; print ''; @@ -696,8 +688,7 @@ if ($id > 0) $db->free($resql); } - else - { + else { dol_print_error($db); } @@ -768,8 +759,7 @@ if ($id > 0) print ""; } } - else - { + else { /* Social contribution not found */ dol_print_error('', $object->error); } diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index 6d3f4dffa4a..0c709c031d5 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -172,13 +172,11 @@ class ChargeSociales extends CommonObject return 1; } - else - { + else { return 0; } } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -258,8 +256,7 @@ class ChargeSociales extends CommonObject return -1 * $error; } } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -329,8 +326,7 @@ class ChargeSociales extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -387,8 +383,7 @@ class ChargeSociales extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -422,13 +417,11 @@ class ChargeSociales extends CommonObject $this->db->free($result); return $obj->amount; } - else - { + else { return 0; } } - else - { + else { print $this->db->error(); return -1; } @@ -613,8 +606,7 @@ class ChargeSociales extends CommonObject $this->db->free($resql); return $amount; } - else - { + else { return -1; } } @@ -668,8 +660,7 @@ class ChargeSociales extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index bae8d28a756..9164ab39f1e 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -200,8 +200,7 @@ class PaymentSocialContribution extends CommonObject } } } - else - { + else { $error++; } } @@ -216,8 +215,7 @@ class PaymentSocialContribution extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -287,8 +285,7 @@ class PaymentSocialContribution extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -359,8 +356,7 @@ class PaymentSocialContribution extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -415,8 +411,7 @@ class PaymentSocialContribution extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -466,8 +461,7 @@ class PaymentSocialContribution extends CommonObject $this->db->commit(); return $object->id; } - else - { + else { $this->db->rollback(); return -1; } @@ -578,8 +572,7 @@ class PaymentSocialContribution extends CommonObject } } } - else - { + else { $this->error = $acc->error; $error++; } @@ -589,8 +582,7 @@ class PaymentSocialContribution extends CommonObject { return 1; } - else - { + else { return -1; } } @@ -614,8 +606,7 @@ class PaymentSocialContribution extends CommonObject { return 1; } - else - { + else { $this->error = $this->db->error(); return 0; } diff --git a/htdocs/compta/sociales/document.php b/htdocs/compta/sociales/document.php index 3c73c8e6614..e63c5f354d0 100644 --- a/htdocs/compta/sociales/document.php +++ b/htdocs/compta/sociales/document.php @@ -164,8 +164,7 @@ if ($object->id) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/compta/sociales/list.php b/htdocs/compta/sociales/list.php index 9d210c23d85..be5f7e6f973 100644 --- a/htdocs/compta/sociales/list.php +++ b/htdocs/compta/sociales/list.php @@ -81,8 +81,7 @@ if (!GETPOSTISSET('search_typeid')) if ($part[0] == 'cs.fk_type') $search_typeid = $part[1]; } } -else -{ +else { $search_typeid = GETPOST('search_typeid', 'int'); } @@ -209,8 +208,7 @@ if ($resql) print $countrynotdefined; print ''; } - else - { + else { print '
'; print ''."\n"; @@ -314,8 +312,7 @@ if ($resql) { print 'jdate($obj->periode)).'">'.dol_print_date($db->jdate($obj->periode), 'day').''; } - else - { + else { print ' '; } print "\n"; @@ -346,8 +343,7 @@ if ($resql) } print ''; } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/sociales/payments.php b/htdocs/compta/sociales/payments.php index 5cfa5df06ed..05808877df9 100644 --- a/htdocs/compta/sociales/payments.php +++ b/htdocs/compta/sociales/payments.php @@ -93,8 +93,7 @@ if ($mode != 'sconly') $center = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'title_accountancy', 0, '', '', $limit, 1); } -else -{ +else { print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'title_accountancy', 0, '', '', $limit); } @@ -209,8 +208,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) print '"; print ""; } - else - { + else { dol_print_error($db); } print '
'.price($totalpaye)."
'; @@ -288,8 +286,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) print ""; $db->free($result); } - else - { + else { dol_print_error($db); } } @@ -311,8 +308,7 @@ elseif ($mysoc->localtax2_assuj == "1") $j = 2; $numlt = 3; } -else -{ +else { $j = 0; $numlt = 0; } @@ -389,8 +385,7 @@ while ($j < $numlt) print ""; $db->free($result); } - else - { + else { dol_print_error($db); } } @@ -473,8 +468,7 @@ if (!empty($conf->salaries->enabled) && !empty($user->rights->salaries->read)) print "
"; } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/compta/stats/byratecountry.php b/htdocs/compta/stats/byratecountry.php index acd58f90217..3859b19df91 100644 --- a/htdocs/compta/stats/byratecountry.php +++ b/htdocs/compta/stats/byratecountry.php @@ -78,8 +78,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); } - else - { + else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index 5831467ce63..513b0ffa350 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -104,8 +104,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); } - else - { + else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } diff --git a/htdocs/compta/stats/cabyuser.php b/htdocs/compta/stats/cabyuser.php index 4d4f56a1354..6d720b4f96d 100644 --- a/htdocs/compta/stats/cabyuser.php +++ b/htdocs/compta/stats/cabyuser.php @@ -97,8 +97,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } if ($q == 4) { $date_start = dol_get_first_day($year_start, 10, false); $date_end = dol_get_last_day($year_start, 12, false); } } -else -{ +else { // TODO We define q } // $date_start and $date_end are defined. We force $year_start and $nbofyear @@ -154,7 +153,7 @@ if ($modecompta == "CREANCES-DETTES") { //$calcmode.='
('.$langs->trans("SeeReportInInputOutputMode",'','').')'; $description = $langs->trans("RulesCADue"); if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description .= $langs->trans("DepositsAreNotIncluded"); - else $description .= $langs->trans("DepositsAreIncluded"); + else $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); } diff --git a/htdocs/compta/stats/casoc.php b/htdocs/compta/stats/casoc.php index bec20998cfa..85a27c7574a 100644 --- a/htdocs/compta/stats/casoc.php +++ b/htdocs/compta/stats/casoc.php @@ -114,8 +114,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } if ($q == 4) { $date_start = dol_get_first_day($year_start, 10, false); $date_end = dol_get_last_day($year_start, 12, false); } } -else -{ +else { // TODO We define q } @@ -180,7 +179,7 @@ if ($modecompta == "CREANCES-DETTES") //$calcmode.='
('.$langs->trans("SeeReportInInputOutputMode",'','').')'; $description = $langs->trans("RulesCADue"); if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description .= $langs->trans("DepositsAreNotIncluded"); - else $description .= $langs->trans("DepositsAreIncluded"); + else $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); } diff --git a/htdocs/compta/stats/index.php b/htdocs/compta/stats/index.php index d1a64e218d2..cfc521c7c13 100644 --- a/htdocs/compta/stats/index.php +++ b/htdocs/compta/stats/index.php @@ -124,7 +124,7 @@ if ($modecompta == "CREANCES-DETTES") $periodlink = ($year_start ? "".img_previous()." ".img_next()."" : ""); $description = $langs->trans("RulesCADue"); if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description .= $langs->trans("DepositsAreNotIncluded"); - else $description .= $langs->trans("DepositsAreIncluded"); + else $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); } @@ -260,8 +260,7 @@ if ($modecompta == 'RECETTES-DEPENSES') $i++; } } - else - { + else { dol_print_error($db); } } @@ -340,8 +339,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) $now_show_delta = 1; // On a trouve le premier mois de la premiere annee generant du chiffre. print ''.price($cum_ht[$case], 1).''; } - else - { + else { if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } else { print ' '; } } @@ -357,8 +355,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) print price($cum[$case], 1); if ($modecompta != 'BOOKKEEPING') print ''; } - else - { + else { if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } else { print ' '; } } @@ -391,8 +388,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) print '-'; } } - else - { + else { print ''; if ($minyearmonth <= $case && $case <= $maxyearmonth) { print '-'; } else { print ' '; } @@ -484,8 +480,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) { print ''.($total_ht[$annee] ?price($total_ht[$annee]) : "0").""; } - else - { + else { print ' '; } } @@ -495,8 +490,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) { print ''.($total[$annee] ?price($total[$annee]) : "0").""; } - else - { + else { print ' '; } @@ -520,8 +514,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) print '+0%'; } } - else - { + else { print ''; if ($total[$annee] || ($minyear <= $annee && $annee <= max($nowyear, $maxyear))) { print '-'; } else { print ' '; } diff --git a/htdocs/compta/stats/supplier_turnover.php b/htdocs/compta/stats/supplier_turnover.php index 3ff41f4d114..e9e0ec5926c 100644 --- a/htdocs/compta/stats/supplier_turnover.php +++ b/htdocs/compta/stats/supplier_turnover.php @@ -290,8 +290,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) $now_show_delta = 1; // On a trouve le premier mois de la premiere annee generant du chiffre. print ''.price($cum_ht[$case], 1).''; } - else - { + else { if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } else { print ' '; } } @@ -307,8 +306,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) print price($cum[$case], 1); if ($modecompta != 'BOOKKEEPING') print ''; } - else - { + else { if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } else { print ' '; } } @@ -341,8 +339,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) print '-'; } } - else - { + else { print ''; if ($minyearmonth <= $case && $case <= $maxyearmonth) { print '-'; } else { print ' '; } @@ -369,8 +366,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) { print ''.($total_ht[$annee] ?price($total_ht[$annee]) : "0").""; } - else - { + else { print ' '; } } @@ -380,8 +376,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) { print ''.($total[$annee] ?price($total[$annee]) : "0").""; } - else - { + else { print ' '; } @@ -405,8 +400,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) print '+0%'; } } - else - { + else { print ''; if ($total[$annee] || ($minyear <= $annee && $annee <= max($nowyear, $maxyear))) { print '-'; } else { print ' '; } diff --git a/htdocs/compta/stats/supplier_turnover_by_prodserv.php b/htdocs/compta/stats/supplier_turnover_by_prodserv.php index fafb967ace1..9b25488c280 100644 --- a/htdocs/compta/stats/supplier_turnover_by_prodserv.php +++ b/htdocs/compta/stats/supplier_turnover_by_prodserv.php @@ -101,8 +101,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); } - else - { + else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } diff --git a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php index fcae12f744b..76f9c246e87 100644 --- a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php +++ b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php @@ -108,8 +108,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } if ($q == 4) { $date_start = dol_get_first_day($year_start, 10, false); $date_end = dol_get_last_day($year_start, 12, false); } } -else -{ +else { // TODO We define q } diff --git a/htdocs/compta/tva/card.php b/htdocs/compta/tva/card.php index 658c9353a00..3df7419019a 100644 --- a/htdocs/compta/tva/card.php +++ b/htdocs/compta/tva/card.php @@ -132,8 +132,7 @@ if ($action == 'add' && $_POST["cancel"] <> $langs->trans("Cancel")) header("Location: list.php"); exit; } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); $action = "create"; @@ -167,21 +166,18 @@ if ($action == 'delete') header("Location: ".DOL_URL_ROOT.'/compta/tva/list.php'); exit; } - else - { + else { $object->error = $accountline->error; $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { $mesg = 'Error try do delete a line linked to a conciliated bank transaction'; setEventMessages($mesg, null, 'errors'); } @@ -389,13 +385,11 @@ if ($id) { print ''; } - else - { + else { print ''; } } - else - { + else { print ''; } print "
"; diff --git a/htdocs/compta/tva/class/tva.class.php b/htdocs/compta/tva/class/tva.class.php index c01408f3c9a..baeaff7a5d6 100644 --- a/htdocs/compta/tva/class/tva.class.php +++ b/htdocs/compta/tva/class/tva.class.php @@ -151,14 +151,12 @@ class Tva extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = "Error ".$this->db->lasterror(); $this->db->rollback(); return -1; @@ -225,8 +223,7 @@ class Tva extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -294,8 +291,7 @@ class Tva extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -405,14 +401,12 @@ class Tva extends CommonObject $this->db->free($result); return $ret; } - else - { + else { $this->db->free($result); return 0; } } - else - { + else { print $this->db->lasterror(); return -1; } @@ -446,14 +440,12 @@ class Tva extends CommonObject $this->db->free($result); return $ret; } - else - { + else { $this->db->free($result); return 0; } } - else - { + else { print $this->db->lasterror(); return -1; } @@ -489,14 +481,12 @@ class Tva extends CommonObject $this->db->free($result); return $ret; } - else - { + else { $this->db->free($result); return 0; } } - else - { + else { print $this->db->lasterror(); return -1; } @@ -613,8 +603,7 @@ class Tva extends CommonObject { $this->update_fk_bank($bank_line_id); } - else - { + else { $this->error = $acc->error; $ok = 0; } @@ -633,20 +622,17 @@ class Tva extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -3; } } - else - { + else { $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -670,8 +656,7 @@ class Tva extends CommonObject { return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -753,8 +738,7 @@ class Tva extends CommonObject $this->db->free($resql); return $amount; } - else - { + else { return -1; } } @@ -800,8 +784,7 @@ class Tva extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/compta/tva/clients.php b/htdocs/compta/tva/clients.php index bcedba7a074..158c974114d 100644 --- a/htdocs/compta/tva/clients.php +++ b/htdocs/compta/tva/clients.php @@ -67,8 +67,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if (empty($q)) { if (GETPOST("month", 'int')) { $date_start = dol_get_first_day($year_start, GETPOST("month", 'int'), false); $date_end = dol_get_last_day($year_start, GETPOST("month", 'int'), false); } - else - { + else { if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) { // quaterly vat, we take last past complete quarter $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -3 - (($current_date['mon'] - $conf->global->SOCIETE_FISCAL_MONTH_START) % 3), 'm'); $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1; @@ -92,8 +91,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } } } - else - { + else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -322,8 +320,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) 'link' =>$expensereport->getNomUrl(1) ); } - else - { + else { $invoice_supplier->id = $x_paye[$my_paye_thirdpartyid]['facid'][$id]; $invoice_supplier->ref = $x_paye[$my_paye_thirdpartyid]['facnum'][$id]; $invoice_supplier->type = $x_paye[$my_paye_thirdpartyid]['type'][$id]; @@ -694,8 +691,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) { print $langs->trans("NA"); } - else - { + else { if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) { $ratiopaymentinvoice = ($fields['payment_amount'] / $fields['ftotal_ttc']); } diff --git a/htdocs/compta/tva/document.php b/htdocs/compta/tva/document.php index fabaf1ee705..45efc9681d8 100644 --- a/htdocs/compta/tva/document.php +++ b/htdocs/compta/tva/document.php @@ -149,8 +149,7 @@ if ($object->id) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/compta/tva/index.php b/htdocs/compta/tva/index.php index 0a785aa78cd..c85f2bbdb8f 100644 --- a/htdocs/compta/tva/index.php +++ b/htdocs/compta/tva/index.php @@ -58,8 +58,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if (empty($q)) { if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } - else - { + else { if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) { // quaterly vat, we take last past complete quarter $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -3 - (($current_date['mon'] - $conf->global->SOCIETE_FISCAL_MONTH_START) % 3), 'm'); $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1; @@ -83,8 +82,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } } } - else - { + else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -177,8 +175,7 @@ function pt($db, $sql, $date) $previousmode = ''; $previousmonth = ''; } - else - { + else { $previousmode = $obj->mode; $previousmonth = $obj->dm; } @@ -372,8 +369,7 @@ while ((($y < $yend) || ($y == $yend && $m <= $mend)) && $mcursor < 1000) // $mc //'link' =>$expensereport->getNomUrl(1) ); } - else - { + else { //$invoice_supplier->id=$x_paye[$my_paye_rate]['facid'][$id]; //$invoice_supplier->ref=$x_paye[$my_paye_rate]['facnum'][$id]; //$invoice_supplier->type=$x_paye[$my_paye_rate]['type'][$id]; diff --git a/htdocs/compta/tva/list.php b/htdocs/compta/tva/list.php index 003a7eabcad..98eede887c8 100644 --- a/htdocs/compta/tva/list.php +++ b/htdocs/compta/tva/list.php @@ -73,8 +73,7 @@ if (empty($_REQUEST['typeid'])) if ($part[0] == 't.fk_typepayment') $typeid = $part[1]; } } -else -{ +else { $typeid = $_REQUEST['typeid']; } @@ -229,8 +228,7 @@ if ($result) { $type = ''.$langs->trans("PaymentTypeShort".$obj->payment_code).' '.$obj->num_payment.''; } - else - { + else { $type = ' '; } @@ -292,8 +290,7 @@ if ($result) $db->free($result); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/compta/tva/quadri_detail.php b/htdocs/compta/tva/quadri_detail.php index 79ee69a030c..6e16165ab6c 100644 --- a/htdocs/compta/tva/quadri_detail.php +++ b/htdocs/compta/tva/quadri_detail.php @@ -67,8 +67,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if (empty($q)) { if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } - else - { + else { if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) { // quaterly vat, we take last past complete quarter $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -3 - (($current_date['mon'] - $conf->global->SOCIETE_FISCAL_MONTH_START) % 3), 'm'); $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1; @@ -92,8 +91,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } } } - else - { + else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -316,8 +314,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) 'link' =>$expensereport->getNomUrl(1) ); } - else - { + else { $invoice_supplier->id = $x_paye[$my_paye_rate]['facid'][$id]; $invoice_supplier->ref = $x_paye[$my_paye_rate]['facnum'][$id]; $invoice_supplier->type = $x_paye[$my_paye_rate]['type'][$id]; @@ -440,8 +437,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']), 24); } } - else - { + else { if ($type) { $text = img_object($langs->trans('Service'), 'service'); } else { @@ -621,8 +617,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']), 24); } } - else - { + else { if ($type) { $text = img_object($langs->trans('Service'), 'service'); } else { @@ -674,8 +669,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) { print $langs->trans("NA"); } - else - { + else { if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) { $ratiopaymentinvoice = ($fields['payment_amount'] / $fields['ftotal_ttc']); } diff --git a/htdocs/contact/agenda.php b/htdocs/contact/agenda.php index 625cf524169..874a964a965 100644 --- a/htdocs/contact/agenda.php +++ b/htdocs/contact/agenda.php @@ -77,8 +77,7 @@ if (GETPOST('actioncode', 'array')) $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; } -else -{ +else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); @@ -160,8 +159,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) $objcanvas->assign_values($action, $object->id, $object->ref); // Set value for templates $objcanvas->display_canvas($action); // Show template } -else -{ +else { // ----------------------------------------- // When used in standard mode // ----------------------------------------- diff --git a/htdocs/contact/canvas/actions_contactcard_common.class.php b/htdocs/contact/canvas/actions_contactcard_common.class.php index fbd31812fe8..e005d3dca7b 100644 --- a/htdocs/contact/canvas/actions_contactcard_common.class.php +++ b/htdocs/contact/canvas/actions_contactcard_common.class.php @@ -120,8 +120,7 @@ abstract class ActionsContactCardCommon $this->tpl['company'] = $objsoc->getNomUrl(1); $this->tpl['company_id'] = $objsoc->id; } - else - { + else { $this->tpl['company'] = $form->select_company($this->object->socid, 'socid', '', 1); } @@ -223,8 +222,7 @@ abstract class ActionsContactCardCommon $objsoc->fetch($this->object->socid); $this->tpl['company'] = $objsoc->getNomUrl(1); } - else - { + else { $this->tpl['company'] = $langs->trans("ContactNotLinkedToCompany"); } @@ -310,8 +308,7 @@ abstract class ActionsContactCardCommon { $obj = $this->db->fetch_object($resql); } - else - { + else { dol_print_error($this->db); } $this->object->country_id = $langs->trans("Country".$obj->code) ? $langs->trans("Country".$obj->code) : $obj->label; diff --git a/htdocs/contact/canvas/default/actions_contactcard_default.class.php b/htdocs/contact/canvas/default/actions_contactcard_default.class.php index 54b3f137967..6ac81ac8bd4 100644 --- a/htdocs/contact/canvas/default/actions_contactcard_default.class.php +++ b/htdocs/contact/canvas/default/actions_contactcard_default.class.php @@ -105,8 +105,7 @@ class ActionsContactCardDefault extends ActionsContactCardCommon $this->tpl['actionsdone'] = show_actions_done($conf, $langs, $db, $objsoc, $this->object, 1); } - else - { + else { // Confirm delete contact if ($action == 'delete' && $user->rights->societe->contact->supprimer) { diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index a6e5bee1898..885878138ba 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -129,20 +129,17 @@ if (empty($reshook)) { $db->commit(); } - else - { + else { $error = $nuser->error; $errors = $nuser->errors; $db->rollback(); } } - else - { + else { $error = $nuser->error; $errors = $nuser->errors; $db->rollback(); } } - else - { + else { $error = $object->error; $errors = $object->errors; } } @@ -156,8 +153,7 @@ if (empty($reshook)) { setEventMessages($object->error, $object->errors, 'errors'); } - else - { + else { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$id); exit; } @@ -171,8 +167,7 @@ if (empty($reshook)) { setEventMessages($object->error, $object->errors, 'errors'); } - else - { + else { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$id); exit; } @@ -278,8 +273,7 @@ if (empty($reshook)) header("Location: ".$url); exit; } - else - { + else { $db->rollback(); } } @@ -300,14 +294,12 @@ if (empty($reshook)) header("Location: ".$backtopage); exit; } - else - { + else { header("Location: ".DOL_URL_ROOT.'/contact/list.php'); exit; } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -351,8 +343,7 @@ if (empty($reshook)) { $errors[] = "ErrorFailedToSaveFile"; } - else - { + else { $object->photo = dol_sanitizeFileName($_FILES['photo']['name']); // Create thumbs @@ -360,13 +351,11 @@ if (empty($reshook)) } } } - else - { + else { $errors[] = "ErrorBadImageFormat"; } } - else - { + else { switch ($_FILES['photo']['error']) { case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini @@ -452,8 +441,7 @@ if (empty($reshook)) } } } - else - { + else { $sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE email = '".$db->escape($object->email)."' AND entity = ".$db->escape(getEntity('mailing', 0)); $resql = $db->query($sql); } @@ -465,8 +453,7 @@ if (empty($reshook)) $object->old_firstname = ''; $action = 'view'; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $action = 'edit'; } @@ -526,8 +513,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) $objcanvas->assign_values($action, $object->id, $object->ref); // Set value for templates $objcanvas->display_canvas($action); // Show template } -else -{ +else { // ----------------------------------------- // When used in standard mode // ----------------------------------------- @@ -703,8 +689,7 @@ else { print ''; } - else - { + else { print ''; } @@ -712,8 +697,7 @@ else { print $formcompany->select_state(GETPOST("state_id", 'alpha') ? GETPOST("state_id", 'alpha') : $object->state_id, $object->country_code, 'state_id'); } - else - { + else { print $countrynotdefined; } print ''; @@ -871,8 +855,7 @@ else { print $form->selectDate($object->birthday, 'birthday', 0, 0, 0, "perso", 1, 0); } - else - { + else { print $form->selectDate('', 'birthday', 0, 0, 1, "perso", 1, 0); } print ''; @@ -882,8 +865,7 @@ else { print ''; } - else - { + else { print ''; } print ''; @@ -900,8 +882,7 @@ else print '     '; print ''; } - else - { + else { print '     '; print ''; } @@ -1031,8 +1012,7 @@ else { print ''; } - else - { + else { print ''; } @@ -1070,8 +1050,7 @@ else print ''.$langs->trans("NbOfEMailingsSend").''; print ''.$object->getNbOfEMailings().''; } - else - { + else { print ''; } print ''; @@ -1096,8 +1075,7 @@ else print ''; print ''.$form->selectyesno('no_email', (GETPOSTISSET("no_email") ?GETPOST("no_email", 'alpha') : $noemail), 1).''; } - else - { + else { print ''; } print ''; @@ -1479,8 +1457,7 @@ else $langs->load("mails"); print ''; } - else - { + else { $langs->load("mails"); print ''; } diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index d9753001db2..fc640e7e032 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -288,8 +288,7 @@ class Contact extends CommonObject $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->lasterror(); return -1; @@ -389,15 +388,13 @@ class Contact extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR); return -2; } } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); @@ -597,15 +594,13 @@ class Contact extends CommonObject $this->db->commit(); return 1; } - else - { + else { dol_syslog(get_class($this)."::update Error ".$this->error, LOG_ERR); $this->db->rollback(); return -$error; } } - else - { + else { $this->error = $this->db->lasterror().' sql='.$sql; $this->db->rollback(); return -1; @@ -762,13 +757,11 @@ class Contact extends CommonObject $this->error = $this->db->lasterror(); } } - else - { + else { $result = true; } } - else - { + else { $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_alert "; $sql .= "WHERE type=1 AND fk_contact=".$this->db->escape($id)." AND fk_user=".$user->id; $result = $this->db->query($sql); @@ -792,8 +785,7 @@ class Contact extends CommonObject $this->db->commit(); return 1; } - else - { + else { dol_syslog(get_class($this)."::update Error ".$this->error, LOG_ERR); $this->db->rollback(); return -$error; @@ -846,8 +838,7 @@ class Contact extends CommonObject $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user as u ON c.rowid = u.fk_socpeople"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON c.fk_soc = s.rowid"; if ($id) $sql .= " WHERE c.rowid = ".$id; - else - { + else { $sql .= " WHERE c.entity IN (".getEntity($this->element).")"; if ($ref_ext) { $sql .= " AND c.ref_ext = '".$this->db->escape($ref_ext)."'"; @@ -943,8 +934,7 @@ class Contact extends CommonObject } $this->db->free($resql); } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -971,8 +961,7 @@ class Contact extends CommonObject } $this->db->free($resql); } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -988,14 +977,12 @@ class Contact extends CommonObject return 1; } - else - { + else { $this->error = $langs->trans("RecordNotFound"); return 0; } } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -1062,8 +1049,7 @@ class Contact extends CommonObject $this->db->free($resql); return 0; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -1119,8 +1105,7 @@ class Contact extends CommonObject $i++; } } - else - { + else { $error++; $this->error = $this->db->error().' sql='.$sql; } @@ -1187,8 +1172,7 @@ class Contact extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); dol_syslog("Error ".$this->error, LOG_ERR); return -1; @@ -1236,8 +1220,7 @@ class Contact extends CommonObject $this->db->free($resql); } - else - { + else { print $this->db->error(); } } @@ -1263,8 +1246,7 @@ class Contact extends CommonObject $this->db->free($resql); return $nb; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -1526,8 +1508,7 @@ class Contact extends CommonObject $this->db->rollback(); return -$error; } - else - { + else { $this->db->commit(); return 1; } @@ -1681,8 +1662,7 @@ class Contact extends CommonObject return $tab; } - else - { + else { $this->error = $this->db->error(); dol_print_error($this->db); return -1; diff --git a/htdocs/contact/consumption.php b/htdocs/contact/consumption.php index ad4b5ca08f5..ff3570e7e82 100644 --- a/htdocs/contact/consumption.php +++ b/htdocs/contact/consumption.php @@ -424,8 +424,7 @@ if ($sql_select) { print $documentstaticline->getLibStatut(2); } - else - { + else { print $documentstatic->getLibStatut(2); } print ''; @@ -468,8 +467,7 @@ if ($sql_select) $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $objp->product_label; } - else - { + else { $label = $objp->product_label; } @@ -516,14 +514,12 @@ if ($sql_select) // Add date of deposit if (!empty($conf->global->INVOICE_ADD_DEPOSIT_DATE)) echo ' ('.dol_print_date($discount->datec).')'; } - else - { + else { echo ($txt ? ' - ' : '').dol_htmlentitiesbr($objp->description); } } } - else - { + else { if ($objp->fk_product > 0) { echo $form->textwithtooltip($text, $description, 3, '', '', $i, 0, ''); diff --git a/htdocs/contact/ldap.php b/htdocs/contact/ldap.php index 842d03cb3a6..7934bbd5996 100644 --- a/htdocs/contact/ldap.php +++ b/htdocs/contact/ldap.php @@ -68,8 +68,7 @@ if ($action == 'dolibarr2ldap') setEventMessages($langs->trans("ContactSynchronized"), null, 'mesgs'); $db->commit(); } - else - { + else { setEventMessages($ldap->error, $ldap->errors, 'errors'); $db->rollback(); } @@ -107,8 +106,7 @@ if ($object->socid > 0) print ''.$langs->trans("ThirdParty").''.$thirdparty->getNomUrl(1).''; } -else -{ +else { print ''.$langs->trans("ThirdParty").''; print $langs->trans("ContactNotLinkedToCompany"); print ''; @@ -184,21 +182,18 @@ if ($result > 0) { print ''.$langs->trans("ErrorFailedToReadLDAP").''; } - else - { + else { $result = show_ldap_content($records, 0, $records['count'], true); } } - else - { + else { print ''.$langs->trans("LDAPRecordNotFound").' (dn='.$dn.' - search='.$search.')'; } $ldap->unbind(); $ldap->close(); } -else -{ +else { setEventMessages($ldap->error, $ldap->errors, 'errors'); } diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 9e7485d189f..a6add5c7d75 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -327,8 +327,7 @@ if ($search_priv != '0' && $search_priv != '1') { $sql .= " AND (p.priv='0' OR (p.priv='1' AND p.fk_user_creat=".$user->id."))"; } -else -{ +else { if ($search_priv == '0') $sql .= " AND p.priv='0'"; if ($search_priv == '1') $sql .= " AND (p.priv='1' AND p.fk_user_creat=".$user->id.")"; } @@ -404,8 +403,7 @@ if ($view == "recent") { $sql .= $db->order("p.datec", "DESC"); } -else -{ +else { $sql .= $db->order($sortfield, $sortorder); } @@ -923,8 +921,7 @@ while ($i < min($num, $limit)) $objsoc->fetch($obj->socid); print $objsoc->getNomUrl(1); } - else - print ' '; + else print ' '; print ''; if (!$i) $totalarray['nbfield']++; } diff --git a/htdocs/contact/perso.php b/htdocs/contact/perso.php index 5a6ea3eb032..5665030b6d5 100644 --- a/htdocs/contact/perso.php +++ b/htdocs/contact/perso.php @@ -86,20 +86,17 @@ if ($action == 'update' && !$_POST["cancel"] && $user->rights->societe->contact- { setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors'); } - else - { + else { // Create thumbs $object->addThumbs($newfile); } } } - else - { + else { setEventMessages("ErrorBadImageFormat", null, 'errors'); } } - else - { + else { switch ($_FILES['photo']['error']) { case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini @@ -112,8 +109,7 @@ if ($action == 'update' && !$_POST["cancel"] && $user->rights->societe->contact- } } } - else - { + else { $error = $object->error; } } @@ -184,8 +180,7 @@ if ($action == 'edit') print ''.$langs->trans("ThirdParty").''.$objsoc->getNomUrl(1).''; } - else - { + else { print ''.$langs->trans("ThirdParty").''; print $langs->trans("ContactNotLinkedToCompany"); print ''; @@ -208,8 +203,7 @@ if ($action == 'edit') { print ''; } - else - { + else { print ''; } print ''; @@ -226,8 +220,7 @@ if ($action == 'edit') print ""; } -else -{ +else { // View mode dol_fiche_head($head, 'perso', $title, -1, 'contact'); @@ -302,8 +295,7 @@ else else print $langs->trans("BirthdayAlertOff"); print ''; } - else - { + else { print ''.$langs->trans("DateToBirth").''; } print ""; diff --git a/htdocs/contact/vcard.php b/htdocs/contact/vcard.php index 75362491424..ee325317033 100644 --- a/htdocs/contact/vcard.php +++ b/htdocs/contact/vcard.php @@ -102,8 +102,7 @@ if ($company->id) $v->setEmail($company->email, 'INTERNET'); } // when e-mail of contact and company complete different use company e-mail at first (and contact e-mail at second) - else - { + else { $v->setEmail($company->email); // support by Microsoft Outlook (2019 and possible earlier) diff --git a/htdocs/contrat/agenda.php b/htdocs/contrat/agenda.php index 0055b0ba428..36a9c950069 100644 --- a/htdocs/contrat/agenda.php +++ b/htdocs/contrat/agenda.php @@ -40,8 +40,7 @@ if (GETPOST('actioncode', 'array')) $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; } -else -{ +else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 9f825cdf009..7a2f8cf311f 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -133,8 +133,7 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -303,8 +302,7 @@ if (empty($reshook)) $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["libelle"])) ? $prod->multilangs[$outputlangs->defaultlang]["libelle"] : $lines[$i]->product_label; } - else - { + else { $label = $lines[$i]->product_label; } $desc = ($lines[$i]->desc && $lines[$i]->desc != $lines[$i]->libelle) ?dol_htmlentitiesbr($lines[$i]->desc) : ''; @@ -355,8 +353,7 @@ if (empty($reshook)) } } } - else - { + else { setEventMessages($srcobject->error, $srcobject->errors, 'errors'); $error++; } @@ -368,14 +365,12 @@ if (empty($reshook)) if ($reshook < 0) $error++; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $error++; } } - else - { + else { $result = $object->create($user); if ($result > 0) { @@ -408,8 +403,7 @@ if (empty($reshook)) $idprod = 0; $tva_tx = (GETPOST('tva_tx', 'alpha') ? GETPOST('tva_tx', 'alpha') : 0); } - else - { + else { $idprod = GETPOST('idprod', 'int'); $tva_tx = ''; } @@ -514,8 +508,7 @@ if (empty($reshook)) { $pu_ht = price2num($pu_ttc / (1 + ($tmpvat / 100)), 'MU'); } - else - { + else { $pu_ttc = price2num($pu_ht * (1 + ($tmpvat / 100)), 'MU'); } } @@ -526,8 +519,7 @@ if (empty($reshook)) $fk_unit = $prod->fk_unit; } - else - { + else { $pu_ht = GETPOST('price_ht'); $price_base_type = 'HT'; $tva_tx = GETPOST('tva_tx') ?str_replace('*', '', GETPOST('tva_tx')) : 0; // tva_tx field may be disabled, so we use vat rate 0 @@ -543,8 +535,7 @@ if (empty($reshook)) $fk_fournprice = $_POST['fournprice']; if (!empty($_POST['buying_price'])) $pa_ht = $_POST['buying_price']; - else - $pa_ht = null; + else $pa_ht = null; $info_bits = 0; if ($tva_npr) $info_bits |= 0x01; @@ -555,8 +546,7 @@ if (empty($reshook)) $object->error = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); $result = -1; } - else - { + else { // Insert line $result = $object->addline( $desc, @@ -630,8 +620,7 @@ if (empty($reshook)) unset($_POST['date_endmonth']); unset($_POST['date_endyear']); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -692,8 +681,7 @@ if (empty($reshook)) $fk_fournprice = $_POST['fournprice']; if (!empty($_POST['buying_price'])) $pa_ht = $_POST['buying_price']; - else - $pa_ht = null; + else $pa_ht = null; $fk_unit = GETPOST('unit', 'alpha'); @@ -745,8 +733,7 @@ if (empty($reshook)) { $db->commit(); } - else - { + else { $db->rollback(); } } @@ -760,8 +747,7 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -789,8 +775,7 @@ if (empty($reshook)) $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -832,8 +817,7 @@ if (empty($reshook)) header("Location: list.php?restore_lastsearch_values=1"); return; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -851,13 +835,11 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); return; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("RefNewContract")), null, 'errors'); } } @@ -1015,15 +997,13 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -1058,8 +1038,7 @@ if (empty($reshook)) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); } - else - { + else { if ($object->id > 0) { $result = $object->createFromClone($user, $socid); if ($result > 0) { @@ -1120,8 +1099,7 @@ if ($action == 'create') { $projectid = GETPOST('originid'); } - else - { + else { // For compatibility if ($element == 'order' || $element == 'commande') { $element = $subelement = 'commande'; } if ($element == 'propal') { $element = 'comm/propal'; $subelement = 'propal'; } @@ -1196,8 +1174,7 @@ if ($action == 'create') print ''; print ''; } - else - { + else { print ''; print $form->select_company('', 'socid', '', 'SelectThirdParty', 1, 0, null, 0, 'minwidth300'); print ' '.$langs->trans("AddThirdParty").''; @@ -1292,8 +1269,7 @@ if ($action == 'create') print "\n"; } -else -/* *************************************************************************** */ +else /* *************************************************************************** */ /* */ /* Mode vue et edition */ /* */ @@ -1600,8 +1576,7 @@ else print ''; } - else - { + else { print ''.img_object($langs->trans("ShowProductOrService"), ($objp->product_type ? 'service' : 'product')).' '.dol_htmlentitiesbr($objp->description)."\n"; } // VAT @@ -1623,8 +1598,7 @@ else { print ''.$objp->remise_percent."%\n"; } - else - { + else { print ' '; } @@ -1709,8 +1683,7 @@ else } } // Line in mode update - else - { + else { // Ligne carac print ''; print ''; @@ -1724,8 +1697,7 @@ else print $objp->label ? ' - '.dol_trunc($objp->label, 32) : ''; print '
'; } - else - { + else { print $objp->label ? $objp->label.'
' : ''; } @@ -1802,8 +1774,7 @@ else $db->free($result); } - else - { + else { dol_print_error($db); } @@ -1874,8 +1845,7 @@ else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("DateEndReal")), null, 'errors'); } - else - { + else { print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id."&ligne=".GETPOST('ligne', 'int')."&date=".$dateactstart."&dateend=".$dateactend."&comment=".urlencode($comment), $langs->trans("CloseService"), $langs->trans("ConfirmCloseService", dol_print_date($dateactend, "%A %d %B %Y")), "confirm_closeline", '', 0, 1); } print '
'; @@ -2112,8 +2082,7 @@ else if ($object->statut == 1) { if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send)) { print ''; - } else - print ''; + } else print ''; } } @@ -2153,8 +2122,7 @@ else { print ''; } - else - { + else { print ''; } } @@ -2164,8 +2132,7 @@ else { print ''; } - else - { + else { print ''; } @@ -2185,8 +2152,7 @@ else { print ''; } - else - { + else { print ''; } } diff --git a/htdocs/contrat/class/api_contracts.class.php b/htdocs/contrat/class/api_contracts.class.php index a35d3c871de..9caa33fca2d 100644 --- a/htdocs/contrat/class/api_contracts.class.php +++ b/htdocs/contrat/class/api_contracts.class.php @@ -465,8 +465,7 @@ class Contracts extends DolibarrApi if ($updateRes > 0) { return $this->get($id); } - else - { + else { throw new RestException(405, $this->contract->error); } } @@ -502,8 +501,7 @@ class Contracts extends DolibarrApi { return $this->get($id); } - else - { + else { throw new RestException(500, $this->contract->error); } } diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 1dec473edac..304628d97cc 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -299,15 +299,13 @@ class Contrat extends CommonObject { return $numref; } - else - { + else { $this->error = $obj->error; dol_print_error($db, get_class($this)."::getNextValue ".$obj->error); return ""; } } - else - { + else { $langs->load("errors"); print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Contract")); return ""; @@ -411,8 +409,7 @@ class Contrat extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -468,8 +465,7 @@ class Contrat extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -513,8 +509,7 @@ class Contrat extends CommonObject { $num = $this->getNextNumRef($this->thirdparty); } - else - { + else { $num = $this->ref; } $this->newref = dol_sanitizeFileName($num); @@ -592,8 +587,7 @@ class Contrat extends CommonObject $this->date_validation = $now; } } - else - { + else { $error++; } @@ -602,8 +596,7 @@ class Contrat extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -667,8 +660,7 @@ class Contrat extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -771,15 +763,13 @@ class Contrat extends CommonObject return $this->id; } } - else - { + else { dol_syslog(get_class($this)."::fetch Contract not found"); $this->error = "Contract not found"; return 0; } } - else - { + else { dol_syslog(get_class($this)."::fetch Error searching contract"); $this->error = $this->db->error(); return -1; @@ -940,8 +930,7 @@ class Contrat extends CommonObject } $this->db->free($result); } - else - { + else { dol_syslog(get_class($this)."::Fetch Error when reading lines of contracts linked to products"); return -3; } @@ -1082,7 +1071,7 @@ class Contrat extends CommonObject } } } - else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) + else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) { $origin_id = $tmp_origin_id; $ret = $this->add_object_linked($origin, $origin_id); @@ -1146,23 +1135,20 @@ class Contrat extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { dol_syslog(get_class($this)."::create - 30 - ".$this->error, LOG_ERR); $this->db->rollback(); return -3; } } - else - { + else { $this->error = "Failed to add contract"; dol_syslog(get_class($this)."::create - 20 - ".$this->error, LOG_ERR); $this->db->rollback(); return -2; } } - else - { + else { $this->error = $langs->trans("UnknownError: ".$this->db->error()." -", LOG_DEBUG); $this->db->rollback(); @@ -1332,8 +1318,7 @@ class Contrat extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -1427,8 +1412,7 @@ class Contrat extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -1506,8 +1490,7 @@ class Contrat extends CommonObject { $pu = $pu_ht; } - else - { + else { $pu = $pu_ttc; } @@ -1559,8 +1542,7 @@ class Contrat extends CommonObject { return $result; } - else - { + else { $pa_ht = $result; } } @@ -1632,21 +1614,18 @@ class Contrat extends CommonObject $this->db->rollback(); return -1; } - else - { + else { $this->db->commit(); return $contractlineid; } } - else - { + else { $this->db->rollback(); $this->error = $this->db->error()." sql=".$sql; return -1; } } - else - { + else { dol_syslog(get_class($this)."::addline ErrorTryToAddLineOnValidatedContract", LOG_ERR); return -2; } @@ -1699,8 +1678,7 @@ class Contrat extends CommonObject $remise = round(($pu * $remise_percent / 100), 2); $price = $pu - $remise; } - else - { + else { $remise_percent = 0; } @@ -1751,8 +1729,7 @@ class Contrat extends CommonObject { return $result; } - else - { + else { $pa_ht = $result; } } @@ -1826,15 +1803,13 @@ class Contrat extends CommonObject return 1; } } - else - { + else { $this->db->rollback(); dol_syslog(get_class($this)."::updateline Erreur -2"); return -2; } } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); dol_syslog(get_class($this)."::updateline Erreur -1"); @@ -1896,8 +1871,7 @@ class Contrat extends CommonObject return -1; } } - else - { + else { $this->error = 'ErrorDeleteLineNotAllowedByObjectStatus'; return -2; } @@ -1994,8 +1968,7 @@ class Contrat extends CommonObject $text .= ($mode == 7 ? '' : ''); return $text; } - else - { + else { return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode); } } @@ -2114,8 +2087,7 @@ class Contrat extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -2151,8 +2123,7 @@ class Contrat extends CommonObject } return $tab; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -2189,8 +2160,7 @@ class Contrat extends CommonObject } return $tab; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -2291,8 +2261,7 @@ class Contrat extends CommonObject return $response; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -2334,8 +2303,7 @@ class Contrat extends CommonObject $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -2960,8 +2928,7 @@ class ContratLigne extends CommonObjectLine return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -3047,8 +3014,7 @@ class ContratLigne extends CommonObjectLine { return $result; } - else - { + else { $this->pa_ht = $result; } } @@ -3196,8 +3162,7 @@ class ContratLigne extends CommonObjectLine $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -2; @@ -3279,8 +3244,7 @@ class ContratLigne extends CommonObjectLine $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->error()." sql=".$sql; return -1; @@ -3334,8 +3298,7 @@ class ContratLigne extends CommonObjectLine $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } diff --git a/htdocs/contrat/contact.php b/htdocs/contrat/contact.php index 1da2416ce84..250d89e3e88 100644 --- a/htdocs/contrat/contact.php +++ b/htdocs/contrat/contact.php @@ -71,8 +71,7 @@ if ($action == 'addcontact' && $user->rights->contrat->creer) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); $msg = $langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"); @@ -91,8 +90,7 @@ if ($action == 'swapstatut' && $user->rights->contrat->creer) { $result = $object->swapContactStatus(GETPOST('ligne')); } - else - { + else { dol_print_error($db, $object->error); } } diff --git a/htdocs/contrat/document.php b/htdocs/contrat/document.php index fd3b3f66e4a..e43db63826f 100644 --- a/htdocs/contrat/document.php +++ b/htdocs/contrat/document.php @@ -194,8 +194,7 @@ if ($object->id) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/contrat/index.php b/htdocs/contrat/index.php index 2a7c9c0d91a..4530d01a6af 100644 --- a/htdocs/contrat/index.php +++ b/htdocs/contrat/index.php @@ -141,8 +141,7 @@ if ($resql) } $db->free($resql); } -else -{ +else { dol_print_error($db); } // Search by status (only expired) @@ -180,8 +179,7 @@ if ($resql) } $db->free($resql); } -else -{ +else { dol_print_error($db); } @@ -299,15 +297,13 @@ if (!empty($conf->contrat->enabled) && $user->rights->contrat->lire) $i++; } } - else - { + else { print ''.$langs->trans("NoContracts").''; } print "
"; $db->free($resql); } - else - { + else { dol_print_error($db); } } @@ -384,8 +380,7 @@ if ($result) print ""; } -else -{ +else { dol_print_error($db); } @@ -440,8 +435,7 @@ if ($resql) $productstatic->entity = $obj->pentity; print $productstatic->getNomUrl(1, '', 20); } - else - { + else { print ''.img_object($langs->trans("ShowService"), "service"); if ($obj->label) print ' '.dol_trunc($obj->label, 20).''; else print ' '.dol_trunc($obj->note, 20); @@ -463,8 +457,7 @@ if ($resql) print ""; } -else -{ +else { dol_print_error($db); } @@ -520,8 +513,7 @@ if ($resql) $productstatic->entity = $obj->pentity; print $productstatic->getNomUrl(1, '', 20); } - else - { + else { print ''.img_object($langs->trans("ShowService"), "service"); if ($obj->label) print ' '.dol_trunc($obj->label, 20).''; else print ' '.dol_trunc($obj->note, 20); @@ -542,8 +534,7 @@ if ($resql) print ""; } -else -{ +else { dol_print_error($db); } @@ -600,8 +591,7 @@ if ($resql) $productstatic->entity = $obj->pentity; print $productstatic->getNomUrl(1, '', 20); } - else - { + else { print ''.img_object($langs->trans("ShowService"), "service"); if ($obj->label) print ' '.dol_trunc($obj->label, 20).''; else print ' '.dol_trunc($obj->note, 20); @@ -622,8 +612,7 @@ if ($resql) print ""; } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index a7205730817..5053b703966 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -732,8 +732,7 @@ while ($i < min($num, $limit)) } //else print $langs->trans("NoSalesRepresentativeAffected"); } - else - { + else { print ' '; } print ''; diff --git a/htdocs/contrat/services_list.php b/htdocs/contrat/services_list.php index 2b81ceff5fa..62a853270e1 100644 --- a/htdocs/contrat/services_list.php +++ b/htdocs/contrat/services_list.php @@ -98,14 +98,12 @@ if ($search_status != '') $tmp = explode('&', $search_status); $mode = $tmp[0]; if (empty($tmp[1])) $filter = ''; - else - { + else { if ($tmp[1] == 'filter=notexpired') $filter = 'notexpired'; if ($tmp[1] == 'filter=expired') $filter = 'expired'; } } -else -{ +else { $search_status = $mode; if ($filter == 'expired') $search_status .= '&filter=expired'; if ($filter == 'notexpired') $search_status .= '&filter=notexpired'; @@ -598,8 +596,7 @@ while ($i < min($num, $limit)) print $obj->label ? ' - '.dol_trunc($obj->label, 16) : ''; if (!empty($obj->description) && !empty($conf->global->PRODUCT_DESC_IN_LIST)) print '
'.dol_nl2br($obj->description); } - else - { + else { if ($obj->type == 0) print img_object($obj->description, 'product').' '.dol_trunc($obj->description, 24); if ($obj->type == 1) print img_object($obj->description, 'service').' '.dol_trunc($obj->description, 24); } @@ -725,8 +722,7 @@ while ($i < min($num, $limit)) // If contract is draft, we say line is also draft print $contractstatic->LibStatut(0, 5); } - else - { + else { print $staticcontratligne->LibStatut($obj->statut, 5, ($obj->date_fin_validite && $db->jdate($obj->date_fin_validite) < $now) ? 1 : 0); } print ''; diff --git a/htdocs/cron/admin/cron.php b/htdocs/cron/admin/cron.php index b9c00885d69..fe5b015214a 100644 --- a/htdocs/cron/admin/cron.php +++ b/htdocs/cron/admin/cron.php @@ -51,8 +51,7 @@ if (!empty($actionsave)) $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } @@ -97,8 +96,7 @@ if (empty($conf->global->CRON_DISABLE_KEY_CHANGE)) if (!empty($conf->use_javascript_ajax)) print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"'); } -else -{ +else { print (!empty($conf->global->CRON_KEY) ? $conf->global->CRON_KEY : ''); print ''; } diff --git a/htdocs/cron/card.php b/htdocs/cron/card.php index 9ebbcda6c44..0d2455ae620 100644 --- a/htdocs/cron/card.php +++ b/htdocs/cron/card.php @@ -66,15 +66,13 @@ if (!empty($cancel)) { $action = ''; } - else - { + else { if ($backtourl) { header("Location: ".$backtourl); exit; } - else - { + else { header("Location: ".DOL_URL_ROOT.'/cron/list.php'); exit; } @@ -91,8 +89,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->cron->del setEventMessages($object->error, $object->errors, 'errors'); $action = 'edit'; } - else - { + else { Header("Location: ".DOL_URL_ROOT.'/cron/list.php'); exit; } @@ -106,8 +103,7 @@ if ($action == 'confirm_execute' && $confirm == "yes" && $user->rights->cron->ex setEventMessages('Security key '.$securitykey.' is wrong', null, 'errors'); $action = ''; } - else - { + else { $now = dol_now(); // Date we start $result = $object->run_jobs($user->login); @@ -117,8 +113,7 @@ if ($action == 'confirm_execute' && $confirm == "yes" && $user->rights->cron->ex setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } - else - { + else { $res = $object->reprogram_jobs($user->login, $now); if ($res > 0) { @@ -126,8 +121,7 @@ if ($action == 'confirm_execute' && $confirm == "yes" && $user->rights->cron->ex else setEventMessages($langs->trans("JobFinished"), null, 'mesgs'); $action = ''; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } @@ -416,8 +410,7 @@ if (($action == "create") || ($action == "edit")) { print ""; } - else - { + else { print ""; } } @@ -473,8 +466,7 @@ if (($action == "create") || ($action == "edit")) { print $form->selectDate($object->datestart, 'datestart', 1, 1, '', "cronform"); } - else - { + else { print $form->selectDate('', 'datestart', 1, 1, '', "cronform"); } print ""; @@ -527,8 +519,7 @@ if (($action == "create") || ($action == "edit")) { print $form->selectDate($object->datenextrun, 'datenextrun', 1, 1, '', "cronform"); } - else - { + else { print $form->selectDate(-1, 'datenextrun', 1, 1, '', "cronform"); } print ""; @@ -548,8 +539,7 @@ if (($action == "create") || ($action == "edit")) print "\n"; } -else -{ +else { /* * view card */ @@ -622,8 +612,7 @@ else { print $langs->trans("AllEntities"); } - else - { + else { $mc->getInfo($object->entity); print $mc->label; } diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index 92a132a6789..f3c02c72cbb 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -280,8 +280,7 @@ class Cronjob extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return $this->id; } @@ -378,8 +377,7 @@ class Cronjob extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -518,8 +516,7 @@ class Cronjob extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -655,8 +652,7 @@ class Cronjob extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -697,8 +693,7 @@ class Cronjob extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -753,8 +748,7 @@ class Cronjob extends CommonObject $this->db->commit(); return $object->id; } - else - { + else { $this->db->rollback(); return -1; } @@ -895,8 +889,7 @@ class Cronjob extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -952,8 +945,7 @@ class Cronjob extends CommonObject $conf->entity = $savcurrententity; return -1; } - else - { + else { if (empty($user->id)) { $this->error = " User user login:".$userlogin." do not exists"; @@ -1057,8 +1049,7 @@ class Cronjob extends CommonObject { $result = call_user_func(array($object, $this->methodename), $this->params); } - else - { + else { $result = call_user_func_array(array($object, $this->methodename), $params_arr); } @@ -1079,8 +1070,7 @@ class Cronjob extends CommonObject $retval = $this->lastresult; $error++; } - else - { + else { dol_syslog(get_class($this)."::run_jobs END"); $this->lastoutput = $object->output; $this->lastresult = var_export($result, true); @@ -1117,8 +1107,7 @@ class Cronjob extends CommonObject { $result = call_user_func($this->methodename, $this->params); } - else - { + else { $result = call_user_func_array($this->methodename, $params_arr); } @@ -1132,8 +1121,7 @@ class Cronjob extends CommonObject $retval = $this->lastresult; $error++; } - else - { + else { $this->lastoutput = var_export($result, true); $this->lastresult = var_export($result, true); // Return code $retval = $this->lastresult; @@ -1202,8 +1190,7 @@ class Cronjob extends CommonObject dol_syslog(get_class($this)."::reprogram_jobs ".$this->error, LOG_ERR); return -1; } - else - { + else { if (empty($user->id)) { $this->error = " User user login:".$userlogin." do not exists"; @@ -1230,8 +1217,7 @@ class Cronjob extends CommonObject // TODO For exact frequency (every month, every year, ...), use instead a dol_time_plus_duree($time, $duration_value, $duration_unit) } } - else - { + else { //$this->datenextrun=$this->datenextrun + ($this->frequency * $this->unitfrequency); dol_syslog(get_class($this)."::reprogram_jobs datenextrun is already in future, we do not change it"); } diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index e9afad3b48b..a91dd4b9d66 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -133,8 +133,7 @@ if (empty($reshook)) setEventMessages('Security key '.$securitykey.' is wrong', null, 'errors'); $action = ''; } - else - { + else { $object = new Cronjob($db); $job = $object->fetch($id); @@ -156,8 +155,7 @@ if (empty($reshook)) } $action = ''; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } @@ -197,8 +195,7 @@ if (empty($reshook)) //else dol_print_error($db, 'Bad value for massaction'); if ($result < 0) setEventMessages($tmpcron->error, $tmpcron->errors, 'errors'); } - else - { + else { $error++; } } @@ -445,8 +442,7 @@ if ($num > 0) print $object->getNomUrl(0, '', 1); $object->ref = $obj->rowid; } - else - { + else { //print $langs->trans('CronNone'); } print ''; @@ -587,8 +583,7 @@ if ($num > 0) $i++; } } -else -{ +else { print ''.$langs->trans('CronNoJobs').''; } diff --git a/htdocs/dav/dav.class.php b/htdocs/dav/dav.class.php index 60912b86a8a..673c42e27a0 100644 --- a/htdocs/dav/dav.class.php +++ b/htdocs/dav/dav.class.php @@ -89,8 +89,7 @@ class CdavLib LEFT JOIN '.MAIN_DB_PREFIX.'socpeople AS sp ON (sp.fk_soc = sc.fk_soc AND sp.rowid = a.fk_contact) LEFT JOIN '.MAIN_DB_PREFIX.'actioncomm_cdav AS ac ON (a.id = ac.fk_object)'; } - else - { + else { $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe AS s ON (s.rowid = a.fk_soc) LEFT JOIN '.MAIN_DB_PREFIX.'socpeople AS sp ON (sp.rowid = a.fk_contact) LEFT JOIN '.MAIN_DB_PREFIX.'actioncomm_cdav AS ac ON (a.id = ac.fk_object)'; @@ -106,8 +105,7 @@ class CdavLib { $sql .= ' AND a.id = '.intval($oid); } - else - { + else { $sql .= ' AND (a.id = '.intval($oid).' OR ac.uuidext = \''.$this->db->escape($ouri).'\')'; } } @@ -161,8 +159,7 @@ class CdavLib if ($obj->percent == -1 && trim($obj->datep) != '') $type = 'VEVENT'; - else - $type = 'VTODO'; + else $type = 'VTODO'; $timezone = date_default_timezone_get(); @@ -176,8 +173,7 @@ class CdavLib $caldata .= "DTSTAMP:".gmdate('Ymd\THis', strtotime($obj->lastupd))."Z\n"; if ($obj->sourceuid == '') $caldata .= "UID:".$obj->id.'-ev-'.$calid.'-cal-'.constant('CDAV_URI_KEY')."\n"; - else - $caldata .= "UID:".$obj->sourceuid."\n"; + else $caldata .= "UID:".$obj->sourceuid."\n"; $caldata .= "SUMMARY:".$obj->label."\n"; $caldata .= "LOCATION:".$location."\n"; $caldata .= "PRIORITY:".$obj->priority."\n"; @@ -188,21 +184,18 @@ class CdavLib { if (trim($obj->datep2) != '') $caldata .= "DTEND;VALUE=DATE:".date('Ymd', strtotime($obj->datep2) + 1)."\n"; - else - $caldata .= "DTEND;VALUE=DATE:".date('Ymd', strtotime($obj->datep) + (25 * 3600))."\n"; + else $caldata .= "DTEND;VALUE=DATE:".date('Ymd', strtotime($obj->datep) + (25 * 3600))."\n"; } elseif (trim($obj->datep2) != '') $caldata .= "DUE;VALUE=DATE:".date('Ymd', strtotime($obj->datep2) + 1)."\n"; } - else - { + else { $caldata .= "DTSTART;TZID=".$timezone.":".strtr($obj->datep, array(" "=>"T", ":"=>"", "-"=>""))."\n"; if ($type == 'VEVENT') { if (trim($obj->datep2) != '') $caldata .= "DTEND;TZID=".$timezone.":".strtr($obj->datep2, array(" "=>"T", ":"=>"", "-"=>""))."\n"; - else - $caldata .= "DTEND;TZID=".$timezone.":".strtr($obj->datep, array(" "=>"T", ":"=>"", "-"=>""))."\n"; + else $caldata .= "DTEND;TZID=".$timezone.":".strtr($obj->datep, array(" "=>"T", ":"=>"", "-"=>""))."\n"; } elseif (trim($obj->datep2) != '') $caldata .= "DUE;TZID=".$timezone.":".strtr($obj->datep2, array(" "=>"T", ":"=>"", "-"=>""))."\n"; @@ -210,8 +203,7 @@ class CdavLib $caldata .= "CLASS:PUBLIC\n"; if ($obj->transparency == 1) $caldata .= "TRANSP:TRANSPARENT\n"; - else - $caldata .= "TRANSP:OPAQUE\n"; + else $caldata .= "TRANSP:OPAQUE\n"; if ($type == 'VEVENT') $caldata .= "STATUS:CONFIRMED\n"; @@ -219,8 +211,7 @@ class CdavLib $caldata .= "STATUS:NEEDS-ACTION\n"; elseif ($obj->percent == 100) $caldata .= "STATUS:COMPLETED\n"; - else - { + else { $caldata .= "STATUS:IN-PROCESS\n"; $caldata .= "PERCENT-COMPLETE:".$obj->percent."\n"; } @@ -285,8 +276,7 @@ class CdavLib 'component' => strpos($calendardata, 'BEGIN:VEVENT') > 0 ? 'vevent' : 'vtodo', ); } - else - { + else { $calevents[] = array( // 'calendardata' => $calendardata, not necessary because etag+size are present 'uri' => $obj->id.'-ev-'.constant('CDAV_URI_KEY'), diff --git a/htdocs/dav/dav.lib.php b/htdocs/dav/dav.lib.php index b306ec7161a..bb4835c4d52 100644 --- a/htdocs/dav/dav.lib.php +++ b/htdocs/dav/dav.lib.php @@ -26,8 +26,7 @@ if (!defined('CDAV_CONTACT_TAG')) { if (isset($conf->global->CDAV_CONTACT_TAG)) define('CDAV_CONTACT_TAG', $conf->global->CDAV_CONTACT_TAG); - else - define('CDAV_CONTACT_TAG', ''); + else define('CDAV_CONTACT_TAG', ''); } // define CDAV_URI_KEY if not @@ -35,8 +34,7 @@ if (!defined('CDAV_URI_KEY')) { if (isset($conf->global->CDAV_URI_KEY)) define('CDAV_URI_KEY', $conf->global->CDAV_URI_KEY); - else - define('CDAV_URI_KEY', substr(md5($_SERVER['HTTP_HOST']), 0, 8)); + else define('CDAV_URI_KEY', substr(md5($_SERVER['HTTP_HOST']), 0, 8)); } diff --git a/htdocs/debugbar/class/DataCollector/DolLogsCollector.php b/htdocs/debugbar/class/DataCollector/DolLogsCollector.php index fd9f993e1e8..03d91fff140 100644 --- a/htdocs/debugbar/class/DataCollector/DolLogsCollector.php +++ b/htdocs/debugbar/class/DataCollector/DolLogsCollector.php @@ -78,8 +78,7 @@ class DolLogsCollector extends MessagesCollector { $this->getStorageLogs($this->path); } - else - { + else { $log_levels = $this->getLevels(); foreach ($conf->logbuffer as $line) { diff --git a/htdocs/ecm/ajax/ecmdatabase.php b/htdocs/ecm/ajax/ecmdatabase.php index 9f4820cd723..91564ec8f80 100644 --- a/htdocs/ecm/ajax/ecmdatabase.php +++ b/htdocs/ecm/ajax/ecmdatabase.php @@ -115,14 +115,12 @@ if (isset($action) && !empty($action)) $fk_parent = $parentdirisindatabase; //break; // We found parent, we can stop the while loop } - else - { + else { dol_syslog("No"); //print "No
\n"; } } - else - { + else { dol_syslog("Parent is root"); $fk_parent = 0; // Parent is root } @@ -149,8 +147,7 @@ if (isset($action) && !empty($action)) //var_dump($sqltree); $adirwascreated = 1; } - else - { + else { dol_syslog("Failed to create directory ".$ecmdirtmp->label, LOG_ERR); } } diff --git a/htdocs/ecm/class/ecmdirectory.class.php b/htdocs/ecm/class/ecmdirectory.class.php index 3bddd70bfaa..fc450e9864e 100644 --- a/htdocs/ecm/class/ecmdirectory.class.php +++ b/htdocs/ecm/class/ecmdirectory.class.php @@ -165,8 +165,7 @@ class EcmDirectory // extends CommonObject dol_syslog(get_class($this)."::create ".$this->error, LOG_WARNING); return -1; } - else - { + else { $this->db->begin(); // Insert request @@ -208,14 +207,12 @@ class EcmDirectory // extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = "Error ".$this->db->lasterror(); $this->db->rollback(); return -1; @@ -274,8 +271,7 @@ class EcmDirectory // extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -303,8 +299,7 @@ class EcmDirectory // extends CommonObject $this->error = "Error ".$this->db->lasterror(); return -1; } - else - { + else { if (preg_match('/[0-9]+/', $value)) $this->cachenbofdoc = (int) $value; elseif ($value == '+') $this->cachenbofdoc++; elseif ($value == '-') $this->cachenbofdoc--; @@ -359,8 +354,7 @@ class EcmDirectory // extends CommonObject return $obj ? 1 : 0; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -399,8 +393,7 @@ class EcmDirectory // extends CommonObject $this->error = "Error ".$this->db->lasterror(); return -2; } - else - { + else { // Call trigger $result = $this->call_trigger('MYECMDIR_DELETE', $user); if ($result < 0) @@ -418,8 +411,7 @@ class EcmDirectory // extends CommonObject { $result = @dol_delete_dir_recursive($file, 0, 0); } - else - { + else { $result = @dol_delete_dir($file, 0); } } @@ -428,8 +420,7 @@ class EcmDirectory // extends CommonObject { $this->db->commit(); } - else - { + else { $this->error = 'ErrorFailToDeleteDir'; dol_syslog(get_class($this)."::delete ".$this->error, LOG_ERR); $this->db->rollback(); @@ -565,8 +556,7 @@ class EcmDirectory // extends CommonObject } return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -673,8 +663,7 @@ class EcmDirectory // extends CommonObject //print "this->cats[$i]['id_children'] est deja un tableau de $newelem elements
"; $this->cats[$obj->rowid]['id_children'][$newelempos] = $obj->rowid_fille; } - else - { + else { //print "this->cats[".$obj->rowid."]['id_children'] n'est pas encore un tableau
"; $this->cats[$obj->rowid]['id_children'] = array($obj->rowid_fille); } @@ -682,8 +671,7 @@ class EcmDirectory // extends CommonObject $i++; } } - else - { + else { dol_print_error($this->db); return -1; } @@ -723,8 +711,7 @@ class EcmDirectory // extends CommonObject $this->cats[$id_categ]['fulllabel'] = $this->cats[$this->cats[$id_categ]['id_mere']]['fulllabel']; $this->cats[$id_categ]['fulllabel'] .= ' >> '.$this->cats[$id_categ]['label']; } - else - { + else { $this->cats[$id_categ]['fullpath'] = '_'.$id_categ; $this->cats[$id_categ]['fullrelativename'] = $this->cats[$id_categ]['label']; $this->cats[$id_categ]['fulllabel'] = $this->cats[$id_categ]['label']; @@ -768,8 +755,7 @@ class EcmDirectory // extends CommonObject { $sql .= " WHERE rowid = ".$this->id; } - else - { + else { $sql .= " WHERE entity = ".$conf->entity; } @@ -780,8 +766,7 @@ class EcmDirectory // extends CommonObject $this->cachenbofdoc = count($filelist); return $this->cachenbofdoc; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -813,8 +798,7 @@ class EcmDirectory // extends CommonObject { $this->errors = array_merge($this->errors, $interface->errors); } - else - { + else { $this->errors = $interface->errors; } } diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php index 6921b8aabd6..e24af560143 100644 --- a/htdocs/ecm/class/ecmfiles.class.php +++ b/htdocs/ecm/class/ecmfiles.class.php @@ -200,15 +200,13 @@ class EcmFiles extends CommonObject $obj = $this->db->fetch_object($resql); $maxposition = (int) $obj->maxposition; } - else - { + else { $this->errors[] = 'Error '.$this->db->lasterror(); return --$error; } $maxposition = $maxposition + 1; } - else - { + else { $maxposition = $this->position; } diff --git a/htdocs/ecm/class/htmlecm.form.class.php b/htdocs/ecm/class/htmlecm.form.class.php index de9f289eb79..e1e7bf40873 100644 --- a/htdocs/ecm/class/htmlecm.form.class.php +++ b/htdocs/ecm/class/htmlecm.form.class.php @@ -81,8 +81,7 @@ class FormEcm if (is_array($cate_arbo)) { if (!count($cate_arbo)) $output .= ''; - else - { + else { $output .= ''; foreach ($cate_arbo as $key => $value) { @@ -91,8 +90,7 @@ class FormEcm { $add = 'selected '; } - else - { + else { $add = ''; } $output .= ''; diff --git a/htdocs/ecm/dir_add_card.php b/htdocs/ecm/dir_add_card.php index 4d6f2bdce5a..9eb95c1f198 100644 --- a/htdocs/ecm/dir_add_card.php +++ b/htdocs/ecm/dir_add_card.php @@ -57,7 +57,7 @@ if ($module == 'ecm') { $upload_dir = $conf->ecm->dir_output.'/'.$urlsection; } -else // For example $module == 'medias' +else // For example $module == 'medias' { $upload_dir = $conf->medias->multidir_output[$conf->entity]; } @@ -116,8 +116,7 @@ if ($action == 'add' && $permtoadd) header("Location: ".$backtopage); exit; } - else - { + else { header("Location: ".DOL_URL_ROOT.'/ecm/index.php?action=file_manager'.($module ? '&module='.$module : '')); exit; } @@ -156,7 +155,7 @@ if ($action == 'add' && $permtoadd) $action = 'create'; } } - else // For example $module == 'medias' + else // For example $module == 'medias' { $dirfornewdir = ''; if ($module == 'medias') @@ -178,8 +177,7 @@ if ($action == 'add' && $permtoadd) setEventMessages($langs->trans('ErrorFailToCreateDir', $label), null, 'errors'); $error++; } - else - { + else { setEventMessages($langs->trans("ECMSectionWasCreated", $label), null, 'mesgs'); } } @@ -193,8 +191,7 @@ if ($action == 'add' && $permtoadd) header("Location: ".$backtopage); exit; } - else - { + else { header("Location: ".DOL_URL_ROOT.'/ecm/index.php?action=file_manager'); exit; } @@ -302,8 +299,7 @@ if (empty($action) || $action == 'delete_section') { print ''.$langs->trans('Delete').''; } - else - { + else { print ''.$langs->trans('Delete').''; } print ''; diff --git a/htdocs/ecm/dir_card.php b/htdocs/ecm/dir_card.php index 9b3da9d8aae..78b7d16bb5d 100644 --- a/htdocs/ecm/dir_card.php +++ b/htdocs/ecm/dir_card.php @@ -75,7 +75,7 @@ if ($module == 'ecm') $relativepath = $ecmdir->getRelativePath(); $upload_dir = $conf->ecm->dir_output.'/'.$relativepath; } -else // For example $module == 'medias' +else // For example $module == 'medias' { $relativepath = $section; $upload_dir = $conf->medias->multidir_output[$conf->entity].'/'.$relativepath; @@ -111,8 +111,7 @@ if (GETPOST("sendit") && !empty($conf->global->MAIN_UPLOAD_DOC)) { $result = $ecmdir->changeNbOfFiles('+'); } - else - { + else { $langs->load("errors"); if ($resupload < 0) // Unknown error { @@ -121,14 +120,13 @@ if (GETPOST("sendit") && !empty($conf->global->MAIN_UPLOAD_DOC)) // Files infected by a virus setEventMessages($langs->trans("ErrorFileIsInfectedWithAVirus"), null, 'errors'); } - else // Known error + else // Known error { setEventMessages($langs->trans($resupload), null, 'errors'); } } } - else - { + else { // Failed transfer (exceeding the limit file?) $langs->load("errors"); setEventMessages($langs->trans("ErrorFailToCreateDir", $upload_dir), null, 'errors'); @@ -168,19 +166,16 @@ if ($action == 'confirm_deletedir' && $confirm == 'yes') setEventMessages($langs->trans($ecmdir->error, $ecmdir->label), null, 'errors'); } } - else - { + else { if ($deletedirrecursive) { $resbool = dol_delete_dir_recursive($upload_dir, 0, 1); } - else - { + else { $resbool = dol_delete_dir($upload_dir, 1); } if ($resbool) $result = 1; - else - { + else { $langs->load('errors'); setEventMessages($langs->trans("ErrorFailToDeleteDir", $upload_dir), null, 'errors'); $result = 0; @@ -204,8 +199,7 @@ if ($action == 'update' && !GETPOST('cancel', 'alpha')) $olddir = $ecmdir->getRelativePath(0); $olddir = $conf->ecm->dir_output.'/'.$olddir; } - else - { + else { $olddir = GETPOST('section', 'alpha'); $olddir = $conf->medias->multidir_output[$conf->entity].'/'.$relativepath; } @@ -243,19 +237,16 @@ if ($action == 'update' && !GETPOST('cancel', 'alpha')) $relativepath = $ecmdir->getRelativePath(); $upload_dir = $conf->ecm->dir_output.'/'.$relativepath; } - else - { + else { $db->rollback(); } } - else - { + else { $db->rollback(); setEventMessages($ecmdir->error, $ecmdir->errors, 'errors'); } } - else - { + else { $newdir = $conf->medias->multidir_output[$conf->entity].'/'.GETPOST('oldrelparentdir', 'alpha').'/'.GETPOST('label', 'alpha'); $result = @rename($olddir, $newdir); @@ -341,8 +332,7 @@ if ($module == 'ecm') $s = ' -> '.$s; $result = $tmpecmdir->fetch($tmpecmdir->fk_parent); } - else - { + else { $tmpecmdir = 0; } $i++; @@ -412,8 +402,7 @@ if ($module == 'ecm') { print dol_print_date($ecmdir->date_c, 'dayhour'); } -else -{ +else { //var_dump($upload_dir); print dol_print_date(dol_filemtime($upload_dir), 'dayhour'); } @@ -423,8 +412,7 @@ if ($module == 'ecm') { print '/ecm/'.$relativepath; } -else -{ +else { print '/'.$module.'/'.$relativepath; } print ''; @@ -478,8 +466,7 @@ if ($action != 'edit' && $action != 'delete') { print ''.$langs->trans('ECMAddSection').''; } - else - { + else { print ''.$langs->trans('ECMAddSection').''; } @@ -489,8 +476,7 @@ if ($action != 'edit' && $action != 'delete') { print ''.$langs->trans('Delete').''; } - else - { + else { print ''.$langs->trans('Delete').''; } /*} diff --git a/htdocs/ecm/file_card.php b/htdocs/ecm/file_card.php index 1c94fd1700b..bddbd0f6294 100644 --- a/htdocs/ecm/file_card.php +++ b/htdocs/ecm/file_card.php @@ -114,8 +114,7 @@ if ($cancel) header("Location: ".$backtopage); exit; } - else - { + else { header('Location: '.$_SERVER["PHP_SELF"].'?urlfile='.urlencode($urlfile).'§ion='.urlencode($section).($module ? '&module='.urlencode($module) : '')); exit; } @@ -171,8 +170,7 @@ if ($action == 'update') require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; $object->share = getRandomPassword(true); } - else - { + else { $object->share = ''; } @@ -185,8 +183,7 @@ if ($action == 'update') setEventMessages($object->error, $object->errors, 'warnings'); } } - else - { + else { // Call create to insert record $object->entity = $conf->entity; $object->filepath = preg_replace('/[\\/]+$/', '', $newdirrelativetodocument); @@ -212,8 +209,7 @@ if ($action == 'update') header('Location: '.$_SERVER["PHP_SELF"].'?urlfile='.urlencode($urlfile).'§ion='.urlencode($section)); exit; } - else - { + else { $db->rollback(); } } @@ -258,8 +254,7 @@ while ($tmpecmdir && $result > 0) $s = ' -> '.$s; $result = $tmpecmdir->fetch($tmpecmdir->fk_parent); } - else - { + else { $tmpecmdir = 0; } $i++; @@ -299,8 +294,7 @@ if (!empty($object->label)) { print $object->label; } -else -{ +else { print img_warning().' '.$langs->trans("FileNotYetIndexedInDatabase"); } print ''; @@ -349,19 +343,16 @@ if (!empty($object->share)) else print $fulllink; if ($action != 'edit') print ' '.$langs->trans("Download").''; // No target here } - else - { + else { print 'share ? ' checked="checked"' : '').' /> '; } } -else -{ +else { if ($action != 'edit') { print ''.$langs->trans("FileNotShared").''; } - else - { + else { print 'share ? ' checked="checked"' : '').' /> '; } } diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php index 43b9ca6dcce..09350d2b245 100644 --- a/htdocs/ecm/index.php +++ b/htdocs/ecm/index.php @@ -136,8 +136,7 @@ if ($action == 'confirm_deletefile') setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile', 'alpha')), null, 'mesgs'); $result = $ecmdir->changeNbOfFiles('-'); } - else - { + else { setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile', 'alpha')), null, 'errors'); } @@ -159,8 +158,7 @@ if ($action == 'add' && $user->rights->ecm->setup) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { setEventMessages('Error '.$langs->trans($ecmdir->error), null, 'errors'); $action = "create"; } @@ -247,14 +245,12 @@ if ($action == 'refreshmanual') $fk_parent = $parentdirisindatabase; //break; // We found parent, we can stop the while loop } - else - { + else { dol_syslog("No"); //print "No
\n"; } } - else - { + else { dol_syslog("Parent is root"); $fk_parent = 0; // Parent is root } @@ -281,8 +277,7 @@ if ($action == 'refreshmanual') //var_dump($sqltree); $adirwascreated = 1; } - else - { + else { dol_syslog("Failed to create directory ".$ecmdirtmp->label, LOG_ERR); } } diff --git a/htdocs/ecm/index_auto.php b/htdocs/ecm/index_auto.php index 39bdc9a1612..9b8c82ca05e 100644 --- a/htdocs/ecm/index_auto.php +++ b/htdocs/ecm/index_auto.php @@ -103,8 +103,7 @@ if ($action == 'add' && $user->rights->ecm->setup) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { setEventMessages('Error '.$langs->trans($ecmdir->error), null, 'errors'); $action = "create"; } @@ -222,14 +221,12 @@ if ($action == 'refreshmanual') $fk_parent = $parentdirisindatabase; //break; // We found parent, we can stop the while loop } - else - { + else { dol_syslog("No"); //print "No
\n"; } } - else - { + else { dol_syslog("Parent is root"); $fk_parent = 0; // Parent is root } @@ -256,8 +253,7 @@ if ($action == 'refreshmanual') //var_dump($sqltree); $adirwascreated = 1; } - else - { + else { dol_syslog("Failed to create directory ".$ecmdirtmp->label, LOG_ERR); } } @@ -419,8 +415,7 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i', $act print $val['label']; print ''; } - else - { + else { print ''; print $val['label']; print ''; diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index bf1a4e26de7..1cbd01d39e8 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -586,8 +586,7 @@ class EmailCollector extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -773,8 +772,7 @@ class EmailCollector extends CommonObject $tmpclass = $tmparray[0]; $tmpproperty = $tmparray[1]; } - else - { + else { $tmpproperty = $tmparray[0]; } if ($tmpclass && ($tmpclass != $object->element)) continue; // Property is for another type of object @@ -818,14 +816,12 @@ class EmailCollector extends CommonObject // Overwrite param $tmpproperty $object->$tmpproperty = isset($regforval[count($regforval) - 1]) ?trim($regforval[count($regforval) - 1]) : null; } - else - { + else { // Regex not found $object->$tmpproperty = null; } } - else - { + else { // Nothing can be done for this param $errorforthisaction++; $this->error = 'The extract rule to use has on an unknown source (must be HEADER, SUBJECT or BODY)'; @@ -863,8 +859,7 @@ class EmailCollector extends CommonObject else $object->$tmpproperty = $valuetouse; } } - else - { + else { $errorforthisaction++; $this->error = 'Bad syntax for description of action parameters: '.$actionparam; $this->errors[] = $this->error; @@ -1239,8 +1234,7 @@ class EmailCollector extends CommonObject $from = $reg[2]; $fromtext = $reg[1]; } - else - { + else { $from = $fromstring; $fromtext = ''; } @@ -1313,8 +1307,7 @@ class EmailCollector extends CommonObject { $result = $projectstatic->fetch($projectid); if ($result <= 0) $projectstatic->id = 0; - else - { + else { $projectid = $projectstatic->id; $projectfoundby = 'trackid ('.$trackid.')'; if (empty($contactid)) $contactid = $projectstatic->fk_contact; @@ -1326,8 +1319,7 @@ class EmailCollector extends CommonObject { $result = $contactstatic->fetch($contactid); if ($result <= 0) $contactstatic->id = 0; - else - { + else { $contactid = $contactstatic->id; $contactfoundby = 'trackid ('.$trackid.')'; if (empty($thirdpartyid)) $thirdpartyid = $contactstatic->fk_soc; @@ -1338,8 +1330,7 @@ class EmailCollector extends CommonObject { $result = $thirdpartystatic->fetch($thirdpartyid); if ($result <= 0) $thirdpartystatic->id = 0; - else - { + else { $thirdpartyid = $thirdpartystatic->id; $thirdpartyfoundby = 'trackid ('.$trackid.')'; } @@ -1409,8 +1400,7 @@ class EmailCollector extends CommonObject $this->error = "Action loadthirdparty or loadandcreatethirdparty has empty parameter. Must be 'SET:xxx' or 'EXTRACT:(body|subject):regex' to define how to extract data"; $this->errors[] = $this->error; } - else - { + else { $actionparam = $operation['actionparam']; $nametouseforthirdparty = ''; @@ -1445,15 +1435,13 @@ class EmailCollector extends CommonObject // Overwrite param $tmpproperty $nametouseforthirdparty = isset($regforval[count($regforval) - 1]) ?trim($regforval[count($regforval) - 1]) : null; } - else - { + else { // Regex not found $nametouseforthirdparty = null; } //var_dump($object->$tmpproperty);exit; } - else - { + else { // Nothing can be done for this param $errorforactions++; $this->error = 'The extract rule to use to load thirdparty has on an unknown source (must be HEADER, SUBJECT or BODY)'; @@ -1466,8 +1454,7 @@ class EmailCollector extends CommonObject //else $object->$tmpproperty = $reg[1]; $nametouseforthirdparty = $reg[2]; } - else - { + else { $errorforactions++; $this->error = 'Bad syntax for description of action parameters: '.$actionparam; $this->errors[] = $this->error; @@ -1511,8 +1498,7 @@ class EmailCollector extends CommonObject { $errorforactions++; } - else - { + else { $result = $thirdpartystatic->create($user); if ($result <= 0) { @@ -1598,8 +1584,7 @@ class EmailCollector extends CommonObject { $errorforactions++; } - else - { + else { $result = $actioncomm->create($user); if ($result <= 0) { @@ -1701,15 +1686,13 @@ class EmailCollector extends CommonObject { $errorforactions++; } - else - { + else { if (empty($projecttocreate->ref) || (is_numeric($projecttocreate->ref) && $projecttocreate->ref <= 0)) { $errorforactions++; $this->error = 'Failed to create project: Can\'t get a valid value for the field ref with numbering template = '.$modele.', thirdparty id = '.$thirdpartystatic->id; } - else - { + else { // Create project $result = $projecttocreate->create($user); if ($result <= 0) @@ -1849,15 +1832,13 @@ class EmailCollector extends CommonObject { $errorforactions++; } - else - { + else { if (is_numeric($tickettocreate->ref) && $tickettocreate->ref <= 0) { $errorforactions++; $this->error = 'Failed to create ticket: Can\'t get a valid value for the field ref with numbering template = '.$modele.', thirdparty id = '.$thirdpartystatic->id; } - else - { + else { // Create project $result = $tickettocreate->create($user); if ($result <= 0) @@ -1890,13 +1871,11 @@ class EmailCollector extends CommonObject dol_syslog(imap_last_error()); } } - else - { + else { dol_syslog("EmailCollector::doCollectOneCollector message ".$imapemail." to ".$connectstringtarget." was set to read", LOG_DEBUG); } } - else - { + else { $errorforemail++; } @@ -1921,8 +1900,7 @@ class EmailCollector extends CommonObject break; } } - else - { + else { $error++; $this->db->rollback(); @@ -1933,8 +1911,7 @@ class EmailCollector extends CommonObject dol_syslog("End of loop on emails", LOG_INFO, -1); } - else - { + else { $output = $langs->trans('NoNewEmailToProcess'); } @@ -2071,8 +2048,7 @@ class EmailCollector extends CommonObject // so append parts together with blank row. if (strtolower($p->subtype) == 'plain') $plainmsg .= trim($data)."\n\n"; - else - $htmlmsg .= $data."

"; + else $htmlmsg .= $data."

"; $charset = $params['charset']; // assume all parts are same charset } diff --git a/htdocs/emailcollector/class/emailcollectoraction.class.php b/htdocs/emailcollector/class/emailcollectoraction.class.php index d0d6239a7f2..b4fdf52ca5b 100644 --- a/htdocs/emailcollector/class/emailcollectoraction.class.php +++ b/htdocs/emailcollector/class/emailcollectoraction.class.php @@ -504,8 +504,7 @@ class EmailCollectorAction extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/emailcollector/class/emailcollectorfilter.class.php b/htdocs/emailcollector/class/emailcollectorfilter.class.php index 63521e81c3a..106d57c23c5 100644 --- a/htdocs/emailcollector/class/emailcollectorfilter.class.php +++ b/htdocs/emailcollector/class/emailcollectorfilter.class.php @@ -479,8 +479,7 @@ class EmailCollectorFilter extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 95b6f6208a5..cdc4da7fe51 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -266,8 +266,7 @@ if (empty($reshook)) $totalqty += $subtotalqty; } - else - { + else { // No detail were provided for lots if (!empty($_POST[$qty])) { @@ -296,8 +295,7 @@ if (empty($reshook)) $qty = "qtyl".$i.'_'.$j; } } - else - { + else { //var_dump(GETPOST($qty,'int')); var_dump($_POST); var_dump($batch);exit; //shipment line for product with no batch management and no multiple stock location if (GETPOST($qty, 'int') > 0) $totalqty += GETPOST($qty, 'int'); @@ -342,8 +340,7 @@ if (empty($reshook)) } } } - else - { + else { if (GETPOST($qty, 'int') > 0 || (GETPOST($qty, 'int') == 0 && $conf->global->SHIPMENT_GETS_ALL_ORDER_PRODUCTS)) { $ent = "entl".$i; @@ -361,8 +358,7 @@ if (empty($reshook)) } } } - else - { + else { // batch mode if ($batch_line[$i]['qty'] > 0) { @@ -389,8 +385,7 @@ if (empty($reshook)) } } } - else - { + else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("QtyToShip").'/'.$langs->transnoentitiesnoconv("Warehouse")), null, 'errors'); $error++; } @@ -401,8 +396,7 @@ if (empty($reshook)) header("Location: card.php?id=".$object->id); exit; } - else - { + else { $db->rollback(); $_GET["commande_id"] = GETPOST('commande_id', 'int'); $action = 'create'; @@ -420,8 +414,7 @@ if (empty($reshook)) header("Location: ".DOL_URL_ROOT.'/livraison/card.php?action=create_delivery&id='.$result); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -440,8 +433,7 @@ if (empty($reshook)) $langs->load("errors"); setEventMessages($langs->trans($object->error), $object->errors, 'errors'); } - else - { + else { // Define output language if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { @@ -470,8 +462,7 @@ if (empty($reshook)) { $result = $object->setStatut(-1); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -485,8 +476,7 @@ if (empty($reshook)) header("Location: ".DOL_URL_ROOT.'/expedition/index.php'); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -601,8 +591,7 @@ if (empty($reshook)) } } } - else - { + else { // delete single warehouse line $line->id = $line_id; if (!$error && $line->delete($user) < 0) @@ -618,8 +607,7 @@ if (empty($reshook)) header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id); exit(); } - else - { + else { setEventMessages($line->error, $line->errors, 'errors'); } } @@ -684,8 +672,7 @@ if (empty($reshook)) $error++; } } - else - { + else { setEventMessages($lotStock->error, $lotStock->errors, 'errors'); $error++; } @@ -738,14 +725,12 @@ if (empty($reshook)) $error++; } } - else - { + else { setEventMessages($line->error, $line->errors, 'errors'); $error++; } } - else - { + else { // create new line with new lot $line->origin_line_id = $lines[$i]->origin_line_id; $line->entrepot_id = $lotStock->warehouseid; @@ -761,15 +746,13 @@ if (empty($reshook)) } } } - else - { + else { setEventMessages($lotStock->error, $lotStock->errors, 'errors'); $error++; } } } - else - { + else { if ($lines[$i]->fk_product > 0) { // line without lot @@ -813,8 +796,7 @@ if (empty($reshook)) } } } - else - { + else { // Product no predefined $qty = "qtyl".$line_id; $line->id = $line_id; @@ -850,8 +832,7 @@ if (empty($reshook)) $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); } } - else - { + else { header('Location: '.$_SERVER['PHP_SELF'].'?id='.$object->id); // To redisplay the form being edited exit(); } @@ -1133,8 +1114,7 @@ if ($action == 'create') { print ''.$langs->trans("Warehouse").' ('.$langs->trans("Stock").')'; } - else - { + else { print ''.$langs->trans("Warehouse").' / '.$langs->trans("Batch").' ('.$langs->trans("Stock").')'; } } @@ -1195,8 +1175,7 @@ if ($action == 'create') print ''; } - else - { + else { print ""; if ($type == 1) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); @@ -1232,8 +1211,7 @@ if ($action == 'create') { $quantityToBeDelivered = 0; } - else - { + else { $quantityToBeDelivered = $quantityAsked - $quantityDelivered; } $warehouse_id = GETPOST('entrepot_id', 'int'); @@ -1289,8 +1267,7 @@ if ($action == 'create') } } } - else - { + else { print $langs->trans("Service"); } print ''; @@ -1321,8 +1298,7 @@ if ($action == 'create') } } } - else - { + else { // Product need lot print ''; // end line and start a new one for lot/serial print ''; @@ -1377,8 +1353,7 @@ if ($action == 'create') print ''; } } - else - { + else { print ''; print ''; print ' '; @@ -1390,8 +1365,7 @@ if ($action == 'create') } } } - else - { + else { // ship from multiple locations if (empty($conf->productbatch->enabled) || !$product->hasbatch()) { @@ -1440,8 +1414,7 @@ if ($action == 'create') print ''; print '('.$stock.')'; } - else - { + else { print $langs->trans("Service"); } print ''; @@ -1480,8 +1453,7 @@ if ($action == 'create') } } } - else - { + else { print ''; print ''; // end line and start a new one for lot/serial @@ -1553,8 +1525,7 @@ if ($action == 'create') } print ' '; } - else - { + else { print $langs->trans("NA"); } print ''; @@ -1569,14 +1540,12 @@ if ($action == 'create') $warehouseObject->fetch($warehouse_selected_id); print img_warning().' '.$langs->trans("NoProductToShipFoundIntoStock", $warehouseObject->label); } - else - { + else { if ($line->fk_product) print img_warning().' '.$langs->trans("StockTooLow"); else print ''; } } - else - { + else { print $langs->trans("Service"); } print ''; @@ -1617,8 +1586,7 @@ if ($action == 'create') print '
'; } - else - { + else { dol_print_error($db); } } @@ -1687,8 +1655,7 @@ elseif ($id || $ref) { $numref = $object->getNextNumRef($soc); } - else - { + else { $numref = $object->ref; } @@ -1834,8 +1801,7 @@ elseif ($id || $ref) print ''; print ''; } - else - { + else { print $object->date_delivery ? dol_print_date($object->date_delivery, 'dayhour') : ' '; } print ''; @@ -1858,8 +1824,7 @@ elseif ($id || $ref) print ' '; print ''; } - else - { + else { print $object->trueWeight; print ($object->trueWeight && $object->weight_units != '') ? ' '.measuringUnitString(0, "weight", $object->weight_units) : ''; } @@ -1893,8 +1858,7 @@ elseif ($id || $ref) print ' '; print ''; } - else - { + else { print $object->trueHeight; print ($object->trueHeight && $object->height_units != '') ? ' '.measuringUnitString(0, "size", $object->height_units) : ''; } @@ -1971,8 +1935,7 @@ elseif ($id || $ref) print ''; print ''; } - else - { + else { if ($object->shipping_method_id > 0) { // Get code using getLabelFromKey @@ -2004,8 +1967,7 @@ elseif ($id || $ref) { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); } - else - { + else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?id='.$object->id); } print ''; @@ -2065,8 +2027,7 @@ elseif ($id || $ref) { print $langs->trans("QtyToShip").' - '; } - else - { + else { print $langs->trans("QtyShipped").' - '; } if (!empty($conf->stock->enabled)) @@ -2079,14 +2040,12 @@ elseif ($id || $ref) } print ''; } - else - { + else { if ($object->statut <= 1) { print ''.$langs->trans("QtyToShip").''; } - else - { + else { print ''.$langs->trans("QtyShipped").''; } if (!empty($conf->stock->enabled)) @@ -2196,8 +2155,7 @@ elseif ($id || $ref) $prod->fetch($lines[$i]->fk_product); $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $lines[$i]->product_label; } - else - $label = (!empty($lines[$i]->label) ? $lines[$i]->label : $lines[$i]->product_label); + else $label = (!empty($lines[$i]->label) ? $lines[$i]->label : $lines[$i]->product_label); print ''; @@ -2231,8 +2189,7 @@ elseif ($id || $ref) } print "\n"; } - else - { + else { print ''; if ($lines[$i]->product_type == Product::TYPE_SERVICE) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); @@ -2343,14 +2300,12 @@ elseif ($id || $ref) print ''; } } - else - { + else { print ''; print ''.$langs->trans("NotEnoughStock").''; } } - else - { + else { print ''; print ''; // Qty to ship or shipped @@ -2365,8 +2320,7 @@ elseif ($id || $ref) print ''; } - else - { + else { // Qty to ship or shipped print ''.$lines[$i]->qty_shipped.''; @@ -2417,8 +2371,7 @@ elseif ($id || $ref) } print $form->textwithtooltip(img_picto('', 'object_barcode').' '.$langs->trans("DetailBatchNumber"), $detail); } - else - { + else { print $langs->trans("NA"); } print ''; @@ -2484,8 +2437,7 @@ elseif ($id || $ref) { print $lines[$i]->showOptionals($extrafields, 'edit', array('colspan'=>$colspan), $indiceAsked); } - else - { + else { print $lines[$i]->showOptionals($extrafields, 'view', array('colspan'=>$colspan), $indiceAsked); } } @@ -2526,8 +2478,7 @@ elseif ($id || $ref) { print ''.$langs->trans("Validate").''; } - else - { + else { print ''.$langs->trans("Validate").''; } } @@ -2540,8 +2491,7 @@ elseif ($id || $ref) { print ''.$langs->trans("ClassifyUnbilled").''; } - else - { + else { print ''.$langs->trans("ReOpen").''; } } diff --git a/htdocs/expedition/class/api_shipments.class.php b/htdocs/expedition/class/api_shipments.class.php index e337ee5ffb8..42cb273fbcd 100644 --- a/htdocs/expedition/class/api_shipments.class.php +++ b/htdocs/expedition/class/api_shipments.class.php @@ -399,8 +399,7 @@ class Shipments extends DolibarrApi if ($updateRes > 0) { return $this->get($id); } - else - { + else { throw new RestException(405, $this->shipment->error); } } @@ -436,8 +435,7 @@ class Shipments extends DolibarrApi { return $this->get($id); } - else - { + else { throw new RestException(500, $this->shipment->error); } } diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 1ccfe9944f7..3250ba8aa5e 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -252,14 +252,12 @@ class Expedition extends CommonObject { return $numref; } - else - { + else { dol_print_error($this->db, get_class($this)."::getNextNumRef ".$obj->error); return ""; } } - else - { + else { print $langs->trans("Error")." ".$langs->trans("Error_EXPEDITION_ADDON_NUMBER_NotDefined"); return ""; } @@ -366,8 +364,7 @@ class Expedition extends CommonObject $error++; } } - else - { // with batch management + else { // with batch management if (!$this->create_line_batch($this->lines[$i], $this->lines[$i]->array_options) > 0) { $error++; @@ -406,8 +403,7 @@ class Expedition extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR); @@ -417,24 +413,21 @@ class Expedition extends CommonObject return -1 * $error; } } - else - { + else { $error++; $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -3; } } - else - { + else { $error++; $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -2; } } - else - { + else { $error++; $this->error = $this->db->error()." - sql=$sql"; $this->db->rollback(); @@ -504,8 +497,7 @@ class Expedition extends CommonObject { $error++; } - else - { + else { // create shipment batch lines for stockLocation foreach ($tab as $detbatch) { @@ -647,15 +639,13 @@ class Expedition extends CommonObject return 1; } - else - { + else { dol_syslog(get_class($this).'::Fetch no expedition found', LOG_ERR); $this->error = 'Delivery with id '.$id.' not found'; return 0; } } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -707,8 +697,7 @@ class Expedition extends CommonObject { $numref = $this->getNextNumRef($soc); } - else - { + else { $numref = "EXP".$this->id; } $this->newref = dol_sanitizeFileName($numref); @@ -760,8 +749,7 @@ class Expedition extends CommonObject { $qty = $obj->qty; } - else - { + else { $qty = $obj->edbqty; } if ($qty <= 0) continue; @@ -784,8 +772,7 @@ class Expedition extends CommonObject break; } } - else - { + else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record. @@ -800,8 +787,7 @@ class Expedition extends CommonObject } } } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -2; @@ -876,8 +862,7 @@ class Expedition extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1 * $error; } @@ -908,8 +893,7 @@ class Expedition extends CommonObject { return $result; } - else - { + else { $this->error = $delivery->error; return $result; } @@ -968,8 +952,7 @@ class Expedition extends CommonObject $product->load_stock('warehouseopen'); $product_stock = $product->stock_warehouse[$entrepot_id]->real; } - else - $product_stock = $product->stock_reel; + else $product_stock = $product->stock_reel; $product_type = $product->type; if ($product_type == 0 && $product_stock < $qty) @@ -1165,8 +1148,7 @@ class Expedition extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -1261,8 +1243,7 @@ class Expedition extends CommonObject break; } } - else - { + else { // We increment stock of batches // We use warehouse selected for each line foreach ($lotArray as $lot) @@ -1278,8 +1259,7 @@ class Expedition extends CommonObject } } } - else - { + else { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } } @@ -1358,35 +1338,30 @@ class Expedition extends CommonObject return 1; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -3; } } - else - { + else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -2; }//*/ } - else - { + else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -1; } } - else - { + else { $this->db->rollback(); return -1; } @@ -1481,8 +1456,7 @@ class Expedition extends CommonObject break; } } - else - { + else { // We increment stock of batches // We use warehouse selected for each line foreach ($lotArray as $lot) @@ -1498,8 +1472,7 @@ class Expedition extends CommonObject } } } - else - { + else { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } } @@ -1584,35 +1557,30 @@ class Expedition extends CommonObject return 1; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -3; } } - else - { + else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -1; } } - else - { + else { $this->db->rollback(); return -1; } @@ -1770,8 +1738,7 @@ class Expedition extends CommonObject { $line->detail_batch = $newdetailbatch; } - else - { + else { $line->detail_batch = array_merge($line->detail_batch, $newdetailbatch); } } @@ -1782,8 +1749,7 @@ class Expedition extends CommonObject $this->lines[$lineindex] = $line; $lineindex++; } - else - { + else { $line->total_ht += $tabprice[0]; $line->total_localtax1 += $tabprice[9]; $line->total_localtax2 += $tabprice[10]; @@ -1797,8 +1763,7 @@ class Expedition extends CommonObject $this->db->free($resql); return 1; } - else - { + else { $this->error = $this->db->error(); return -3; } @@ -1831,14 +1796,12 @@ class Expedition extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = 'ErrorDeleteLineNotAllowedByObjectStatus'; return -2; } @@ -2039,14 +2002,12 @@ class Expedition extends CommonObject $this->date_delivery = $date_livraison; return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } } - else - { + else { return -2; } } @@ -2132,8 +2093,7 @@ class Expedition extends CommonObject $sql .= " VALUES ('".$this->db->escape($this->update['code'])."','".$this->db->escape($this->update['libelle'])."','".$this->db->escape($this->update['description'])."','".$this->db->escape($this->update['tracking'])."')"; $resql = $this->db->query($sql); } - else - { + else { $sql = "UPDATE ".MAIN_DB_PREFIX."c_shipment_mode SET"; $sql .= " code='".$this->db->escape($this->update['code'])."'"; $sql .= ",libelle='".$this->db->escape($this->update['libelle'])."'"; @@ -2208,8 +2168,7 @@ class Expedition extends CommonObject $url = str_replace('{TRACKID}', $value, $tracking); $this->tracking_url = sprintf(''.($value ? $value : 'url').'', $url, $url); } - else - { + else { $this->tracking_url = $value; } } @@ -2300,8 +2259,7 @@ class Expedition extends CommonObject { $qty = $obj->qty; } - else - { + else { $qty = $obj->edbqty; } if ($qty <= 0) continue; @@ -2322,8 +2280,7 @@ class Expedition extends CommonObject $error++; break; } } - else - { + else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record @@ -2336,8 +2293,7 @@ class Expedition extends CommonObject } } } - else - { + else { $this->error = $this->db->lasterror(); $error++; } @@ -2352,8 +2308,7 @@ class Expedition extends CommonObject } } } - else - { + else { dol_print_error($this->db); $error++; } @@ -2363,8 +2318,7 @@ class Expedition extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->statut = self::STATUS_VALIDATED; $this->db->rollback(); return -1; @@ -2408,8 +2362,7 @@ class Expedition extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->statut = self::STATUS_VALIDATED; $this->billed = 0; $this->db->rollback(); @@ -2477,8 +2430,7 @@ class Expedition extends CommonObject { $qty = $obj->qty; } - else - { + else { $qty = $obj->edbqty; } if ($qty <= 0) continue; @@ -2500,8 +2452,7 @@ class Expedition extends CommonObject $error++; break; } } - else - { + else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record @@ -2514,8 +2465,7 @@ class Expedition extends CommonObject } } } - else - { + else { $this->error = $this->db->lasterror(); $error++; } @@ -2538,8 +2488,7 @@ class Expedition extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->statut = self::STATUS_CLOSED; $this->billed = $oldbilled; $this->db->rollback(); @@ -2792,8 +2741,7 @@ class ExpeditionLigne extends CommonObjectLine return 1; } - else - { + else { $this->errors[] = $this->db->lasterror(); $this->error = $this->db->lasterror(); return -1; @@ -2886,8 +2834,7 @@ class ExpeditionLigne extends CommonObjectLine $this->db->rollback(); return -1 * $error; } - else - { + else { $error++; } } @@ -2947,8 +2894,7 @@ class ExpeditionLigne extends CommonObjectLine // End call triggers } } - else - { + else { $this->errors[] = $this->db->lasterror()." - sql=$sql"; $error++; } @@ -2957,8 +2903,7 @@ class ExpeditionLigne extends CommonObjectLine $this->db->commit(); return 1; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); @@ -3001,8 +2946,7 @@ class ExpeditionLigne extends CommonObjectLine $this->errors[] = 'ErrorBadParameters'; $error++; } - else - { + else { $batch = $this->detail_batch[0]->batch; $batch_id = $this->detail_batch[0]->fk_origin_stock; $expedition_batch_id = $this->detail_batch[0]->id; @@ -3057,8 +3001,7 @@ class ExpeditionLigne extends CommonObjectLine $this->errors[] = $this->db->lasterror()." - ExpeditionLineBatch::fetchAll"; $error++; } - else - { + else { // caculate new total line qty foreach ($lotArray as $lot) { @@ -3156,8 +3099,7 @@ class ExpeditionLigne extends CommonObjectLine $this->db->commit(); return 1; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR); diff --git a/htdocs/expedition/class/expeditionbatch.class.php b/htdocs/expedition/class/expeditionbatch.class.php index 6c9942dd9a8..131d2abc261 100644 --- a/htdocs/expedition/class/expeditionbatch.class.php +++ b/htdocs/expedition/class/expeditionbatch.class.php @@ -91,8 +91,7 @@ class ExpeditionLineBatch extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -136,8 +135,7 @@ class ExpeditionLineBatch extends CommonObject $this->fk_expeditiondet = $id_line_expdet; return $this->id; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR); @@ -167,8 +165,7 @@ class ExpeditionLineBatch extends CommonObject { return 1; } - else - { + else { return -1; } } @@ -231,8 +228,7 @@ class ExpeditionLineBatch extends CommonObject $db->free($resql); return $ret; } - else - { + else { dol_print_error($db); return -1; } diff --git a/htdocs/expedition/contact.php b/htdocs/expedition/contact.php index 36d471b59d3..1ea47ea199b 100644 --- a/htdocs/expedition/contact.php +++ b/htdocs/expedition/contact.php @@ -88,8 +88,7 @@ if ($action == 'addcontact' && $user->rights->expedition->creer) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { if ($objectsrc->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); diff --git a/htdocs/expedition/index.php b/htdocs/expedition/index.php index d3fec260d95..15dc8168a54 100644 --- a/htdocs/expedition/index.php +++ b/htdocs/expedition/index.php @@ -120,8 +120,7 @@ if ($resql) print ''; $i++; } - } else - { + } else { print ''.$langs->trans("None").''; } diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 999bde3fb32..b6de8adc74d 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -687,8 +687,7 @@ if ($resql) print showDimensionInBestUnit($tmparray['weight'], 0, "weight", $langs, isset($conf->global->MAIN_WEIGHT_DEFAULT_ROUND) ? $conf->global->MAIN_WEIGHT_DEFAULT_ROUND : -1, isset($conf->global->MAIN_WEIGHT_DEFAULT_UNIT) ? $conf->global->MAIN_WEIGHT_DEFAULT_UNIT : 'no'); print $form->textwithpicto('', $langs->trans('EstimatedWeight'), 1); } - else - { + else { print $object->trueWeight; print ($object->trueWeight && $object->weight_units != '') ? ' '.measuringUnitString(0, "weight", $object->weight_units) : ''; } @@ -804,8 +803,7 @@ if ($resql) print $formfile->showdocuments('massfilesarea_sendings', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index 75ee2ef4da3..1c874d402b5 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -377,8 +377,7 @@ if ($id > 0 || !empty($ref)) print ''; print ''; } - else - { + else { print dol_print_date($object->date_livraison, 'daytext'); if ($object->hasDelay() && !empty($object->date_livraison)) { print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning"); @@ -531,8 +530,7 @@ if ($id > 0 || !empty($ref)) { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); } - else - { + else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?id='.$object->id); } print ''; @@ -644,8 +642,7 @@ if ($id > 0 || !empty($ref)) { print ''.$langs->trans("RealStock").''; } - else - { + else { print ' '; } print "\n"; @@ -697,8 +694,7 @@ if ($id > 0 || !empty($ref)) $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $objp->product_label; } - else - $label = (!empty($objp->label) ? $objp->label : $objp->product_label); + else $label = (!empty($objp->label) ? $objp->label : $objp->product_label); print ''; print ''; // ancre pour retourner sur la ligne @@ -739,8 +735,7 @@ if ($id > 0 || !empty($ref)) print ''; } - else - { + else { print ""; if ($type == 1) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); @@ -776,8 +771,7 @@ if ($id > 0 || !empty($ref)) $toBeShippedTotal += $toBeShipped[$objp->fk_product]; print $toBeShipped[$objp->fk_product]; } - else - { + else { print '0 ('.$langs->trans("Service").')'; } print ''; @@ -799,8 +793,7 @@ if ($id > 0 || !empty($ref)) } print ''; } - else - { + else { print ' '; } print "\n"; @@ -844,8 +837,7 @@ if ($id > 0 || !empty($ref)) print ""; } - else - { + else { dol_print_error($db); } @@ -871,8 +863,7 @@ if ($id > 0 || !empty($ref)) print ' '.img_warning($langs->trans("WarningNoQtyLeftToSend")); } } - else - { + else { print ''.$langs->trans("CreateShipment").''; } } @@ -935,8 +926,7 @@ if ($id > 0 || !empty($ref)) $somethingshown = 1; } - else - { + else { print ''; @@ -945,8 +935,7 @@ if ($id > 0 || !empty($ref)) show_list_sending_receive('commande', $object->id); } - else - { + else { /* Order not found */ setEventMessages($langs->trans("NonExistentOrder"), null, 'errors'); } diff --git a/htdocs/expedition/stats/index.php b/htdocs/expedition/stats/index.php index db28b094e65..ce305ea41bb 100644 --- a/htdocs/expedition/stats/index.php +++ b/htdocs/expedition/stats/index.php @@ -75,8 +75,7 @@ if (!$user->rights->societe->client->voir || $user->socid) { $filenamenb = $dir.'/shipmentsnbinyear-'.$user->id.'-'.$year.'.png'; } -else -{ +else { $filenamenb = $dir.'/shipmentsnbinyear-'.$year.'.png'; } diff --git a/htdocs/expensereport/ajax/ajaxik.php b/htdocs/expensereport/ajax/ajaxik.php index b2c89f68e41..413bc061fbf 100644 --- a/htdocs/expensereport/ajax/ajaxik.php +++ b/htdocs/expensereport/ajax/ajaxik.php @@ -52,22 +52,18 @@ $fk_c_exp_tax_cat = GETPOST('fk_c_exp_tax_cat'); if (empty($fk_expense) || $fk_expense < 0) echo json_encode(array('error' => $langs->transnoentitiesnoconv('ErrorBadValueForParameter', $fk_expense, 'fk_expense'))); elseif (empty($fk_c_exp_tax_cat) || $fk_c_exp_tax_cat < 0) echo json_encode(array('error' => $langs->transnoentitiesnoconv('ErrorBadValueForParameter', $fk_c_exp_tax_cat, 'fk_c_exp_tax_cat'))); -else -{ +else { // @see ndfp.class.php:3576 (method: compute_total_km) $expense = new ExpenseReport($db); if ($expense->fetch($fk_expense) <= 0) echo json_encode(array('error' => $langs->transnoentitiesnoconv('ErrorRecordNotFound'), 'fk_expense' => $fk_expense)); - else - { + else { $userauthor = new User($db); if ($userauthor->fetch($expense->fk_user_author) <= 0) echo json_encode(array('error' => $langs->transnoentitiesnoconv('ErrorRecordNotFound'), 'fk_user_author' => $expense->fk_user_author)); - else - { + else { $range = ExpenseReportIk::getRangeByUser($userauthor, $fk_c_exp_tax_cat); if (empty($range)) echo json_encode(array('error' => $langs->transnoentitiesnoconv('ErrorRecordNotFound'), 'range' => $range)); - else - { + else { $ikoffset = price($range->ikoffset, 0, $langs, 1, -1, -1, $conf->currency); echo json_encode(array('up' => $range->coef, 'ikoffset' => $range->ikoffset, 'title' => $langs->transnoentitiesnoconv('ExpenseRangeOffset', $offset), 'comment' => 'offset should be apply on addline or updateline')); } diff --git a/htdocs/expensereport/ajax/ajaxprojet.php b/htdocs/expensereport/ajax/ajaxprojet.php index 2fdb0cd4fdb..57b86ac9c7f 100644 --- a/htdocs/expensereport/ajax/ajaxprojet.php +++ b/htdocs/expensereport/ajax/ajaxprojet.php @@ -77,12 +77,10 @@ if (GETPOST('fk_projet') != '') echo json_encode($return_arr); } - else - { + else { echo json_encode(array('nom'=>'Error', 'label'=>'Error', 'key'=>'Error', 'value'=>'Error')); } } -else -{ +else { echo json_encode(array('nom'=>'ErrorBadParameter', 'label'=>'ErrorBadParameter', 'key'=>'ErrorBadParameter', 'value'=>'ErrorBadParameter')); } diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 2a0f804b196..c4a2d176e59 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -178,8 +178,7 @@ if (empty($reshook)) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); } - else - { + else { if ($object->id > 0) { // Because createFromClone modifies the object, we must clone it so that we can restore it later if it fails @@ -191,8 +190,7 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $object = $orig; $action = ''; @@ -211,8 +209,7 @@ if (empty($reshook)) header("Location: index.php"); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -265,8 +262,7 @@ if (empty($reshook)) Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); $action = 'create'; @@ -298,8 +294,7 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$_POST['id']); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -357,8 +352,7 @@ if (empty($reshook)) $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $error++; } @@ -416,8 +410,7 @@ if (empty($reshook)) $mesg = $langs->trans('MailSuccessfulySent', $mailfile->getValidAddress($emailFrom, 2), $mailfile->getValidAddress($emailTo, 2)); setEventMessages($mesg, null, 'mesgs'); } - else - { + else { $langs->load("other"); if ($mailfile->error) { @@ -426,20 +419,17 @@ if (empty($reshook)) $mesg .= '
'.$mailfile->error; setEventMessages($mesg, null, 'errors'); } - else - { + else { setEventMessages('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', null, 'warnings'); } } } - else - { + else { setEventMessages($mailfile->error, $mailfile->errors, 'errors'); $action = ''; } } - else - { + else { setEventMessages($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), null, 'warnings'); $action = ''; } @@ -451,8 +441,7 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { $db->rollback(); } } @@ -543,8 +532,7 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { $langs->load("other"); if ($mailfile->error) { @@ -553,26 +541,22 @@ if (empty($reshook)) $mesg .= '
'.$mailfile->error; setEventMessages($mesg, null, 'errors'); } - else - { + else { setEventMessages('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', null, 'warnings'); } } } - else - { + else { setEventMessages($mailfile->error, $mailfile->errors, 'errors'); $action = ''; } } - else - { + else { setEventMessages($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), null, 'warnings'); $action = ''; } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -666,8 +650,7 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { $langs->load("other"); if ($mailfile->error) { @@ -676,26 +659,22 @@ if (empty($reshook)) $mesg .= '
'.$mailfile->error; setEventMessages($mesg, null, 'errors'); } - else - { + else { setEventMessages('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', null, 'warnings'); } } } - else - { + else { setEventMessages($mailfile->error, $mailfile->errors, 'errors'); $action = ''; } } - else - { + else { setEventMessages($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), null, 'warnings'); $action = ''; } } - else - { + else { setEventMessages($langs->trans("FailedtoSetToApprove"), null, 'warnings'); $action = ''; } @@ -787,8 +766,7 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { $langs->load("other"); if ($mailfile->error) { @@ -797,26 +775,22 @@ if (empty($reshook)) $mesg .= '
'.$mailfile->error; setEventMessages($mesg, null, 'errors'); } - else - { + else { setEventMessages('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', null, 'warnings'); } } } - else - { + else { setEventMessages($mailfile->error, $mailfile->errors, 'errors'); $action = ''; } } - else - { + else { setEventMessages($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), null, 'warnings'); $action = ''; } } - else - { + else { setEventMessages($langs->trans("FailedtoSetToDeny"), null, 'warnings'); $action = ''; } @@ -829,8 +803,7 @@ if (empty($reshook)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Comment")), null, 'errors'); } - else - { + else { $object = new ExpenseReport($db); $object->fetch($id); @@ -917,8 +890,7 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { $langs->load("other"); if ($mailfile->error) { @@ -927,32 +899,27 @@ if (empty($reshook)) $mesg .= '
'.$mailfile->error; setEventMessages($mesg, null, 'errors'); } - else - { + else { setEventMessages('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', null, 'warnings'); } } } - else - { + else { setEventMessages($mailfile->error, $mailfile->errors, 'errors'); $action = ''; } } - else - { + else { setEventMessages($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), null, 'warnings'); $action = ''; } } - else - { + else { setEventMessages($langs->trans("FailedToSetToCancel"), null, 'warnings'); $action = ''; } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -991,13 +958,11 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages("NOT_AUTHOR", '', 'errors'); } } @@ -1132,8 +1097,7 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { $langs->load("other"); if ($mailfile->error) { @@ -1142,26 +1106,22 @@ if (empty($reshook)) $mesg .= '
'.$mailfile->error; setEventMessages($mesg, null, 'errors'); } - else - { + else { setEventMessages('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', null, 'warnings'); } } } - else - { + else { setEventMessages($mailfile->error, $mailfile->errors, 'errors'); $action = ''; } } - else - { + else { setEventMessages($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), null, 'warnings'); $action = ''; } } - else - { + else { setEventMessages($langs->trans("FailedToSetPaid"), null, 'warnings'); $action = ''; } @@ -1313,8 +1273,7 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$_GET['id']); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -1408,8 +1367,7 @@ if (empty($reshook)) //header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); //exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -1497,8 +1455,7 @@ if ($action == 'create') $object = new ExpenseReport($db); $include_users = $object->fetch_users_approver_expensereport(); if (empty($include_users)) print img_warning().' '.$langs->trans("NobodyHasPermissionToValidateExpenseReport"); - else - { + else { $defaultselectuser = (empty($user->fk_user_expense_validator) ? $user->fk_user : $user->fk_user_expense_validator); // Will work only if supervisor has permission to approve so is inside include_users if (!empty($conf->global->EXPENSEREPORT_DEFAULT_VALIDATOR)) $defaultselectuser = $conf->global->EXPENSEREPORT_DEFAULT_VALIDATOR; // Can force default approver if (GETPOST('fk_user_validator', 'int') > 0) $defaultselectuser = GETPOST('fk_user_validator', 'int'); @@ -1559,8 +1516,7 @@ if ($action == 'create') print ''; } -else -{ +else { if ($id > 0 || $ref) { $result = $object->fetch($id, $ref); @@ -1602,8 +1558,7 @@ else { print ''; } - else - { + else { print ''; } @@ -1661,8 +1616,7 @@ else print ''; print ''; } - else - { + else { print ''; print ''.$langs->trans("VALIDOR").''; print ''; @@ -1698,8 +1652,7 @@ else print ''; } - else - { + else { dol_fiche_head($head, 'card', $langs->trans("ExpenseReport"), -1, 'trip'); // Clone confirmation @@ -1894,8 +1847,7 @@ else print ''.dol_print_date($object->date_cancel, 'dayhour').''; print ''; } - else - { + else { print ''; print ''.$langs->trans("ApprovedBy").''; print ''; @@ -2093,8 +2045,7 @@ else $db->free($resql); } - else - { + else { dol_print_error($db); } print ""; @@ -2201,8 +2152,7 @@ else { print price($line->value_unit_ht); } - else - { + else { $tmpvat = price2num(preg_replace('/\s*\(.*\)/', '', $line->vatrate)); $pricenettoshow = price2num($line->value_unit / (1 + $tmpvat / 100), 'MU'); print $pricenettoshow; @@ -2246,8 +2196,7 @@ else print ''; print ''; } - else - { + else { $modulepart = 'expensereport'; $thumbshown = 0; if (preg_match('/\.pdf$/i', $ecmfilesstatic->filename)) @@ -2625,8 +2574,7 @@ else dol_fiche_end(); } // end edit or not edit } // end of if result - else - { + else { dol_print_error($db); } } //fin si id > 0 @@ -2749,8 +2697,7 @@ if ($action != 'create' && $action != 'edit') { print '
'.$langs->trans('DoPayment').'
'; } - else - { + else { print ''; } } diff --git a/htdocs/expensereport/class/api_expensereports.class.php b/htdocs/expensereport/class/api_expensereports.class.php index 18fef29e04c..050a7902a43 100644 --- a/htdocs/expensereport/class/api_expensereports.class.php +++ b/htdocs/expensereport/class/api_expensereports.class.php @@ -412,8 +412,7 @@ class ExpenseReports extends DolibarrApi { return $this->get($id); } - else - { + else { throw new RestException(500, $this->expensereport->error); } } diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 70d8a3d9b59..124a1fe4e7d 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -352,27 +352,23 @@ class ExpenseReport extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -4; } } - else - { + else { $this->db->rollback(); return -3; } } - else - { + else { dol_syslog(get_class($this)."::create error ".$this->error, LOG_ERR); $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->lasterror()." sql=".$sql; $this->db->rollback(); return -1; @@ -441,8 +437,7 @@ class ExpenseReport extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -1; } @@ -505,15 +500,13 @@ class ExpenseReport extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -2; } } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -1; @@ -606,13 +599,11 @@ class ExpenseReport extends CommonObject return $result; } - else - { + else { return 0; } } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -659,21 +650,18 @@ class ExpenseReport extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -2; } } - else - { + else { $this->db->commit(); return 0; } } - else - { + else { $this->db->rollback(); dol_print_error($this->db); return -1; @@ -781,8 +769,7 @@ class ExpenseReport extends CommonObject } $this->db->free($resql); } - else - { + else { dol_print_error($this->db); } } @@ -947,8 +934,7 @@ class ExpenseReport extends CommonObject print ' '; print ''; } - else - { + else { $this->error = $db->lasterror(); return -1; } @@ -992,14 +978,13 @@ class ExpenseReport extends CommonObject if ($result): $this->db->free($result); return 1; - else: + else : $this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::recalculer: Error ".$this->error, LOG_ERR); return -3; endif; } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::recalculer: Error ".$this->error, LOG_ERR); return -3; @@ -1032,8 +1017,7 @@ class ExpenseReport extends CommonObject { $sql .= ' ORDER BY de.rang ASC, de.rowid ASC'; } - else - { + else { $sql .= ' ORDER BY de.rang ASC, de.date ASC'; } @@ -1083,8 +1067,7 @@ class ExpenseReport extends CommonObject $this->db->free($resql); return 1; } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::fetch_lines: Error ".$this->error, LOG_ERR); return -3; @@ -1114,16 +1097,14 @@ class ExpenseReport extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->error()." sql=".$sql; dol_syslog(get_class($this)."::delete ".$this->error, LOG_ERR); $this->db->rollback(); return -6; } } - else - { + else { $this->error = $this->db->error()." sql=".$sql; dol_syslog(get_class($this)."::delete ".$this->error, LOG_ERR); $this->db->rollback(); @@ -1159,8 +1140,7 @@ class ExpenseReport extends CommonObject { $num = $this->getNextNumRef(); } - else - { + else { $num = $this->ref; } if (empty($num) || $num < 0) return -1; @@ -1244,15 +1224,13 @@ class ExpenseReport extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -2; } } - else - { + else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; @@ -1294,14 +1272,12 @@ class ExpenseReport extends CommonObject { return 1; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } } - else - { + else { dol_syslog(get_class($this)."::set_save_from_refuse expensereport already with save status", LOG_WARNING); } } @@ -1346,22 +1322,19 @@ class ExpenseReport extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -2; } } - else - { + else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; } } - else - { + else { dol_syslog(get_class($this)."::setApproved expensereport already with approve status", LOG_WARNING); } @@ -1413,22 +1386,19 @@ class ExpenseReport extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -2; } } - else - { + else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; } } - else - { + else { dol_syslog(get_class($this)."::setDeny expensereport already with refuse status", LOG_WARNING); } } @@ -1474,22 +1444,19 @@ class ExpenseReport extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -2; } } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -1; } } - else - { + else { dol_syslog(get_class($this)."::set_unpaid expensereport already with unpaid status", LOG_WARNING); } } @@ -1538,22 +1505,19 @@ class ExpenseReport extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -2; } } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -1; } } - else - { + else { dol_syslog(get_class($this)."::set_cancel expensereport already with cancel status", LOG_WARNING); } } @@ -1597,16 +1561,14 @@ class ExpenseReport extends CommonObject { return $numref; } - else - { + else { $this->error = $obj->error; $this->errors = $obj->errors; //dol_print_error($this->db,get_class($this)."::getNextNumRef ".$obj->error); return -1; } } - else - { + else { $this->error = "Error_EXPENSEREPORT_ADDON_NotDefined"; return -2; } @@ -1703,7 +1665,7 @@ class ExpenseReport extends CommonObject $result = $this->db->query($sql); if ($result): return 1; - else: + else : $this->error = $this->db->error(); return -1; endif; @@ -1733,7 +1695,7 @@ class ExpenseReport extends CommonObject $result = $this->db->query($sql); if ($result): return 1; - else: + else : $this->error = $this->db->error(); return -1; endif; @@ -1823,22 +1785,19 @@ class ExpenseReport extends CommonObject $this->db->commit(); return $this->line->id; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->line->error; dol_syslog(get_class($this)."::addline error=".$this->error, LOG_ERR); $this->db->rollback(); return -2; } } - else - { + else { dol_syslog(get_class($this)."::addline status of expense report must be Draft to allow use of ->addline()", LOG_ERR); $this->error = 'ErrorExpenseNotDraft'; return -3; @@ -1888,8 +1847,7 @@ class ExpenseReport extends CommonObject $new_current_total_ttc -= $amount_to_test - $rule->amount; // ex, entered 16€, limit 12€, subtracts 4€; $rule_warning_message_tab[] = $langs->trans('ExpenseReportConstraintViolationError', $rule->id, price($amount_to_test, 0, $langs, 1, -1, -1, $conf->currency), price($rule->amount, 0, $langs, 1, -1, -1, $conf->currency), $langs->trans('by'.$rule->code_expense_rules_type, price($new_current_total_ttc, 0, $langs, 1, -1, -1, $conf->currency))); } - else - { + else { $this->error = 'ExpenseReportConstraintViolationWarning'; $this->errors[] = $this->error; @@ -1985,8 +1943,7 @@ class ExpenseReport extends CommonObject $num = $this->db->num_rows($resql); if ($num > 0) return true; } - else - { + else { dol_print_error($this->db); } @@ -2106,8 +2063,7 @@ class ExpenseReport extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->error = $this->line->error; $this->errors = $this->line->errors; $this->db->rollback(); @@ -2188,13 +2144,11 @@ class ExpenseReport extends CommonObject if ($existe) return 1; else return 0; } - else - { + else { return 0; } } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::periode_existe Error ".$this->error, LOG_ERR); return -1; @@ -2236,8 +2190,7 @@ class ExpenseReport extends CommonObject } return $users_validator; } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::fetch_users_approver_expensereport Error ".$this->error, LOG_ERR); return -1; @@ -2302,8 +2255,7 @@ class ExpenseReport extends CommonObject $i++; } } - else - { + else { dol_print_error($this->db); } return $ret; @@ -2335,8 +2287,7 @@ class ExpenseReport extends CommonObject $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -2383,8 +2334,7 @@ class ExpenseReport extends CommonObject $response->labelShort = $langs->trans("ToApprove"); $response->url = DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm&statut=2'; } - else - { + else { $response->warning_delay = $conf->expensereport->payment->warning_delay / 60 / 60 / 24; $response->label = $langs->trans("ExpenseReportsToPay"); $response->labelShort = $langs->trans("StatusToPay"); @@ -2402,8 +2352,7 @@ class ExpenseReport extends CommonObject $response->nbtodolate++; } } - else - { + else { if ($this->db->jdate($obj->date_valid) < ($now - $conf->expensereport->payment->warning_delay)) { $response->nbtodolate++; } @@ -2412,8 +2361,7 @@ class ExpenseReport extends CommonObject return $response; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -2439,8 +2387,7 @@ class ExpenseReport extends CommonObject { return ($this->datevalid ? $this->datevalid : $this->date_valid) < ($now - $conf->expensereport->approve->warning_delay); } - else - return ($this->datevalid ? $this->datevalid : $this->date_valid) < ($now - $conf->expensereport->payment->warning_delay); + else return ($this->datevalid ? $this->datevalid : $this->date_valid) < ($now - $conf->expensereport->payment->warning_delay); } /** @@ -2464,8 +2411,7 @@ class ExpenseReport extends CommonObject $alreadydispatched = $obj->nb; } } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -2499,8 +2445,7 @@ class ExpenseReport extends CommonObject $this->db->free($resql); return $obj->amount; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -2695,8 +2640,7 @@ class ExpenseReportLine } } } - else - { + else { $error++; } @@ -2705,8 +2649,7 @@ class ExpenseReportLine $this->db->commit(); return $this->id; } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog("ExpenseReportLine::insert Error ".$this->error, LOG_ERR); $this->db->rollback(); @@ -2748,8 +2691,7 @@ class ExpenseReportLine $amount = (double) $obj->total_amount; } } - else - { + else { dol_print_error($this->db); } @@ -2813,15 +2755,13 @@ class ExpenseReportLine $this->errors = $tmpparent->errors; } } - else - { + else { $error++; $this->error = $tmpparent->error; $this->errors = $tmpparent->errors; } } - else - { + else { $error++; dol_print_error($this->db); } @@ -2831,8 +2771,7 @@ class ExpenseReportLine $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog("ExpenseReportLine::update Error ".$this->error, LOG_ERR); $this->db->rollback(); @@ -2868,8 +2807,7 @@ function select_expensereport_statut($selected = '', $htmlname = 'fk_statut', $u { print '
'; print ''; print ''; diff --git a/htdocs/product/agenda.php b/htdocs/product/agenda.php index 808ba9739ba..3d0dc302283 100644 --- a/htdocs/product/agenda.php +++ b/htdocs/product/agenda.php @@ -41,8 +41,7 @@ if (GETPOST('actioncode', 'array')) $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; } -else -{ +else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/product/ajax/products.php b/htdocs/product/ajax/products.php index 918950179c7..219e68171d2 100644 --- a/htdocs/product/ajax/products.php +++ b/htdocs/product/ajax/products.php @@ -163,8 +163,7 @@ if (!empty($action) && $action == 'fetch' && !empty($id)) echo json_encode($outjson); } -else -{ +else { require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; $langs->loadLangs(array("main", "products")); diff --git a/htdocs/product/canvas/product/actions_card_product.class.php b/htdocs/product/canvas/product/actions_card_product.class.php index 1612448c1bb..da99efc337d 100644 --- a/htdocs/product/canvas/product/actions_card_product.class.php +++ b/htdocs/product/canvas/product/actions_card_product.class.php @@ -288,8 +288,7 @@ class ActionsCardProduct } $this->db->free($resql); } - else - { + else { dol_print_error($this->db, $sql); } } @@ -428,8 +427,7 @@ class ActionsCardProduct } $this->db->free($resql); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/product/canvas/service/actions_card_service.class.php b/htdocs/product/canvas/service/actions_card_service.class.php index 331cecb3071..aaf9b584068 100644 --- a/htdocs/product/canvas/service/actions_card_service.class.php +++ b/htdocs/product/canvas/service/actions_card_service.class.php @@ -268,8 +268,7 @@ class ActionsCardService } $this->db->free($resql); } - else - { + else { dol_print_error($this->db, $sql); } } @@ -361,8 +360,7 @@ class ActionsCardService } $this->db->free($resql); } - else - { + else { print $sql; } } diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 87e86e8e0bc..bd18737bd6b 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -175,8 +175,7 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { $langs->load("errors"); if ($result == -1) $errors[] = 'ErrorBadBarCodeSyntax'; elseif ($result == -2) $errors[] = 'ErrorBarCodeRequired'; @@ -222,12 +221,10 @@ if (empty($reshook)) if ($object->price_base_type == 'TTC') $object->price_ttc = GETPOST('price'); - else - $object->price = GETPOST('price'); + else $object->price = GETPOST('price'); if ($object->price_base_type == 'TTC') $object->price_min_ttc = GETPOST('price_min'); - else - $object->price_min = GETPOST('price_min'); + else $object->price_min = GETPOST('price_min'); $tva_tx_txt = GETPOST('tva_tx', 'alpha'); // tva_tx can be '8.5' or '8.5*' or '8.5 (XXX)' or '8.5* (XXX)' @@ -340,8 +337,7 @@ if (empty($reshook)) $object->multiprices["$i"] = price2num($_POST["price_".$i], 'MU'); $object->multiprices_base_type["$i"] = $_POST["multiprices_base_type_".$i]; } - else - { + else { $object->multiprices["$i"] = ""; } } @@ -369,14 +365,12 @@ if (empty($reshook)) header("Location: ".$backtopage); exit; } - else - { + else { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; } } - else - { + else { if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); else setEventMessages($langs->trans($object->error), null, 'errors'); $action = "create"; @@ -391,8 +385,7 @@ if (empty($reshook)) { $action = ''; } - else - { + else { if ($object->id > 0) { $object->oldcopy = clone $object; @@ -489,15 +482,13 @@ if (empty($reshook)) $action = 'view'; } - else - { + else { if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); else setEventMessages($langs->trans($object->error), null, 'errors'); $action = 'edit'; } } - else - { + else { if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); else setEventMessages($langs->trans("ErrorProductBadRefOrLabel"), null, 'errors'); $action = 'edit'; @@ -514,8 +505,7 @@ if (empty($reshook)) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); } - else - { + else { $db->begin(); $originalId = $id; @@ -578,8 +568,7 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } - else - { + else { $id = $originalId; if ($object->error == 'ErrorProductAlreadyExists') @@ -594,16 +583,14 @@ if (empty($reshook)) setEventMessages($mesg, null, 'errors'); $object->fetch($id); } - else - { + else { $db->rollback(); if (count($object->errors)) { setEventMessages($object->error, $object->errors, 'errors'); dol_print_error($db, $object->errors); } - else - { + else { setEventMessages($langs->trans($object->error), null, 'errors'); dol_print_error($db, $object->error); } @@ -613,8 +600,7 @@ if (empty($reshook)) unset($object->context['createfromclone']); } } - else - { + else { $db->rollback(); dol_print_error($db, $object->error); } @@ -632,8 +618,7 @@ if (empty($reshook)) header('Location: '.DOL_URL_ROOT.'/product/list.php?type='.$object->type.'&delprod='.urlencode($object->ref)); exit; } - else - { + else { setEventMessages($langs->trans($object->error), null, 'errors'); $reload = 0; $action = ''; @@ -743,8 +728,7 @@ if (empty($reshook)) dol_syslog($langs->trans('FailedToGetCostPrice')); setEventMessages($langs->trans('FailedToGetCostPrice'), null, 'errors'); } - else - { + else { $buyprice = $result; } @@ -786,8 +770,7 @@ if (empty($reshook)) dol_syslog($langs->trans('FailedToGetCostPrice')); setEventMessages($langs->trans('FailedToGetCostPrice'), null, 'errors'); } - else - { + else { $buyprice = $result; } @@ -829,8 +812,7 @@ if (empty($reshook)) dol_syslog($langs->trans('FailedToGetCostPrice')); setEventMessages($langs->trans('FailedToGetCostPrice'), null, 'errors'); } - else - { + else { $buyprice = $result; } @@ -937,8 +919,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) $objcanvas->assign_values($action, $object->id, $object->ref); // Set value for templates $objcanvas->display_canvas($action); // Show template } -else -{ +else { // ----------------------------------------- // When used in standard mode // ----------------------------------------- @@ -1030,8 +1011,7 @@ else { $fk_barcode_type = GETPOST('fk_barcode_type'); } - else - { + else { if (empty($fk_barcode_type) && !empty($conf->global->PRODUIT_DEFAULT_BARCODE_TYPE)) $fk_barcode_type = $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE; } require_once DOL_DOCUMENT_ROOT.'/core/class/html.formbarcode.class.php'; @@ -1080,8 +1060,7 @@ else print ''; print ''; } - else - { + else { print ''; print ''; } @@ -1215,8 +1194,7 @@ else print '
'; } - else - { + else { print ''; // Price @@ -1416,8 +1394,7 @@ else print ''; print ''; } - else - { + else { print ''; print ''; } @@ -1432,8 +1409,7 @@ else print ''; print ''; } - else - { + else { print ''; print ''; } @@ -1463,8 +1439,7 @@ else { $fk_barcode_type = GETPOST('fk_barcode_type'); } - else - { + else { $fk_barcode_type = $object->barcode_type; if (empty($fk_barcode_type) && !empty($conf->global->PRODUIT_DEFAULT_BARCODE_TYPE)) $fk_barcode_type = $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE; } @@ -1526,8 +1501,7 @@ else print $formproduct->selectMeasuringUnits("duration_unit", "time", $object->duration_unit, 0, 1); print ''; } - else - { + else { // Nature print ''."\n"; @@ -2012,8 +1983,7 @@ else print ''; } - else - { + else { // Nature print '\n"; @@ -2042,8 +2011,7 @@ else if ($object->height) print " x ".$object->height; print ' '.measuringUnitString(0, "size", $object->length_units); } - else - { + else { print ' '; } print "\n"; @@ -2056,8 +2024,7 @@ else { print $object->surface." ".measuringUnitString(0, "surface", $object->surface_units); } - else - { + else { print ' '; } print "\n"; @@ -2070,8 +2037,7 @@ else { print $object->volume." ".measuringUnitString(0, "volume", $object->volume_units); } - else - { + else { print ' '; } print "\n"; @@ -2085,8 +2051,7 @@ else { print $object->net_measure." ".measuringUnitString($object->net_measure_units); } - else - { + else { print ' '; } } @@ -2215,8 +2180,7 @@ if ($action != 'create' && $action != 'edit') { print ''.$langs->trans('ToClone').''."\n"; } - else - { + else { print 'id.'">'.$langs->trans("ToClone").''; } } @@ -2231,18 +2195,15 @@ if ($action != 'create' && $action != 'edit') { print ''.$langs->trans('Delete').''."\n"; } - else - { + else { print 'id.'">'.$langs->trans("Delete").''; } } - else - { + else { print ''.$langs->trans("Delete").''; } } - else - { + else { print ''.$langs->trans("Delete").''; } } @@ -2276,8 +2237,7 @@ if (!empty($conf->global->PRODUCT_ADD_FORM_ADD_TO) && $object->id && ($action == $html .= $form->selectarray("propalid", $otherprop, 0, 1); $html .= ''; } - else - { + else { $html .= ''; } - else - { + else { $html .= ''; } - else - { + else { $html .= ''; @@ -247,8 +242,7 @@ if ($id > 0 || !empty($ref)) { print price($object->price_min_ttc).' '.$langs->trans($object->price_base_type); } - else - { + else { print price($object->price_min).' '.$langs->trans($object->price_base_type ? $object->price_base_type : 'HT'); } print ''; @@ -299,8 +293,7 @@ if ($id > 0 || !empty($ref)) print ''; } } - else - { + else { print ''; print ''; print ''; @@ -378,8 +371,7 @@ if ($id > 0 || !empty($ref)) { $pricesell = 'Variable'; } - else - { + else { $totallinesell = price2num($value['nb'] * ($pricesell), 'MT'); $totalsell += $totallinesell; } @@ -405,8 +397,7 @@ if ($id > 0 || !empty($ref)) print ''."\n"; } - else - { + else { $hide = ''; if (empty($conf->global->PRODUCT_SHOW_SUB_SUB_PRODUCTS)) $hide = ' hideobject'; // By default, we do not show this. It makes screen very difficult to understand @@ -469,8 +460,7 @@ if ($id > 0 || !empty($ref)) print ''; print ''."\n"; } - else - { + else { $colspan = 8; if (!empty($conf->stock->enabled)) $colspan++; @@ -600,8 +590,7 @@ if ($id > 0 || !empty($ref)) $qty = $object->is_sousproduit_qty; $incdec = $object->is_sousproduit_incdec; } - else - { + else { //$addchecked = ''; $qty = 0; $incdec = 0; @@ -615,8 +604,7 @@ if ($id > 0 || !empty($ref)) // Inc Dec print ''; } } - else - { + else { dol_print_error($db); } print '
'.$langs->trans("Nature").''; $statutarray = array('-1'=>' ', '1' => $langs->trans("Finished"), '0' => $langs->trans("RowMaterial")); @@ -1734,8 +1708,7 @@ else print ''; } // Fiche en mode visu - else - { + else { $showbarcode = empty($conf->barcode->enabled) ? 0 : 1; if (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->barcode->lire_advance)) $showbarcode = 0; @@ -1791,8 +1764,7 @@ else { print $formbarcode->formBarcodeType($_SERVER['PHP_SELF'].'?id='.$object->id, $object->barcode_type, 'fk_barcode_type'); } - else - { + else { $object->fetch_barcode(); print $object->barcode_type_label ? $object->barcode_type_label : ($object->barcode ? '
'.$langs->trans("SetDefaultBarcodeType").'
' : ''); } @@ -1819,8 +1791,7 @@ else print ' '; print ''; } - else - { + else { print $object->barcode; } print '
'.$langs->trans("Nature").''; print $object->getLibFinished(); @@ -2025,8 +1995,7 @@ else { print $object->weight." ".measuringUnitString(0, "weight", $object->weight_units); } - else - { + else { print ' '; } print "
'; $html .= $langs->trans("AddToDraftProposals").''; $html .= $langs->trans("NoDraftProposals"); @@ -2300,8 +2260,7 @@ if (!empty($conf->global->PRODUCT_ADD_FORM_ADD_TO) && $object->id && ($action == $html .= $form->selectarray("commandeid", $othercom, 0, 1); $html .= '
'; $html .= $langs->trans("AddToDraftOrders").''; $html .= $langs->trans("NoDraftOrders"); @@ -2324,8 +2283,7 @@ if (!empty($conf->global->PRODUCT_ADD_FORM_ADD_TO) && $object->id && ($action == $html .= $form->selectarray("factureid", $otherinvoice, 0, 1); $html .= '
'; $html .= $langs->trans("AddToDraftInvoices").''; $html .= $langs->trans("NoDraftInvoices"); diff --git a/htdocs/product/class/api_products.class.php b/htdocs/product/class/api_products.class.php index b04560dab32..66cef158439 100644 --- a/htdocs/product/class/api_products.class.php +++ b/htdocs/product/class/api_products.class.php @@ -303,8 +303,7 @@ class Products extends DolibarrApi // We update price only if it was changed $pricemodified = false; if ($this->product->price_base_type != $oldproduct->price_base_type) { $pricemodified = true; - } else - { + } else { if ($this->product->tva_tx != $oldproduct->tva_tx) { $pricemodified = true; } if ($this->product->tva_npr != $oldproduct->tva_npr) { $pricemodified = true; @@ -318,8 +317,7 @@ class Products extends DolibarrApi if ($this->product->price_min_ttc != $oldproduct->price_min_ttc) { $pricemodified = true; } } - else - { + else { if ($this->product->price != $oldproduct->price) { $pricemodified = true; } if ($this->product->price_min != $oldproduct->price_min) { $pricemodified = true; @@ -805,7 +803,7 @@ class Products extends DolibarrApi $product_fourn = new ProductFournisseur($this->db); $product_fourn_list = $product_fourn->list_product_fournisseur_price($obj->rowid, '', '', 0, 0); - foreach($product_fourn_list as $tmpobj) { + foreach ($product_fourn_list as $tmpobj) { $this->_cleanObjectDatas($tmpobj); } //var_dump($product_fourn_list->db);exit; diff --git a/htdocs/product/class/html.formproduct.class.php b/htdocs/product/class/html.formproduct.class.php index 0eeddd15c07..b38501cb788 100644 --- a/htdocs/product/class/html.formproduct.class.php +++ b/htdocs/product/class/html.formproduct.class.php @@ -102,8 +102,7 @@ class FormProduct { $sql .= ", pb.qty as stock"; } - else - { + else { $sql .= ", ps.reel as stock"; } } @@ -126,8 +125,7 @@ class FormProduct { $sql .= " AND e.statut IN (".$this->db->escape(implode(',', $warehouseStatus)).")"; } - else - { + else { $sql .= " AND e.statut = 1"; } @@ -179,8 +177,7 @@ class FormProduct return $num; } - else - { + else { dol_print_error($this->db); return -1; } @@ -271,8 +268,7 @@ class FormProduct if ($arraytypes['stock'] <= 0) { $label .= ' ('.$langs->trans("Stock").':'.$arraytypes['stock'].')'; } - else - { + else { $label .= ' ('.$langs->trans("Stock").':'.$arraytypes['stock'].')'; } } @@ -437,8 +433,7 @@ class FormProduct { if (!empty($fk_product)) $productIdArray[] = $fk_product; } - else - { + else { foreach ($objectLines as $line) { if ($line->fk_product) $productIdArray[] = $line->fk_product; } @@ -459,8 +454,7 @@ class FormProduct { $productIdArray = array($fk_product); // only show lot stock for product } - else - { + else { foreach ($this->cache_lot as $key => $value) { $productIdArray[] = $key; @@ -527,8 +521,7 @@ class FormProduct { return count($this->cache_lot); } - else - { + else { // clear cache $this->cache_lot = array(); $productIdList = implode(',', $productIdArray); @@ -561,8 +554,7 @@ class FormProduct return $num; } - else - { + else { dol_print_error($this->db); return -1; } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 7b6892552d1..f072d04916e 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -457,8 +457,7 @@ class Product extends CommonObject if ($err > 0) { return 0; } - else - { + else { return 1; } } @@ -683,34 +682,29 @@ class Product extends CommonObject $error++; } } - else - { + else { $error++; $this->error = $this->db->lasterror(); } } - else - { + else { $error++; $this->error = 'ErrorFailedToGetInsertedId'; } } - else - { + else { $error++; $this->error = $this->db->lasterror(); } } - else - { + else { // Product already exists with this ref $langs->load("products"); $error++; $this->error = "ErrorProductAlreadyExists"; } } - else - { + else { $error++; $this->error = $this->db->lasterror(); } @@ -727,14 +721,12 @@ class Product extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -$error; } } - else - { + else { $this->db->rollback(); dol_syslog(get_class($this)."::Create fails verify ".join(',', $this->errors), LOG_WARNING); return -3; @@ -811,8 +803,7 @@ class Product extends CommonObject $result = $mod->verif($this->db, $valuetotest, $this, 0, $typefortest); return $result; } - else - { + else { return 0; } } @@ -1104,14 +1095,12 @@ class Product extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -$error; } } - else - { + else { if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); if (empty($conf->barcode->enabled) || empty($this->barcode)) { @@ -1123,8 +1112,7 @@ class Product extends CommonObject $this->db->rollback(); return -1; } - else - { + else { $this->error = $langs->trans("Error")." : ".$this->db->error()." - ".$sql; $this->errors[] = $this->error; $this->db->rollback(); @@ -1132,8 +1120,7 @@ class Product extends CommonObject } } } - else - { + else { $this->db->rollback(); dol_syslog(get_class($this)."::Update fails verify ".join(',', $this->errors), LOG_WARNING); return -3; @@ -1281,8 +1268,7 @@ class Product extends CommonObject $this->db->commit(); return 1; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); @@ -1292,8 +1278,7 @@ class Product extends CommonObject return -$error; } } - else - { + else { $this->error = "ErrorRecordIsUsedCantDelete"; return 0; } @@ -1332,8 +1317,7 @@ class Product extends CommonObject } $sql2 .= " WHERE fk_product=".$this->id." AND lang='".$this->db->escape($key)."'"; } - else - { + else { $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_lang (fk_product, lang, label, description"; if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", note"; } @@ -1370,8 +1354,7 @@ class Product extends CommonObject } $sql2 .= " WHERE fk_product=".$this->id." AND lang='".$this->db->escape($key)."'"; } - else - { + else { $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_lang (fk_product, lang, label, description"; if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", note"; } @@ -1392,8 +1375,7 @@ class Product extends CommonObject } } } - else - { + else { // language is not current language and we didn't provide a multilang description for this language } } @@ -1435,8 +1417,7 @@ class Product extends CommonObject // End call triggers return 1; } - else - { + else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::delMultiLangs error='.$this->error, LOG_ERR); return -1; @@ -1498,8 +1479,7 @@ class Product extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -1538,8 +1518,7 @@ class Product extends CommonObject } return 1; } - else - { + else { $this->error = "Error: ".$this->db->lasterror()." - ".$sql; return -1; } @@ -1581,8 +1560,7 @@ class Product extends CommonObject dol_print_error($this->db); return -1; } - else - { + else { return 1; } } @@ -1609,8 +1587,7 @@ class Product extends CommonObject if ($resql) { return 1; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -1687,8 +1664,7 @@ class Product extends CommonObject { $pu_ht = $priceforthequantityarray['unitprice']; } - else - { + else { $pu_ttc = $priceforthequantityarray['unitprice']; } break; @@ -1708,8 +1684,7 @@ class Product extends CommonObject { $pu_ht = $priceforthequantityarray['unitprice']; } - else - { + else { $pu_ttc = $priceforthequantityarray['unitprice']; } break; @@ -1852,20 +1827,17 @@ class Product extends CommonObject $result = $obj->fk_product; return $result; } - else - { + else { return -1; // Ce produit n'existe pas avec cet id tarif fournisseur ou existe mais qte insuffisante, ni pour le couple produit/ref fournisseur dans la quantité. } } - else - { + else { $this->error = $this->db->lasterror(); return -3; } } } - else - { + else { $this->error = $this->db->lasterror(); return -2; } @@ -1937,14 +1909,12 @@ class Product extends CommonObject $price_min = price2num($newminprice) / (1 + ($newvat / 100)); $price_min = price2num($price_min, 'MU'); } - else - { + else { $price_min = 0; $price_min_ttc = 0; } } - else - { + else { $price = price2num($newprice, 'MU'); $price_ttc = ($newnpr != 1) ? price2num($newprice) * (1 + ($newvat / 100)) : $price; $price_ttc = price2num($price_ttc, 'MU'); @@ -1955,8 +1925,7 @@ class Product extends CommonObject $price_min_ttc = price2num($price_min_ttc, 'MU'); //print 'X'.$newminprice.'-'.$price_min; } - else - { + else { $price_min = 0; $price_min_ttc = 0; } @@ -1969,7 +1938,7 @@ class Product extends CommonObject $localtaxtype2 = $localtaxes_array['2']; $localtax2 = $localtaxes_array['3']; } - else // old method. deprecated because ot can't retreive type + else // old method. deprecated because ot can't retreive type { $localtaxtype1 = '0'; $localtax1 = get_localtax($newvat, 1); @@ -2045,8 +2014,7 @@ class Product extends CommonObject $this->db->commit(); } - else - { + else { $this->db->rollback(); dol_print_error($this->db); } @@ -2281,8 +2249,7 @@ class Product extends CommonObject } }*/ } - else - { + else { dol_print_error($this->db); return -1; } @@ -2330,15 +2297,13 @@ class Product extends CommonObject } $this->prices_by_qty_list[0] = $resultat; } - else - { + else { dol_print_error($this->db); return -1; } } } - else - { + else { dol_print_error($this->db); return -1; } @@ -2394,15 +2359,13 @@ class Product extends CommonObject } $this->prices_by_qty_list[$i] = $resultat; } - else - { + else { dol_print_error($this->db); return -1; } } } - else - { + else { dol_print_error($this->db); return -1; } @@ -2427,13 +2390,11 @@ class Product extends CommonObject return 1; } - else - { + else { return 0; } } - else - { + else { dol_print_error($this->db); return -1; } @@ -2507,8 +2468,7 @@ class Product extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -2558,8 +2518,7 @@ class Product extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -2661,8 +2620,7 @@ class Product extends CommonObject if ($reshook > 0) $this->stats_commande = $hookmanager->resArray['stats_commande']; return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -2718,8 +2676,7 @@ class Product extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error().' sql='.$sql; return -1; } @@ -2802,8 +2759,7 @@ class Product extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -2855,8 +2811,7 @@ class Product extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -2946,8 +2901,7 @@ class Product extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -3020,8 +2974,7 @@ class Product extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error().' sql='.$sql; return -1; } @@ -3094,8 +3047,7 @@ class Product extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -3147,8 +3099,7 @@ class Product extends CommonObject return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -3182,8 +3133,7 @@ class Product extends CommonObject $i++; } } - else - { + else { $this->error = $this->db->error().' sql='.$sql; return -1; } @@ -3192,8 +3142,7 @@ class Product extends CommonObject $year = strftime('%Y', time()); $month = strftime('%m', time()); } - else - { + else { $month = 12; // We imagine we are at end of year, so we get last 12 month before, so all correct year. } $result = array(); @@ -3674,8 +3623,7 @@ class Product extends CommonObject dol_print_error($this->db); return -1; } - else - { + else { $result = $this->db->query($sql); if ($result) { $num = $this->db->num_rows($result); @@ -3683,16 +3631,14 @@ class Product extends CommonObject $this->error = "isFatherOfThis"; return -1; } - else - { + else { $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'product_association(fk_product_pere,fk_product_fils,qty,incdec)'; $sql .= ' VALUES ('.$id_pere.', '.$id_fils.', '.$qty.', '.$incdec.')'; if (!$this->db->query($sql)) { dol_print_error($this->db); return -1; } - else - { + else { return 1; } } @@ -3736,8 +3682,7 @@ class Product extends CommonObject dol_print_error($this->db); return -1; } - else - { + else { return 1; } } @@ -3800,13 +3745,11 @@ class Product extends CommonObject return true; } - else - { + else { return false; } } - else - { + else { dol_print_error($this->db); return -1; } @@ -3896,21 +3839,18 @@ class Product extends CommonObject $this->product_fourn_price_id = $this->db->last_insert_id(MAIN_DB_PREFIX."product_fournisseur_price"); return 1; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } } // If the supplier price already exists for this product and quantity - else - { + else { $this->product_fourn_price_id = $obj->rowid; return 0; } } - else - { + else { $this->error = $this->db->lasterror(); return -2; } @@ -4106,8 +4046,7 @@ class Product extends CommonObject $this->db->rollback(); return -1; } - else - { + else { $this->db->commit(); return 1; } @@ -4218,8 +4157,7 @@ class Product extends CommonObject if ($obj) { $nb = $obj->nb; } } - else - { + else { return -1; } @@ -4304,8 +4242,7 @@ class Product extends CommonObject } return $prods; } - else - { + else { dol_print_error($this->db); return -1; } @@ -4369,8 +4306,7 @@ class Product extends CommonObject return $prods; } - else - { + else { dol_print_error($this->db); return -1; } @@ -4498,8 +4434,7 @@ class Product extends CommonObject $linkclose .= ' title="'.dol_escape_htmltag($label, 1, 1).'"'; $linkclose .= ' class="nowraponall classfortooltip"'; } - else - { + else { $linkclose = ' class="nowraponall"'; } @@ -4574,8 +4509,7 @@ class Product extends CommonObject if (!empty($conf->global->PRODUCT_ADDON_PDF)) { $modele = $conf->global->PRODUCT_ADDON_PDF; } - else - { + else { $modele = 'strato'; } } @@ -4744,8 +4678,7 @@ class Product extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->error = $movementstock->error; $this->errors = $movementstock->errors; @@ -4792,8 +4725,7 @@ class Product extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->error = $movementstock->error; $this->errors = $movementstock->errors; @@ -4872,8 +4804,7 @@ class Product extends CommonObject return 1; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -5019,8 +4950,7 @@ class Product extends CommonObject } return $result; } - else - { + else { dol_print_error($this->db); $this->db->rollback(); return array(); @@ -5258,8 +5188,7 @@ class Product extends CommonObject $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -5395,8 +5324,7 @@ class Product extends CommonObject $this->db->free($resql); return $label; } - else - { + else { $this->error = $this->db->error().' sql='.$sql; dol_syslog(get_class($this)."::getLabelOfUnit Error ".$this->error, LOG_ERR); return -1; @@ -5629,8 +5557,7 @@ class Product extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/product/class/productbatch.class.php b/htdocs/product/class/productbatch.class.php index 05cfd7523e0..3c56221863c 100644 --- a/htdocs/product/class/productbatch.class.php +++ b/htdocs/product/class/productbatch.class.php @@ -120,8 +120,7 @@ class Productbatch extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return $this->id; } @@ -179,8 +178,7 @@ class Productbatch extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -233,8 +231,7 @@ class Productbatch extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -275,8 +272,7 @@ class Productbatch extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -331,8 +327,7 @@ class Productbatch extends CommonObject $this->db->commit(); return $object->id; } - else - { + else { $this->db->rollback(); return -1; } @@ -425,8 +420,7 @@ class Productbatch extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -495,8 +489,7 @@ class Productbatch extends CommonObject return $ret; } - else - { + else { $error = "Error ".$db->lasterror(); return -1; } diff --git a/htdocs/product/class/propalmergepdfproduct.class.php b/htdocs/product/class/propalmergepdfproduct.class.php index 9ca53d167cf..26c627ee0e4 100644 --- a/htdocs/product/class/propalmergepdfproduct.class.php +++ b/htdocs/product/class/propalmergepdfproduct.class.php @@ -140,8 +140,7 @@ class Propalmergepdfproduct extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return $this->id; } @@ -199,8 +198,7 @@ class Propalmergepdfproduct extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); return -1; @@ -273,8 +271,7 @@ class Propalmergepdfproduct extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch_by_product ".$this->error, LOG_ERR); return -1; @@ -334,8 +331,7 @@ class Propalmergepdfproduct extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -377,8 +373,7 @@ class Propalmergepdfproduct extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -427,8 +422,7 @@ class Propalmergepdfproduct extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -470,8 +464,7 @@ class Propalmergepdfproduct extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -526,8 +519,7 @@ class Propalmergepdfproduct extends CommonObject $this->db->commit(); return $object->id; } - else - { + else { $this->db->rollback(); return -1; } diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index dbdb6cb6f42..194a342d391 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -81,27 +81,23 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se //var_dump($i.' '.GETPOST("prod_id_".$i, 'int'), $qty, GETPOST("prod_incdec_".$i, 'int')); $action = 'edit'; } - else - { + else { $error++; $action = 're-edit'; if ($object->error == "isFatherOfThis") { setEventMessages($langs->trans("ErrorAssociationIsFatherOfThis"), null, 'errors'); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } } - else - { + else { if ($object->del_sousproduit($id, GETPOST("prod_id_".$i, 'int')) > 0) { $action = 'edit'; } - else - { + else { $error++; $action = 're-edit'; setEventMessages($object->error, $object->errors, 'errors'); @@ -235,8 +231,7 @@ if ($id > 0 || !empty($ref)) { print price($object->price_ttc).' '.$langs->trans($object->price_base_type); } - else - { + else { print price($object->price).' '.$langs->trans($object->price_base_type ? $object->price_base_type : 'HT'); } print '
'.$langs->trans("None").'
'; if ($qty) print ''; - else - { + else { // TODO Hide field and show it when setting a qty print ''; //print ''; @@ -636,8 +624,7 @@ if ($id > 0 || !empty($ref)) print '
'; diff --git a/htdocs/product/document.php b/htdocs/product/document.php index e5702078dd2..db233fbe84c 100644 --- a/htdocs/product/document.php +++ b/htdocs/product/document.php @@ -314,8 +314,7 @@ if ($object->id) $checked = ' checked '; } } - else - { + else { if (array_key_exists($filetoadd['name'], $filetomerge->lines)) { $checked = ' checked '; @@ -338,8 +337,7 @@ if ($object->id) } } } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/product/dynamic_price/class/price_expression.class.php b/htdocs/product/dynamic_price/class/price_expression.class.php index 420d5aaddb2..4f40e2b6c6f 100644 --- a/htdocs/product/dynamic_price/class/price_expression.class.php +++ b/htdocs/product/dynamic_price/class/price_expression.class.php @@ -124,8 +124,7 @@ class PriceExpression $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return $this->id; } @@ -163,13 +162,11 @@ class PriceExpression $this->expression = $obj->expression; return 1; } - else - { + else { return 0; } } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -206,8 +203,7 @@ class PriceExpression $this->db->free($resql); return $retarray; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -237,13 +233,11 @@ class PriceExpression { return (int) $obj->rowid; } - else - { + else { return 0; } } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -302,8 +296,7 @@ class PriceExpression $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -360,8 +353,7 @@ class PriceExpression $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } diff --git a/htdocs/product/dynamic_price/class/price_global_variable.class.php b/htdocs/product/dynamic_price/class/price_global_variable.class.php index acede724da5..7f241518e4c 100644 --- a/htdocs/product/dynamic_price/class/price_global_variable.class.php +++ b/htdocs/product/dynamic_price/class/price_global_variable.class.php @@ -129,8 +129,7 @@ class PriceGlobalVariable $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return $this->id; } @@ -163,13 +162,11 @@ class PriceGlobalVariable $this->checkParameters(); return 1; } - else - { + else { return 0; } } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -226,8 +223,7 @@ class PriceGlobalVariable $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -283,8 +279,7 @@ class PriceGlobalVariable $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -350,8 +345,7 @@ class PriceGlobalVariable $this->db->free($resql); return $retarray; } - else - { + else { $this->error = $this->db->error(); return -1; } diff --git a/htdocs/product/dynamic_price/class/price_global_variable_updater.class.php b/htdocs/product/dynamic_price/class/price_global_variable_updater.class.php index 0c8e25e8751..12e497c0f2c 100644 --- a/htdocs/product/dynamic_price/class/price_global_variable_updater.class.php +++ b/htdocs/product/dynamic_price/class/price_global_variable_updater.class.php @@ -145,8 +145,7 @@ class PriceGlobalVariableUpdater $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return $this->id; } @@ -183,13 +182,11 @@ class PriceGlobalVariableUpdater $this->checkParameters(); return 1; } - else - { + else { return 0; } } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -250,8 +247,7 @@ class PriceGlobalVariableUpdater $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -306,8 +302,7 @@ class PriceGlobalVariableUpdater $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -400,8 +395,7 @@ class PriceGlobalVariableUpdater $this->db->free($resql); return $retarray; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -442,8 +436,7 @@ class PriceGlobalVariableUpdater $this->db->free($resql); return $retarray; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -599,8 +592,7 @@ class PriceGlobalVariableUpdater $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -645,8 +637,7 @@ class PriceGlobalVariableUpdater $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } diff --git a/htdocs/product/dynamic_price/editor.php b/htdocs/product/dynamic_price/editor.php index bf2f58f63f3..778f749f983 100644 --- a/htdocs/product/dynamic_price/editor.php +++ b/htdocs/product/dynamic_price/editor.php @@ -78,8 +78,7 @@ if ($action == 'add') if ($price_result < 0) { //Expression is not valid setEventMessages($priceparser->translatedError(), null, 'errors'); } - else - { + else { $price_expression->title = $title; $price_expression->expression = $expression; $result = $price_expression->create($user); @@ -88,8 +87,7 @@ if ($action == 'add') $eid = $price_expression->id; setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } - else - { + else { setEventMessages("add: ".$price_expression->error, $price_expression->errors, 'errors'); } } @@ -98,8 +96,7 @@ if ($action == 'add') { setEventMessages("add find: ".$price_expression->error, $price_expression->errors, 'errors'); } - else - { + else { setEventMessages($langs->trans("ErrorRecordAlreadyExists"), null, 'errors'); } } @@ -118,8 +115,7 @@ if ($action == 'update') if ($price_result < 0) { //Expression is not valid setEventMessages($priceparser->translatedError(), null, 'errors'); } - else - { + else { $price_expression->id = $eid; $price_expression->title = $title; $price_expression->expression = $expression; @@ -128,8 +124,7 @@ if ($action == 'update') { setEventMessages("update: ".$price_expression->error, $price_expression->errors, 'errors'); } - else - { + else { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } } @@ -138,8 +133,7 @@ if ($action == 'update') { setEventMessages("update find: ".$price_expression->error, $price_expression->errors, 'errors'); } - else - { + else { setEventMessages($langs->trans("ErrorRecordAlreadyExists"), null, 'errors'); } } @@ -221,8 +215,7 @@ if ($eid == 0) { print '
'.$langs->trans('Delete').'
'."\n"; } -else -{ +else { print ''; } print ''; diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 7cc5d3966c1..3c4ebfc6acb 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -128,8 +128,7 @@ if (empty($reshook)) setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); $action = ''; } - else - { + else { $error++; setEventMessages($object->error, $object->errors, 'errors'); } @@ -211,8 +210,7 @@ if (empty($reshook)) $langs->load("errors"); setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Price")), null, 'errors'); } - else - { + else { $_POST["price"] = 0; } } @@ -316,8 +314,7 @@ if (empty($reshook)) $error++; setEventMessages($object->error, $object->errors, 'errors'); } - else - { + else { if (!empty($conf->dynamicprices->enabled) && $price_expression !== '') { //Check the expression validity by parsing it @@ -347,13 +344,11 @@ if (empty($reshook)) $db->commit(); $action = ''; } - else - { + else { $db->rollback(); } } - else - { + else { $action = 'add_price'; } } @@ -453,8 +448,7 @@ if ($id > 0 || $ref) $object->fetch_product_fournisseur_price($rowid, 1); //Ignore the math expression when getting the price print load_fiche_titre($langs->trans("ChangeSupplierPrice")); } - else - { + else { print load_fiche_titre($langs->trans("AddSupplierPrice")); } @@ -478,8 +472,7 @@ if ($id > 0 || $ref) print ''; print ''; } - else - { + else { $events = array(); $events[] = array('method' => 'getVatRates', 'url' => dol_buildpath('/core/ajax/vatrates.php', 1), 'htmlname' => 'tva_tx', 'params' => array()); print $form->select_company(GETPOST("id_fourn", 'alpha'), 'id_fourn', 'fournisseur=1', 'SelectThirdParty', 0, 0, $events); @@ -503,8 +496,7 @@ if ($id > 0 || $ref) print ''; print ''; } - else - { + else { print ''; } print ''; @@ -529,8 +521,7 @@ if ($id > 0 || $ref) print ''; print $object->fourn_qty; } - else - { + else { print ''; } // Units @@ -564,8 +555,7 @@ if ($id > 0 || $ref) $default_vat = $tmpproductsupplier->fourn_tva_tx; $default_npr = $tmpproductsupplier->fourn_tva_npr; } - else - { + else { if (empty($default_vat)) { $default_vat = $object->tva_tx; @@ -945,8 +935,7 @@ SCRIPT; { print ''.$productfourn->getNomUrl().''; } - else - { + else { print ''.$productfourn->fourn_ref.''; } @@ -1099,8 +1088,7 @@ SCRIPT; print ''; } } - else - { + else { dol_print_error($db); } @@ -1110,8 +1098,7 @@ SCRIPT; } } } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/product/index.php b/htdocs/product/index.php index 3067cc63733..ebe55716bae 100644 --- a/htdocs/product/index.php +++ b/htdocs/product/index.php @@ -226,8 +226,7 @@ if (!empty($conf->categorie->enabled) && !empty($conf->global->CATEGORY_GRAPHSTA { $dataseries[] = array($obj->label, round($obj->nb)); } - else - { + else { $rest += $obj->nb; } $total += $obj->nb; @@ -248,8 +247,7 @@ if (!empty($conf->categorie->enabled) && !empty($conf->global->CATEGORY_GRAPHSTA $dolgraph->draw('idstatscategproduct'); print $dolgraph->show($total ? 0 : 1); } - else - { + else { while ($i < $num) { $obj = $db->fetch_object($result); @@ -386,8 +384,7 @@ if ((!empty($conf->product->enabled) || !empty($conf->service->enabled)) && ($us print '
'; } } - else - { + else { dol_print_error($db); } } @@ -457,8 +454,7 @@ function activitytrim($product_type) if ($product_type == 0) print ''.$langs->trans("ProductSellByQuarterHT").''; - else - print ''.$langs->trans("ServiceSellByQuarterHT").''; + else print ''.$langs->trans("ServiceSellByQuarterHT").''; print ''.$langs->trans("Quarter1").''; print ''.$langs->trans("Quarter2").''; print ''.$langs->trans("Quarter3").''; diff --git a/htdocs/product/inventory/ajax/ajax.inventory.php b/htdocs/product/inventory/ajax/ajax.inventory.php index 1ea99480bd6..c258b63de2b 100644 --- a/htdocs/product/inventory/ajax/ajax.inventory.php +++ b/htdocs/product/inventory/ajax/ajax.inventory.php @@ -21,8 +21,7 @@ switch ($put) echo $det->qty_view; } - else - { + else { echo -2; } @@ -41,8 +40,7 @@ switch ($put) echo $det->new_pmp; } - else - { + else { echo -2; } diff --git a/htdocs/product/inventory/card.php b/htdocs/product/inventory/card.php index 0e8ab8bda55..a5084c296a1 100644 --- a/htdocs/product/inventory/card.php +++ b/htdocs/product/inventory/card.php @@ -42,8 +42,7 @@ if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { $result = restrictedArea($user, 'stock', $id); } -else -{ +else { $result = restrictedArea($user, 'stock', $id, '', 'inventory_advance'); } @@ -81,8 +80,7 @@ if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) $permissiontoadd = $user->rights->stock->creer; $permissiontodelete = $user->rights->stock->supprimer; } -else -{ +else { $permissiontoadd = $user->rights->stock->inventory_advance->write; $permissiontodelete = $user->rights->stock->inventory_advance->write; } @@ -337,8 +335,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea { print ''.$langs->trans("Modify").''."\n"; } - else - { + else { print ''.$langs->trans('Modify').''."\n"; } @@ -346,8 +343,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea { print ''.$langs->trans("Validate").''."\n"; } - else - { + else { print ''.$langs->trans('Validate').''."\n"; } @@ -355,8 +351,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea { print ''.$langs->trans('Delete').''."\n"; } - else - { + else { print ''.$langs->trans('Delete').''."\n"; } } diff --git a/htdocs/product/inventory/class/inventory.class.php b/htdocs/product/inventory/class/inventory.class.php index e24fe4e0ad2..381c40d0aa4 100644 --- a/htdocs/product/inventory/class/inventory.class.php +++ b/htdocs/product/inventory/class/inventory.class.php @@ -466,8 +466,7 @@ class Inventory extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/product/inventory/inventory.php b/htdocs/product/inventory/inventory.php index 3f0989251b5..373164eeae4 100644 --- a/htdocs/product/inventory/inventory.php +++ b/htdocs/product/inventory/inventory.php @@ -42,8 +42,7 @@ if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { $result = restrictedArea($user, 'stock', $id); } -else -{ +else { $result = restrictedArea($user, 'stock', $id, '', 'inventory_advance'); } @@ -81,8 +80,7 @@ if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) $permissiontoadd = $user->rights->stock->creer; $permissiontodelete = $user->rights->stock->supprimer; } -else -{ +else { $permissiontoadd = $user->rights->stock->inventory_advance->write; $permissiontodelete = $user->rights->stock->inventory_advance->write; } @@ -283,8 +281,7 @@ if ($object->id > 0) { print ''.$langs->trans("Edit").''."\n"; } - else - { + else { print ''.$langs->trans('Edit').''."\n"; } } @@ -295,8 +292,7 @@ if ($object->id > 0) { print ''.$langs->trans("Validate").''."\n"; } - else - { + else { print ''.$langs->trans('Validate').''."\n"; } } diff --git a/htdocs/product/inventory/list.php b/htdocs/product/inventory/list.php index f3f7621b821..c799ab7da87 100644 --- a/htdocs/product/inventory/list.php +++ b/htdocs/product/inventory/list.php @@ -77,8 +77,7 @@ if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { $result = restrictedArea($user, 'stock', $objectid); } -else -{ +else { $result = restrictedArea($user, 'stock', $objectid, '', 'inventory_advance'); } @@ -256,8 +255,7 @@ if (is_numeric($nbtotalofrecords) && ($limit > $nbtotalofrecords || empty($limit { $num = $nbtotalofrecords; } -else -{ +else { if ($limit) $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 17dd18b567b..347281f0c75 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -292,13 +292,11 @@ if ($search_type != '' && $search_type != '-1') { $texte = $langs->trans("Services"); } - else - { + else { $texte = $langs->trans("Products"); } } -else -{ +else { $texte = $langs->trans("ProductsAndServices"); } @@ -1411,8 +1409,7 @@ if ($resql) print ""; print ''; } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/product/popucom.php b/htdocs/product/popucom.php index 2c28266ad15..c21afa711e7 100644 --- a/htdocs/product/popucom.php +++ b/htdocs/product/popucom.php @@ -67,8 +67,7 @@ elseif ($type == '1') { $helpurl = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; } -else -{ +else { $helpurl = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; } $title = $langs->trans("Statistics"); @@ -153,8 +152,7 @@ if ($resql) } $db->free($resql); } -else -{ +else { dol_print_error($db); } //var_dump($infoprod); diff --git a/htdocs/product/popuprop.php b/htdocs/product/popuprop.php index bf2ae9020ec..92de8b33546 100644 --- a/htdocs/product/popuprop.php +++ b/htdocs/product/popuprop.php @@ -67,8 +67,7 @@ elseif ($type == '1') { $helpurl = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; } -else -{ +else { $helpurl = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; } $title = $langs->trans("Statistics"); @@ -153,8 +152,7 @@ if ($resql) } $db->free($resql); } -else -{ +else { dol_print_error($db); } //var_dump($infoprod); diff --git a/htdocs/product/price.php b/htdocs/product/price.php index f2109b94795..1db2219bf63 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -170,8 +170,7 @@ if (empty($reshook)) { $db->commit(); } - else - { + else { $db->rollback(); } @@ -767,8 +766,7 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ //print vatrate($object->multiprices_tva_tx[$soc->price_level], true); print ''; } - else - { + else { // TVA print ''.$langs->trans("DefaultTaxRate").''; @@ -787,8 +785,7 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ print ''; } } - else - { + else { if (!empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) // using this option is a bug. kept for backward compatibility { // We show only vat for level 1 @@ -796,8 +793,7 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ print ''.vatrate($object->multiprices_tva_tx[1], true).''; print ''; } - else - { + else { // TVA print ''.$langs->trans("DefaultTaxRate").''; @@ -846,8 +842,7 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ print ' '; print ''; } - else - { + else { print $langs->trans("SellingPrice").' '.$i; if (!empty($conf->global->$keyforlabel)) print ' - '.$langs->trans($conf->global->$keyforlabel); } @@ -872,8 +867,7 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ { print price($object->multiprices_min_ttc[$i]).' '.$langs->trans($object->multiprices_base_type[$i]); } - else - { + else { print price($object->multiprices_min[$i]).' '.$langs->trans($object->multiprices_base_type[$i]); } print ''; @@ -954,8 +948,7 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ } } } -else -{ +else { // TVA print ''.$langs->trans("DefaultTaxRate").''; @@ -998,8 +991,7 @@ else if ($object->prices_by_qty[0] == 0) { print '  ('.$langs->trans("Activate").')'; } - else - { + else { print '  ('.$langs->trans("DisablePriceByQty").')'; } print ''; @@ -1289,8 +1281,7 @@ if ($action == 'edit_price' && $object->getRights()->creer) print '
'; } - else - { + else { print ''."\n"; ?> '."\n"; print ''."\n"; } - else - { + else { print ''."\n"; } } diff --git a/htdocs/public/donations/donateurs_code.php b/htdocs/public/donations/donateurs_code.php index c92108d7723..045f726fe1d 100644 --- a/htdocs/public/donations/donateurs_code.php +++ b/htdocs/public/donations/donateurs_code.php @@ -88,8 +88,7 @@ if ($resql) { print "".dolGetFirstLastname($objp->firstname, $objp->lastname)." ".$objp->societe."\n"; } - else - { + else { print "Anonyme Anonyme\n"; } print "".dol_print_date($db->jdate($objp->datedon))."\n"; @@ -99,13 +98,11 @@ if ($resql) } print ""; } - else - { + else { print "Aucun don publique"; } } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index 7f788a84671..71e28c94da8 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -391,8 +391,7 @@ if ($action == 'add') { $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2)); } - else - { + else { $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); } } @@ -408,8 +407,7 @@ if ($action == 'add') { $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2)); } - else - { + else { $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); } } @@ -425,8 +423,7 @@ if ($action == 'add') { $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2)); } - else - { + else { $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); } } @@ -442,14 +439,12 @@ if ($action == 'add') { $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2)); } - else - { + else { $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); } } } - else - { + else { dol_print_error('', "Autosubscribe form is setup to ask an online payment for a not managed online payment"); exit; } @@ -458,8 +453,7 @@ if ($action == 'add') if (!empty($entity)) $urlback .= '&entity='.$entity; dol_syslog("member ".$adh->ref." was created, we redirect to ".$urlback); } - else - { + else { $error++; $errmsg .= join('
', $adh->errors); } @@ -472,8 +466,7 @@ if ($action == 'add') Header("Location: ".$urlback); exit; } - else - { + else { $db->rollback(); } } @@ -575,8 +568,7 @@ if (empty($conf->global->MEMBER_NEWFORM_FORCETYPE)) print $form->selectarray("type", $adht->liste_array(), GETPOST('type') ?GETPOST('type') : $defaulttype, $isempty); print ''."\n"; } -else -{ +else { $adht->fetch($conf->global->MEMBER_NEWFORM_FORCETYPE); print ''; } @@ -589,8 +581,7 @@ if (empty($conf->global->MEMBER_NEWFORM_FORCEMORPHY)) print $form->selectarray("morphy", $morphys, GETPOST('morphy'), 1); print ''."\n"; } -else -{ +else { print $morphys[$conf->global->MEMBER_NEWFORM_FORCEMORPHY]; print ''; } @@ -733,8 +724,7 @@ if (!empty($conf->global->MEMBER_NEWFORM_AMOUNT) { print ''; } - else - { + else { print ''; print ''; } diff --git a/htdocs/public/members/public_card.php b/htdocs/public/members/public_card.php index 04fe1f75fca..a955c9605f2 100644 --- a/htdocs/public/members/public_card.php +++ b/htdocs/public/members/public_card.php @@ -85,8 +85,7 @@ if ($id > 0) { print $langs->trans("ErrorThisMemberIsNotPublic"); } - else - { + else { print ''; print '\n"; diff --git a/htdocs/public/members/public_list.php b/htdocs/public/members/public_list.php index 459926707b8..1a885ed3596 100644 --- a/htdocs/public/members/public_list.php +++ b/htdocs/public/members/public_list.php @@ -153,8 +153,7 @@ if ($result) print $form->showphoto('memberphoto', $objp, 64); print ''."\n"; } - else - { + else { print "\n"; } print ""; @@ -162,8 +161,7 @@ if ($result) } print "
'.$langs->trans("Type").''.$object->type."
 
"; } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/public/notice.php b/htdocs/public/notice.php index 626aba2cd32..b3b362fa6b2 100644 --- a/htdocs/public/notice.php +++ b/htdocs/public/notice.php @@ -39,8 +39,7 @@ 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.
'; } -else -{ +else { $langs->load("error"); $langs->load("other"); diff --git a/htdocs/public/onlinesign/newonlinesign.php b/htdocs/public/onlinesign/newonlinesign.php index 2378728a8d3..20b029f960d 100644 --- a/htdocs/public/onlinesign/newonlinesign.php +++ b/htdocs/public/onlinesign/newonlinesign.php @@ -236,8 +236,7 @@ if ($source == 'proposal') $mesg = $proposal->error; $error++; } - else - { + else { $result = $proposal->fetch_thirdparty($proposal->socid); } @@ -277,13 +276,11 @@ if ($action != 'dosign') if ($found && !$error) // We are in a management option and no error { } - else - { + else { dol_print_error_email('ERRORNEWONLINESIGN'); } } -else -{ +else { // Print } diff --git a/htdocs/public/opensurvey/studs.php b/htdocs/public/opensurvey/studs.php index d0ce716bb7d..f26d31c483d 100644 --- a/htdocs/public/opensurvey/studs.php +++ b/htdocs/public/opensurvey/studs.php @@ -133,8 +133,7 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout setEventMessages($langs->trans("VoteNameAlreadyExists"), null, 'errors'); $error++; } - else - { + else { $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'opensurvey_user_studs (nom, id_sondage, reponses)'; $sql .= " VALUES ('".$db->escape($nom)."', '".$db->escape($numsondage)."','".$db->escape($nouveauchoix)."')"; $resql = $db->query($sql); @@ -173,8 +172,7 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout else dol_print_error($db); } } - else - { + else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Name")), null, 'errors'); } } @@ -392,8 +390,7 @@ if ($object->format == "D") print ''."\n"; } } -else -{ +else { //display of survey topics print ''."\n"; print ''."\n"; @@ -481,8 +478,7 @@ while ($compteur < $num) } } } - else - { + else { //sinon on remplace les choix de l'utilisateur par une ligne de checkbox pour recuperer de nouvelles valeurs if ($compteur == $ligneamodifier) { @@ -509,8 +505,7 @@ while ($compteur < $num) print ''."\n"; } } - else - { + else { for ($i = 0; $i < $nbcolonnes; $i++) { $car = substr($ensemblereponses, $i, 1); @@ -695,8 +690,7 @@ if ($object->allow_spy) { $meilleursujet .= dol_print_date($toutsujet[$i], 'daytext').' ('.dol_print_date($toutsujet[$i], '%A').')'; } } - else - { + else { $tmps = explode('@', $toutsujet[$i]); $meilleursujet .= dol_htmlentities($tmps[0]); } diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index ea7fd71c9e6..b82dcc3360b 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -211,8 +211,7 @@ if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) if ($source && $REF) $token = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$source.$REF, 2); // Use the source in the hash to avoid duplicates if the references are identical else $token = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); } - else - { + else { $token = $conf->global->PAYMENT_SECURITY_TOKEN; } if ($SECUREKEY != $token) @@ -371,8 +370,7 @@ if ($action == 'dopayment') if ($paymentmethod == 'stripe') { if (GETPOST('newamount', 'alpha')) $amount = price2num(GETPOST('newamount', 'alpha'), 'MT'); - else - { + else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Amount")), null, 'errors'); $action = ''; } @@ -469,8 +467,7 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) setEventMessages('Failed to create card record', null, 'errors'); $action = ''; } - else - { + else { if (!empty($FULLTAG)) $metadata["FULLTAG"] = $FULLTAG; if (!empty($dol_id)) $metadata["dol_id"] = $dol_id; if (!empty($dol_type)) $metadata["dol_type"] = $dol_type; @@ -497,8 +494,7 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) } } } - else - { + else { $vatcleaned = $vatnumber ? $vatnumber : null; /*$taxinfo = array('type'=>'vat'); @@ -670,8 +666,7 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) setEventMessages($paymentintent->status, null, 'errors'); $action = ''; } - else - { + else { // TODO We can alse record the payment mode into llx_societe_rib with stripe $paymentintent->payment_method // Note that with other old Stripe architecture (using Charge API), the payment mode was not recorded, so it is not mandatory to do it here. //dol_syslog("Create payment_method for ".$paymentintent->payment_method, LOG_DEBUG, 0, '_stripe'); @@ -701,8 +696,7 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) header("Location: ".$urlko); exit; } - else - { + else { header("Location: ".$urlok); exit; } @@ -914,8 +908,7 @@ if ($source == 'order') $mesg = $order->error; $error++; } - else - { + else { $result = $order->fetch_thirdparty($order->socid); } $object = $order; @@ -1009,8 +1002,7 @@ if ($source == 'order') print ''."\n"; print ''."\n"; } - else - { + else { print ''."\n"; } if (is_object($order->thirdparty)) print ''."\n"; @@ -1037,8 +1029,7 @@ if ($source == 'invoice') $mesg = $invoice->error; $error++; } - else - { + else { $result = $invoice->fetch_thirdparty($invoice->socid); } $object = $invoice; @@ -1103,8 +1094,7 @@ if ($source == 'invoice') print ''; } } - else - { + else { print ''.price($object->total_ttc, 1, $langs).''; } // Currency @@ -1139,8 +1129,7 @@ if ($source == 'invoice') print ''."\n"; print ''."\n"; } - else - { + else { print ''."\n"; } if (is_object($invoice->thirdparty)) print ''."\n"; @@ -1168,8 +1157,7 @@ if ($source == 'contractline') $mesg = $contractline->error; $error++; } - else - { + else { if ($contractline->fk_contrat > 0) { $result = $contract->fetch($contractline->fk_contrat); @@ -1177,14 +1165,12 @@ if ($source == 'contractline') { $result = $contract->fetch_thirdparty($contract->socid); } - else - { + else { $mesg = $contract->error; $error++; } } - else - { + else { $mesg = 'ErrorRecordNotFound'; $error++; } @@ -1207,8 +1193,7 @@ if ($source == 'contractline') $pu_ttc = $product->multiprices_ttc[$contract->thirdparty->price_level]; $price_base_type = $product->multiprices_base_type[$contract->thirdparty->price_level]; } - else - { + else { $pu_ht = $product->price; $pu_ttc = $product->price_ttc; $price_base_type = $product->price_base_type; @@ -1294,8 +1279,7 @@ if ($source == 'contractline') { $dur = array("h"=>$langs->trans("Hours"), "d"=>$langs->trans("DurationDays"), "w"=>$langs->trans("DurationWeeks"), "m"=>$langs->trans("DurationMonths"), "y"=>$langs->trans("DurationYears")); } - else - { + else { $dur = array("h"=>$langs->trans("Hour"), "d"=>$langs->trans("DurationDay"), "w"=>$langs->trans("DurationWeek"), "m"=>$langs->trans("DurationMonth"), "y"=>$langs->trans("DurationYear")); } $duration = $contractline->product->duration_value.' '.$dur[$contractline->product->duration_unit]; @@ -1352,8 +1336,7 @@ if ($source == 'contractline') print ''."\n"; print ''."\n"; } - else - { + else { print ''."\n"; } if (is_object($contract->thirdparty)) print ''."\n"; @@ -1380,8 +1363,7 @@ if ($source == 'membersubscription') $mesg = $member->error; $error++; } - else - { + else { $member->fetch_thirdparty(); $subscription = new Subscription($db); } @@ -1523,8 +1505,7 @@ if ($source == 'membersubscription') print ''."\n"; print ''."\n"; } - else - { + else { print ''."\n"; } if (is_object($member->thirdparty)) print ''."\n"; @@ -1549,8 +1530,7 @@ if ($source == 'donation') $mesg = $don->error; $error++; } - else - { + else { $don->fetch_thirdparty(); } $object = $don; @@ -1668,8 +1648,7 @@ if ($source == 'donation') print ''."\n"; print ''."\n"; } - else - { + else { print ''."\n"; } if (is_object($don->thirdparty)) print ''."\n"; @@ -1705,8 +1684,7 @@ if ($action != 'dopayment') { print '

'.$langs->trans("DonationPaid").''; } - else - { + else { // Membership can be paid and we still allow to make renewal if ($source == 'membersubscription' && $object->datefin > dol_now()) { @@ -1796,13 +1774,11 @@ if ($action != 'dopayment') } } } - else - { + else { dol_print_error_email('ERRORNEWPAYMENT'); } } -else -{ +else { // Print } @@ -1940,8 +1916,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment { print '
'.$langs->trans("Error").'
'; } - else - { + else { print ''; //$_SESSION["paymentintent_id"] = $paymentintent->id; } @@ -1956,8 +1931,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment $langs->load("errors"); print info_admin($langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Stripe")), 0, 0, 'error'); } - else - { + else { print ''; print ''."\n"; print ''."\n"; @@ -2173,7 +2147,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment // Old code for payment with option STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION off and STRIPE_USE_NEW_CHECKOUT off @@ -2241,7 +2215,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment }); /* Use 3DS source */ diff --git a/htdocs/public/payment/paymentko.php b/htdocs/public/payment/paymentko.php index a3f6d733fcb..a261c6101a0 100644 --- a/htdocs/public/payment/paymentko.php +++ b/htdocs/public/payment/paymentko.php @@ -78,8 +78,7 @@ if (empty($paymentmethod)) dol_print_error(null, 'The back url does not contains a parameter fulltag that should help us to find the payment method used'); exit; } -else -{ +else { dol_syslog("paymentmethod=".$paymentmethod); } @@ -187,8 +186,7 @@ if (!empty($_SESSION['ipaddress'])) // To avoid to make action twice { dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment'); } - else - { + else { dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment'); } } diff --git a/htdocs/public/payment/paymentok.php b/htdocs/public/payment/paymentok.php index b1d6c149a51..a1d562b8690 100644 --- a/htdocs/public/payment/paymentok.php +++ b/htdocs/public/payment/paymentok.php @@ -222,8 +222,7 @@ if (!empty($conf->paypal->enabled)) // Nothing to do dol_syslog("Call to GetExpressCheckoutDetails return ".$ack, LOG_DEBUG, 0, '_payment'); } - else - { + else { dol_syslog("Call to GetExpressCheckoutDetails return error: ".json_encode($resArray), LOG_WARNING, '_payment'); } @@ -251,8 +250,7 @@ if (!empty($conf->paypal->enabled)) $ispaymentok = true; } - else - { + else { dol_syslog("Call to DoExpressCheckoutPayment return error: ".json_encode($resArray2), LOG_WARNING, 0, '_payment'); //Display a user friendly Error on the page using any of the following error information returned by PayPal @@ -262,13 +260,11 @@ if (!empty($conf->paypal->enabled)) $ErrorSeverityCode = urldecode($resArray2["L_SEVERITYCODE0"]); } } - else - { + else { dol_print_error('', 'Session expired'); } } - else - { + else { dol_print_error('', '$PAYPALTOKEN not defined'); } } @@ -420,8 +416,7 @@ if ($ispaymentok) $postactionmessages[] = $errmsg; $ispostactionok = -1; } - else - { + else { $postactionmessages[] = 'Subscription created'; $ispostactionok = 1; } @@ -443,8 +438,7 @@ if ($ispaymentok) $postactionmessages = array_merge($postactionmessages, $object->errors); $ispostactionok = -1; } - else - { + else { if ($option == 'bankviainvoice') { $postactionmessages[] = 'Invoice, payment and bank record created'; @@ -523,8 +517,7 @@ if ($ispaymentok) { $db->commit(); } - else - { + else { $db->rollback(); } @@ -590,8 +583,7 @@ if ($ispaymentok) $postactionmessages[] = $errmsg; $ispostactionok = -1; } - else - { + else { if ($file) $postactionmessages[] = 'Email sent to member (with invoice document attached)'; else $postactionmessages[] = 'Email sent to member (without any attached document)'; @@ -600,14 +592,12 @@ if ($ispaymentok) } } } - else - { + else { $postactionmessages[] = 'Failed to get a valid value for "amount paid" or "payment type" to record the payment of subscription for member '.$tmptag['MEM'].'. May be payment was already recorded.'; $ispostactionok = -1; } } - else - { + else { $postactionmessages[] = 'Member '.$tmptag['MEM'].' for subscription payed was not found'; $ispostactionok = -1; } @@ -648,8 +638,7 @@ if ($ispaymentok) { $paiement->amounts = array($invoice->id => $FinalPaymentAmt); // Array with all payments dispatching with invoice id } - else - { + else { $paiement->multicurrency_amounts = array($invoice->id => $FinalPaymentAmt); // Array with all payments dispatching $postactionmessages[] = 'Payment was done in a different currency that currency expected of company'; @@ -672,8 +661,7 @@ if ($ispaymentok) $ispostactionok = -1; $error++; } - else - { + else { $postactionmessages[] = 'Payment created'; $ispostactionok = 1; } @@ -697,14 +685,12 @@ if ($ispaymentok) $ispostactionok = -1; $error++; } - else - { + else { $postactionmessages[] = 'Bank transaction of payment created'; $ispostactionok = 1; } } - else - { + else { $postactionmessages[] = 'Setup of bank account to use in module '.$paymentmethod.' was not set. No way to record the payment.'; $ispostactionok = -1; $error++; @@ -715,25 +701,21 @@ if ($ispaymentok) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { $postactionmessages[] = 'Failed to get a valid value for "amount paid" ('.$FinalPaymentAmt.') or "payment type" ('.$paymentType.') to record the payment of invoice '.$tmptag['INV'].'. May be payment was already recorded.'; $ispostactionok = -1; } } - else - { + else { $postactionmessages[] = 'Invoice payed '.$tmptag['INV'].' was not found'; $ispostactionok = -1; } } - else - { + else { // Nothing done } } @@ -811,8 +793,7 @@ if ($ispaymentok) //$content.=$companylangs->trans("ThirdPartyId").': '.$tmptag['CUS']."
\n"; $content .= $companylangs->trans("Link").':
'.$url.''."
\n"; } - else - { + else { $content .= $companylangs->transnoentitiesnoconv("NewOnlinePaymentReceived")."
\n"; } $content .= $companylangs->transnoentities("PostActionAfterPayment").' : '; @@ -825,8 +806,7 @@ if ($ispaymentok) { $content .= $companylangs->transnoentitiesnoconv("None"); } - else - { + else { $topic .= ($ispostactionok ? '' : ' ('.$companylangs->trans("WarningPostActionErrorAfterPayment").')'); $content .= ''.$companylangs->transnoentitiesnoconv("Error").''; } @@ -865,15 +845,13 @@ if ($ispaymentok) dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment'); //dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0); } - else - { + else { dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment'); //dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0); } } } -else -{ +else { // Get on url call $onlinetoken = empty($PAYPALTOKEN) ? $_SESSION['onlinetoken'] : $PAYPALTOKEN; $payerID = empty($PAYPALPAYERID) ? $_SESSION['payerID'] : $PAYPALPAYERID; @@ -952,8 +930,7 @@ else { dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment'); } - else - { + else { dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment'); } } diff --git a/htdocs/public/stripe/confirm_payment.php b/htdocs/public/stripe/confirm_payment.php index 9a45a2cbeec..9c6346842c8 100644 --- a/htdocs/public/stripe/confirm_payment.php +++ b/htdocs/public/stripe/confirm_payment.php @@ -49,8 +49,7 @@ if (isset($_GET['connect'])) $service = 'StripeTest'; $servicestatus = 0; } - else - { + else { $endpoint_secret = $conf->global->STRIPE_LIVE_WEBHOOK_CONNECT_KEY; $service = 'StripeLive'; $servicestatus = 1; @@ -63,8 +62,7 @@ else { $service = 'StripeTest'; $servicestatus = 0; } - else - { + else { $endpoint_secret = $conf->global->STRIPE_LIVE_WEBHOOK_KEY; $service = 'StripeLive'; $servicestatus = 1; diff --git a/htdocs/public/stripe/ipn.php b/htdocs/public/stripe/ipn.php index 4291cb6f834..e3cc21b327b 100644 --- a/htdocs/public/stripe/ipn.php +++ b/htdocs/public/stripe/ipn.php @@ -49,8 +49,7 @@ if (isset($_GET['connect'])) $service = 'StripeTest'; $servicestatus = 0; } - else - { + else { $endpoint_secret = $conf->global->STRIPE_LIVE_WEBHOOK_CONNECT_KEY; $service = 'StripeLive'; $servicestatus = 1; @@ -63,8 +62,7 @@ else { $service = 'StripeTest'; $servicestatus = 0; } - else - { + else { $endpoint_secret = $conf->global->STRIPE_LIVE_WEBHOOK_KEY; $service = 'StripeLive'; $servicestatus = 1; @@ -189,8 +187,7 @@ if ($event->type == 'payout.created') { http_response_code(200); // PHP 5.4 or greater return 1; } - else - { + else { $error++; http_response_code(500); // PHP 5.4 or greater return -1; @@ -270,8 +267,7 @@ elseif ($event->type == 'payout.paid') { http_response_code(200); // PHP 5.4 or greater return 1; } - else - { + else { $error++; http_response_code(500); // PHP 5.4 or greater return -1; @@ -344,8 +340,7 @@ elseif ($event->type == 'payment_method.attached') { { $db->commit(); } - else - { + else { $db->rollback(); } } @@ -381,8 +376,7 @@ elseif ($event->type == 'payment_method.updated') { { $db->commit(); } - else - { + else { $db->rollback(); } } diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index c326b4a6bd2..cbe88b006d4 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -46,8 +46,7 @@ if (empty($usedolheader)) trans('TicketMessagesList'), '', 'object_conversation'); $object->viewTicketMessages(false, true, $object->dao); } - else - { + else { print ''; } } else { diff --git a/htdocs/public/website/index.php b/htdocs/public/website/index.php index 95f2efa492a..2f18de010a0 100644 --- a/htdocs/public/website/index.php +++ b/htdocs/public/website/index.php @@ -106,8 +106,7 @@ if (empty($pageid)) } } } - else - { + else { if ($object->fk_default_home > 0) { $result = $objectpage->fetch($object->fk_default_home); @@ -165,8 +164,7 @@ if ($pageid == 'css') // No more used ? header('Cache-Control: no-cache'); $original_file = $dolibarr_main_data_root.'/website/'.$websitekey.'/styles.css.php'; } -else -{ +else { $original_file = $dolibarr_main_data_root.'/website/'.$websitekey.'/page'.$pageid.'.tpl.php'; } diff --git a/htdocs/public/website/styles.css.php b/htdocs/public/website/styles.css.php index ce416bdd7b6..24125178f5d 100644 --- a/htdocs/public/website/styles.css.php +++ b/htdocs/public/website/styles.css.php @@ -78,8 +78,7 @@ if (empty($pageid)) $object->fetch($websiteid); $website = $object->ref; } - else - { + else { $object->fetch(0, $website); } diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index 3d8547f9322..2ada4b1c447 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -233,8 +233,7 @@ if (empty($reshook)) if ($object->origin == "supplierorder") $classname = 'CommandeFournisseur'; - else - $classname = ucfirst($object->origin); + else $classname = ucfirst($object->origin); $objectsrc = new $classname($db); $objectsrc->fetch($object->origin_id); @@ -354,8 +353,7 @@ if (empty($reshook)) } } } - else - { + else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("QtyToReceive").'/'.$langs->transnoentitiesnoconv("Warehouse")), null, 'errors'); $error++; } @@ -366,8 +364,7 @@ if (empty($reshook)) header("Location: card.php?id=".$object->id); exit; } - else - { + else { $db->rollback(); $_GET["commande_id"] = GETPOST('commande_id', 'int'); $action = 'create'; @@ -388,8 +385,7 @@ if (empty($reshook)) $langs->load("errors"); setEventMessages($langs->trans($object->error), null, 'errors'); } - else - { + else { // Define output language if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { @@ -418,8 +414,7 @@ if (empty($reshook)) header("Location: ".DOL_URL_ROOT.'/reception/index.php'); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -567,8 +562,7 @@ if (empty($reshook)) header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id); exit(); } - else - { + else { setEventMessages($line->error, $line->errors, 'errors'); } } @@ -667,8 +661,7 @@ if (empty($reshook)) $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); } } - else - { + else { header('Location: '.$_SERVER['PHP_SELF'].'?id='.$object->id); // Pour reaffichage de la fiche en cours d'edition exit(); } @@ -1049,8 +1042,7 @@ if ($action == 'create') print ''; } - else - { + else { print ""; if ($type == 1) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); @@ -1089,8 +1081,7 @@ if ($action == 'create') { $quantityToBeDelivered = 0; } - else - { + else { $quantityToBeDelivered = $dispatchLines[$indiceAsked]['qty']; } $warehouse_id = $dispatchLines[$indiceAsked]['ent']; @@ -1131,8 +1122,7 @@ if ($action == 'create') print $formproduct->selectWarehouses($tmpentrepot_id, 'entl'.$indiceAsked, '', 0, 0, $line->fk_product, '', 1); } } - else - { + else { print $langs->trans("Service"); } print ''; @@ -1195,8 +1185,7 @@ if ($action == 'create') print '
'; } - else - { + else { dol_print_error($db); } } @@ -1247,8 +1236,7 @@ elseif ($id || $ref) { $numref = $object->getNextNumRef($soc); } - else - { + else { $numref = $object->ref; } @@ -1413,8 +1401,7 @@ elseif ($id || $ref) print ''; print ''; } - else - { + else { print $object->date_delivery ? dol_print_date($object->date_delivery, 'dayhour') : ' '; } print ''; @@ -1437,8 +1424,7 @@ elseif ($id || $ref) print ' '; print ''; } - else - { + else { print $object->trueWeight; print ($object->trueWeight && $object->weight_units != '') ? ' '.measuringUnitString(0, "weight", $object->weight_units) : ''; } @@ -1472,8 +1458,7 @@ elseif ($id || $ref) print ' '; print ''; } - else - { + else { print $object->trueHeight; print ($object->trueHeight && $object->height_units != '') ? ' '.measuringUnitString(0, "size", $object->height_units) : ''; } @@ -1551,8 +1536,7 @@ elseif ($id || $ref) print ''; print ''; } - else - { + else { if ($object->shipping_method_id > 0) { // Get code using getLabelFromKey @@ -1585,8 +1569,7 @@ elseif ($id || $ref) { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); } - else - { + else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?id='.$object->id); } print ''; @@ -1640,8 +1623,7 @@ elseif ($id || $ref) { print $langs->trans("QtyToReceive").' - '; } - else - { + else { print $langs->trans("QtyReceived").' - '; } if (!empty($conf->stock->enabled)) @@ -1654,14 +1636,12 @@ elseif ($id || $ref) } print ''; } - else - { + else { if ($object->statut <= 1) { print ''.$langs->trans("QtyToReceive").''; } - else - { + else { print ''.$langs->trans("QtyReceived").''; } if (!empty($conf->stock->enabled)) @@ -1769,8 +1749,7 @@ elseif ($id || $ref) $prod->fetch($lines[$i]->fk_product); $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $lines[$i]->product->label; } - else - $label = (!empty($lines[$i]->product->label) ? $lines[$i]->product->label : $lines[$i]->product->product_label); + else $label = (!empty($lines[$i]->product->label) ? $lines[$i]->product->label : $lines[$i]->product->product_label); print ''; @@ -1785,8 +1764,7 @@ elseif ($id || $ref) } print "\n"; } - else - { + else { print ""; if ($lines[$i]->product_type == Product::TYPE_SERVICE) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); @@ -1806,8 +1784,7 @@ elseif ($id || $ref) { print ''; } - else - { + else { print ''.$lines[$i]->comment.''; } @@ -1873,8 +1850,7 @@ elseif ($id || $ref) } print ''; } - else - { + else { print ''; print ''; // Qty to receive or received @@ -1888,8 +1864,7 @@ elseif ($id || $ref) } print ''; } - else - { + else { // Qty to receive or received print ''.$lines[$i]->qty.''; @@ -1926,8 +1901,7 @@ elseif ($id || $ref) print $form->textwithtooltip(img_picto('', 'object_barcode').' '.$langs->trans("DetailBatchNumber"), $detail); } - else - { + else { print $langs->trans("NA"); } print ''; @@ -1988,8 +1962,7 @@ elseif ($id || $ref) { print $line->showOptionals($extrafields, 'edit', array('colspan'=>$colspan), $indiceAsked); } - else - { + else { print $line->showOptionals($extrafields, 'view', array('colspan'=>$colspan), $indiceAsked); } } @@ -2027,8 +2000,7 @@ elseif ($id || $ref) { print ''.$langs->trans("Validate").''; } - else - { + else { print ''.$langs->trans("Validate").''; } } @@ -2045,8 +2017,7 @@ elseif ($id || $ref) { print ''.$langs->trans("ClassifyUnbilled").''; } - else - { + else { print ''.$langs->trans("ReOpen").''; } } diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index a95d6217c1c..111846347be 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -179,14 +179,12 @@ class Reception extends CommonObject { return $numref; } - else - { + else { dol_print_error($this->db, get_class($this)."::getNextNumRef ".$obj->error); return ""; } } - else - { + else { print $langs->trans("Error")." ".$langs->trans("Error_RECEPTION_ADDON_NUMBER_NotDefined"); return ""; } @@ -325,8 +323,7 @@ class Reception extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR); @@ -336,16 +333,14 @@ class Reception extends CommonObject return -1 * $error; } } - else - { + else { $error++; $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -2; } } - else - { + else { $error++; $this->error = $this->db->error()." - sql=$sql"; $this->db->rollback(); @@ -473,15 +468,13 @@ class Reception extends CommonObject return 1; } - else - { + else { dol_syslog(get_class($this).'::Fetch no reception found', LOG_ERR); $this->error = 'Delivery with id '.$id.' not found'; return 0; } } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -602,8 +595,7 @@ class Reception extends CommonObject break; } } - else - { + else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record. @@ -618,8 +610,7 @@ class Reception extends CommonObject } } } - else - { + else { $this->db->rollback(); $this->error = $this->db->error(); return -2; @@ -694,8 +685,7 @@ class Reception extends CommonObject $this->db->commit(); return 1; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::valid ".$errmsg, LOG_ERR); @@ -867,8 +857,7 @@ class Reception extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -922,8 +911,7 @@ class Reception extends CommonObject $result = $mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $obj->qty, 0, $langs->trans("ReceptionDeletedInDolibarr", $this->ref), '', $obj->eatby, $obj->sellby, $obj->batch); // Price is set to 0, because we don't want to see WAP changed } } - else - { + else { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } } @@ -1000,35 +988,30 @@ class Reception extends CommonObject return 1; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -3; } } - else - { + else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -1; } } - else - { + else { $this->db->rollback(); return -1; } @@ -1274,14 +1257,12 @@ class Reception extends CommonObject $this->date_delivery = $date_livraison; return 1; } - else - { + else { $this->error = $this->db->error(); return -1; } } - else - { + else { return -2; } } @@ -1365,8 +1346,7 @@ class Reception extends CommonObject $sql .= " VALUES ('".$this->db->escape($this->update['code'])."','".$this->db->escape($this->update['libelle'])."','".$this->db->escape($this->update['description'])."','".$this->db->escape($this->update['tracking'])."')"; $resql = $this->db->query($sql); } - else - { + else { $sql = "UPDATE ".MAIN_DB_PREFIX."c_shipment_mode SET"; $sql .= " code='".$this->db->escape($this->update['code'])."'"; $sql .= ",libelle='".$this->db->escape($this->update['libelle'])."'"; @@ -1442,8 +1422,7 @@ class Reception extends CommonObject $url = str_replace('{TRACKID}', $value, $tracking); $this->tracking_url = sprintf(''.($value ? $value : 'url').'', $url, $url); } - else - { + else { $this->tracking_url = $value; } } @@ -1545,8 +1524,7 @@ class Reception extends CommonObject $error++; break; } } - else - { + else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record @@ -1560,8 +1538,7 @@ class Reception extends CommonObject } } } - else - { + else { $this->error = $this->db->lasterror(); $error++; } @@ -1576,8 +1553,7 @@ class Reception extends CommonObject } } } - else - { + else { dol_print_error($this->db); $error++; } @@ -1587,8 +1563,7 @@ class Reception extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -1633,8 +1608,7 @@ class Reception extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -1710,8 +1684,7 @@ class Reception extends CommonObject $error++; break; } } - else - { + else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record @@ -1724,8 +1697,7 @@ class Reception extends CommonObject } } } - else - { + else { $this->error = $this->db->lasterror(); $error++; } @@ -1755,8 +1727,7 @@ class Reception extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -1846,8 +1817,7 @@ class Reception extends CommonObject break; } } - else - { + else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record @@ -1860,8 +1830,7 @@ class Reception extends CommonObject } } } - else - { + else { $this->error = $this->db->lasterror(); $error++; } @@ -1912,8 +1881,7 @@ class Reception extends CommonObject return -1; } } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; diff --git a/htdocs/reception/contact.php b/htdocs/reception/contact.php index b2d30bf7c7f..b5e526bb1b3 100644 --- a/htdocs/reception/contact.php +++ b/htdocs/reception/contact.php @@ -91,8 +91,7 @@ if ($action == 'addcontact' && $user->rights->reception->creer) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { if ($objectsrc->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); diff --git a/htdocs/reception/list.php b/htdocs/reception/list.php index c6cfcd5264c..c753cf3e873 100644 --- a/htdocs/reception/list.php +++ b/htdocs/reception/list.php @@ -279,15 +279,13 @@ if (empty($reshook)) $result = $object->insert_discount($discountid); //$result=$discount->link_to_invoice($lineid,$id); } - else - { + else { setEventMessages($discount->error, $discount->errors, 'errors'); $error++; break; } } - else - { + else { // Positive line $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0); // Date start @@ -335,8 +333,7 @@ if (empty($reshook)) { $lineid = $result; } - else - { + else { $lineid = 0; $error++; break; @@ -391,8 +388,7 @@ if (empty($reshook)) $db->commit(); setEventMessage($langs->trans('BillCreated', $nb_bills_created)); } - else - { + else { $db->rollback(); $action = 'create'; $_GET["origin"] = $_POST["origin"]; @@ -585,8 +581,7 @@ if ($resql) print $form->selectyesno('validate_invoices', 0, 1, 1); print ' ('.$langs->trans("AutoValidationNotPossibleWhenStockIsDecreasedOnInvoiceValidation").')'; } - else - { + else { print $form->selectyesno('validate_invoices', 0, 1); } print ''; @@ -937,8 +932,7 @@ if ($resql) print ''; $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/reception/stats/index.php b/htdocs/reception/stats/index.php index e7e8ef7e090..4a0bcb4fd04 100644 --- a/htdocs/reception/stats/index.php +++ b/htdocs/reception/stats/index.php @@ -78,8 +78,7 @@ if (!$user->rights->societe->client->voir || $user->socid) { $filenamenb = $dir.'/receptionsnbinyear-'.$user->id.'-'.$year.'.png'; } -else -{ +else { $filenamenb = $dir.'/receptionsnbinyear-'.$year.'.png'; } diff --git a/htdocs/resource/agenda.php b/htdocs/resource/agenda.php index 1035d17d5f9..fa99e4610d5 100644 --- a/htdocs/resource/agenda.php +++ b/htdocs/resource/agenda.php @@ -49,8 +49,7 @@ if (GETPOST('actioncode', 'array')) $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; } -else -{ +else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/resource/card.php b/htdocs/resource/card.php index b403c0516f9..9f2a044525d 100644 --- a/htdocs/resource/card.php +++ b/htdocs/resource/card.php @@ -100,8 +100,7 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Ref")), null, 'errors'); $action = 'create'; } - else - { + else { $object->ref = $ref; $object->description = $description; $object->fk_code_type_resource = $fk_code_type_resource; @@ -119,16 +118,14 @@ if (empty($reshook)) Header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { // Creation KO setEventMessages($object->error, $object->errors, 'errors'); $action = 'create'; } } } - else - { + else { Header("Location: list.php"); exit; } @@ -166,14 +163,12 @@ if (empty($reshook)) Header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $error++; } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $error++; } @@ -198,13 +193,11 @@ if (empty($reshook)) Header('Location: '.DOL_URL_ROOT.'/resource/list.php'); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -228,8 +221,7 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) print load_fiche_titre($title, '', 'object_resource'); dol_fiche_head(''); } - else - { + else { $head = resource_prepare_head($object); dol_fiche_head($head, 'resource', $title, -1, 'resource'); } @@ -292,8 +284,7 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) print ''; } - else - { + else { $formconfirm = ''; // Confirm deleting resource line diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index 1b4223e1fff..41c0db7ec15 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -165,8 +165,7 @@ class Dolresource extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return $this->id; } @@ -224,8 +223,7 @@ class Dolresource extends CommonObject return $this->id; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); return -1; @@ -330,8 +328,7 @@ class Dolresource extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -389,8 +386,7 @@ class Dolresource extends CommonObject return $this->id; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -428,8 +424,7 @@ class Dolresource extends CommonObject $error++; } } - else - { + else { $this->error = $this->db->lasterror(); $error++; } @@ -476,8 +471,7 @@ class Dolresource extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -568,8 +562,7 @@ class Dolresource extends CommonObject } return $num; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -646,8 +639,7 @@ class Dolresource extends CommonObject } return $num; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -725,8 +717,7 @@ class Dolresource extends CommonObject } return $num; } - else - { + else { $this->error = $this->db->lasterror(); return -1; } @@ -817,8 +808,7 @@ class Dolresource extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -925,8 +915,7 @@ class Dolresource extends CommonObject } return $num; } - else - { + else { dol_print_error($this->db); return -1; } diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php index 4836ed1a0f1..3eeebeaee45 100644 --- a/htdocs/resource/class/html.formresource.class.php +++ b/htdocs/resource/class/html.formresource.class.php @@ -127,8 +127,7 @@ class FormResource { $out .= ''; } - else - { + else { $out .= ''; } @@ -147,8 +146,7 @@ class FormResource $out .= ''; } } - else - { + else { dol_print_error($this->db); } diff --git a/htdocs/resource/contact.php b/htdocs/resource/contact.php index cbc94c2e843..dc916aa5f77 100644 --- a/htdocs/resource/contact.php +++ b/htdocs/resource/contact.php @@ -63,8 +63,7 @@ if ($action == 'addcontact' && $user->rights->resource->write) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); $mesg = $langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"); diff --git a/htdocs/resource/document.php b/htdocs/resource/document.php index d0d4e2300d8..0e6b20923b5 100644 --- a/htdocs/resource/document.php +++ b/htdocs/resource/document.php @@ -137,8 +137,7 @@ if ($object->id > 0) include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index 1ce3957071a..8e353b59788 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -98,8 +98,7 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Resource")), null, 'errors'); $action = ''; } - else - { + else { $objstat = fetchObjectByElement($element_id, $element, $element_ref); $objstat->element = $element; // For externals module, we need to keep @xx @@ -266,8 +265,7 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -298,8 +296,7 @@ if ($ret == -1) { if (!$ret) { print '
'.$langs->trans('NoResourceInDatabase').'
'; } -else -{ +else { // Confirmation suppression resource line if ($action == 'delete_resource') { @@ -412,8 +409,7 @@ else } $_SESSION['assignedtouser'] = json_encode($listofuserid); } - else - { + else { if (!empty($_SESSION['assignedtouser'])) { $listofuserid = json_decode($_SESSION['assignedtouser'], true); @@ -601,8 +597,7 @@ else { $tpl = dol_buildpath($reldir.'/resource_'.$element_prop['element'].'_add.tpl.php'); } - else - { + else { $tpl = DOL_DOCUMENT_ROOT.$reldir.'/resource_add.tpl.php'; } if (empty($conf->file->strict_mode)) { @@ -621,8 +616,7 @@ else { $tpl = dol_buildpath($reldir.'/resource_'.$element_prop['element'].'_view.tpl.php'); } - else - { + else { $tpl = DOL_DOCUMENT_ROOT.$reldir.'/resource_view.tpl.php'; } if (empty($conf->file->strict_mode)) { diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index 033d49ae8c8..4f94c6c3e17 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -282,8 +282,7 @@ if ($ret) print ''; } } -else -{ +else { $colspan = 1; foreach ($arrayfields as $key => $val) { if (!empty($val['checked'])) $colspan++; } print ''.$langs->trans("NoRecordFound").''; diff --git a/htdocs/salaries/admin/salaries.php b/htdocs/salaries/admin/salaries.php index 29e3c325ee0..b1f1f627a99 100644 --- a/htdocs/salaries/admin/salaries.php +++ b/htdocs/salaries/admin/salaries.php @@ -63,8 +63,7 @@ if ($action == 'update') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -115,8 +114,7 @@ foreach ($list as $key) { print $formaccounting->select_account($conf->global->$key, $key, 1, '', 1, 1); } - else - { + else { print ''; } print ''; diff --git a/htdocs/salaries/card.php b/htdocs/salaries/card.php index ade8924b0d0..d7b71edbf0b 100644 --- a/htdocs/salaries/card.php +++ b/htdocs/salaries/card.php @@ -159,8 +159,7 @@ if ($action == 'add' && empty($cancel)) exit; } } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); $action = "create"; @@ -194,21 +193,18 @@ if ($action == 'delete') header("Location: ".DOL_URL_ROOT.'/salaries/list.php'); exit; } - else - { + else { $object->error = $accountline->error; $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages('Error try do delete a line linked to a conciliated bank transaction', null, 'errors'); } } @@ -494,13 +490,11 @@ if ($id) { print ''; } - else - { + else { print ''; } } - else - { + else { print ''; } print ""; diff --git a/htdocs/salaries/class/paymentsalary.class.php b/htdocs/salaries/class/paymentsalary.class.php index 82cdf3c80ce..9fddd59ce51 100644 --- a/htdocs/salaries/class/paymentsalary.class.php +++ b/htdocs/salaries/class/paymentsalary.class.php @@ -183,8 +183,7 @@ class PaymentSalary extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -264,8 +263,7 @@ class PaymentSalary extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -481,8 +479,7 @@ class PaymentSalary extends CommonObject { $this->update_fk_bank($bank_line_id); } - else - { + else { $this->error = $acc->error; $error++; } @@ -532,14 +529,12 @@ class PaymentSalary extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -563,8 +558,7 @@ class PaymentSalary extends CommonObject { return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -676,8 +670,7 @@ class PaymentSalary extends CommonObject } $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/salaries/document.php b/htdocs/salaries/document.php index ff709816d18..0e6a1bccba0 100644 --- a/htdocs/salaries/document.php +++ b/htdocs/salaries/document.php @@ -129,8 +129,7 @@ if ($object->id) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/salaries/list.php b/htdocs/salaries/list.php index fd6e7a3ec95..b06ad2348e4 100644 --- a/htdocs/salaries/list.php +++ b/htdocs/salaries/list.php @@ -68,8 +68,7 @@ if (!GETPOST('typeid', 'int')) if ($part[0] == 's.fk_typepayment') $typeid = $part[1]; } } -else -{ +else { $typeid = GETPOST('typeid', 'int'); } @@ -318,8 +317,7 @@ if ($result) $db->free($result); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index fb6663be951..307b903787e 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -54,8 +54,7 @@ if ($action == 'setcodeclient') header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -67,8 +66,7 @@ if ($action == 'setcodecompta') header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -84,8 +82,7 @@ if ($action == 'updateoptions') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -99,8 +96,7 @@ if ($action == 'updateoptions') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -114,8 +110,7 @@ if ($action == 'updateoptions') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -178,8 +173,7 @@ if ($action == 'setdoc') { $db->commit(); } - else - { + else { $db->rollback(); } } @@ -193,8 +187,7 @@ if ($action == "setaddrefinlist") { { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -208,8 +201,7 @@ if ($action == "setaddadressinlist") { { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -223,8 +215,7 @@ if ($action == "setaskforshippingmet") { { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -238,8 +229,7 @@ if ($action == "setdisableprospectcustomer") { { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -255,8 +245,7 @@ if ($action == 'setprofid') //header("Location: ".$_SERVER["PHP_SELF"]); //exit; } - else - { + else { dol_print_error($db); } } @@ -272,8 +261,7 @@ if ($action == 'setprofidmandatory') //header("Location: ".$_SERVER["PHP_SELF"]); //exit; } - else - { + else { dol_print_error($db); } } @@ -289,8 +277,7 @@ if ($action == 'setprofidinvoicemandatory') //header("Location: ".$_SERVER["PHP_SELF"]); //exit; } - else - { + else { dol_print_error($db); } } @@ -305,8 +292,7 @@ if ($action == 'sethideinactivethirdparty') header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -318,8 +304,7 @@ if ($action == 'setonsearchandlistgooncustomerorsuppliercard') { { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -412,8 +397,7 @@ foreach ($arrayofmodules as $file => $modCodeTiers) print img_picto($langs->trans("Activated"), 'switch_on'); print "\n"; } - else - { + else { $disabled = (!empty($conf->multicompany->enabled) && (is_object($mc) && !empty($mc->sharings['referent']) && $mc->sharings['referent'] != $conf->entity) ? true : false); print ''; if (!$disabled) print ''; @@ -498,8 +482,7 @@ foreach ($arrayofmodules as $file => $modCodeCompta) print img_picto($langs->trans("Activated"), 'switch_on'); print ''; } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -538,8 +521,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -608,16 +590,14 @@ foreach ($dirsociete as $dirroot) //} print ""; } - else - { + else { if (versioncompare($module->phpmin, versionphparray()) > 0) { print "\n"; print img_picto(dol_escape_htmltag($langs->trans("ErrorModuleRequirePHPVersion", join('.', $module->phpmin))), 'switch_off'); print ""; } - else - { + else { print "\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print ""; @@ -644,8 +624,7 @@ foreach ($dirsociete as $dirroot) { $linkspec = ''.img_object($langs->trans("Preview"), 'bill').''; } - else - { + else { $linkspec = img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print $linkspec; @@ -715,8 +694,7 @@ foreach ($profid as $key => $val) print img_picto($langs->trans("Activated"), 'switch_on'); print ''; } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -728,8 +706,7 @@ foreach ($profid as $key => $val) print img_picto($langs->trans("Activated"), 'switch_on'); print ''; } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -741,8 +718,7 @@ foreach ($profid as $key => $val) print img_picto($langs->trans("Activated"), 'switch_on'); print ''; } - else - { + else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; @@ -784,8 +760,7 @@ if (!$conf->use_javascript_ajax) print $langs->trans("NotAvailableWhenAjaxDisabled"); print ""; } -else -{ +else { print ''; $arrval = array('0'=>$langs->trans("No"), '1'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch", 1).')', @@ -808,8 +783,7 @@ if (!$conf->use_javascript_ajax) print $langs->trans("NotAvailableWhenAjaxDisabled"); print ""; } -else -{ +else { print ''; $arrval = array('0'=>$langs->trans("No"), '1'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch", 1).')', @@ -834,8 +808,7 @@ if (!empty($conf->global->SOCIETE_ADD_REF_IN_LIST)) print ''; print img_picto($langs->trans("Activated"), 'switch_on'); } -else -{ +else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } @@ -851,8 +824,7 @@ if (!empty($conf->global->COMPANY_SHOW_ADDRESS_SELECTLIST)) print ''; print img_picto($langs->trans("Activated"), 'switch_on'); } -else -{ +else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } @@ -870,8 +842,7 @@ if (!empty($conf->global->SOCIETE_ASK_FOR_SHIPPING_METHOD)) print ''; print img_picto($langs->trans("Activated"), 'switch_on'); } -else -{ +else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } @@ -888,8 +859,7 @@ if (!empty($conf->global->SOCIETE_DISABLE_PROSPECTSCUSTOMERS)) print ''; print img_picto($langs->trans("Activated"), 'switch_on'); } -else -{ +else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } diff --git a/htdocs/societe/agenda.php b/htdocs/societe/agenda.php index dba483c52eb..4142231261d 100644 --- a/htdocs/societe/agenda.php +++ b/htdocs/societe/agenda.php @@ -39,8 +39,7 @@ if (GETPOST('actioncode', 'array')) $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; } -else -{ +else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/societe/ajax/company.php b/htdocs/societe/ajax/company.php index 4fe737ca31c..1622b81384d 100644 --- a/htdocs/societe/ajax/company.php +++ b/htdocs/societe/ajax/company.php @@ -68,8 +68,7 @@ if (!empty($action) && $action == 'fetch' && !empty($id)) echo json_encode($outjson); } -else -{ +else { require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; $langs->load("companies"); diff --git a/htdocs/societe/ajaxcompanies.php b/htdocs/societe/ajaxcompanies.php index dcf0b1a4483..0558d7d31c8 100644 --- a/htdocs/societe/ajaxcompanies.php +++ b/htdocs/societe/ajaxcompanies.php @@ -72,8 +72,7 @@ if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) $sql .= " OR code_client LIKE '".$db->escape($socid)."%'"; $sql .= " OR code_fournisseur LIKE '".$db->escape($socid)."%'"; } - else - { + else { $sql .= "nom LIKE '%".$db->escape($socid)."%'"; $sql .= " OR code_client LIKE '%".$db->escape($socid)."%'"; $sql .= " OR code_fournisseur LIKE '%".$db->escape($socid)."%'"; @@ -101,12 +100,10 @@ if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) echo json_encode($return_arr); } - else - { + else { echo json_encode(array('nom'=>'Error', 'label'=>'Error', 'key'=>'Error', 'value'=>'Error')); } } -else -{ +else { echo json_encode(array('nom'=>'ErrorBadParameter', 'label'=>'ErrorBadParameter', 'key'=>'ErrorBadParameter', 'value'=>'ErrorBadParameter')); } diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index 70ac0577cb9..0cd103a2855 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -259,8 +259,7 @@ abstract class ActionsCardCommon } } } - else - { + else { $head = societe_prepare_head($this->object); $this->tpl['showhead'] = dol_get_fiche_head($head, 'card', '', 0, 'company'); @@ -335,8 +334,7 @@ abstract class ActionsCardCommon $adh->ref = $adh->getFullName($langs); $this->tpl['linked_member'] = $adh->getNomUrl(1); } - else - { + else { $this->tpl['linked_member'] = $langs->trans("ThirdpartyNotLinkedToMember"); } } diff --git a/htdocs/societe/canvas/company/actions_card_company.class.php b/htdocs/societe/canvas/company/actions_card_company.class.php index 0601760e34a..348163195d9 100644 --- a/htdocs/societe/canvas/company/actions_card_company.class.php +++ b/htdocs/societe/canvas/company/actions_card_company.class.php @@ -135,18 +135,15 @@ class ActionsCardCompany extends ActionsCardCommon $s .= ''.$langs->trans("VATIntraCheck").''; $this->tpl['tva_intra'] = $form->textwithpicto($s, $langs->trans("VATIntraCheckDesc", $langs->transnoentitiesnoconv("VATIntraCheck")), 1); } - else - { + else { $this->tpl['tva_intra'] = $s.'object->country_id).'" target="_blank">'.img_picto($langs->trans("VATIntraCheckableOnEUSite"), 'help').''; } } - else - { + else { $this->tpl['tva_intra'] = $s; } } - else - { + else { // Confirm delete third party if ($action == 'delete') { @@ -174,18 +171,15 @@ class ActionsCardCompany extends ActionsCardCommon $s .= ''.$langs->trans("VATIntraCheck").''; $this->tpl['tva_intra'] = $form->textwithpicto($s, $langs->trans("VATIntraCheckDesc", $langs->transnoentitiesnoconv("VATIntraCheck")), 1); } - else - { + else { $this->tpl['tva_intra'] = $s.'object->country_id).'" target="_blank">'.img_picto($langs->trans("VATIntraCheckableOnEUSite"), 'help').''; } } - else - { + else { $this->tpl['tva_intra'] = $s; } } - else - { + else { $this->tpl['tva_intra'] = ' '; } @@ -197,8 +191,7 @@ class ActionsCardCompany extends ActionsCardCommon $this->tpl['parent_company'] = $socm->getNomUrl(1).' '.($socm->code_client ? "(".$socm->code_client.")" : ""); $this->tpl['parent_company'] .= ($socm->town ? ' - '.$socm->town : ''); } - else - { + else { $this->tpl['parent_company'] = $langs->trans("NoParentCompany"); } } diff --git a/htdocs/societe/canvas/individual/actions_card_individual.class.php b/htdocs/societe/canvas/individual/actions_card_individual.class.php index 9f236c8015e..6a93ac3e939 100644 --- a/htdocs/societe/canvas/individual/actions_card_individual.class.php +++ b/htdocs/societe/canvas/individual/actions_card_individual.class.php @@ -111,8 +111,7 @@ class ActionsCardIndividual extends ActionsCardCommon { $this->tpl['select_civility'] = $formcompany->select_civility(GETPOST('civility_id')); } - else - { + else { // Confirm delete third party if ($action == 'delete' || $conf->use_javascript_ajax) { diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 681d4a37fc9..77299e3ee89 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -137,8 +137,7 @@ if (empty($reshook)) $langs->load('errors'); setEventMessages($langs->trans('ErrorThirdPartyIdIsMandatory', $langs->transnoentitiesnoconv('MergeOriginThirdparty')), null, 'errors'); } - else - { + else { if (!$error && $soc_origin->fetch($soc_origin_id) < 1) { setEventMessages($langs->trans('ErrorRecordNotFound'), null, 'errors'); @@ -302,8 +301,7 @@ if (empty($reshook)) setEventMessages($langs->trans('ThirdpartiesMergeSuccess'), null, 'mesgs'); $db->commit(); } - else - { + else { $langs->load("errors"); setEventMessages($langs->trans('ErrorsThirdpartyMerge'), null, 'errors'); $db->rollback(); @@ -404,8 +402,7 @@ if (empty($reshook)) $object->name_bis = GETPOST('name', 'alpha'); $object->firstname = GETPOST('firstname', 'alpha'); } - else - { + else { $object->name = GETPOST('name', 'alpha'); } $object->entity = (GETPOSTISSET('entity') ?GETPOST('entity', 'int') : $conf->entity); @@ -609,16 +606,14 @@ if (empty($reshook)) { $errors[] = "ErrorFailedToSaveFile"; } - else - { + else { // Create thumbs $object->addThumbs($newfile); } } } } - else - { + else { switch ($_FILES['photo']['error']) { case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini @@ -632,8 +627,7 @@ if (empty($reshook)) } // Gestion du logo de la société } - else - { + else { if ($db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') // TODO Sometime errors on duplicate on profid and not on code, so we must manage this case { $duplicate_code_error = true; @@ -656,8 +650,7 @@ if (empty($reshook)) header("Location: ".$backtopage); exit; } - else - { + else { $url = $_SERVER["PHP_SELF"]."?socid=".$object->id; // Old method if (($object->client == 1 || $object->client == 3) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $url = DOL_URL_ROOT."/comm/card.php?socid=".$object->id; elseif ($object->fournisseur == 1) $url = DOL_URL_ROOT."/fourn/card.php?socid=".$object->id; @@ -666,8 +659,7 @@ if (empty($reshook)) exit; } } - else - { + else { $db->rollback(); $action = 'create'; } @@ -684,8 +676,7 @@ if (empty($reshook)) header("Location: ".$backtopage); exit; } - else - { + else { header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); exit; } @@ -760,8 +751,7 @@ if (empty($reshook)) { $errors[] = "ErrorFailedToSaveFile"; } - else - { + else { // Create thumbs $object->addThumbs($newfile); @@ -777,13 +767,11 @@ if (empty($reshook)) } } } - else - { + else { $errors[] = "ErrorBadImageFormat"; } } - else - { + else { switch ($_FILES['photo']['error']) { case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini @@ -818,21 +806,18 @@ if (empty($reshook)) header("Location: ".$backtopage); exit; } - else - { + else { header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); exit; } } - else - { + else { $object->id = $socid; $action = "edit"; } } } - else - { + else { $action = ($action == 'add' ? 'create' : 'edit'); } } @@ -849,8 +834,7 @@ if (empty($reshook)) header("Location: ".DOL_URL_ROOT."/societe/list.php?restore_lastsearch_values=1&delsoc=".urlencode($object->name)); exit; } - else - { + else { $langs->load("errors"); setEventMessages($object->error, $object->errors, 'errors'); $error++; @@ -920,8 +904,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) $objcanvas->assign_values($action, $object->id, $object->ref); // Set value for templates $objcanvas->display_canvas($action); // Show template } -else -{ +else { // ----------------------------------------- // When used in standard mode // ----------------------------------------- @@ -1062,8 +1045,7 @@ else { $errors[] = "ErrorFailedToSaveFile"; } - else - { + else { // Create thumbs $object->addThumbs($newfile); } @@ -1205,8 +1187,7 @@ else { print ''.$langs->trans('ThirdPartyName').' / '.$langs->trans('LastName', 'name').''; } - else - { + else { print ''.$form->editfieldkey('ThirdPartyName', 'name', '', $object, 0).''; } print 'global->SOCIETE_USEPREFIX) ? ' colspan="3"' : '').'>'; @@ -1342,8 +1323,7 @@ else { print ''.$form->editfieldkey('Region-State', 'state_id', '', $object, 0).''; } - else - { + else { print ''.$form->editfieldkey('State', 'state_id', '', $object, 0).''; } @@ -1432,8 +1412,7 @@ else $s .= ''.$langs->trans("VATIntraCheck").''; $s = $form->textwithpicto($s, $langs->trans("VATIntraCheckDesc", $langs->transnoentitiesnoconv("VATIntraCheck")), 1); } - else - { + else { $s .= 'country_id).'" target="_blank">'.img_picto($langs->trans("VATIntraCheckableOnEUSite"), 'help').''; } } @@ -1485,8 +1464,7 @@ else { print $formcompany->select_juridicalstatus($object->forme_juridique_code, $object->country_code, '', 'forme_juridique_code'); } - else - { + else { print $countrynotdefined; } print ''; @@ -1579,8 +1557,7 @@ else print '     '; print ''; } - else - { + else { print '     '; print ''; } @@ -1837,8 +1814,7 @@ else print ''; print $object->prefix_comm; } - else - { + else { print ''; } print ''; @@ -1864,8 +1840,7 @@ else { print ''; } - else - { + else { print $object->code_client; print ''; } @@ -1905,8 +1880,7 @@ else { print ''; } - else - { + else { print $object->code_fournisseur; print ''; } @@ -1962,8 +1936,7 @@ else { print ''.$form->editfieldkey('Region-State', 'state_id', '', $object, 0).''; } - else - { + else { print ''.$form->editfieldkey('State', 'state_id', '', $object, 0).''; } @@ -2099,8 +2072,7 @@ else $s .= ''.$langs->trans("VATIntraCheck").''; $s = $form->textwithpicto($s, $langs->trans("VATIntraCheckDesc", $langs->transnoentitiesnoconv("VATIntraCheck")), 1); } - else - { + else { $s .= 'country_id).'" class="hideonsmartphone" target="_blank">'.img_picto($langs->trans("VATIntraCheckableOnEUSite"), 'help').''; } } @@ -2243,8 +2215,7 @@ else print ''; } } - else - { + else { /* * View */ @@ -2406,8 +2377,7 @@ else $formcompany->select_localtax(1, $object->localtax1_value, "lt1"); print ''; } - else - { + else { print ''.$object->localtax1_value.''; } print ''; @@ -2500,15 +2470,13 @@ else $s .= ''.$langs->trans("VATIntraCheck").''; $s = $form->textwithpicto($s, $langs->trans("VATIntraCheckDesc", $langs->transnoentitiesnoconv("VATIntraCheck")), 1); } - else - { + else { $s .= 'country_id).'" class="hideonsmartphone" target="_blank">'.img_picto($langs->trans("VATIntraCheckableOnEUSite"), 'help').''; } } print $s; } - else - { + else { print ' '; } print ''; @@ -2586,8 +2554,7 @@ else { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); } - else - { + else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?socid='.$object->id); } print ''; @@ -2621,8 +2588,7 @@ else { $form->form_thirdparty($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->parent, 'editparentcompany', 's.rowid <> '.$object->id, 1); } - else - { + else { $form->form_thirdparty($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->parent, 'none', 's.rowid <> '.$object->id, 1); } print ''; @@ -2645,8 +2611,7 @@ else $adh->ref = $adh->getFullName($langs); print $adh->getNomUrl(1); } - else - { + else { print ''.$langs->trans("ThirdpartyNotLinkedToMember").''; } print ''; @@ -2696,8 +2661,7 @@ else $langs->load("mails"); print ''.$langs->trans('SendMail').''; } - else - { + else { $langs->load("mails"); print ''.$langs->trans('SendMail').''; } @@ -2729,8 +2693,7 @@ else { print ''.$langs->trans('Delete').''."\n"; } - else - { + else { print ''.$langs->trans('Delete').''."\n"; } } diff --git a/htdocs/societe/checkvat/checkVatPopup.php b/htdocs/societe/checkvat/checkVatPopup.php index 91d0fe9bb1a..99e18f036aa 100644 --- a/htdocs/societe/checkvat/checkVatPopup.php +++ b/htdocs/societe/checkvat/checkVatPopup.php @@ -50,8 +50,7 @@ if (!$vatNumber) print '
'; print ''.$langs->transnoentities("ErrorFieldRequired", $langs->trans("VATIntraShort")).'
'; } -else -{ +else { $vatNumber = preg_replace('/\^\w/', '', $vatNumber); $vatNumber = str_replace(array(' ', '.'), '', $vatNumber); $countryCode = substr($vatNumber, 0, 2); @@ -127,8 +126,7 @@ else print $langs->trans("ValueIsValid").': '.$langs->trans("No").' (Might be a non europeen VAT)
'; //$messagetoshow=$soapclient->response; } - else - { + else { // Syntaxe ok if ($result['requestDate']) print $langs->trans("Date").': '.$result['requestDate'].'
'; print $langs->trans("VATIntraSyntaxIsValid").': '.$langs->trans("Yes").'
'; @@ -137,8 +135,7 @@ else { print ''.$langs->trans("ErrorVATCheckMS_UNAVAILABLE", $countryCode).'
'; } - else - { + else { if (!empty($result['valid']) && ($result['valid'] == 1 || $result['valid'] == 'true')) { print ''.$langs->trans("Yes").''; @@ -146,8 +143,7 @@ else print $langs->trans("Name").': '.$result['name'].'
'; print $langs->trans("Address").': '.$result['address'].'
'; } - else - { + else { print ''.$langs->trans("No").''; print '
'."\n"; } diff --git a/htdocs/societe/class/api_thirdparties.class.php b/htdocs/societe/class/api_thirdparties.class.php index c50a746c444..3ec6243a2c7 100644 --- a/htdocs/societe/class/api_thirdparties.class.php +++ b/htdocs/societe/class/api_thirdparties.class.php @@ -467,8 +467,7 @@ class Thirdparties extends DolibarrApi throw new RestException(500, 'Error failed to merged thirdparty '.$this->companytoremove->id.' into '.$id.'. Enable and read log file for more information.'); } - else - { + else { $db->commit(); } @@ -1313,8 +1312,7 @@ class Thirdparties extends DolibarrApi $i++; } } - else - { + else { throw new RestException(404, 'Bank account not found'); } @@ -1331,8 +1329,7 @@ class Thirdparties extends DolibarrApi { return array("success" => $result); } - else - { + else { throw new RestException(500); } } diff --git a/htdocs/societe/class/client.class.php b/htdocs/societe/class/client.class.php index 06c56b027cd..803d0ddebe3 100644 --- a/htdocs/societe/class/client.class.php +++ b/htdocs/societe/class/client.class.php @@ -84,8 +84,7 @@ class Client extends Societe $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->lasterror(); return -1; diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php index 7211802721e..00737c04504 100644 --- a/htdocs/societe/class/companybankaccount.class.php +++ b/htdocs/societe/class/companybankaccount.class.php @@ -112,19 +112,16 @@ class CompanyBankAccount extends Account { return 1; } - else - { + else { return 0; } } - else - { + else { return 1; } } } - else - { + else { print $this->db->error(); return 0; } @@ -167,8 +164,7 @@ class CompanyBankAccount extends Account } if (trim($this->label) != '') $sql .= ",label = '".$this->db->escape($this->label)."'"; - else - $sql .= ",label = NULL"; + else $sql .= ",label = NULL"; $sql .= " WHERE rowid = ".$this->id; $result = $this->db->query($sql); @@ -184,18 +180,15 @@ class CompanyBankAccount extends Account { return 1; } - else - { + else { return -1; } } - else - { + else { return 1; } } - else - { + else { dol_print_error($this->db); return -1; } @@ -259,8 +252,7 @@ class CompanyBankAccount extends Account return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -308,8 +300,7 @@ class CompanyBankAccount extends Account $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1 * $error; } @@ -355,8 +346,7 @@ class CompanyBankAccount extends Account { return 0; } - else - { + else { $obj = $this->db->fetch_object($result1); $this->db->begin(); @@ -377,15 +367,13 @@ class CompanyBankAccount extends Account $this->db->rollback(); return -1; } - else - { + else { $this->db->commit(); return 1; } } } - else - { + else { dol_print_error($this->db); return -1; } diff --git a/htdocs/societe/class/companypaymentmode.class.php b/htdocs/societe/class/companypaymentmode.class.php index 5ba268f6687..ca75b904b11 100644 --- a/htdocs/societe/class/companypaymentmode.class.php +++ b/htdocs/societe/class/companypaymentmode.class.php @@ -440,8 +440,7 @@ class CompanyPaymentMode extends CommonObject { return 0; } - else - { + else { $obj = $this->db->fetch_object($result1); $type = ''; @@ -467,15 +466,13 @@ class CompanyPaymentMode extends CommonObject $this->db->rollback(); return -1; } - else - { + else { $this->db->commit(); return 1; } } } - else - { + else { dol_print_error($this->db); return -1; } @@ -566,8 +563,7 @@ class CompanyPaymentMode extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index de65e05d41e..e2b24577bf9 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -827,22 +827,19 @@ class Societe extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { dol_syslog(get_class($this)."::Create echec update ".$this->error." ".join(',', $this->errors), LOG_ERR); $this->db->rollback(); return -4; } } - else - { + else { if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $this->error = $langs->trans("ErrorCompanyNameAlreadyExists", $this->name); // duplicate on a field (code or profid or ...) $result = -1; } - else - { + else { $this->error = $this->db->lasterror(); $result = -2; } @@ -850,8 +847,7 @@ class Societe extends CommonObject return $result; } } - else - { + else { $this->db->rollback(); dol_syslog(get_class($this)."::Create fails verify ".join(',', $this->errors), LOG_WARNING); return -3; @@ -1007,8 +1003,7 @@ class Societe extends CommonObject } } } - else - { + else { //var_dump($conf->global->SOCIETE_EMAIL_UNIQUE); //var_dump($conf->global->SOCIETE_EMAIL_MANDATORY); if ($key == 'EMAIL') @@ -1337,8 +1332,7 @@ class Societe extends CommonObject unset($this->state); } } - else - { + else { unset($this->country_code); // We clean this, in the doubt, because it may have been changed after an update of country_id unset($this->country); unset($this->state_code); @@ -1425,22 +1419,19 @@ class Societe extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } } - else - { + else { if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { // Doublon $this->error = $langs->trans("ErrorDuplicateField"); $result = -1; } - else - { + else { $this->error = $this->db->lasterror(); $result = -2; } @@ -1448,8 +1439,7 @@ class Societe extends CommonObject return $result; } } - else - { + else { $this->db->rollback(); dol_syslog(get_class($this)."::Update fails verify ".join(',', $this->errors), LOG_WARNING); return -3; @@ -1675,15 +1665,13 @@ class Societe extends CommonObject // fetch optionals attributes and labels $this->fetch_optionals(); } - else - { + else { $result = 0; } $this->db->free($resql); } - else - { + else { $this->error = $this->db->lasterror(); $result = -3; } @@ -1822,8 +1810,7 @@ class Societe extends CommonObject return 1; } - else - { + else { dol_syslog($this->error, LOG_ERR); $this->db->rollback(); return -1; @@ -2051,8 +2038,7 @@ class Societe extends CommonObject { return $result; } - else - { + else { $this->error = $discount->error; return -3; } @@ -2079,8 +2065,7 @@ class Societe extends CommonObject { return $result; } - else - { + else { $this->error = $discountstatic->error; return -1; } @@ -2108,8 +2093,7 @@ class Societe extends CommonObject $sql .= " AND ug.entity = ".$conf->entity.")"; $sql .= " OR u.admin = 1)"; } - else - $sql .= " WHERE entity in (0, ".$conf->entity.")"; + else $sql .= " WHERE entity in (0, ".$conf->entity.")"; $sql .= " AND u.rowid = sc.fk_user AND sc.fk_soc = ".$this->id; @@ -2136,8 +2120,7 @@ class Societe extends CommonObject $reparray[$i]['login'] = $obj->login; $reparray[$i]['photo'] = $obj->photo; } - else - { + else { $reparray[] = $obj->rowid; } $i++; @@ -2249,8 +2232,7 @@ class Societe extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -2335,8 +2317,7 @@ class Societe extends CommonObject { $name = $code.' '.$name; } - else - { + else { $name = $code; } } @@ -2629,8 +2610,7 @@ class Societe extends CommonObject { $contact_property[$obj->rowid] = trim(dolGetFirstLastname($obj->firstname, $obj->lastname)).($obj->poste ? " - ".$obj->poste : "").(($mode != 'poste' && $property) ? " ".$sepa.$property.$sepb : ''); } - else - { + else { $contact_property[$obj->rowid] = trim(dolGetFirstLastname($obj->firstname, $obj->lastname)).(($mode != 'poste' && $property) ? " ".$sepa.$property.$sepb : ''); } } @@ -2638,8 +2618,7 @@ class Societe extends CommonObject } } } - else - { + else { dol_print_error($this->db); } return $contact_property; @@ -2673,8 +2652,7 @@ class Societe extends CommonObject } } } - else - { + else { dol_print_error($this->db); } return $contacts; @@ -2710,8 +2688,7 @@ class Societe extends CommonObject } } } - else - { + else { dol_print_error($this->db); } return $contacts; @@ -2750,8 +2727,7 @@ class Societe extends CommonObject } return $contact_property; } - else - { + else { dol_print_error($this->db); } } @@ -2918,8 +2894,7 @@ class Societe extends CommonObject if ($mod->code_modifiable) return 1; // A mettre en dernier return 0; } - else - { + else { return 0; } } @@ -2954,8 +2929,7 @@ class Societe extends CommonObject if ($mod->code_modifiable) return 1; // A mettre en dernier return 0; } - else - { + else { return 0; } } @@ -2992,8 +2966,7 @@ class Societe extends CommonObject $result = $mod->verif($this->db, $this->code_client, $this, 0); return $result; } - else - { + else { return 0; } } @@ -3029,8 +3002,7 @@ class Societe extends CommonObject $result = $mod->verif($this->db, $this->code_fournisseur, $this, 1); return $result; } - else - { + else { return 0; } } @@ -3072,14 +3044,12 @@ class Societe extends CommonObject return $result; } - else - { + else { $this->error = 'ErrorAccountancyCodeNotDefined'; return -1; } } - else - { + else { if ($type == 'customer') $this->code_compta = ''; elseif ($type == 'supplier') $this->code_compta_fournisseur = ''; @@ -3109,8 +3079,7 @@ class Societe extends CommonObject $this->parent = $id; return 1; } - else - { + else { return -1; } } @@ -3205,8 +3174,7 @@ class Societe extends CommonObject $obj = $this->db->fetch_object($resql); $count = $obj->idprof; } - else - { + else { $count = 0; print $this->db->error(); } @@ -3306,8 +3274,7 @@ class Societe extends CommonObject if (preg_match('/(^[0-9]{8}[A-Z]{1}$)/', $string)) if ($num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr($string, 0, 8) % 23, 1)) return 1; - else - return -1; + else return -1; //algorithm checking type code CIF $sum = $num[2] + $num[4] + $num[6]; @@ -3319,29 +3286,25 @@ class Societe extends CommonObject if (preg_match('/^[KLM]{1}/', $string)) if ($num[8] == chr(64 + $n) || $num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr($string, 1, 8) % 23, 1)) return 1; - else - return -1; + else return -1; //Check CIF if (preg_match('/^[ABCDEFGHJNPQRSUVW]{1}/', $string)) if ($num[8] == chr(64 + $n) || $num[8] == substr($n, strlen($n) - 1, 1)) return 2; - else - return -2; + else return -2; //Check NIE T if (preg_match('/^[T]{1}/', $string)) if ($num[8] == preg_match('/^[T]{1}[A-Z0-9]{8}$/', $string)) return 3; - else - return -3; + else return -3; //Check NIE XYZ if (preg_match('/^[XYZ]{1}/', $string)) if ($num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr(str_replace(array('X', 'Y', 'Z'), array('0', '1', '2'), $string), 0, 8) % 23, 1)) return 3; - else - return -3; + else return -3; //Can not be verified return -4; @@ -3440,8 +3403,7 @@ class Societe extends CommonObject $obj = $this->db->fetch_object($resql); $count = $obj->numproj; } - else - { + else { $count = 0; print $this->db->error(); } @@ -3491,8 +3453,7 @@ class Societe extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -3558,8 +3519,7 @@ class Societe extends CommonObject } return 0; } - else - { + else { return -1; } } @@ -3581,8 +3541,7 @@ class Societe extends CommonObject if ($resql = $this->db->query($sql)) return 0; } - else - { + else { return 0; } return -1; @@ -3645,16 +3604,14 @@ class Societe extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; } } - else - { + else { // $this->error deja positionne dol_syslog(get_class($this)."::create_from_member - 2 - ".$this->error." - ".join(',', $this->errors), LOG_ERR); @@ -3696,7 +3653,7 @@ class Societe extends CommonObject $country_code = $tmp[1]; $country_label = $tmp[2]; } - else // For backward compatibility + else // For backward compatibility { dol_syslog("Your country setup use an old syntax. Reedit it using setup area.", LOG_WARNING); include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -3721,7 +3678,7 @@ class Societe extends CommonObject $state_code = $tmp[1]; $state_label = $tmp[2]; } - else // For backward compatibility + else // For backward compatibility { dol_syslog("Your state setup use an old syntax. Reedit it using setup area.", LOG_ERR); include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -3904,8 +3861,7 @@ class Societe extends CommonObject $obj = $this->db->fetch_object($resql); return (($obj->nb > 0) ?true:false); } - else - { + else { $this->error = $this->db->lasterror(); return false; } @@ -3991,8 +3947,7 @@ class Societe extends CommonObject elseif ($status == '1' || $status == 'ST_TODO') return img_action($langs->trans("StatusProspect1"), 1).' '.$langs->trans("StatusProspect1"); elseif ($status == '2' || $status == 'ST_PEND') return img_action($langs->trans("StatusProspect2"), 2).' '.$langs->trans("StatusProspect2"); elseif ($status == '3' || $status == 'ST_DONE') return img_action($langs->trans("StatusProspect3"), 3).' '.$langs->trans("StatusProspect3"); - else - { + else { return img_action(($langs->trans("StatusProspect".$status) != "StatusProspect".$status) ? $langs->trans("StatusProspect".$status) : $label, 0).' '.(($langs->trans("StatusProspect".$status) != "StatusProspect".$status) ? $langs->trans("StatusProspect".$status) : $label); } } @@ -4003,8 +3958,7 @@ class Societe extends CommonObject elseif ($status == '1' || $status == 'ST_TODO') return img_action($langs->trans("StatusProspect1"), 1); elseif ($status == '2' || $status == 'ST_PEND') return img_action($langs->trans("StatusProspect2"), 2); elseif ($status == '3' || $status == 'ST_DONE') return img_action($langs->trans("StatusProspect3"), 3); - else - { + else { return img_action(($langs->trans("StatusProspect".$status) != "StatusProspect".$status) ? $langs->trans("StatusProspect".$status) : $label, 0); } } @@ -4015,8 +3969,7 @@ class Societe extends CommonObject elseif ($status == '1' || $status == 'ST_TODO') return img_action($langs->trans("StatusProspect1"), 1).' '.$langs->trans("StatusProspect1"); elseif ($status == '2' || $status == 'ST_PEND') return img_action($langs->trans("StatusProspect2"), 2).' '.$langs->trans("StatusProspect2"); elseif ($status == '3' || $status == 'ST_DONE') return img_action($langs->trans("StatusProspect3"), 3).' '.$langs->trans("StatusProspect3"); - else - { + else { return img_action(($langs->trans("StatusProspect".$status) != "StatusProspect".$status) ? $langs->trans("StatusProspect".$status) : $label, 0).' '.(($langs->trans("StatusProspect".$status) != "StatusProspect".$status) ? $langs->trans("StatusProspect".$status) : $label); } } @@ -4074,8 +4027,7 @@ class Societe extends CommonObject } return array('opened'=>$outstandingOpened, 'total_ht'=>$outstandingTotal, 'total_ttc'=>$outstandingTotalIncTax); // 'opened' is 'incl taxes' } - else - return array(); + else return array(); } /** @@ -4114,8 +4066,7 @@ class Societe extends CommonObject } return array('opened'=>$outstandingOpened, 'total_ht'=>$outstandingTotal, 'total_ttc'=>$outstandingTotalIncTax); // 'opened' is 'incl taxes' } - else - return array(); + else return array(); } /** @@ -4157,8 +4108,7 @@ class Societe extends CommonObject require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; $tmpobject = new FactureFournisseur($this->db); } - else - { + else { require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; $tmpobject = new Facture($this->db); } @@ -4194,8 +4144,7 @@ class Societe extends CommonObject } return array('opened'=>$outstandingOpened, 'total_ht'=>$outstandingTotal, 'total_ttc'=>$outstandingTotalIncTax); // 'opened' is 'incl taxes' } - else - { + else { return array(); } } @@ -4255,8 +4204,7 @@ class Societe extends CommonObject if (!$result) dol_print_error($this->db, $companybankaccount->error, $companybankaccount->errors); $result = $companybankaccount->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams); } - else - { + else { // Positionne le modele sur le nom du modele a utiliser if (!dol_strlen($modele)) { @@ -4264,8 +4212,7 @@ class Societe extends CommonObject { $modele = $conf->global->COMPANY_ADDON_PDF; } - else - { + else { print $langs->trans("Error")." ".$langs->trans("Error_COMPANY_ADDON_PDF_NotDefined"); return 0; } diff --git a/htdocs/societe/class/societeaccount.class.php b/htdocs/societe/class/societeaccount.class.php index 98bdeffa637..1f99e9bae8a 100644 --- a/htdocs/societe/class/societeaccount.class.php +++ b/htdocs/societe/class/societeaccount.class.php @@ -557,8 +557,7 @@ class SocieteAccount extends CommonObject $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php index ad7383d81af..2660625bd1c 100644 --- a/htdocs/societe/consumption.php +++ b/htdocs/societe/consumption.php @@ -428,8 +428,7 @@ if ($sql_select) { print $documentstaticline->getLibStatut(2); } - else - { + else { print $documentstatic->getLibStatut(2); } print ''; @@ -472,8 +471,7 @@ if ($sql_select) $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $objp->product_label; } - else - { + else { $label = $objp->product_label; } @@ -522,14 +520,12 @@ if ($sql_select) // Add date of deposit if (!empty($conf->global->INVOICE_ADD_DEPOSIT_DATE)) echo ' ('.dol_print_date($discount->datec).')'; } - else - { + else { echo ($txt ? ' - ' : '').dol_htmlentitiesbr($objp->description); } } } - else - { + else { if ($objp->fk_product > 0) { echo $form->textwithtooltip($text, $description, 3, '', '', $i, 0, ''); diff --git a/htdocs/societe/document.php b/htdocs/societe/document.php index d082ae6baa5..9f3751fd5b2 100644 --- a/htdocs/societe/document.php +++ b/htdocs/societe/document.php @@ -167,8 +167,7 @@ if ($object->id) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { accessforbidden('', 0, 0); } diff --git a/htdocs/societe/index.php b/htdocs/societe/index.php index 0000494a3fe..c62ec602ecd 100644 --- a/htdocs/societe/index.php +++ b/htdocs/societe/index.php @@ -120,8 +120,7 @@ if (!empty($conf->use_javascript_ajax) && ((round($third['prospect']) ? 1 : 0) + print $dolgraph->show(); print ''."\n"; } -else -{ +else { if (!empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS)) { $statstring = ""; @@ -186,8 +185,7 @@ if (!empty($conf->categorie->enabled) && !empty($conf->global->CATEGORY_GRAPHSTA { $dataseries[] = array($obj->label, round($obj->nb)); } - else - { + else { $rest += $obj->nb; } $total += $obj->nb; @@ -207,8 +205,7 @@ if (!empty($conf->categorie->enabled) && !empty($conf->global->CATEGORY_GRAPHSTA $dolgraph->draw('idgraphcateg'); print $dolgraph->show(); } - else - { + else { while ($i < $num) { $obj = $db->fetch_object($result); @@ -335,8 +332,7 @@ if ($result) print "\n"; } } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 1df7c38d6c5..cb94da91e2f 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -1050,8 +1050,7 @@ while ($i < min($num, $limit)) { print $obj->name; } - else - { + else { print $companystatic->getNomUrl(1, '', 100, 0, 1); } print "\n"; diff --git a/htdocs/societe/note.php b/htdocs/societe/note.php index 2e3e3ec4532..48a31085eb4 100644 --- a/htdocs/societe/note.php +++ b/htdocs/societe/note.php @@ -123,8 +123,7 @@ if ($object->id > 0) dol_fiche_end(); } -else -{ +else { $langs->load("errors"); print $langs->trans("ErrorRecordNotFound"); } diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index 191f9c4bb2c..0650261cefc 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -105,8 +105,7 @@ if (empty($reshook)) dol_print_error($db); } } - else - { + else { dol_print_error($db); } @@ -114,8 +113,7 @@ if (empty($reshook)) { $db->commit(); } - else - { + else { $db->rollback(); } } @@ -264,8 +262,7 @@ if ($result > 0) print ''; print ''; } - else - { + else { print ''; print $langs->trans("YouMustCreateContactFirst"); print ''; @@ -294,8 +291,7 @@ if ($result > 0) { $num = $db->num_rows($resql); } - else - { + else { dol_print_error($db); } @@ -334,8 +330,7 @@ if ($result > 0) { print ' <'.$obj->email.'>'; } - else - { + else { $langs->load("errors"); print '   '.img_warning().' '.$langs->trans("ErrorBadEMail", $obj->email); } @@ -444,8 +439,7 @@ if ($result > 0) { $num = $db->num_rows($resql); } - else - { + else { dol_print_error($db); } @@ -494,8 +488,7 @@ if ($result > 0) print $contactstatic->getNomUrl(1); print $obj->email ? ' <'.$obj->email.'>' : $langs->trans("NoMail"); } - else - { + else { print $obj->email; } print ''; diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php index 6385346ce5d..2d5e0612959 100644 --- a/htdocs/societe/paymentmodes.php +++ b/htdocs/societe/paymentmodes.php @@ -176,8 +176,7 @@ if (empty($reshook)) { setEventMessages($companybankaccount->error, $companybankaccount->errors, 'errors'); } - else - { + else { // If this account is the default bank account, we disable others if ($companybankaccount->default_rib) { @@ -231,8 +230,7 @@ if (empty($reshook)) { setEventMessages($companypaymentmode->error, $companypaymentmode->errors, 'errors'); } - else - { + else { // If this account is the default bank account, we disable others if ($companypaymentmode->default_rib) { @@ -339,8 +337,7 @@ if (empty($reshook)) header('Location: '.$url); exit; } - else - { + else { $db->rollback(); } } @@ -408,8 +405,7 @@ if (empty($reshook)) header('Location: '.$url); exit; } - else - { + else { $db->rollback(); } } @@ -425,8 +421,7 @@ if (empty($reshook)) header('Location: '.$url); exit; } - else - { + else { setEventMessages($db->lasterror, null, 'errors'); } } @@ -452,13 +447,11 @@ if (empty($reshook)) header('Location: '.$url); exit; } - else - { + else { setEventMessages($companypaymentmode->error, $companypaymentmode->errors, 'errors'); } } - else - { + else { setEventMessages($companypaymentmode->error, $companypaymentmode->errors, 'errors'); } } @@ -474,13 +467,11 @@ if (empty($reshook)) header('Location: '.$url); exit; } - else - { + else { setEventMessages($companybankaccount->error, $companybankaccount->errors, 'errors'); } } - else - { + else { setEventMessages($companybankaccount->error, $companybankaccount->errors, 'errors'); } } @@ -516,8 +507,7 @@ if (empty($reshook)) $error++; setEventMessages('ThisThirdpartyIsNotACustomer', null, 'errors'); } - else - { + else { // Creation of Stripe customer + update of societe_account $cu = $stripe->customerStripe($object, $stripeacc, $servicestatus, 1); if (!$cu) @@ -525,8 +515,7 @@ if (empty($reshook)) $error++; setEventMessages($stripe->error, $stripe->errors, 'errors'); } - else - { + else { $stripecu = $cu->id; } } @@ -541,8 +530,7 @@ if (empty($reshook)) $error++; setEventMessages('ThisPaymentModeIsNotACard', null, 'errors'); } - else - { + else { // Get the Stripe customer $cu = $stripe->customerStripe($object, $stripeacc, $servicestatus); if (!$cu) @@ -613,8 +601,7 @@ if (empty($reshook)) $stripecu = $newcu; $db->commit(); } - else - { + else { $db->rollback(); } } @@ -670,8 +657,7 @@ if (empty($reshook)) $stripesupplieracc = $newsup; $db->commit(); } - else - { + else { $db->rollback(); } } @@ -699,8 +685,7 @@ if (empty($reshook)) { $cu->invoice_settings->default_payment_method = (string) $source; // New } - else - { + else { $cu->default_source = (string) $source; // Old } $result = $cu->save(); @@ -726,8 +711,7 @@ if (empty($reshook)) $payment_method->detach(); } } - else - { + else { $cu = $stripe->customerStripe($object, $stripeacc, $servicestatus); $card = $cu->sources->retrieve("$source"); if ($card) { @@ -783,8 +767,7 @@ if (!$id) $companybankaccount->fetch(0, $object->id); $companypaymentmode->fetch(0, null, $object->id, 'card'); } -else -{ +else { $companybankaccount->fetch($id); $companypaymentmode->fetch($id); } @@ -976,8 +959,7 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' { $listofsources = $customerstripe->sources->data; } - else - { + else { $service = 'StripeTest'; $servicestatus = 0; if (!empty($conf->global->STRIPE_LIVE) && !GETPOST('forcesandbox', 'alpha')) diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php index 6d69e692a96..2f0595cf15d 100644 --- a/htdocs/societe/price.php +++ b/htdocs/societe/price.php @@ -467,8 +467,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { } print ""; } - else - { + else { print $langs->trans('None'); } @@ -476,8 +475,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { print ''; print "\n
\n"; } - else - { + else { // View mode /* ************************************************************************** */ @@ -591,8 +589,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { print "\n"; } } - else - { + else { $colspan = 9; if ($user->rights->produit->supprimer || $user->rights->service->supprimer) $colspan += 1; print ''.$langs->trans('None').''; diff --git a/htdocs/societe/societecontact.php b/htdocs/societe/societecontact.php index 5ff86ff0064..e25b5c5e606 100644 --- a/htdocs/societe/societecontact.php +++ b/htdocs/societe/societecontact.php @@ -79,15 +79,13 @@ if ($action == 'addcontact' && $user->rights->societe->creer) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - else - { + else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); $mesg = '
'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'
'; } - else - { + else { $mesg = '
'.$object->error.'
'; } } @@ -100,8 +98,7 @@ elseif ($action == 'swapstatut' && $user->rights->societe->creer) { $result = $object->swapContactStatus(GETPOST('ligne')); } - else - { + else { dol_print_error($db); } } @@ -328,16 +325,14 @@ if ($id > 0 || !empty($ref)) } print ''; } - else - { + else { print ''; if ($objp->subscription == 'yes') { print $langs->trans("SubscriptionNotReceived"); if ($objp->statut > 0) print " ".img_warning(); } - else - { + else { print ' '; } print ''; @@ -351,8 +346,7 @@ if ($id > 0 || !empty($ref)) } } } - else - { + else { // Contrat non trouve print "ErrorRecordNotFound"; } From ae06b35c63a5adde998074a5f93958c23942155b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 21 May 2020 02:06:40 +0200 Subject: [PATCH 642/780] add new rule --- htdocs/categories/admin/categorie.php | 12 +-- htdocs/categories/card.php | 6 +- .../categories/class/api_categories.class.php | 3 +- htdocs/categories/class/categorie.class.php | 99 +++++++------------ htdocs/categories/edit.php | 9 +- htdocs/categories/index.php | 5 +- htdocs/categories/photos.php | 9 +- htdocs/categories/viewcat.php | 69 +++++-------- htdocs/collab/index.php | 9 +- htdocs/don/admin/donation.php | 33 +++---- htdocs/don/card.php | 24 ++--- htdocs/don/class/api_donations.class.php | 3 +- htdocs/don/class/don.class.php | 54 ++++------ htdocs/don/class/paymentdonation.class.php | 27 ++--- htdocs/don/document.php | 3 +- htdocs/don/list.php | 3 +- htdocs/don/payment/card.php | 12 +-- htdocs/don/payment/payment.php | 6 +- htdocs/don/stats/index.php | 3 +- 19 files changed, 130 insertions(+), 259 deletions(-) diff --git a/htdocs/categories/admin/categorie.php b/htdocs/categories/admin/categorie.php index 6dd313692db..017de5cd1e6 100644 --- a/htdocs/categories/admin/categorie.php +++ b/htdocs/categories/admin/categorie.php @@ -48,8 +48,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { setEventMessages($db->lasterror(), null, 'errors'); } } @@ -62,8 +61,7 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { setEventMessages($db->lasterror(), null, 'errors'); } } @@ -108,14 +106,12 @@ if ($conf->use_javascript_ajax) { print ajax_constantonoff('CATEGORIE_RECURSIV_ADD'); } -else -{ +else { if (empty($conf->global->CATEGORIE_RECURSIV_ADD)) { print ''.img_picto($langs->trans("Disabled"), 'off').''; } - else - { + else { print ''.img_picto($langs->trans("Enabled"), 'on').''; } } diff --git a/htdocs/categories/card.php b/htdocs/categories/card.php index 67adacb5aae..a91a3df7827 100644 --- a/htdocs/categories/card.php +++ b/htdocs/categories/card.php @@ -119,8 +119,7 @@ if ($action == 'add' && $user->rights->categorie->creer) header("Location: ".DOL_URL_ROOT.'/categories/viewcat.php?id='.$idProjectOrigin.'&type='.$type); exit; } - else - { + else { header("Location: ".DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.$type); exit; } @@ -156,8 +155,7 @@ if ($action == 'add' && $user->rights->categorie->creer) $action = 'confirmed'; $_POST["addcat"] = ''; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } diff --git a/htdocs/categories/class/api_categories.class.php b/htdocs/categories/class/api_categories.class.php index d6eff682908..205e38f3e5e 100644 --- a/htdocs/categories/class/api_categories.class.php +++ b/htdocs/categories/class/api_categories.class.php @@ -244,8 +244,7 @@ class Categories extends DolibarrApi { return $this->get($id); } - else - { + else { throw new RestException(500, $this->category->error); } } diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index dc451855c0a..d8f5ef4eeeb 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -321,8 +321,7 @@ class Categorie extends CommonObject { $sql .= " WHERE ref_ext LIKE '".$this->db->escape($ref_ext)."'"; } - else - { + else { $sql .= " WHERE label = '".$this->db->escape($label)."' AND entity IN (".getEntity('category').")"; if (!is_null($type)) $sql .= " AND type = ".$this->db->escape($type); } @@ -362,13 +361,11 @@ class Categorie extends CommonObject return 1; } - else - { + else { return 0; } } - else - { + else { dol_print_error($this->db); return -1; } @@ -483,20 +480,17 @@ class Categorie extends CommonObject $this->db->commit(); return $id; } - else - { + else { $this->db->rollback(); return -3; } } - else - { + else { $this->db->rollback(); return -2; } } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -574,8 +568,7 @@ class Categorie extends CommonObject return 1; } - else - { + else { $this->db->rollback(); dol_print_error($this->db); return -1; @@ -661,8 +654,7 @@ class Categorie extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -722,8 +714,7 @@ class Categorie extends CommonObject } } } - else - { + else { $error++; $this->error = $this->db->lasterror(); } @@ -748,22 +739,19 @@ class Categorie extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -2; } } - else - { + else { $this->db->rollback(); if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $this->error = $this->db->lasterrno(); return -3; } - else - { + else { $this->error = $this->db->lasterror(); } return -1; @@ -815,14 +803,12 @@ class Categorie extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -2; } } - else - { + else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; @@ -874,8 +860,7 @@ class Categorie extends CommonObject { $objs[] = $rec['fk_'.(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type])]; } - else - { + else { $obj = new $this->MAP_OBJ_CLASS[$type]($this->db); $obj->fetch($rec['fk_'.(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type])]); $objs[] = $obj; @@ -883,8 +868,7 @@ class Categorie extends CommonObject } return $objs; } - else - { + else { $this->error = $this->db->error().' sql='.$sql; return -1; } @@ -1046,8 +1030,7 @@ class Categorie extends CommonObject } return $cats; } - else - { + else { dol_print_error($this->db); return -1; } @@ -1080,8 +1063,7 @@ class Categorie extends CommonObject } return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -1124,8 +1106,7 @@ class Categorie extends CommonObject { $markafterid = array($markafterid); } - else - { + else { $markafterid = array(); } } @@ -1166,8 +1147,7 @@ class Categorie extends CommonObject $i++; } } - else - { + else { dol_print_error($this->db); return -1; } @@ -1312,8 +1292,7 @@ class Categorie extends CommonObject } return $cats; } - else - { + else { dol_print_error($this->db); return -1; } @@ -1376,8 +1355,7 @@ class Categorie extends CommonObject dol_syslog(get_class($this)."::already_exists no category with same name=".$this->label." and same parent ".$this->fk_parent." than category id=".$this->id, LOG_DEBUG); return 0; } - else - { + else { $this->error = $this->db->error(); return -1; } @@ -1430,8 +1408,7 @@ class Categorie extends CommonObject $linkend = ''; $w[] = $link.($addpicto ? img_object('', 'category', 'class="paddingright"') : '').$cat->label.$linkend; } - else - { + else { $w[] = "".($addpicto ? img_object('', 'category') : '').$cat->label.""; } } @@ -1473,8 +1450,7 @@ class Categorie extends CommonObject } return $parents; } - else - { + else { dol_print_error($this->db); return -1; } @@ -1554,14 +1530,12 @@ class Categorie extends CommonObject } } } - else - { + else { dol_print_error($this->db); return -1; } } - else - { + else { $sql = "SELECT ct.fk_categorie, c.label, c.rowid"; $sql .= " FROM ".MAIN_DB_PREFIX."categorie_".(empty($this->MAP_CAT_TABLE[$type]) ? $type : $this->MAP_CAT_TABLE[$type])." as ct, ".MAIN_DB_PREFIX."categorie as c"; $sql .= " WHERE ct.fk_categorie = c.rowid AND ct.fk_".(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type])." = ".(int) $id." AND c.type = ".$this->MAP_ID[$type]; @@ -1583,8 +1557,7 @@ class Categorie extends CommonObject } } } - else - { + else { dol_print_error($this->db); return -1; } @@ -1632,8 +1605,7 @@ class Categorie extends CommonObject $nom = '%'.str_replace('*', '%', $nom).'%'; if (!$case) $sql .= " AND label LIKE '".$this->db->escape($nom)."'"; - else - $sql .= " AND label LIKE BINARY '".$this->db->escape($nom)."'"; + else $sql .= " AND label LIKE BINARY '".$this->db->escape($nom)."'"; } if ($id) { @@ -1652,8 +1624,7 @@ class Categorie extends CommonObject return $cats; } - else - { + else { $this->error = $this->db->error().' sql='.$sql; return -1; } @@ -1879,8 +1850,7 @@ class Categorie extends CommonObject $sql2 .= " description='".$this->db->escape($this->description)."'"; $sql2 .= " WHERE fk_category=".$this->id." AND lang='".$this->db->escape($key)."'"; } - else - { + else { $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."categorie_lang (fk_category, lang, label, description)"; $sql2 .= " VALUES(".$this->id.",'".$key."','".$this->db->escape($this->label); $sql2 .= "','".$this->db->escape($this->multilangs["$key"]["description"])."')"; @@ -1901,8 +1871,7 @@ class Categorie extends CommonObject $sql2 .= " description='".$this->db->escape($this->multilangs["$key"]["description"])."'"; $sql2 .= " WHERE fk_category=".$this->id." AND lang='".$this->db->escape($key)."'"; } - else - { + else { $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."categorie_lang (fk_category, lang, label, description)"; $sql2 .= " VALUES(".$this->id.",'".$key."','".$this->db->escape($this->multilangs["$key"]["label"]); $sql2 .= "','".$this->db->escape($this->multilangs["$key"]["description"])."')"; @@ -1961,8 +1930,7 @@ class Categorie extends CommonObject } return 1; } - else - { + else { $this->error = $langs->trans("Error")." : ".$this->db->error()." - ".$sql; return -1; } @@ -2067,8 +2035,7 @@ class Categorie extends CommonObject { return " AND (".implode(' AND ', $searchCategorySqlList).")"; } - else - { + else { return ""; } } diff --git a/htdocs/categories/edit.php b/htdocs/categories/edit.php index 48bd82b9326..dfd8f01f381 100644 --- a/htdocs/categories/edit.php +++ b/htdocs/categories/edit.php @@ -90,8 +90,7 @@ if ($action == 'update' && $user->rights->categorie->creer) if ($parent != "-1") $object->fk_parent = $parent; - else - $object->fk_parent = ""; + else $object->fk_parent = ""; if (empty($object->label)) @@ -110,13 +109,11 @@ if ($action == 'update' && $user->rights->categorie->creer) header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$object->id.'&type='.$type); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } diff --git a/htdocs/categories/index.php b/htdocs/categories/index.php index b36101750f2..d88e1a0ff8c 100644 --- a/htdocs/categories/index.php +++ b/htdocs/categories/index.php @@ -54,7 +54,7 @@ $typetext = $type; if ($type == Categorie::TYPE_ACCOUNT) $title = $langs->trans('AccountsCategoriesArea'); elseif ($type == Categorie::TYPE_WAREHOUSE) $title = $langs->trans('StocksCategoriesArea'); elseif ($type == Categorie::TYPE_ACTIONCOMM) $title = $langs->trans('ActionCommCategoriesArea'); -else $title = $langs->trans(ucfirst($type).'sCategoriesArea'); +else $title = $langs->trans(ucfirst($type).'sCategoriesArea'); $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'); @@ -207,8 +207,7 @@ if ($nbofentries > 0) tree_recur($data, $data[0], 0); print ''; } -else -{ +else { print ''; print ''; print ''; print ''; } -else -{ +else { $categstatic = new Categorie($db); $fulltree = $categstatic->get_full_arbo($type, $object->id, 1); @@ -408,8 +404,7 @@ else print ''; print ''; } - else - { + else { print ''; print '\n"; } } - else - { + else { print ''; } print "
'.img_picto_common('', 'treemenu/branchbottom.gif').''; diff --git a/htdocs/categories/photos.php b/htdocs/categories/photos.php index 07e5d56d268..7443bc5b532 100644 --- a/htdocs/categories/photos.php +++ b/htdocs/categories/photos.php @@ -180,8 +180,7 @@ if ($object->id) print ''; print $langs->trans("AddPhoto").''; } - else - { + else { print ''; print $langs->trans("AddPhoto").''; } @@ -232,8 +231,7 @@ if ($object->id) { $filename = $obj['photo_vignette']; } - else - { + else { $filename = $obj['photo']; } @@ -281,8 +279,7 @@ if ($object->id) } } } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index 803b4ae34ab..921a1f12061 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -162,8 +162,7 @@ if ($user->rights->categorie->supprimer && $action == 'confirm_delete' && $confi header("Location: ".DOL_URL_ROOT.'/categories/index.php?type='.$type); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -181,14 +180,12 @@ if ($type == Categorie::TYPE_PRODUCT && $elemid && $action == 'addintocategory' { setEventMessages($langs->trans("WasAddedSuccessfully", $newobject->ref), null, 'mesgs'); } - else - { + else { if ($cat->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { setEventMessages($langs->trans("ObjectAlreadyLinkedToCategory"), null, 'warnings'); } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -337,8 +334,7 @@ elseif (count($cats) < 1) print ''.$langs->trans("NoSubCat").'
'; print ''; @@ -451,8 +446,7 @@ if ($type == Categorie::TYPE_PRODUCT) { dol_print_error($db, $prods->error, $prods->errors); } - else - { + else { // Form to add record into a category $showclassifyform = 1; if ($showclassifyform) @@ -515,8 +509,7 @@ if ($type == Categorie::TYPE_PRODUCT) print "\n"; } } - else - { + else { print ''; } print "
'.$langs->trans("ThisCategoryHasNoItems").'
\n"; @@ -534,8 +527,7 @@ if ($type == Categorie::TYPE_SUPPLIER) { dol_print_error($db, $socs->error, $socs->errors); } - else - { + else { print '
'; print ''; print ''; @@ -576,8 +568,7 @@ if ($type == Categorie::TYPE_SUPPLIER) print "
'.$langs->trans("ThisCategoryHasNoItems").'
\n"; @@ -595,8 +586,7 @@ if ($type == Categorie::TYPE_CUSTOMER) { dol_print_error($db, $socs->error, $socs->errors); } - else - { + else { print ''; print ''; print ''; @@ -636,8 +626,7 @@ if ($type == Categorie::TYPE_CUSTOMER) print "\n"; } } - else - { + else { print ''.$langs->trans("ThisCategoryHasNoItems").''; } print "\n"; @@ -658,8 +647,7 @@ if ($type == Categorie::TYPE_MEMBER) { dol_print_error($db, $prods->error, $prods->errors); } - else - { + else { print ''; print ''; print ''; @@ -701,8 +689,7 @@ if ($type == Categorie::TYPE_MEMBER) print "\n"; } } - else - { + else { print ''.$langs->trans("ThisCategoryHasNoItems").''; } print "\n"; @@ -721,8 +708,7 @@ if ($type == Categorie::TYPE_CONTACT) { dol_print_error($db, $contacts->error, $contacts->errors); } - else - { + else { print ''; print ''; print ''; @@ -765,8 +751,7 @@ if ($type == Categorie::TYPE_CONTACT) print "\n"; } } - else - { + else { print ''.$langs->trans("ThisCategoryHasNoItems").''; } print "\n"; @@ -787,8 +772,7 @@ if ($type == Categorie::TYPE_ACCOUNT) { dol_print_error($db, $accounts->error, $accounts->errors); } - else - { + else { print ''; print ''; print ''; @@ -829,8 +813,7 @@ if ($type == Categorie::TYPE_ACCOUNT) print "\n"; } } - else - { + else { print ''.$langs->trans("ThisCategoryHasNoItems").''; } print "\n"; @@ -851,8 +834,7 @@ if ($type == Categorie::TYPE_PROJECT) { dol_print_error($db, $object->error, $object->errors); } - else - { + else { print ''; print ''; print ''; @@ -894,8 +876,7 @@ if ($type == Categorie::TYPE_PROJECT) print "\n"; } } - else - { + else { print ''.$langs->trans("ThisCategoryHasNoItems").''; } print "\n"; @@ -914,8 +895,7 @@ if ($type == Categorie::TYPE_USER) { dol_print_error($db, $object->error, $object->errors); } - else - { + else { print ''; print ''; print ''; @@ -954,8 +934,7 @@ if ($type == Categorie::TYPE_USER) print "\n"; } } - else - { + else { print ''.$langs->trans("ThisCategoryHasNoItems").''; } print "\n"; @@ -977,8 +956,7 @@ if ($type == Categorie::TYPE_WAREHOUSE) { dol_print_error($db, $object->error, $object->errors); } - else - { + else { print ''; print ''; print ''; @@ -1020,8 +998,7 @@ if ($type == Categorie::TYPE_WAREHOUSE) print "\n"; } } - else - { + else { print ''.$langs->trans("ThisCategoryHasNoItems").''; } print "\n"; diff --git a/htdocs/collab/index.php b/htdocs/collab/index.php index c570e12ba31..f6344f4ebf0 100644 --- a/htdocs/collab/index.php +++ b/htdocs/collab/index.php @@ -95,8 +95,7 @@ if ($action == 'add') setEventMessages($langs->trans("PageAdded", $objectpage->pageurl), null, 'mesgs'); $action = ''; } - else - { + else { $db->rollback(); } @@ -130,13 +129,11 @@ if ($action == 'delete') header("Location: ".$_SERVER["PHP_SELF"].'?website='.$website); exit; } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); } } diff --git a/htdocs/don/admin/donation.php b/htdocs/don/admin/donation.php index e8e7fa4f5b9..514d79dcd77 100644 --- a/htdocs/don/admin/donation.php +++ b/htdocs/don/admin/donation.php @@ -71,14 +71,12 @@ if ($action == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=donation&file=SPECIMEN.html"); return; } - else - { + else { setEventMessages($obj->error, $obj->errors, 'errors'); dol_syslog($obj->error, LOG_ERR); } } - else - { + else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -130,8 +128,7 @@ if ($action == 'set_DONATION_ACCOUNTINGACCOUNT') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -148,8 +145,7 @@ if ($action == 'set_DONATION_MESSAGE') { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } - else - { + else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -165,8 +161,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -179,8 +174,7 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) header("Location: ".$_SERVER["PHP_SELF"]); exit; } - else - { + else { dol_print_error($db); } } @@ -223,8 +217,7 @@ if ($resql) $i++; } } -else -{ +else { dol_print_error($db); } @@ -276,15 +269,13 @@ if (is_resource($handle)) print img_picto($langs->trans("Enabled"), 'switch_on'); print ''; } - else - { + else { print "\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Enabled"), 'switch_on').''; print ''; } } - else - { + else { print "\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print ""; @@ -297,8 +288,7 @@ if (is_resource($handle)) print img_picto($langs->trans("Default"), 'on'); print ''; } - else - { + else { print ""; print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; print ''; @@ -371,8 +361,7 @@ if (!empty($conf->accounting->enabled)) { print $formaccounting->select_account($conf->global->DONATION_ACCOUNTINGACCOUNT, 'DONATION_ACCOUNTINGACCOUNT', 1, '', 1, 1); } -else -{ +else { print ''; } print ''; diff --git a/htdocs/don/card.php b/htdocs/don/card.php index 505d2fbed29..7af11d46ebf 100644 --- a/htdocs/don/card.php +++ b/htdocs/don/card.php @@ -181,8 +181,7 @@ if ($action == 'add') header("Location: ".$_SERVER['PHP_SELF'].'?id='.$res); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -196,8 +195,7 @@ if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $user->rights- header("Location: index.php"); exit; } - else - { + else { dol_syslog($object->error, LOG_DEBUG); setEventMessages($object->error, $object->errors, 'errors'); } @@ -355,8 +353,7 @@ if ($action == 'create') print ')'; print ''; } - else - { + else { print ''; print $form->select_company($soc->id, 'socid', '(s.client = 1 OR s.client = 3) AND status=1', 'SelectThirdParty', 0, 0, null, 0, 'minwidth300'); // Option to reload page to retrieve customer informations. Note, this clear other input @@ -520,8 +517,7 @@ if (!empty($id) && $action == 'edit') { print "".''.$langs->trans("Amount").' '.$langs->trans("Currency".$conf->currency).''; } - else - { + else { print ''.$langs->trans("Amount").''; print price($object->amount, 0, $langs, 0, 0, -1, $conf->currency); print ''; @@ -777,8 +773,7 @@ if (!empty($id) && $action != 'edit') print ""; $db->free($resql); } - else - { + else { dol_print_error($db); } @@ -815,8 +810,7 @@ if (!empty($id) && $action != 'edit') { print '
'.$langs->trans('DoPayment').'
'; } - else - { + else { print ''; } } @@ -834,13 +828,11 @@ if (!empty($id) && $action != 'edit') { print '"; } - else - { + else { print '"; } } - else - { + else { print '"; } diff --git a/htdocs/don/class/api_donations.class.php b/htdocs/don/class/api_donations.class.php index 872e2009b9b..69bd1e58042 100644 --- a/htdocs/don/class/api_donations.class.php +++ b/htdocs/don/class/api_donations.class.php @@ -231,8 +231,7 @@ class Donations extends DolibarrApi { return $this->get($id); } - else - { + else { throw new RestException(500, $this->don->error); } } diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index 59c293e6386..f80feff1869 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -315,8 +315,7 @@ class Don extends CommonObject $error_string[] = $langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Amount')); $err++; } - else - { + else { if ($this->amount < $minimum && $minimum > 0) { $error_string[] = $langs->trans('MinimumAmount', $langs->transnoentitiesnoconv('$minimum')); @@ -330,8 +329,7 @@ class Don extends CommonObject $this->errors = $error_string; return 0; } - else - { + else { return 1; } } @@ -423,8 +421,7 @@ class Don extends CommonObject // End call triggers } } - else - { + else { $this->error = $this->db->lasterror(); $this->errno = $this->db->lasterrno(); $error++; @@ -453,8 +450,7 @@ class Don extends CommonObject $this->db->commit(); return $ret; } - else - { + else { $this->db->rollback(); return -1; } @@ -534,14 +530,12 @@ class Don extends CommonObject $this->db->commit(); $result = 1; } - else - { + else { $this->db->rollback(); $result = -1; } } - else - { + else { $this->error = $this->db->lasterror(); $this->errors[] = $this->error; $this->db->rollback(); @@ -613,8 +607,7 @@ class Don extends CommonObject $this->db->commit(); return 1; } - else - { + else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); @@ -709,8 +702,7 @@ class Don extends CommonObject } return 1; } - else - { + else { dol_print_error($this->db); return -1; } @@ -762,8 +754,7 @@ class Don extends CommonObject } } } - else - { + else { $error++; $this->error = $this->db->lasterror(); } @@ -773,8 +764,7 @@ class Don extends CommonObject $this->db->commit(); return 1; } - else - { + else { $this->db->rollback(); return -1; } @@ -805,13 +795,11 @@ class Don extends CommonObject { return 1; } - else - { + else { return 0; } } - else - { + else { dol_print_error($this->db); return -1; } @@ -836,13 +824,11 @@ class Don extends CommonObject { return 1; } - else - { + else { return 0; } } - else - { + else { dol_print_error($this->db); return -1; } @@ -905,8 +891,7 @@ class Don extends CommonObject $this->db->free($resql); return 1; } - else - { + else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -991,8 +976,7 @@ class Don extends CommonObject } $this->db->free($result); } - else - { + else { dol_print_error($this->db); } } @@ -1089,16 +1073,14 @@ class Don extends CommonObject dol_delete_preview($object); return 1; } - else - { + else { $outputlangs->charset_output = $sav_charset_output; dol_syslog("Erreur dans don_create"); dol_print_error($this->db, $obj->error); return 0; } } - else - { + else { print $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists", $file); return 0; } diff --git a/htdocs/don/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php index 64644d18971..416884c3a24 100644 --- a/htdocs/don/class/paymentdonation.class.php +++ b/htdocs/don/class/paymentdonation.class.php @@ -168,8 +168,7 @@ class PaymentDonation extends CommonObject $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."payment_donation"); $this->ref = $this->id; } - else - { + else { $error++; } } @@ -189,8 +188,7 @@ class PaymentDonation extends CommonObject $this->db->commit(); return $this->id; } - else - { + else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -259,8 +257,7 @@ class PaymentDonation extends CommonObject return 1; } - else - { + else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -342,8 +339,7 @@ class PaymentDonation extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -412,8 +408,7 @@ class PaymentDonation extends CommonObject $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } @@ -467,8 +462,7 @@ class PaymentDonation extends CommonObject $this->db->commit(); return $object->id; } - else - { + else { $this->db->rollback(); return -1; } @@ -593,8 +587,7 @@ class PaymentDonation extends CommonObject } } } - else - { + else { $this->error = $acc->error; $error++; } @@ -604,8 +597,7 @@ class PaymentDonation extends CommonObject { return 1; } - else - { + else { return -1; } } @@ -629,8 +621,7 @@ class PaymentDonation extends CommonObject { return 1; } - else - { + else { $this->error = $this->db->error(); return 0; } diff --git a/htdocs/don/document.php b/htdocs/don/document.php index f2994b95577..98884af9c6f 100644 --- a/htdocs/don/document.php +++ b/htdocs/don/document.php @@ -187,8 +187,7 @@ if ($object->id) $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } -else -{ +else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/don/list.php b/htdocs/don/list.php index 65ec24b1458..8c5ad9a36e0 100644 --- a/htdocs/don/list.php +++ b/htdocs/don/list.php @@ -284,8 +284,7 @@ if ($resql) print "\n"; $db->free($resql); } -else -{ +else { dol_print_error($db); } diff --git a/htdocs/don/payment/card.php b/htdocs/don/payment/card.php index e1784dc4b8b..57d5fe160a0 100644 --- a/htdocs/don/payment/card.php +++ b/htdocs/don/payment/card.php @@ -64,8 +64,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->don->supp header("Location: ".DOL_URL_ROOT."/don/index.php"); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } @@ -102,8 +101,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->don->cree header('Location: card.php?id='.$object->id); exit; } - else - { + else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } @@ -254,8 +252,7 @@ if ($resql) print "\n"; $db->free($resql); } -else -{ +else { dol_print_error($db); } @@ -290,8 +287,7 @@ if (empty($action)) { print ''.$langs->trans('Delete').''; } - else - { + else { print ''.$langs->trans('Delete').''; } } diff --git a/htdocs/don/payment/payment.php b/htdocs/don/payment/payment.php index b3ab7e2d360..162193dc51d 100644 --- a/htdocs/don/payment/payment.php +++ b/htdocs/don/payment/payment.php @@ -138,8 +138,7 @@ if ($action == 'add_payment') header('Location: '.$loc); exit; } - else - { + else { $db->rollback(); } } @@ -261,8 +260,7 @@ if ($action == 'create') $namef = "amount_".$objp->id; print ''; } - else - { + else { print '-'; } print ""; diff --git a/htdocs/don/stats/index.php b/htdocs/don/stats/index.php index 46b0d93d564..247656dc2ad 100644 --- a/htdocs/don/stats/index.php +++ b/htdocs/don/stats/index.php @@ -76,8 +76,7 @@ if (!$user->rights->societe->client->voir || $user->socid) { $filenamenb = $dir.'/shipmentsnbinyear-'.$user->id.'-'.$year.'.png'; } -else -{ +else { $filenamenb = $dir.'/shipmentsnbinyear-'.$year.'.png'; } From a636f81eacac399e03d99be64dd359718736d291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 21 May 2020 02:17:21 +0200 Subject: [PATCH 643/780] add new rule --- dev/examples/code/create_invoice.php | 9 +- dev/examples/code/create_order.php | 9 +- dev/examples/code/create_product.php | 6 +- dev/examples/code/create_user.php | 9 +- dev/initdata/dbf/importdb-products.php | 3 +- dev/initdata/dbf/importdb-thirdparties.php | 9 +- dev/initdata/dbf/includes/dbase.class.php | 9 +- dev/initdata/generate-invoice.php | 6 +- dev/initdata/generate-order.php | 6 +- dev/initdata/generate-proposal.php | 6 +- dev/initdata/generate-thirdparty.php | 3 +- dev/initdata/import-products.php | 12 +- dev/initdata/import-thirdparties.php | 15 +- dev/initdata/import-users.php | 6 +- dev/initdata/purge-data.php | 11 +- htdocs/exports/class/export.class.php | 56 +-- htdocs/exports/export.php | 45 +- htdocs/install/check.php | 63 +-- htdocs/install/inc.php | 12 +- htdocs/install/repair.php | 99 ++--- htdocs/install/step1.php | 44 +- htdocs/install/step2.php | 51 +-- htdocs/install/step5.php | 36 +- htdocs/install/upgrade.php | 15 +- htdocs/install/upgrade2.php | 451 +++++++-------------- 25 files changed, 333 insertions(+), 658 deletions(-) diff --git a/dev/examples/code/create_invoice.php b/dev/examples/code/create_invoice.php index 1b212e0a5d7..0b2c4e54697 100755 --- a/dev/examples/code/create_invoice.php +++ b/dev/examples/code/create_invoice.php @@ -87,14 +87,12 @@ if ($idobject > 0) // Change status to validated $result=$obj->validate($user); if ($result > 0) print "OK Object created with id ".$idobject."\n"; - else - { + else { $error++; dol_print_error($db, $obj->error); } } -else -{ +else { $error++; dol_print_error($db, $obj->error); } @@ -107,8 +105,7 @@ if (! $error) $db->commit(); print '--- end ok'."\n"; } -else -{ +else { print '--- end error code='.$error."\n"; $db->rollback(); } diff --git a/dev/examples/code/create_order.php b/dev/examples/code/create_order.php index 703254ad5e9..d46913f3fcf 100755 --- a/dev/examples/code/create_order.php +++ b/dev/examples/code/create_order.php @@ -85,14 +85,12 @@ if ($idobject > 0) // Change status to validated $result=$com->valid($user); if ($result > 0) print "OK Object created with id ".$idobject."\n"; - else - { + else { $error++; dol_print_error($db, $com->error); } } -else -{ +else { $error++; dol_print_error($db, $com->error); } @@ -105,8 +103,7 @@ if (! $error) $db->commit(); print '--- end ok'."\n"; } -else -{ +else { print '--- end error code='.$error."\n"; $db->rollback(); } diff --git a/dev/examples/code/create_product.php b/dev/examples/code/create_product.php index 234658388df..fb09c5f6e43 100755 --- a/dev/examples/code/create_product.php +++ b/dev/examples/code/create_product.php @@ -83,8 +83,7 @@ if ($idobject > 0) { print "OK Object created with id ".$idobject."\n"; } -else -{ +else { $error++; dol_print_error($db, $myproduct->error); } @@ -96,8 +95,7 @@ if (! $error) $db->commit(); print '--- end ok'."\n"; } -else -{ +else { print '--- end error code='.$error."\n"; $db->rollback(); } diff --git a/dev/examples/code/create_user.php b/dev/examples/code/create_user.php index 96d369085d2..79fe30b73bf 100755 --- a/dev/examples/code/create_user.php +++ b/dev/examples/code/create_user.php @@ -74,8 +74,7 @@ if ($idobject > 0) // Change status to validated $result=$obj->setStatut(1); if ($result > 0) print "OK Object created with id ".$idobject."\n"; - else - { + else { $error++; dol_print_error($db, $obj->error); } @@ -84,8 +83,7 @@ elseif ($obj->error == 'ErrorLoginAlreadyExists') { print "User with login ".$obj->login." already exists\n"; } -else -{ +else { $error++; dol_print_error($db, $obj->error); } @@ -98,8 +96,7 @@ if (! $error) $db->commit(); print '--- end ok'."\n"; } -else -{ +else { print '--- end error code='.$error."\n"; $db->rollback(); } diff --git a/dev/initdata/dbf/importdb-products.php b/dev/initdata/dbf/importdb-products.php index 845064f0688..2c06c07e103 100644 --- a/dev/initdata/dbf/importdb-products.php +++ b/dev/initdata/dbf/importdb-products.php @@ -227,8 +227,7 @@ while ($fields = $db->fetch_array($resql)) { $error++; // $errorrecord will be reset } $j++; -} else - die("error : $sql"); +} else die("error : $sql"); diff --git a/dev/initdata/dbf/importdb-thirdparties.php b/dev/initdata/dbf/importdb-thirdparties.php index 8f0eb0635f0..a6b2697eed8 100644 --- a/dev/initdata/dbf/importdb-thirdparties.php +++ b/dev/initdata/dbf/importdb-thirdparties.php @@ -179,8 +179,7 @@ while ($fields = $db->fetch_array($resql)) { $object->town = trim($fields['FVILLE']); if ($fields['FPAYS']) $object->country_id = dol_getIdFromCode($db, trim(ucwords(strtolower($fields['FPAYS']))), 'c_country', 'label', 'rowid'); - else - $object->country_id = 1; + else $object->country_id = 1; $object->phone = trim($fields['FTEL']) ? trim($fields['FTEL']) : trim($fields['FCONTACT']); $object->phone = substr($object->phone, 0, 20); $object->fax = trim($fields['FFAX']) ? trim($fields['FFAX']) : trim($fields['FCONTACT']); @@ -299,8 +298,7 @@ while ($fields = $db->fetch_array($resql)) { $contact->town = trim($fields['LVILLE']); if ($fields['FPAYS']) $contact->country_id = dol_getIdFromCode($db, trim(ucwords(strtolower($fields['LPAYS']))), 'c_country', 'label', 'rowid'); - else - $contact->country_id = 1; + else $contact->country_id = 1; $contact->email = $fields['LMAIL']; $contact->phone = trim($fields['LTEL']) ? trim($fields['LTEL']) : trim($fields['LCONTACT']); $contact->fax = trim($fields['LFAX']) ? trim($fields['LFAX']) : trim($fields['LCONTACT']); @@ -340,8 +338,7 @@ while ($fields = $db->fetch_array($resql)) { $error++; // $errorrecord will be reset } $j++; -} else - die("error : $sql"); +} else die("error : $sql"); $db->commit(); diff --git a/dev/initdata/dbf/includes/dbase.class.php b/dev/initdata/dbf/includes/dbase.class.php index 0c2f6820a96..e70f18087c4 100644 --- a/dev/initdata/dbf/includes/dbase.class.php +++ b/dev/initdata/dbf/includes/dbase.class.php @@ -207,8 +207,7 @@ class DBase $value = true; elseif ($value == 'f' || $value == 'n') $value = false; - else - $value = null; + else $value = null; } $record[$i] = $value; } @@ -295,8 +294,7 @@ class DBase $i = unpack("S$n", $data); if ($n == 1) return (int) $i[1]; - else - return array_merge($i); + else return array_merge($i); } private static function putInt16($fd, $value) @@ -310,8 +308,7 @@ class DBase $i = unpack("L$n", $data); if ($n == 1) return (int) $i[1]; - else - return array_merge($i); + else return array_merge($i); } private static function putInt32($fd, $value) diff --git a/dev/initdata/generate-invoice.php b/dev/initdata/generate-invoice.php index 3fe058e8d3e..d4522ef047e 100755 --- a/dev/initdata/generate-invoice.php +++ b/dev/initdata/generate-invoice.php @@ -180,13 +180,11 @@ while ($i < GEN_NUMBER_FACTURE && $result >= 0) { print " OK with ref ".$object->ref."\n";; } - else - { + else { dol_print_error($db, $object->error); } } - else - { + else { dol_print_error($db, $object->error); } } diff --git a/dev/initdata/generate-order.php b/dev/initdata/generate-order.php index 1dc56aa5582..f63d50a1967 100755 --- a/dev/initdata/generate-order.php +++ b/dev/initdata/generate-order.php @@ -207,15 +207,13 @@ for ($s = 0 ; $s < GEN_NUMBER_COMMANDE ; $s++) $db->commit(); print " OK with ref ".$object->ref."\n"; } - else - { + else { print " KO\n"; $db->rollback(); dol_print_error($db, $object->error); } } - else - { + else { print " KO\n"; $db->rollback(); dol_print_error($db, $object->error); diff --git a/dev/initdata/generate-proposal.php b/dev/initdata/generate-proposal.php index 4c5d70aadc4..60ba418b43b 100755 --- a/dev/initdata/generate-proposal.php +++ b/dev/initdata/generate-proposal.php @@ -211,15 +211,13 @@ while ($i < GEN_NUMBER_PROPAL && $result >= 0) $db->commit(); print " OK with ref ".$object->ref."\n"; } - else - { + else { print " KO\n"; $db->rollback(); dol_print_error($db, $object->error); } } - else - { + else { dol_print_error($db, $object->error); } } diff --git a/dev/initdata/generate-thirdparty.php b/dev/initdata/generate-thirdparty.php index 05ac6416aa3..f7bde473038 100755 --- a/dev/initdata/generate-thirdparty.php +++ b/dev/initdata/generate-thirdparty.php @@ -137,8 +137,7 @@ for ($s = 0 ; $s < GEN_NUMBER_SOCIETE ; $s++) print "Company ".$s." created nom=".$soc->name."\n"; } - else - { + else { print "Error: ".$soc->error."\n"; } } diff --git a/dev/initdata/import-products.php b/dev/initdata/import-products.php index 4288c5bf3b1..78f3a0789f8 100755 --- a/dev/initdata/import-products.php +++ b/dev/initdata/import-products.php @@ -164,8 +164,7 @@ while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape)) print " - Error in create result code = ".$ret." - ".$produit->errorsToString(); $errorrecord++; } - else - { + else { print " - Creation OK with ref ".$produit->ref." - id = ".$ret; } @@ -181,8 +180,7 @@ while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape)) print " - Error in updatePrice result code = ".$ret1." ".$ret2." - ".$produit->errorsToString(); $errorrecord++; } - else - { + else { print " - updatePrice OK"; } } @@ -201,8 +199,7 @@ while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape)) print " - Error in setMultiLangs result code = ".$ret." - ".$produit->errorsToString(); $errorrecord++; } - else - { + else { print " - setMultiLangs OK"; } } @@ -228,8 +225,7 @@ if ($mode != 'confirmforced' && ($error || $mode != 'confirm')) print "Rollback any changes.\n"; $db->rollback(); } -else -{ +else { print "Commit all changes.\n"; $db->commit(); } diff --git a/dev/initdata/import-thirdparties.php b/dev/initdata/import-thirdparties.php index ef1dfcc99ab..87fef83de0f 100755 --- a/dev/initdata/import-thirdparties.php +++ b/dev/initdata/import-thirdparties.php @@ -182,8 +182,7 @@ while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape)) print " - Error in create result code = ".$ret." - ".$object->errorsToString(); $errorrecord++; } - else - { + else { print " - Creation OK with name ".$object->name." - id = ".$ret; } } @@ -213,8 +212,7 @@ while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape)) print " - Error in create link with sale representative result code = ".$result." - ".$object->errorsToString(); $errorrecord++; } - else - { + else { print " - create link sale representative OK"; } } @@ -244,8 +242,7 @@ while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape)) print " - Error in create contact result code = ".$ret1." ".$ret2." - ".$object->errorsToString(); $errorrecord++; } - else - { + else { print " - create contact OK"; } } @@ -278,8 +275,7 @@ while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape)) print " - Error in create contact result code = ".$ret1." ".$ret2." - ".$object->errorsToString(); $errorrecord++; } - else - { + else { print " - create contact OK"; } } @@ -306,8 +302,7 @@ if ($mode != 'confirmforced' && ($error || $mode != 'confirm')) print "Rollback any changes.\n"; $db->rollback(); } -else -{ +else { print "Commit all changes.\n"; $db->commit(); } diff --git a/dev/initdata/import-users.php b/dev/initdata/import-users.php index 4247415288c..25fa6a69e2d 100755 --- a/dev/initdata/import-users.php +++ b/dev/initdata/import-users.php @@ -143,8 +143,7 @@ while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape)) print " - Error in create result code = ".$ret." - ".$object->errorsToString(); $errorrecord++; } - else - { + else { print " - Creation OK with login ".$object->login." - id = ".$ret; } @@ -169,8 +168,7 @@ if ($mode != 'confirmforced' && ($error || $mode != 'confirm')) print "Rollback any changes.\n"; $db->rollback(); } -else -{ +else { print "Commit all changes.\n"; $db->commit(); } diff --git a/dev/initdata/purge-data.php b/dev/initdata/purge-data.php index b1aadd56ed8..f9d8420b1e1 100755 --- a/dev/initdata/purge-data.php +++ b/dev/initdata/purge-data.php @@ -198,7 +198,7 @@ if (empty($option)) if ($option != 'all') { $listofoptions=explode(',', $option); - foreach($listofoptions as $cursoroption) + foreach ($listofoptions as $cursoroption) { if (! in_array($cursoroption, array_keys($sqls))) { print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n"; @@ -264,7 +264,7 @@ function processfamily($family, $date) global $db, $sqls; $error=0; - foreach($sqls[$family] as $sql) + foreach ($sqls[$family] as $sql) { if (preg_match('/^@/', $sql)) { @@ -302,10 +302,10 @@ function processfamily($family, $date) $db->begin(); $listofoptions=explode(',', $option); -foreach($listofoptions as $cursoroption) +foreach ($listofoptions as $cursoroption) { $oldfamily=''; - foreach($sqls as $family => $familysql) + foreach ($sqls as $family => $familysql) { if ($cursoroption && $cursoroption != 'all' && $cursoroption != $family) continue; @@ -326,8 +326,7 @@ if ($error || $mode != 'confirm') print "\nRollback any changes.\n"; $db->rollback(); } -else -{ +else { print "Commit all changes.\n"; $db->commit(); } diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php index 978a3059ace..a6873f2894a 100644 --- a/htdocs/exports/class/export.class.php +++ b/htdocs/exports/class/export.class.php @@ -142,8 +142,7 @@ class Export { $bool = $user->rights->{$perm[0]}->{$perm[1]}->{$perm[2]}; } - else - { + else { $bool = $user->rights->{$perm[0]}->{$perm[1]}; } if ($perm[0] == 'user' && $user->admin) $bool = true; @@ -295,8 +294,7 @@ class Export case 'Text': if (!(strpos($ValueField, '%') === false)) $szFilterQuery .= " ".$NameField." LIKE '".$ValueField."'"; - else - $szFilterQuery .= " ".$NameField." = '".$ValueField."'"; + else $szFilterQuery .= " ".$NameField." = '".$ValueField."'"; break; case 'Date': if (strpos($ValueField, "+") > 0) @@ -306,12 +304,10 @@ class Export $szFilterQuery = "(".$this->conditionDate($NameField, trim($ValueArray[0]), ">="); $szFilterQuery .= " AND ".$this->conditionDate($NameField, trim($ValueArray[1]), "<=").")"; } - else - { + else { if (is_numeric(substr($ValueField, 0, 1))) $szFilterQuery = $this->conditionDate($NameField, trim($ValueField), "="); - else - $szFilterQuery = $this->conditionDate($NameField, trim(substr($ValueField, 1)), substr($ValueField, 0, 1)); + else $szFilterQuery = $this->conditionDate($NameField, trim(substr($ValueField, 1)), substr($ValueField, 0, 1)); } break; case 'Duree': @@ -325,12 +321,10 @@ class Export $szFilterQuery = "(".$NameField.">=".$ValueArray[0]; $szFilterQuery .= " AND ".$NameField."<=".$ValueArray[1].")"; } - else - { + else { if (is_numeric(substr($ValueField, 0, 1))) $szFilterQuery = " ".$NameField."=".$ValueField; - else - $szFilterQuery = " ".$NameField.substr($ValueField, 0, 1).substr($ValueField, 1); + else $szFilterQuery = " ".$NameField.substr($ValueField, 0, 1).substr($ValueField, 1); } break; case 'Boolean': @@ -343,8 +337,7 @@ class Export else { if (!(strpos($ValueField, '%') === false)) $szFilterQuery = " ".$NameField." LIKE '".$ValueField."'"; - else - $szFilterQuery = " ".$NameField." = '".$ValueField."'"; + else $szFilterQuery = " ".$NameField." = '".$ValueField."'"; } break; default: @@ -367,7 +360,7 @@ class Export // TODO date_format is forbidden, not performant and not portable. Use instead BETWEEN if (strlen($Value) == 4) $Condition = " date_format(".$Field.",'%Y') ".$Sens." '".$Value."'"; elseif (strlen($Value) == 6) $Condition = " date_format(".$Field.",'%Y%m') ".$Sens." '".$Value."'"; - else $Condition = " date_format(".$Field.",'%Y%m%d') ".$Sens." ".$Value; + else $Condition = " date_format(".$Field.",'%Y%m%d') ".$Sens." ".$Value; return $Condition; } @@ -428,8 +421,7 @@ class Export if (!empty($InfoFieldList[3])) $keyList = $InfoFieldList[3]; - else - $keyList = 'rowid'; + else $keyList = 'rowid'; $sql = 'SELECT '.$keyList.' as rowid, '.$InfoFieldList[2].' as label'.(empty($InfoFieldList[3]) ? '' : ', '.$InfoFieldList[3].' as code'); if ($InfoFieldList[1] == 'c_stcomm') $sql = 'SELECT id as id, '.$keyList.' as rowid, '.$InfoFieldList[2].' as label'.(empty($InfoFieldList[3]) ? '' : ', '.$InfoFieldList[3].' as code'); if ($InfoFieldList[1] == 'c_country') $sql = 'SELECT '.$keyList.' as rowid, '.$InfoFieldList[2].' as label, code as code'; @@ -474,8 +466,7 @@ class Export { $szFilterField .= ''; } - else - { + else { $szFilterField .= ''; } $i++; @@ -564,8 +555,7 @@ class Export $objmodel = new $classname($this->db); if (!empty($sqlquery)) $sql = $sqlquery; - else - { + else { // Define value for indice from $datatoexport $foundindice = 0; foreach ($this->array_export_code as $key => $dataset) @@ -595,8 +585,7 @@ class Export //$this->array_export_label[$indice] if ($conf->global->EXPORT_PREFIX_SPEC) $filename = $conf->global->EXPORT_PREFIX_SPEC."_".$datatoexport; - else - $filename = "export_".$datatoexport; + else $filename = "export_".$datatoexport; $filename .= '.'.$objmodel->getDriverExtension(); $dirname = $conf->export->dir_temp.'/'.$user->id; @@ -665,8 +654,7 @@ class Export } $obj->$alias = $remaintopay; } - else - { + else { // TODO FIXME Export of compute field does not work. $obj containt $obj->alias_field and formulat will contains $obj->field $computestring = $this->array_export_special[$indice][$key]; $tmp = dol_eval($computestring, 1, 0); @@ -689,15 +677,13 @@ class Export return 1; } - else - { + else { $this->error = $objmodel->error; dol_syslog("Export::build_file Error: ".$this->error, LOG_ERR); return -1; } } - else - { + else { $this->error = $this->db->error()." - sql=".$sql; return -1; } @@ -740,8 +726,7 @@ class Export $this->db->commit(); return 1; } - else - { + else { $this->error = $this->db->lasterror(); $this->errno = $this->db->lasterrno(); $this->db->rollback(); @@ -777,14 +762,12 @@ class Export return 1; } - else - { + else { $this->error = "ModelNotFound"; return -2; } } - else - { + else { dol_print_error($this->db); return -3; } @@ -823,8 +806,7 @@ class Export $this->db->rollback(); return -1 * $error; } - else - { + else { $this->db->commit(); return 1; } diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index 6543747d1f7..b6b0e7b7fa5 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -174,8 +174,7 @@ if ($action == 'selectfield') // Selection of field at step 2 $_SESSION["export_selected_fields"] = $array_selected; } } - else - { + else { $warnings = array(); $array_selected[$field] = count($array_selected) + 1; // We tag the key $field as "selected" @@ -223,8 +222,7 @@ if ($action == 'unselectfield') $array_selected = array(); $_SESSION["export_selected_fields"] = $array_selected; } - else - { + else { unset($array_selected[$_GET["field"]]); // Renumber fields of array_selected (from 1 to nb_elements) asort($array_selected); @@ -288,8 +286,7 @@ if ($action == 'builddoc') setEventMessages($objexport->error, $objexport->errors, 'errors'); $sqlusedforexport = $objexport->sqlusedforexport; } - else - { + else { setEventMessages($langs->trans("FileSuccessfullyBuilt"), null, 'mesgs'); $sqlusedforexport = $objexport->sqlusedforexport; } @@ -351,17 +348,14 @@ if ($action == 'add_export_model') { setEventMessages($langs->trans("ExportModelSaved", $objexport->model_name), null, 'mesgs'); } - else - { + else { $langs->load("errors"); if ($objexport->errno == 'DB_ERROR_RECORD_ALREADY_EXISTS') setEventMessages($langs->trans("ErrorExportDuplicateProfil"), null, 'errors'); - else - setEventMessages($objexport->error, $objexport->errors, 'errors'); + else setEventMessages($objexport->error, $objexport->errors, 'errors'); } } - else - { + else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("ExportModelName")), null, 'errors'); } } @@ -473,15 +467,13 @@ if ($step == 1 || !$datatoexport) { print ''.img_picto($langs->trans("NewExport"), 'filenew').''; } - else - { + else { print $langs->trans("NotEnoughPermissions"); } print ''; } } - else - { + else { print ''.$langs->trans("NoExportableData").''; } print ''; @@ -615,8 +607,7 @@ if ($step == 2 && $datatoexport) { $htmltext .= ''.$langs->trans("ComputedField")." -> ".$langs->trans("Method")." : ".$objexport->array_export_special[0][$code]."
"; } - else - { + else { $htmltext .= ''.$langs->trans("Table")." -> ".$langs->trans("Field").": ".$tablename." -> ".preg_replace('/^.*\./', '', $code)."
"; } if (!empty($objexport->array_export_examplevalues[0][$code])) @@ -643,8 +634,7 @@ if ($step == 2 && $datatoexport) //print ' ('.$code.')'; print ''; } - else - { + else { // Fields not selected print ''; //print $text.'-'.$htmltext."
"; @@ -673,13 +663,11 @@ if ($step == 2 && $datatoexport) { print ''.$langs->trans("NextStep").''; } - else - { + else { print ''.$langs->trans("NextStep").''; } } - else - { + else { print ''.$langs->trans("NextStep").''; } @@ -811,8 +799,7 @@ if ($step == 3 && $datatoexport) { $htmltext .= ''.$langs->trans("ComputedField")." -> ".$langs->trans("Method")." : ".$objexport->array_export_special[0][$code]."
"; } - else - { + else { $htmltext .= ''.$langs->trans("Table")." -> ".$langs->trans("Field").": ".$tablename." -> ".preg_replace('/^.*\./', '', $code)."
"; } if (!empty($objexport->array_export_examplevalues[0][$code])) @@ -842,8 +829,7 @@ if ($step == 3 && $datatoexport) $tmp = $objexport->build_filterField($Typefieldsarray[$code], $code, $ValueFilter); print $form->textwithpicto($tmp, $szInfoFiltre); } - else - { + else { print $objexport->build_filterField($Typefieldsarray[$code], $code, $ValueFilter); } } @@ -1006,8 +992,7 @@ if ($step == 4 && $datatoexport) { $htmltext .= ''.$langs->trans("ComputedField")." -> ".$langs->trans("Method")." : ".$objexport->array_export_special[0][$code]."
"; } - else - { + else { $htmltext .= ''.$langs->trans("Table")." -> ".$langs->trans("Field").": ".$tablename." -> ".preg_replace('/^.*\./', '', $code)."
"; } if (!empty($objexport->array_export_examplevalues[0][$code])) diff --git a/htdocs/install/check.php b/htdocs/install/check.php index 408f4b2a1a8..792f72d8831 100644 --- a/htdocs/install/check.php +++ b/htdocs/install/check.php @@ -88,8 +88,7 @@ elseif (versioncompare(versionphparray(), $arrayphpminversionwarning) < 0) // print 'Error '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionwarning)); $checksok = 0; // 0=error, 1=warning } -else -{ +else { print 'Ok '.$langs->trans("PHPVersion")." ".versiontostring(versionphparray()); } if (empty($force_install_nophpinfo)) print ' ('.$langs->trans("MoreInformation").')'; @@ -104,8 +103,7 @@ if (!isset($_GET["testget"]) && !isset($_POST["testpost"])) print "
\n"; $checksok = 0; } -else -{ +else { print 'Ok '.$langs->trans("PHPSupportPOSTGETOk")."
\n"; } @@ -116,8 +114,7 @@ if (!function_exists("session_id")) print 'Error '.$langs->trans("ErrorPHPDoesNotSupportSessions")."
\n"; $checksok = 0; } -else -{ +else { print 'Ok '.$langs->trans("PHPSupportSessions")."
\n"; } @@ -129,8 +126,7 @@ if (!function_exists("imagecreate")) print 'Error '.$langs->trans("ErrorPHPDoesNotSupportGD")."
\n"; // $checksok = 0; // If ko, just warning. So check must still be 1 (otherwise no way to install) } -else -{ +else { print 'Ok '.$langs->trans("PHPSupportGD")."
\n"; } @@ -142,8 +138,7 @@ if (!function_exists("curl_init")) print 'Error '.$langs->trans("ErrorPHPDoesNotSupportCurl")."
\n"; // $checksok = 0; // If ko, just warning. So check must still be 1 (otherwise no way to install) } -else -{ +else { print 'Ok '.$langs->trans("PHPSupportCurl")."
\n"; } @@ -152,8 +147,7 @@ if (!function_exists("easter_date")) { print 'Error '.$langs->trans("ErrorPHPDoesNotSupportCalendar")."
\n"; } -else -{ +else { print 'Ok '.$langs->trans("PHPSupportCalendar")."
\n"; } @@ -165,8 +159,7 @@ if (!function_exists("utf8_encode")) print 'Error '.$langs->trans("ErrorPHPDoesNotSupportUTF8")."
\n"; // $checksok = 0; // If ko, just warning. So check must still be 1 (otherwise no way to install) } -else -{ +else { print 'Ok '.$langs->trans("PHPSupportUTF8")."
\n"; } @@ -180,8 +173,7 @@ if (empty($_SERVER["SERVER_ADMIN"]) || $_SERVER["SERVER_ADMIN"] != 'doliwamp@loc print 'Error '.$langs->trans("ErrorPHPDoesNotSupportIntl")."
\n"; // $checksok = 0; // If ko, just warning. So check must still be 1 (otherwise no way to install) } - else - { + else { print 'Ok '.$langs->trans("PHPSupportIntl")."
\n"; } } @@ -192,8 +184,7 @@ if (!class_exists('ZipArchive')) print 'Error '.$langs->trans("ErrorPHPDoesNotSupport", "ZIP")."
\n"; // $checksok = 0; // If ko, just warning. So check must still be 1 (otherwise no way to install) } -else -{ +else { print 'Ok '.$langs->trans("PHPSupport", "ZIP")."
\n"; } @@ -215,8 +206,7 @@ if ($memmaxorig != '') { print 'Ok '.$langs->trans("PHPMemoryOK", $memmaxorig, $memrequiredorig)."
\n"; } - else - { + else { print 'Warning '.$langs->trans("PHPMemoryTooLow", $memmaxorig, $memrequiredorig)."
\n"; } } @@ -236,13 +226,11 @@ if (is_readable($conffile) && filesize($conffile) > 8) // Already installed for all parts (config and database). We can propose upgrade. $allowupgrade = true; } - else - { + else { $allowupgrade = false; } } -else -{ +else { // If not, we create it dolibarr_install_syslog("check: we try to create conf file '".$conffile."'"); $confexists = 0; @@ -253,8 +241,7 @@ else // Success dolibarr_install_syslog("check: successfully copied file ".$conffile.".example into ".$conffile); } - else - { + else { // If failed, we try to create an empty file dolibarr_install_syslog("check: failed to copy file ".$conffile.".example into ".$conffile.". We try to create it.", LOG_WARNING); @@ -285,8 +272,7 @@ if (!file_exists($conffile)) print $langs->trans("CorrectProblemAndReloadPage", $_SERVER['PHP_SELF'].'?testget=ok'); $err++; } -else -{ +else { if (dol_is_dir($conffile)) { print 'Warning '.$langs->trans("ConfFileMustBeAFileNotADir", $conffiletoshow); @@ -300,8 +286,7 @@ else { print 'Ok '.$langs->trans("ConfFileExists", $conffiletoshow); } - else - { + else { print 'Ok '.$langs->trans("ConfFileCouldBeCreated", $conffiletoshow); } print "
"; @@ -311,14 +296,12 @@ else $allowinstall = 0; } // File exists and can be modified - else - { + else { if ($confexists) { print 'Ok '.$langs->trans("ConfFileExists", $conffiletoshow); } - else - { + else { print 'Ok '.$langs->trans("ConfFileCouldBeCreated", $conffiletoshow); } print "
"; @@ -345,8 +328,7 @@ else print 'A '.$conffiletoshow.' file exists with a dolibarr_main_document_root to '.$dolibarr_main_document_root.' that seems wrong. Try to fix or remove the '.$conffiletoshow.' file.
'."\n"; dol_syslog("A '".$conffiletoshow."' file exists with a dolibarr_main_document_root to ".$dolibarr_main_document_root." that seems wrong. Try to fix or remove the '".$conffiletoshow."' file.", LOG_WARNING); } - else - { + else { require_once $dolibarr_main_document_root.'/core/lib/admin.lib.php'; // If password is encoded, we decode it @@ -440,8 +422,7 @@ else { $choice .= ''.$langs->trans("Start").''; } - else - { + else { $choice .= ($foundrecommandedchoice ? '' : '').$langs->trans("InstallNotAllowed").($foundrecommandedchoice ? '' : ''); } $choice .= ''."\n"; @@ -560,13 +541,11 @@ else { $choice .= ''.$langs->trans("NotYetAvailable").''; } - else - { + else { $choice .= ''.$langs->trans("Start").''; } } - else - { + else { $choice .= $langs->trans("NotAvailable"); } $choice .= ''; diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index 3a3adc2322c..aab1615ed64 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -124,13 +124,11 @@ if (!defined('DONOTLOADCONF') && file_exists($conffile) && filesize($conffile) > } } } - else - { + else { $includeconferror = 'ErrorBadValueForDolibarrMainDocumentRoot'; } } - else - { + else { $includeconferror = 'ErrorBadFormatForConfFile'; } } @@ -210,8 +208,7 @@ if (@file_exists($lockfile)) print $langs->trans("ClickHereToGoToApp"); print ''; } - else - { + else { print 'If you always reach this page, you must remove install.lock file manually.
'; } exit; @@ -365,8 +362,7 @@ function pHeader($subtitle, $next, $action = 'set', $param = '', $forcejqueryurl $jQueryCustomPath = $forcejqueryurl; $jQueryUiCustomPath = $forcejqueryurl; } - else - { + else { $jQueryCustomPath = (defined('JS_JQUERY') && constant('JS_JQUERY')) ? JS_JQUERY : false; $jQueryUiCustomPath = (defined('JS_JQUERY_UI') && constant('JS_JQUERY_UI')) ? JS_JQUERY_UI : false; } diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php index 034741c7c7e..f6f5eb83003 100644 --- a/htdocs/install/repair.php +++ b/htdocs/install/repair.php @@ -124,8 +124,7 @@ if ($db->connected) dolibarr_install_syslog("repair: ".$langs->transnoentities("ServerConnection").": ".$dolibarr_main_db_host.$langs->transnoentities("OK")); $ok = 1; } -else -{ +else { print "".$langs->trans("ErrorFailedToConnectToDatabase", $dolibarr_main_db_name)."".$langs->transnoentities("Error").""; dolibarr_install_syslog("repair: ".$langs->transnoentities("ErrorFailedToConnectToDatabase", $dolibarr_main_db_name)); $ok = 0; @@ -140,8 +139,7 @@ if ($ok) dolibarr_install_syslog("repair: database connection successful: ".$dolibarr_main_db_name); $ok = 1; } - else - { + else { print "".$langs->trans("ErrorFailedToConnectToDatabase", $dolibarr_main_db_name)."".$langs->trans("Error").""; dolibarr_install_syslog("repair: ".$langs->transnoentities("ErrorFailedToConnectToDatabase", $dolibarr_main_db_name)); $ok = 0; @@ -257,8 +255,7 @@ if ($ok && GETPOST('standard', 'alpha')) $fieldname = $obj->Field; $fieldtype = $obj->Type; } - else - { + else { $fieldname = isset($obj->Key) ? $obj->Key : $obj->attname; $fieldtype = isset($obj->Type) ? $obj->Type : 'varchar'; } @@ -318,13 +315,11 @@ if ($ok && GETPOST('standard', 'alpha')) { print "KO ".$db->lasterror."
\n"; } - else - { + else { print "OK
\n"; } } - else - { + else { print ' - Mode test, no column added.'; } } @@ -332,8 +327,7 @@ if ($ok && GETPOST('standard', 'alpha')) print " \n"; } - else - { + else { dol_print_error($db); } } @@ -399,13 +393,11 @@ if ($ok && GETPOST('standard', 'alpha')) print 'Widget '.$obj->name.' set in entity '.$obj->entity.' with value '.$obj->value.' -> Module '.$name.' not enabled in entity '.$obj->entity.', we delete record'; } - else - { + else { print 'Widget '.$obj->name.' set in entity '.$obj->entity.' with value '.$obj->value.' -> Module '.$name.' not enabled in entity '.$obj->entity.', we should delete record (not done, mode test)'; } } - else - { + else { //print 'Constant '.$obj->name.' set in entity '.$obj->entity.' with value '.$obj->value.' -> Module found in entity '.$obj->entity.', we keep record'; } } @@ -472,13 +464,11 @@ if ($ok && GETPOST('standard', 'alpha')) print 'Constant '.$obj->file.' set in boxes_def for entity '.$obj->entity.' but MAIN_MODULE_'.strtoupper($module).' not defined in entity '.$obj->entity.', we delete record'; } - else - { + else { print 'Constant '.$obj->file.' set in boxes_def for entity '.$obj->entity.' but MAIN_MODULE_'.strtoupper($module).' not defined in entity '.$obj->entity.', we should delete record (not done, mode test)'; } } - else - { + else { //print 'Constant '.$obj->name.' set in entity '.$obj->entity.' with value '.$obj->value.' -> Module found in entity '.$obj->entity.', we keep record'; } } @@ -567,8 +557,7 @@ if ($ok && GETPOST('restore_thirdparties_logos')) $i++; } } - else - { + else { $ok = 0; dol_print_error($db); } @@ -671,8 +660,7 @@ if ($ok && GETPOST('restore_user_pictures', 'alpha')) $i++; } } - else - { + else { $ok = 0; dol_print_error($db); } @@ -730,8 +718,7 @@ if ($ok && GETPOST('rebuild_product_thumbs', 'alpha')) $i++; } } - else - { + else { $ok = 0; dol_print_error($db); } @@ -816,16 +803,13 @@ if ($ok && GETPOST('clean_menus', 'alpha')) $error++; dol_print_error($db); } - else - print ' - Cleaned'; + else print ' - Cleaned'; } - else - { + else { print ' - Canceled (test mode)'; } } - else - { + else { print ' - Module condition '.$modulecond.' is ok, we do nothing.'; } } @@ -840,13 +824,11 @@ if ($ok && GETPOST('clean_menus', 'alpha')) $i++; } } - else - { + else { print 'No menu entries of disabled menus found'; } } - else - { + else { dol_print_error($db); } } @@ -1049,8 +1031,7 @@ if ($ok && GETPOST('clean_product_stock_batch', 'alpha')) dol_print_error($db); } } - else - { + else { $error++; dol_print_error($db); } @@ -1066,13 +1047,11 @@ if ($ok && GETPOST('clean_product_stock_batch', 'alpha')) $i++; } } - else - { + else { print 'Nothing to do'; } } - else - { + else { dol_print_error($db); } } @@ -1156,13 +1135,11 @@ if ($ok && GETPOST('set_empty_time_spent_amount', 'alpha')) $i++; } } - else - { + else { print 'No time spent with empty line on users with a hourly rate defined'; } } - else - { + else { dol_print_error($db); } } @@ -1257,16 +1234,13 @@ if ($ok && GETPOST('force_disable_of_modules_not_found', 'alpha')) $error++; dol_print_error($db); } - else - print ' - Cleaned'; + else print ' - Cleaned'; } - else - { + else { print ' - Canceled (test mode)'; } } - else - { + else { print ' - File of '.$key.' ('.$reloffile.') found, we do nothing.'; } } @@ -1282,13 +1256,11 @@ if ($ok && GETPOST('force_disable_of_modules_not_found', 'alpha')) $i++; } } - else - { + else { print 'No active module with missing files found by searching on MAIN_MODULE_(.*)_'.strtoupper($key).''; } } - else - { + else { dol_print_error($db); } } @@ -1334,13 +1306,11 @@ if ($ok && GETPOST('clean_perm_table', 'alpha')) $i++; } } - else - { + else { print 'No lines of a disabled external module (with id > 100000) found into table rights_def'; } } - else - { + else { dol_print_error($db); } } @@ -1392,8 +1362,7 @@ if ($ok && GETPOST('force_utf8_on_tables', 'alpha')) $resql = $db->query($sql); } } - else - { + else { print 'Not available with database type '.$db->type.''; } } @@ -1496,8 +1465,7 @@ if ($ok && GETPOST('repair_link_dispatch_lines_supplier_order_lines')) { { $resql_attach = $db->query($sql_attach); } - else - { + else { $resql_attach = true; // Force success in test mode } @@ -1552,8 +1520,7 @@ if ($oneoptionset) print $langs->trans("GoToDolibarr"); print ''; } -else -{ +else { print '
'; print $langs->trans("SetAtLeastOneOptionAsUrlParameter"); print '
'; diff --git a/htdocs/install/step1.php b/htdocs/install/step1.php index a5e6b9d3377..6bf2e1d3dff 100644 --- a/htdocs/install/step1.php +++ b/htdocs/install/step1.php @@ -231,8 +231,7 @@ if (!$error) { { $databasefortest = 'postgres'; } - else - { + else { $databasefortest = 'master'; } } @@ -275,8 +274,7 @@ if (!$error) { } } } - else - { + else { print "
\nFailed to include_once(\"".$main_dir."/core/db/".$db_type.".class.php\")
\n"; print '
'.$langs->trans("ErrorWrongValueForParameter", $langs->transnoentities("WebPagesDirectory")).'
'; //print ''; @@ -286,8 +284,7 @@ if (!$error) { } } -else -{ +else { if (isset($db)) print $db->lasterror(); if (isset($db) && !$db->connected) print '
'.$langs->trans("BecauseConnectionFailedParametersMayBeWrong").'

'; print $langs->trans("ErrorGoBackAndCorrectParameters"); @@ -318,7 +315,7 @@ if (!$error && $db->connected) $defaultCharacterSet = $db->forcecharset; $defaultDBSortingCollation = $db->forcecollate; } - else // If already created, we take current value + else // If already created, we take current value { $defaultCharacterSet = $db->getDefaultCharacterSetDatabase(); $defaultDBSortingCollation = $db->getDefaultCollationDatabase(); @@ -401,8 +398,7 @@ if (!$error && $db->connected && $action == "set") print '
'.$langs->trans("CorrectProblemAndReloadPage", $_SERVER['PHP_SELF'].'?testget=ok').''; $error++; } - else - { + else { // Create .htaccess file in document directory $pathhtaccess = $main_data_dir.'/.htaccess'; if (!file_exists($pathhtaccess)) @@ -438,8 +434,7 @@ if (!$error && $db->connected && $action == "set") { dolibarr_install_syslog("step1: directory '".$dir[$i]."' exists"); } - else - { + else { if (dol_mkdir($dir[$i]) < 0) { print ""; @@ -449,8 +444,7 @@ if (!$error && $db->connected && $action == "set") print ""; $error++; } - else - { + else { dolibarr_install_syslog("step1: directory '".$dir[$i]."' created"); } } @@ -472,8 +466,7 @@ if (!$error && $db->connected && $action == "set") print ""; print '
'.$langs->trans("CorrectProblemAndReloadPage", $_SERVER['PHP_SELF'].'?testget=ok').''; } - else - { + else { //ODT templates $srcroot = $main_dir.'/install/doctemplates'; $destroot = $main_data_dir.'/doctemplates'; @@ -592,8 +585,7 @@ if (!$error && $db->connected && $action == "set") print ''; print 'Ok'; } - else - { + else { if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS' || $db->errno() == 'DB_ERROR_KEY_NAME_ALREADY_EXISTS' || $db->errno() == 'DB_ERROR_USER_ALREADY_EXISTS') @@ -605,8 +597,7 @@ if (!$error && $db->connected && $action == "set") print ''; print ''.$langs->trans("LoginAlreadyExists").''; } - else - { + else { dolibarr_install_syslog("step1: failed to create user", LOG_ERR); print ''; print $langs->trans("UserCreation").' : '; @@ -618,8 +609,7 @@ if (!$error && $db->connected && $action == "set") $db->close(); } - else - { + else { print ''; print $langs->trans("UserCreation").' : '; print $dolibarr_main_db_user; @@ -668,8 +658,7 @@ if (!$error && $db->connected && $action == "set") //if ($check1 != $dolibarr_main_db_character_set) dolibarr_install_syslog('step1: value for character_set is not the one asked for database creation', LOG_WARNING); //if ($check2 != $dolibarr_main_db_collation) dolibarr_install_syslog('step1: value for collation is not the one asked for database creation', LOG_WARNING); } - else - { + else { // warning message print '
'; print $langs->trans("ErrorFailedToCreateDatabase", $dolibarr_main_db_name).'
'; @@ -735,8 +724,7 @@ if (!$error && $db->connected && $action == "set") $error = 0; } - else - { + else { dolibarr_install_syslog("step1: connection to database ".$conf->db->name." by user ".$conf->db->user." failed", LOG_ERR); print ""; print $langs->trans("DatabaseConnection")." (".$langs->trans("User")." ".$conf->db->user.") : "; @@ -755,8 +743,7 @@ if (!$error && $db->connected && $action == "set") $error++; } } - else - { + else { dolibarr_install_syslog("step1: connection to server by user ".$conf->db->user." failed", LOG_ERR); print ""; print $langs->trans("ServerConnection")." (".$langs->trans("User")." ".$conf->db->user.") : "; @@ -1031,8 +1018,7 @@ function write_conf_file($conffile) print 'Ok'; print ""; } - else - { + else { $error++; } } diff --git a/htdocs/install/step2.php b/htdocs/install/step2.php index 5b794b781bd..f33319ba57c 100644 --- a/htdocs/install/step2.php +++ b/htdocs/install/step2.php @@ -100,8 +100,7 @@ if ($action == "set") print $langs->trans("ServerConnection")." : ".$conf->db->host.'Ok'; $ok = 1; } - else - { + else { print "Failed to connect to server : ".$conf->db->host.'Error'; } @@ -111,8 +110,7 @@ if ($action == "set") { dolibarr_install_syslog("step2: successful connection to database: ".$conf->db->name); } - else - { + else { dolibarr_install_syslog("step2: failed connection to database :".$conf->db->name, LOG_ERR); print "Failed to select database ".$conf->db->name.'Error'; $ok = 0; @@ -202,8 +200,7 @@ if ($action == "set") { $buffer = preg_replace('/type=innodb/i', 'ENGINE=innodb', $buffer); } - else - { + else { // Keyword ENGINE is MySQL-specific, so scrub it for // other database types (mssql, pgsql) $buffer = preg_replace('/type=innodb/i', '', $buffer); @@ -226,15 +223,13 @@ if ($action == "set") // print "OK requete ==== $buffer"; $db->free($resql); } - else - { + else { if ($db->errno() == 'DB_ERROR_TABLE_ALREADY_EXISTS' || $db->errno() == 'DB_ERROR_TABLE_OR_KEY_ALREADY_EXISTS') { //print "Deja existante"; } - else - { + else { print "".$langs->trans("CreateTableAndPrimaryKey", $name); print "
\n".$langs->trans("Request").' '.$requestnb.' : '.$buffer.'
Executed query : '.$db->lastquery; print "\n"; @@ -243,8 +238,7 @@ if ($action == "set") } } } - else - { + else { print "".$langs->trans("CreateTableAndPrimaryKey", $name); print ""; print ''.$langs->trans("Error").' Failed to open file '.$dir.$file.''; @@ -262,8 +256,7 @@ if ($action == "set") $ok = 1; } } - else - { + else { print ''.$langs->trans("ErrorFailedToFindSomeFiles", $dir).'Error'; dolibarr_install_syslog("step2: failed to find files to create database in directory ".$dir, LOG_ERR); } @@ -369,8 +362,7 @@ if ($action == "set") //print "OK requete ==== $buffer"; $db->free($resql); } - else - { + else { if ($db->errno() == 'DB_ERROR_KEY_NAME_ALREADY_EXISTS' || $db->errno() == 'DB_ERROR_CANNOT_CREATE' || $db->errno() == 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS' || @@ -380,8 +372,7 @@ if ($action == "set") //print "Deja existante"; $key_exists = 1; } - else - { + else { print "".$langs->trans("CreateOtherKeysForTable", $name); print "
\n".$langs->trans("Request").' '.$requestnb.' : '.$db->lastqueryerror(); print "\n"; @@ -392,8 +383,7 @@ if ($action == "set") } } } - else - { + else { print "".$langs->trans("CreateOtherKeysForTable", $name); print ""; print ''.$langs->trans("Error")." Failed to open file ".$dir.$file.""; @@ -465,15 +455,13 @@ if ($action == "set") $ok = 1; $db->free($resql); } - else - { + else { if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS' || $db->errno() == 'DB_ERROR_KEY_NAME_ALREADY_EXISTS') { //print "Insert line : ".$buffer."
\n"; } - else - { + else { $ok = 0; print "".$langs->trans("FunctionsCreation"); @@ -491,8 +479,7 @@ if ($action == "set") { print 'Ok'; } - else - { + else { print 'Error'; $ok = 1; } @@ -589,14 +576,12 @@ if ($action == "set") { //$db->free($resql); // Not required as request we launch here does not return memory needs. } - else - { + else { if ($db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { //print "Insertion ligne : $buffer"; } - else - { + else { $ok = 0; $okallfile = 0; print ''.$langs->trans("ErrorSQL")." : ".$db->lasterrno()." - ".$db->lastqueryerror()." - ".$db->lasterror()."
"; @@ -614,16 +599,14 @@ if ($action == "set") { print 'Ok'; } - else - { + else { print 'Error'; $ok = 1; // Data loading are not blocking errors } } print ''; } -else -{ +else { print 'Parameter action=set not defined'; } diff --git a/htdocs/install/step5.php b/htdocs/install/step5.php index b74594ce8da..a30a6040fb9 100644 --- a/htdocs/install/step5.php +++ b/htdocs/install/step5.php @@ -187,8 +187,7 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) dolibarr_set_const($db, "MAIN_SECURITY_SALT", dol_print_date(dol_now(), 'dayhourlog'), 'chaine', 0, '', 0); // All entities if (function_exists('password_hash')) dolibarr_set_const($db, "MAIN_SECURITY_HASH_ALGO", 'password_hash', 'chaine', 0, '', 0); // All entities - else - dolibarr_set_const($db, "MAIN_SECURITY_HASH_ALGO", 'sha1md5', 'chaine', 0, '', 0); // All entities + else dolibarr_set_const($db, "MAIN_SECURITY_HASH_ALGO", 'sha1md5', 'chaine', 0, '', 0); // All entities } dolibarr_install_syslog('step5: DATABASE_PWD_ENCRYPTED = '.$conf->global->DATABASE_PWD_ENCRYPTED.' MAIN_SECURITY_HASH_ALGO = '.$conf->global->MAIN_SECURITY_HASH_ALGO, LOG_INFO); @@ -215,16 +214,14 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) print $langs->trans("AdminLoginCreatedSuccessfuly", $login)."
"; $success = 1; } - else - { + else { if ($newuser->error == 'ErrorLoginAlreadyExists') { dolibarr_install_syslog('step5: AdminLoginAlreadyExists', LOG_WARNING); print '
'.$langs->trans("AdminLoginAlreadyExists", $login)."

"; $success = 1; } - else - { + else { dolibarr_install_syslog('step5: FailedToCreateAdminLogin '.$newuser->error, LOG_ERR); print '
'.$langs->trans("FailedToCreateAdminLogin").' '.$newuser->error.'


'; } @@ -241,8 +238,7 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) $conf->global->MAIN_VERSION_FIRST_INSTALL = $targetversion; $db->commit(); } - else - { + else { //if (! $resql) dol_print_error($db,'Error in setup program'); // We ignore errors. Key may already exists $db->commit(); } @@ -293,8 +289,7 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) $db->commit(); } } - else - { + else { print $langs->trans("ErrorFailedToConnect")."
"; } } @@ -311,8 +306,7 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) // Define if we need to update the MAIN_VERSION_LAST_UPGRADE value in database $tagdatabase = false; if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE)) $tagdatabase = true; // We don't know what it was before, so now we consider we are version choosed. - else - { + else { $mainversionlastupgradearray = preg_split('/[.-]/', $conf->global->MAIN_VERSION_LAST_UPGRADE); $targetversionarray = preg_split('/[.-]/', $targetversion); if (versioncompare($targetversionarray, $mainversionlastupgradearray) > 0) $tagdatabase = true; @@ -327,18 +321,15 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) if (!$resql) dol_print_error($db, 'Error in setup program'); $conf->global->MAIN_VERSION_LAST_UPGRADE = $targetversion; } - else - { + else { dolibarr_install_syslog('step5: we run an upgrade to version '.$targetversion.' but database was already upgraded to '.$conf->global->MAIN_VERSION_LAST_UPGRADE.'. We keep MAIN_VERSION_LAST_UPGRADE as it is.'); } } - else - { + else { print $langs->trans("ErrorFailedToConnect")."
"; } } - else - { + else { dol_print_error('', 'step5.php: unknown choice of action'); } @@ -390,8 +381,7 @@ if ($action == "set" && $success) print ' '.$langs->trans("GoToSetupArea"); print '
'; } - else - { + else { // If here MAIN_VERSION_LAST_UPGRADE is not empty print $langs->trans("VersionLastUpgrade").': '.$conf->global->MAIN_VERSION_LAST_UPGRADE.'
'; print $langs->trans("VersionProgram").': '.DOL_VERSION.'
'; @@ -438,8 +428,7 @@ elseif (empty($action) || preg_match('/upgrade/i', $action)) print ' '.$langs->trans("GoToDolibarr").'...'; print '
'; } - else - { + else { // If here MAIN_VERSION_LAST_UPGRADE is not empty print $langs->trans("VersionLastUpgrade").': '.$conf->global->MAIN_VERSION_LAST_UPGRADE.'
'; print $langs->trans("VersionProgram").': '.DOL_VERSION.''; @@ -451,8 +440,7 @@ elseif (empty($action) || preg_match('/upgrade/i', $action)) print ''; } } -else -{ +else { dol_print_error('', 'step5.php: unknown choice of action'); } diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index b71707bef4b..91242b7429a 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -151,8 +151,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ServerConnection").": $dolibarr_main_db_host ".$langs->transnoentities("OK")); $ok = 1; } - else - { + else { print "".$langs->trans("ErrorFailedToConnectToDatabase", $dolibarr_main_db_name)."".$langs->transnoentities("Error")."\n"; dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ErrorFailedToConnectToDatabase", $dolibarr_main_db_name)); $ok = 0; @@ -167,8 +166,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ dolibarr_install_syslog("upgrade: Database connection successful: ".$dolibarr_main_db_name); $ok = 1; } - else - { + else { print "".$langs->trans("ErrorFailedToConnectToDatabase", $dolibarr_main_db_name)."".$langs->trans("Error")."\n"; dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ErrorFailedToConnectToDatabase", $dolibarr_main_db_name)); $ok = 0; @@ -293,8 +291,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ } $db->free($resql); } - else - { + else { if ($db->lasterrno() != 'DB_ERROR_NOSUCHTABLE') { print ''.$sql.' : '.$db->lasterror()."
\n"; @@ -335,8 +332,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ } sort($filesindir); } - else - { + else { print '
'.$langs->trans("ErrorCanNotReadDir", $dir).'
'; } @@ -357,8 +353,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ { print '
'.$langs->trans("ErrorNoMigrationFilesFoundForParameters").'
'; } - else - { + else { $listoffileprocessed = array(); // Protection to avoid to process twice the same file // Loop on each migrate files diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 765a8796a76..b8e9ad30076 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -68,8 +68,7 @@ $err = error_reporting(); error_reporting(0); if (!empty($conf->global->MAIN_OVERRIDE_TIME_LIMIT)) @set_time_limit((int) $conf->global->MAIN_OVERRIDE_TIME_LIMIT); -else - @set_time_limit(600); +else @set_time_limit(600); error_reporting($err); $setuplang = GETPOST("selectlang", 'aZ09', 3) ?GETPOST("selectlang", 'aZ09', 3) : 'auto'; @@ -159,8 +158,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ { dolibarr_install_syslog('upgrade2: database connection successful :'.$dolibarr_main_db_name); } - else - { + else { $error++; } } @@ -536,16 +534,14 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ print ""; print ''; } - else - { + else { print ''; print ''.$langs->trans('UpgradeExternalModule').': OK'; print ""; print ''; } } - else - { + else { //if (! empty($conf->modules)) if (!empty($conf->modules_parts['hooks'])) // If there is at least one module with one hook, we show message to say nothing was done { @@ -585,8 +581,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ print '

'.$langs->trans("MigrationFinished").'
'; } -else -{ +else { print '
'.$langs->trans('ErrorWrongParameters').'
'; $error++; } @@ -646,8 +641,7 @@ function migrate_paiements($db, $langs, $conf) $i++; } } - else - { + else { dol_print_error($db); } @@ -678,19 +672,16 @@ function migrate_paiements($db, $langs, $conf) $db->commit(); print $langs->trans('MigrationSuccessfullUpdate')."
"; } - else - { + else { $db->rollback(); print $langs->trans('MigrationUpdateFailed').'
'; } } - else - { + else { print $langs->trans('MigrationPaymentsNothingToUpdate')."
\n"; } } - else - { + else { print $langs->trans('MigrationPaymentsNothingToUpdate')."
\n"; } @@ -753,8 +744,7 @@ function migrate_paiements_orphelins_1($db, $langs, $conf) $i++; } } - else - { + else { dol_print_error($db); } @@ -794,8 +784,7 @@ function migrate_paiements_orphelins_1($db, $langs, $conf) print $langs->trans('MigrationProcessPaymentUpdate', 'facid='.$facid.'-paymentid='.$row[$i]['paymentid'].'-amount='.$row[$i]['pamount'])."
\n"; } } - else - { + else { print 'ERROR'; } } @@ -804,20 +793,17 @@ function migrate_paiements_orphelins_1($db, $langs, $conf) { print $langs->trans('MigrationSuccessfullUpdate')."
"; } - else - { + else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } $db->commit(); } - else - { + else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } } - else - { + else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } @@ -879,8 +865,7 @@ function migrate_paiements_orphelins_2($db, $langs, $conf) $i++; } } - else - { + else { dol_print_error($db); } @@ -921,8 +906,7 @@ function migrate_paiements_orphelins_2($db, $langs, $conf) print $langs->trans('MigrationProcessPaymentUpdate', 'facid='.$facid.'-paymentid='.$row[$i]['paymentid'].'-amount='.$row[$i]['pamount'])."
\n"; } } - else - { + else { print 'ERROR'; $nberr++; } @@ -932,15 +916,13 @@ function migrate_paiements_orphelins_2($db, $langs, $conf) { print $langs->trans('MigrationSuccessfullUpdate')."
"; } - else - { + else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } $db->commit(); } - else - { + else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } @@ -954,14 +936,12 @@ function migrate_paiements_orphelins_2($db, $langs, $conf) { $db->commit(); } - else - { + else { print 'ERROR'; $db->rollback(); } } - else - { + else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } @@ -1032,8 +1012,7 @@ function migrate_contracts_det($db, $langs, $conf) { print $langs->trans('MigrationContractsLineCreation', $obj->cref)."
\n"; } - else - { + else { dol_print_error($db); $nberr++; } @@ -1047,19 +1026,16 @@ function migrate_contracts_det($db, $langs, $conf) $db->commit(); print $langs->trans('MigrationSuccessfullUpdate')."
"; } - else - { + else { $db->rollback(); print $langs->trans('MigrationUpdateFailed').'
'; } } - else - { + else { print $langs->trans('MigrationContractsNothingToUpdate')."
\n"; } } - else - { + else { print $langs->trans('MigrationContractsFieldDontExist')."
\n"; // dol_print_error($db); } @@ -1133,8 +1109,7 @@ function migrate_links_transfert($db, $langs, $conf) $db->commit(); print $langs->trans('MigrationSuccessfullUpdate')."
"; } - else - { + else { $db->rollback(); print $langs->trans('MigrationUpdateFailed').'
'; } @@ -1143,8 +1118,7 @@ function migrate_links_transfert($db, $langs, $conf) print $langs->trans('MigrationBankTransfertsNothingToUpdate')."
\n"; } } - else - { + else { dol_print_error($db); } @@ -1172,8 +1146,7 @@ function migrate_contracts_date1($db, $langs, $conf) if (!$resql) dol_print_error($db); if ($db->affected_rows($resql) > 0) print $langs->trans('MigrationContractsEmptyDatesUpdateSuccess')."
\n"; - else - print $langs->trans('MigrationContractsEmptyDatesNothingToUpdate')."
\n"; + else print $langs->trans('MigrationContractsEmptyDatesNothingToUpdate')."
\n"; $sql = "update ".MAIN_DB_PREFIX."contrat set datec=tms where datec is null"; dolibarr_install_syslog("upgrade2::migrate_contracts_date1"); @@ -1181,8 +1154,7 @@ function migrate_contracts_date1($db, $langs, $conf) if (!$resql) dol_print_error($db); if ($db->affected_rows($resql) > 0) print $langs->trans('MigrationContractsEmptyCreationDatesUpdateSuccess')."
\n"; - else - print $langs->trans('MigrationContractsEmptyCreationDatesNothingToUpdate')."
\n"; + else print $langs->trans('MigrationContractsEmptyCreationDatesNothingToUpdate')."
\n"; print ''; } @@ -1244,12 +1216,10 @@ function migrate_contracts_date2($db, $langs, $conf) if ($nbcontratsmodifie) print $langs->trans('MigrationContractsInvalidDatesNumber', $nbcontratsmodifie)."
\n"; - else - print $langs->trans('MigrationContractsInvalidDatesNothingToUpdate')."
\n"; + else print $langs->trans('MigrationContractsInvalidDatesNothingToUpdate')."
\n"; } } - else - { + else { dol_print_error($db); } @@ -1277,8 +1247,7 @@ function migrate_contracts_date3($db, $langs, $conf) if (!$resql) dol_print_error($db); if ($db->affected_rows($resql) > 0) print $langs->trans('MigrationContractsIncoherentCreationDateUpdateSuccess')."
\n"; - else - print $langs->trans('MigrationContractsIncoherentCreationDateNothingToUpdate')."
\n"; + else print $langs->trans('MigrationContractsIncoherentCreationDateNothingToUpdate')."
\n"; print ''; } @@ -1333,8 +1302,7 @@ function migrate_contracts_open($db, $langs, $conf) if ($nbcontratsmodifie) print $langs->trans('MigrationReopenedContractsNumber', $nbcontratsmodifie)."
\n"; - else - print $langs->trans('MigrationReopeningContractsNothingToUpdate')."
\n"; + else print $langs->trans('MigrationReopeningContractsNothingToUpdate')."
\n"; } } else print $langs->trans('MigrationReopeningContractsNothingToUpdate')."
\n"; @@ -1416,23 +1384,20 @@ function migrate_paiementfourn_facturefourn($db, $langs, $conf) $nb++; print ''.$langs->trans("OK").''; } - else - { + else { print 'Error on insert'; $error++; } print ''; } } - else - { + else { $error++; } $i++; } } - else - { + else { $error++; } @@ -1447,14 +1412,12 @@ function migrate_paiementfourn_facturefourn($db, $langs, $conf) $sql = "ALTER TABLE ".MAIN_DB_PREFIX."paiementfourn DROP COLUMN fk_facture_fourn"; $db->query($sql); } - else - { + else { print ''.$langs->trans("Error").''; $db->rollback(); } } - else - { + else { print ''.$langs->trans("AlreadyDone").''; } } @@ -1540,14 +1503,12 @@ function migrate_price_facture($db, $langs, $conf) { //print $facture->id; } - else - { + else { print "Error id=".$facture->id; $err++; } } - else - { + else { print "Error #3"; $err++; } @@ -1557,16 +1518,14 @@ function migrate_price_facture($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans("AlreadyDone"); } $db->free($resql); $db->commit(); } - else - { + else { print "Error #1 ".$db->error(); $err++; @@ -1665,8 +1624,7 @@ function migrate_price_propal($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans("AlreadyDone"); } @@ -1674,8 +1632,7 @@ function migrate_price_propal($db, $langs, $conf) $db->commit(); } - else - { + else { print "Error #1 ".$db->error(); $db->rollback(); @@ -1754,8 +1711,7 @@ function migrate_price_contrat($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans("AlreadyDone"); } @@ -1763,8 +1719,7 @@ function migrate_price_contrat($db, $langs, $conf) $db->commit(); } - else - { + else { print "Error #1 ".$db->error(); $db->rollback(); @@ -1861,8 +1816,7 @@ function migrate_price_commande($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans("AlreadyDone"); } @@ -1880,8 +1834,7 @@ function migrate_price_commande($db, $langs, $conf) $db->commit(); } - else - { + else { print "Error #1 ".$db->error(); $db->rollback(); @@ -1978,8 +1931,7 @@ function migrate_price_commande_fournisseur($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans("AlreadyDone"); } @@ -1997,8 +1949,7 @@ function migrate_price_commande_fournisseur($db, $langs, $conf) $db->commit(); } - else - { + else { print "Error #1 ".$db->error(); $db->rollback(); @@ -2126,19 +2077,16 @@ function migrate_commande_expedition($db, $langs, $conf) print $langs->trans('FieldRenamed')."
\n"; $db->query($sql); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } print ''; @@ -2202,8 +2150,7 @@ function migrate_commande_livraison($db, $langs, $conf) dol_print_error($db); } } - else - { + else { $error++; dol_print_error($db); } @@ -2219,19 +2166,16 @@ function migrate_commande_livraison($db, $langs, $conf) print $langs->trans('FieldRenamed')."
\n"; $db->query($sql); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } print ''; @@ -2310,14 +2254,12 @@ function migrate_detail_livraison($db, $langs, $conf) dol_print_error($db); } } - else - { + else { $error++; dol_print_error($db); } } - else - { + else { $error++; dol_print_error($db); } @@ -2333,19 +2275,16 @@ function migrate_detail_livraison($db, $langs, $conf) print $langs->trans('FieldRenamed')."
\n"; $db->query($sql); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { $result = $db->DDLDescTable(MAIN_DB_PREFIX."livraisondet", "fk_origin_line"); $obj = $db->fetch_object($result); if (!$obj) @@ -2402,8 +2341,7 @@ function migrate_stocks($db, $langs, $conf) if ($resql2) { } - else - { + else { $error++; dol_print_error($db); } @@ -2416,13 +2354,11 @@ function migrate_stocks($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -2478,8 +2414,7 @@ function migrate_menus($db, $langs, $conf) if ($resql2) { } - else - { + else { $error++; dol_print_error($db); } @@ -2492,19 +2427,16 @@ function migrate_menus($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -2567,8 +2499,7 @@ function migrate_commande_deliveryaddress($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -2576,19 +2507,16 @@ function migrate_commande_deliveryaddress($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -2670,13 +2598,11 @@ function migrate_restore_missing_links($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -2729,8 +2655,7 @@ function migrate_restore_missing_links($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -2738,13 +2663,11 @@ function migrate_restore_missing_links($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -2826,24 +2749,20 @@ function migrate_project_user_resp($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } print ''; @@ -2918,24 +2837,20 @@ function migrate_project_task_actors($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } print ''; @@ -3006,8 +2921,7 @@ function migrate_relationship_tables($db, $langs, $conf, $table, $fk_source, $so $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3018,24 +2932,20 @@ function migrate_relationship_tables($db, $langs, $conf, $table, $fk_source, $so { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3104,8 +3014,7 @@ function migrate_project_task_time($db, $langs, $conf) if (!empty($totaltime[$obj->fk_task])) $totaltime[$obj->fk_task] += $newtime; else $totaltime[$obj->fk_task] = $newtime; } - else - { + else { if (!empty($totaltime[$obj->fk_task])) $totaltime[$obj->fk_task] += $obj->task_duration; else $totaltime[$obj->fk_task] = $obj->task_duration; } @@ -3131,23 +3040,19 @@ function migrate_project_task_time($db, $langs, $conf) } } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } } - else - { + else { dol_print_error($db); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } } - else - { + else { dol_print_error($db); } @@ -3155,8 +3060,7 @@ function migrate_project_task_time($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } @@ -3229,8 +3133,7 @@ function migrate_customerorder_shipping($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3238,26 +3141,22 @@ function migrate_customerorder_shipping($db, $langs, $conf) { $db->commit(); } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3331,16 +3230,14 @@ function migrate_shipping_delivery($db, $langs, $conf) } print ". "; } - else - { + else { $error++; dol_print_error($db); } $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3355,20 +3252,17 @@ function migrate_shipping_delivery($db, $langs, $conf) $sqlDrop = "ALTER TABLE ".MAIN_DB_PREFIX."livraison DROP COLUMN fk_expedition"; $db->query($sqlDrop); } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3436,8 +3330,7 @@ function migrate_shipping_delivery2($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3445,14 +3338,12 @@ function migrate_shipping_delivery2($db, $langs, $conf) { $db->commit(); } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -3511,14 +3402,12 @@ function migrate_actioncomm_element($db, $langs, $conf) //$db->query($sqlDrop); //print ". "; } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } } @@ -3603,14 +3492,12 @@ function migrate_mode_reglement($db, $langs, $conf) { $db->commit(); } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -3694,16 +3581,14 @@ function migrate_clean_association($db, $langs, $conf) print ''.$langs->trans("RemoveDuplicates").' '.$langs->trans("Success").' ('.$num.'=>'.count($couples).')'; $db->commit(); } - else - { + else { print ''.$langs->trans("MigrationCategorieAssociation").''; print ''.$langs->trans("RemoveDuplicates").' '.$langs->trans("Failed").''; $db->rollback(); } } } - else - { + else { print ''.$langs->trans("Error").''; print '
'.$db->lasterror().'
'; } @@ -3764,8 +3649,7 @@ function migrate_categorie_association($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3786,19 +3670,16 @@ function migrate_categorie_association($db, $langs, $conf) $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3858,8 +3739,7 @@ function migrate_event_assignement($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3867,13 +3747,11 @@ function migrate_event_assignement($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -3935,8 +3813,7 @@ function migrate_event_assignement_contact($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3944,13 +3821,11 @@ function migrate_event_assignement_contact($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -4022,8 +3897,7 @@ function migrate_reset_blocked_log($db, $langs, $conf) $error++; dol_print_error($db); } - else - { + else { // Add set line $object = new stdClass(); $object->id = 1; @@ -4041,21 +3915,18 @@ function migrate_reset_blocked_log($db, $langs, $conf) } } } - else - { + else { print ' - '.$langs->trans('AlreadyInV7').'
'; } } - else - { + else { dol_print_error($db); } $i++; } } - else - { + else { print $langs->trans('NothingToDo')."
\n"; } @@ -4063,13 +3934,11 @@ function migrate_reset_blocked_log($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -4132,8 +4001,7 @@ function migrate_remise_entity($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -4141,13 +4009,11 @@ function migrate_remise_entity($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -4207,8 +4073,7 @@ function migrate_remise_except_entity($db, $langs, $conf) $sqlSelect2 .= " WHERE fd.rowid = ".$obj->fk_facture_line; $sqlSelect2 .= " AND fd.fk_facture = f.rowid"; } - else - { + else { $sqlSelect2 = "SELECT s.entity"; $sqlSelect2 .= " FROM ".MAIN_DB_PREFIX."societe as s"; $sqlSelect2 .= " WHERE s.rowid = ".$obj->fk_soc; @@ -4233,8 +4098,7 @@ function migrate_remise_except_entity($db, $langs, $conf) } } } - else - { + else { $error++; dol_print_error($db); } @@ -4243,8 +4107,7 @@ function migrate_remise_except_entity($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -4252,13 +4115,11 @@ function migrate_remise_except_entity($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -4319,8 +4180,7 @@ function migrate_user_rights_entity($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -4328,13 +4188,11 @@ function migrate_user_rights_entity($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -4395,8 +4253,7 @@ function migrate_usergroup_rights_entity($db, $langs, $conf) $i++; } } - else - { + else { print $langs->trans('AlreadyDone')."
\n"; } @@ -4404,13 +4261,11 @@ function migrate_usergroup_rights_entity($db, $langs, $conf) { $db->commit(); } - else - { + else { $db->rollback(); } } - else - { + else { dol_print_error($db); $db->rollback(); } @@ -4774,8 +4629,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->init($reloadmode); } } - else - { + else { $reg = array(); $tmp = preg_match('/MAIN_MODULE_([a-zA-Z0-9]+)/', $moduletoreload, $reg); if (!empty($reg[1])) @@ -4784,7 +4638,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo { $moduletoreloadshort = ucfirst(strtolower($reg[1])); } - else // If key is a mix of up and low case + else // If key is a mix of up and low case { $moduletoreloadshort = $reg[1]; } @@ -4796,8 +4650,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - else - { + else { dolibarr_install_syslog('Failed to include '.DOL_DOCUMENT_ROOT.'/core/modules/mod'.$moduletoreloadshort.'.class.php'); $res = @dol_include_once(strtolower($moduletoreloadshort).'/core/modules/mod'.$moduletoreloadshort.'.class.php'); @@ -4807,14 +4660,12 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - else - { + else { dolibarr_install_syslog('Failed to include '.strtolower($moduletoreloadshort).'/core/modules/mod'.$moduletoreloadshort.'.class.php'); } } } - else - { + else { dolibarr_install_syslog("Error, can't find module with name ".$moduletoreload, LOG_WARNING); print "Error, can't find module with name ".$moduletoreload; } @@ -4949,7 +4800,7 @@ function migrate_user_photospath() // dol_delete_dir($origin.'/'.$file); } } - else // it is a file + else // it is a file { if (!dol_is_file($destin.'/'.$file)) { From def53338de2c55147ff3d7e7b95a5f5389cb2147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 21 May 2020 09:07:10 +0200 Subject: [PATCH 644/780] add new rule --- build/generate_filelist_xml.php | 4 +- dev/initdemo/sftpget_and_loaddump.php | 8 +- dev/initdemo/updatedemo.php | 4 +- htdocs/core/class/cunits.class.php | 8 +- htdocs/document.php | 12 +- htdocs/main.inc.php | 36 ++-- htdocs/website/class/website.class.php | 12 +- htdocs/website/class/websitepage.class.php | 5 +- htdocs/website/index.php | 169 ++++++------------ htdocs/website/samples/wrapper.php | 18 +- .../accountancy/export-thirdpartyaccount.php | 6 +- scripts/bank/export-bank-receipts.php | 3 +- .../email_expire_services_to_customers.php | 15 +- ...ail_expire_services_to_representatives.php | 9 +- scripts/cron/cron_run_jobs.php | 9 +- scripts/emailings/mailing-send.php | 15 +- .../email_unpaid_invoices_to_customers.php | 9 +- ...ail_unpaid_invoices_to_representatives.php | 3 +- .../members/sync_members_ldap2dolibarr.php | 6 +- .../sync_members_types_ldap2dolibarr.php | 3 +- scripts/user/sync_groups_ldap2dolibarr.php | 3 +- scripts/user/sync_users_ldap2dolibarr.php | 6 +- 22 files changed, 125 insertions(+), 238 deletions(-) diff --git a/build/generate_filelist_xml.php b/build/generate_filelist_xml.php index 976f2cb6ba3..581353b758b 100755 --- a/build/generate_filelist_xml.php +++ b/build/generate_filelist_xml.php @@ -110,7 +110,7 @@ print "Working on files into : ".DOL_DOCUMENT_ROOT."\n"; print "Include custom in signature : ".$includecustom."\n"; print "Include constants in signature : "; foreach ($includeconstants as $countrycode => $tmp) { - foreach($tmp as $constname => $constvalue) { + foreach ($tmp as $constname => $constvalue) { print $constname.'='.$constvalue." "; } } @@ -130,7 +130,7 @@ fputs($fp, ''."\n"); - foreach($tmp as $constname => $constvalue) { + foreach ($tmp as $constname => $constvalue) { $valueforchecksum=(empty($constvalue)?'0':$constvalue); $checksumconcat[]=$valueforchecksum; fputs($fp, ' '.$valueforchecksum.''."\n"); diff --git a/dev/initdemo/sftpget_and_loaddump.php b/dev/initdemo/sftpget_and_loaddump.php index 5b16d3afe9b..4da5ffaad58 100755 --- a/dev/initdemo/sftpget_and_loaddump.php +++ b/dev/initdemo/sftpget_and_loaddump.php @@ -95,8 +95,7 @@ if ($connection) dol_syslog("Could not authenticate with username ".$login." . and password ".preg_replace('/./', '*', $password), LOG_ERR); exit(-5); } - else - { + else { //$stream = ssh2_exec($connection, '/usr/bin/php -i'); /* print "Generate dump ".$filesys1.'.bz2'."\n"; @@ -125,14 +124,13 @@ if ($connection) $return_var=0; print strftime("%Y%m%d-%H%M%S").' '.$fullcommand."\n"; exec($fullcommand, $output, $return_var); - foreach($output as $line) print $line."\n"; + foreach ($output as $line) print $line."\n"; //ssh2_sftp_unlink($sftp, $fileinstalllock); //print $output; } } -else -{ +else { print 'Failed to connect to ssh2 to '.$server; exit(-6); } diff --git a/dev/initdemo/updatedemo.php b/dev/initdemo/updatedemo.php index 0cc43a18a9d..95d5ad12c83 100755 --- a/dev/initdemo/updatedemo.php +++ b/dev/initdemo/updatedemo.php @@ -87,7 +87,7 @@ while ($year <= $currentyear) if ($delta1) { - foreach($tables as $tablekey => $tableval) + foreach ($tables as $tablekey => $tableval) { print "Correct ".$tablekey." for year ".$year." and move them to current year ".$currentyear." "; $sql="select rowid from ".MAIN_DB_PREFIX.$tablekey." where ".$tableval[0]." between '".$year."-01-01' and '".$year."-12-31' and ".$tableval[0]." < DATE_ADD(NOW(), INTERVAL -1 YEAR)"; @@ -105,7 +105,7 @@ while ($year <= $currentyear) print "."; $sql2="UPDATE ".MAIN_DB_PREFIX.$tablekey." set "; $j=0; - foreach($tableval as $field) + foreach ($tableval as $field) { if ($j) $sql2.=", "; $sql2.= $field." = ".$db->ifsql("DATE_ADD(".$field.", INTERVAL ".$delta1." YEAR) > NOW()", "DATE_ADD(".$field.", INTERVAL ".$delta2." YEAR)", "DATE_ADD(".$field.", INTERVAL ".$delta1." YEAR)"); diff --git a/htdocs/core/class/cunits.class.php b/htdocs/core/class/cunits.class.php index 0b56b4c0831..80ea8e2f0cc 100644 --- a/htdocs/core/class/cunits.class.php +++ b/htdocs/core/class/cunits.class.php @@ -432,11 +432,9 @@ class CUnits // extends CommonObject return round($value, 2); } - - /** * get scale of unit factor - * @param $id int id of unit in dictionary + * @param int $id id of unit in dictionary * @return float|int */ public function scaleOfUnitPow($id) @@ -444,9 +442,9 @@ class CUnits // extends CommonObject $base = 10; // TODO : add base col into unit dictionary table $unit = $this->db->getRow('SELECT scale, unit_type from '.MAIN_DB_PREFIX.'c_units WHERE rowid = '.intval($id)); - if ($unit){ + if ($unit) { // TODO : if base exist in unit dictionary table remove this convertion exception and update convertion infos in database exemple time hour currently scale 3600 will become scale 2 base 60 - if ($unit->unit_type == 'time'){ + if ($unit->unit_type == 'time') { return doubleval($unit->scale); } diff --git a/htdocs/document.php b/htdocs/document.php index c1ed149649e..0d08296e63e 100644 --- a/htdocs/document.php +++ b/htdocs/document.php @@ -134,19 +134,16 @@ if (!empty($hashp)) $original_file = (($tmp[1] ? $tmp[1].'/' : '').$ecmfile->filename); // this is relative to module dir //var_dump($original_file); exit; } - else - { + else { accessforbidden('Bad link. File is from another module part.', 0, 0, 1); } } - else - { + else { $modulepart = $moduleparttocheck; $original_file = (($tmp[1] ? $tmp[1].'/' : '').$ecmfile->filename); // this is relative to module dir } } - else - { + else { $langs->load("errors"); accessforbidden($langs->trans("ErrorFileNotFoundWithSharedLink"), 0, 0, 1); } @@ -185,8 +182,7 @@ if (!empty($hashp)) $accessallowed = 1; // When using hashp, link is public so we force $accessallowed $sqlprotectagainstexternals = ''; } -else -{ +else { // Basic protection (against external users only) if ($user->socid > 0) { diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 733ded3e447..569f4aa6c57 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1340,23 +1340,17 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr else print ''."\n"; if (!defined('DISABLE_JQUERY_TABLEDND')) print ''."\n"; // jQuery jnotify - if (empty($conf->global->MAIN_DISABLE_JQUERY_JNOTIFY) && !defined('DISABLE_JQUERY_JNOTIFY')) - { + if (empty($conf->global->MAIN_DISABLE_JQUERY_JNOTIFY) && !defined('DISABLE_JQUERY_JNOTIFY')) { print ''."\n"; } // Flot - if (empty($conf->global->MAIN_JS_GRAPH) || $conf->global->MAIN_JS_GRAPH == 'jflot') - { - if (empty($conf->global->MAIN_DISABLE_JQUERY_FLOT) && !defined('DISABLE_JQUERY_FLOT')) - { - if (constant('JS_JQUERY_FLOT')) - { + if (empty($conf->global->MAIN_JS_GRAPH) || $conf->global->MAIN_JS_GRAPH == 'jflot') { + if (empty($conf->global->MAIN_DISABLE_JQUERY_FLOT) && !defined('DISABLE_JQUERY_FLOT')) { + if (constant('JS_JQUERY_FLOT')) { print ''."\n"; print ''."\n"; print ''."\n"; - } - else - { + } else { print ''."\n"; print ''."\n"; print ''."\n"; @@ -1375,14 +1369,12 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr } } // Chart - if ($conf->global->MAIN_JS_GRAPH == 'chart') - { + if ($conf->global->MAIN_JS_GRAPH == 'chart') { print ''."\n"; } // jQuery jeditable for Edit In Place features - if (!empty($conf->global->MAIN_USE_JQUERY_JEDITABLE) && !defined('DISABLE_JQUERY_JEDITABLE')) - { + if (!empty($conf->global->MAIN_USE_JQUERY_JEDITABLE) && !defined('DISABLE_JQUERY_JEDITABLE')) { print ''."\n"; print ''."\n"; print ''."\n"; @@ -1401,28 +1393,26 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr print ''."\n"; } // jQuery Timepicker - if (!empty($conf->global->MAIN_USE_JQUERY_TIMEPICKER) || defined('REQUIRE_JQUERY_TIMEPICKER')) - { + if (!empty($conf->global->MAIN_USE_JQUERY_TIMEPICKER) || defined('REQUIRE_JQUERY_TIMEPICKER')) { print ''."\n"; print ''."\n"; } - if (!defined('DISABLE_SELECT2') && (!empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT'))) // jQuery plugin "mutiselect", "multiple-select", "select2", ... - { + if (!defined('DISABLE_SELECT2') && (!empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT'))) { + // jQuery plugin "mutiselect", "multiple-select", "select2", ... $tmpplugin = empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) ?constant('REQUIRE_JQUERY_MULTISELECT') : $conf->global->MAIN_USE_JQUERY_MULTISELECT; print ''."\n"; // We include full because we need the support of containerCssClass } } - if (!$disablejs && !empty($conf->use_javascript_ajax)) - { + if (!$disablejs && !empty($conf->use_javascript_ajax)) { // CKEditor if ((!empty($conf->fckeditor->enabled) && (empty($conf->global->FCKEDITOR_EDITORNAME) || $conf->global->FCKEDITOR_EDITORNAME == 'ckeditor') && !defined('DISABLE_CKEDITOR')) || defined('FORCE_CKEDITOR')) { print ''."\n"; $pathckeditor = DOL_URL_ROOT.'/includes/ckeditor/ckeditor/'; $jsckeditor = 'ckeditor.js'; - if (constant('JS_CKEDITOR')) // To use external ckeditor 4 js lib - { + if (constant('JS_CKEDITOR')) { + // To use external ckeditor 4 js lib $pathckeditor = constant('JS_CKEDITOR'); } print ''."\n"; } - if (is_object($objsoc) && $objsoc->id > 0) - { + if (is_object($objsoc) && $objsoc->id > 0) { $this->tpl['company'] = $objsoc->getNomUrl(1); $this->tpl['company_id'] = $objsoc->id; } else { @@ -126,8 +122,7 @@ abstract class ActionsAdherentCardCommon $this->tpl['select_civility'] = $formcompany->select_civility($this->object->civility_id); // Predefined with third party - if ((isset($objsoc->typent_code) && $objsoc->typent_code == 'TE_PRIVATE')) - { + if ((isset($objsoc->typent_code) && $objsoc->typent_code == 'TE_PRIVATE')) { if (dol_strlen(trim($this->object->address)) == 0) $this->tpl['address'] = $objsoc->address; if (dol_strlen(trim($this->object->zip)) == 0) $this->object->zip = $objsoc->zip; if (dol_strlen(trim($this->object->town)) == 0) $this->object->town = $objsoc->town; @@ -159,18 +154,15 @@ abstract class ActionsAdherentCardCommon $this->tpl['select_morphy'] = $form->selectarray('morphy', $selectarray, $this->object->morphy, 0); } - if ($action == 'view' || $action == 'edit' || $action == 'delete') - { + if ($action == 'view' || $action == 'edit' || $action == 'delete') { // Emailing - if (!empty($conf->mailing->enabled)) - { + if (!empty($conf->mailing->enabled)) { $langs->load("mails"); $this->tpl['nb_emailing'] = $this->object->getNbOfEMailings(); } // Dolibarr user - if ($this->object->user_id) - { + if ($this->object->user_id) { $dolibarr_user = new User($this->db); $result = $dolibarr_user->fetch($this->object->user_id); $this->tpl['dolibarr_user'] = $dolibarr_user->getLoginUrl(1); @@ -178,12 +170,10 @@ abstract class ActionsAdherentCardCommon else $this->tpl['dolibarr_user'] = $langs->trans("NoDolibarrAccess"); } - if ($action == 'view' || $action == 'delete') - { + if ($action == 'view' || $action == 'delete') { $this->tpl['showrefnav'] = $form->showrefnav($this->object, 'id'); - if ($this->object->socid > 0) - { + if ($this->object->socid > 0) { $objsoc = new Societe($this->db); $objsoc->fetch($this->object->socid); @@ -210,8 +200,7 @@ abstract class ActionsAdherentCardCommon $this->tpl['note'] = nl2br($this->object->note); } - if ($action == 'create_user') - { + if ($action == 'create_user') { // Full firstname and lastname separated with a dot : firstname.lastname include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; @@ -259,12 +248,10 @@ abstract class ActionsAdherentCardCommon $this->object->canvas = $_POST["canvas"]; // We set country_id, and country_code label of the chosen country - if ($this->object->country_id) - { + if ($this->object->country_id) { $sql = "SELECT code, label FROM ".MAIN_DB_PREFIX."c_country WHERE rowid = ".$this->object->country_id; $resql = $this->db->query($sql); - if ($resql) - { + if ($resql) { $obj = $this->db->fetch_object($resql); $this->object->country_code = $obj->code; diff --git a/htdocs/adherents/canvas/default/actions_adherentcard_default.class.php b/htdocs/adherents/canvas/default/actions_adherentcard_default.class.php index f248256a547..db2473c55d9 100644 --- a/htdocs/adherents/canvas/default/actions_adherentcard_default.class.php +++ b/htdocs/adherents/canvas/default/actions_adherentcard_default.class.php @@ -90,8 +90,7 @@ class ActionsAdherentCardDefault extends ActionsAdherentCardCommon $this->tpl['error'] = $this->error; $this->tpl['errors'] = $this->errors; - if ($action == 'view') - { + if ($action == 'view') { // Card header $head = member_prepare_head($this->object); $title = $this->getTitle($action); @@ -107,14 +106,12 @@ class ActionsAdherentCardDefault extends ActionsAdherentCardCommon $this->tpl['actionsdone'] = show_actions_done($conf, $langs, $db, $objsoc, $this->object, 1); } else { // Confirm delete contact - if ($action == 'delete' && $user->rights->adherent->supprimer) - { + if ($action == 'delete' && $user->rights->adherent->supprimer) { $this->tpl['action_delete'] = $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$this->object->id, $langs->trans("DeleteAdherent"), $langs->trans("ConfirmDeleteAdherent"), "confirm_delete", '', 0, 1); } } - if ($action == 'list') - { + if ($action == 'list') { $this->LoadListDatas($limit, $offset, $sortfield, $sortorder); } } diff --git a/htdocs/adherents/canvas/default/tpl/adherentcard_create.tpl.php b/htdocs/adherents/canvas/default/tpl/adherentcard_create.tpl.php index 92f1e11d7a2..b6c0b542d27 100644 --- a/htdocs/adherents/canvas/default/tpl/adherentcard_create.tpl.php +++ b/htdocs/adherents/canvas/default/tpl/adherentcard_create.tpl.php @@ -17,8 +17,7 @@ */ // Protection to avoid direct call of template -if (empty($conf) || !is_object($conf)) -{ +if (empty($conf) || !is_object($conf)) { print "Error, template page can't be called as URL"; exit; } diff --git a/htdocs/adherents/canvas/default/tpl/adherentcard_edit.tpl.php b/htdocs/adherents/canvas/default/tpl/adherentcard_edit.tpl.php index 36e2deab14c..92a4fbddd38 100644 --- a/htdocs/adherents/canvas/default/tpl/adherentcard_edit.tpl.php +++ b/htdocs/adherents/canvas/default/tpl/adherentcard_edit.tpl.php @@ -17,8 +17,7 @@ */ // Protection to avoid direct call of template -if (empty($conf) || !is_object($conf)) -{ +if (empty($conf) || !is_object($conf)) { print "Error, template page can't be called as URL"; exit; } diff --git a/htdocs/adherents/canvas/default/tpl/adherentcard_view.tpl.php b/htdocs/adherents/canvas/default/tpl/adherentcard_view.tpl.php index b738f549247..8789b2fcb34 100644 --- a/htdocs/adherents/canvas/default/tpl/adherentcard_view.tpl.php +++ b/htdocs/adherents/canvas/default/tpl/adherentcard_view.tpl.php @@ -17,8 +17,7 @@ */ // Protection to avoid direct call of template -if (empty($conf) || !is_object($conf)) -{ +if (empty($conf) || !is_object($conf)) { print "Error, template page can't be called as URL"; exit; } diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 7a5880fc317..cf5253e3bf8 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -55,8 +55,7 @@ $typeid = GETPOST('typeid', 'int'); $userid = GETPOST('userid', 'int'); $socid = GETPOST('socid', 'int'); -if (!empty($conf->mailmanspip->enabled)) -{ +if (!empty($conf->mailmanspip->enabled)) { include_once DOL_DOCUMENT_ROOT.'/mailmanspip/class/mailmanspip.class.php'; $langs->load('mailmanspip'); @@ -76,8 +75,7 @@ $socialnetworks = getArrayOfSocialNetworks(); $object->getCanvas($id); $canvas = $object->canvas ? $object->canvas : GETPOST("canvas"); $objcanvas = null; -if (!empty($canvas)) -{ +if (!empty($canvas)) { require_once DOL_DOCUMENT_ROOT.'/core/class/canvas.class.php'; $objcanvas = new Canvas($db, $action); $objcanvas->getCanvas('adherent', 'membercard', $canvas); @@ -86,16 +84,14 @@ if (!empty($canvas)) // Security check $result = restrictedArea($user, 'adherent', $id, '', '', 'socid', 'rowid', $objcanvas); -if ($id > 0) -{ +if ($id > 0) { // Load member $result = $object->fetch($id); // Define variables to know what current user can do on users $canadduser = ($user->admin || $user->rights->user->user->creer); // Define variables to know what current user can do on properties of user linked to edited member - if ($object->user_id) - { + if ($object->user_id) { // $User is the user who edits, $object->user_id is the id of the related user in the edited member $caneditfielduser = ((($user->id == $object->user_id) && $user->rights->user->self->creer) || (($user->id != $object->user_id) && $user->rights->user->user->creer)); @@ -107,8 +103,7 @@ if ($id > 0) // Define variables to determine what the current user can do on the members $canaddmember = $user->rights->adherent->creer; // Define variables to determine what the current user can do on the properties of a member -if ($id) -{ +if ($id) { $caneditfieldmember = $user->rights->adherent->creer; } @@ -125,34 +120,26 @@ $parameters = array('id'=>$id, 'rowid'=>$id, 'objcanvas'=>$objcanvas, 'confirm'= $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)) -{ - if ($cancel) - { - if (!empty($backtopage)) - { +if (empty($reshook)) { + if ($cancel) { + if (!empty($backtopage)) { header("Location: ".$backtopage); exit; } $action = ''; } - if ($action == 'setuserid' && ($user->rights->user->self->creer || $user->rights->user->user->creer)) - { + if ($action == 'setuserid' && ($user->rights->user->self->creer || $user->rights->user->user->creer)) { $error = 0; - if (empty($user->rights->user->user->creer)) // If can edit only itself user, we can link to itself only - { - if ($userid != $user->id && $userid != $object->user_id) - { + if (empty($user->rights->user->user->creer)) { // If can edit only itself user, we can link to itself only + if ($userid != $user->id && $userid != $object->user_id) { $error++; setEventMessages($langs->trans("ErrorUserPermissionAllowsToLinksToItselfOnly"), null, 'errors'); } } - if (!$error) - { - if ($userid != $object->user_id) // If link differs from currently in database - { + if (!$error) { + if ($userid != $object->user_id) { // If link differs from currently in database $result = $object->setUserId($userid); if ($result < 0) dol_print_error($object->db, $object->error); $action = ''; @@ -160,22 +147,17 @@ if (empty($reshook)) } } - if ($action == 'setsocid') - { + if ($action == 'setsocid') { $error = 0; - if (!$error) - { - if ($socid != $object->socid) // If link differs from currently in database - { + if (!$error) { + if ($socid != $object->socid) { // If link differs from currently in database $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."adherent"; $sql .= " WHERE socid = '".$socid."'"; $sql .= " AND entity = ".$conf->entity; $resql = $db->query($sql); - if ($resql) - { + if ($resql) { $obj = $db->fetch_object($resql); - if ($obj && $obj->rowid > 0) - { + if ($obj && $obj->rowid > 0) { $othermember = new Adherent($db); $othermember->fetch($obj->rowid); $thirdparty = new Societe($db); @@ -185,8 +167,7 @@ if (empty($reshook)) } } - if (!$error) - { + if (!$error) { $result = $object->setThirdPartyId($socid); if ($result < 0) dol_print_error($object->db, $object->error); $action = ''; @@ -196,16 +177,13 @@ if (empty($reshook)) } // Create user from a member - if ($action == 'confirm_create_user' && $confirm == 'yes' && $user->rights->user->user->creer) - { - if ($result > 0) - { + if ($action == 'confirm_create_user' && $confirm == 'yes' && $user->rights->user->user->creer) { + if ($result > 0) { // Creation user $nuser = new User($db); $result = $nuser->create_from_member($object, GETPOST('login', 'alphanohtml')); - if ($result < 0) - { + if ($result < 0) { $langs->load("errors"); setEventMessages($langs->trans($nuser->error), null, 'errors'); } @@ -215,16 +193,13 @@ if (empty($reshook)) } // Create third party from a member - if ($action == 'confirm_create_thirdparty' && $confirm == 'yes' && $user->rights->societe->creer) - { - if ($result > 0) - { + if ($action == 'confirm_create_thirdparty' && $confirm == 'yes' && $user->rights->societe->creer) { + if ($result > 0) { // User creation $company = new Societe($db); $result = $company->create_from_member($object, GETPOST('companyname', 'alpha'), GETPOST('companyalias', 'alpha')); - if ($result < 0) - { + if ($result < 0) { $langs->load("errors"); setEventMessages($langs->trans($company->error), null, 'errors'); setEventMessages($company->error, $company->errors, 'errors'); @@ -234,15 +209,13 @@ if (empty($reshook)) } } - if ($action == 'update' && !$cancel && $user->rights->adherent->creer) - { + if ($action == 'update' && !$cancel && $user->rights->adherent->creer) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $birthdate = ''; if (isset($_POST["birthday"]) && $_POST["birthday"] && isset($_POST["birthmonth"]) && $_POST["birthmonth"] - && isset($_POST["birthyear"]) && $_POST["birthyear"]) - { + && isset($_POST["birthyear"]) && $_POST["birthyear"]) { $birthdate = dol_mktime(12, 0, 0, $_POST["birthmonth"], $_POST["birthday"], $_POST["birthyear"]); } $lastname = $_POST["lastname"]; @@ -267,16 +240,14 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Company")), null, 'errors'); } // Check if the login already exists - if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) - { + if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { if (empty($login)) { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Login")), null, 'errors'); } } // Create new object - if ($result > 0 && !$error) - { + if ($result > 0 && !$error) { $object->oldcopy = clone $object; // Change values @@ -329,32 +300,27 @@ if (empty($reshook)) // Check if we need to also synchronize user information $nosyncuser = 0; - if ($object->user_id) // If linked to a user - { + if ($object->user_id) { // If linked to a user if ($user->id != $object->user_id && empty($user->rights->user->user->creer)) $nosyncuser = 1; // Disable synchronizing } // Check if we need to also synchronize password information $nosyncuserpass = 0; - if ($object->user_id) // If linked to a user - { + if ($object->user_id) { // If linked to a user if ($user->id != $object->user_id && empty($user->rights->user->user->password)) $nosyncuserpass = 1; // Disable synchronizing } $result = $object->update($user, 0, $nosyncuser, $nosyncuserpass); - if ($result >= 0 && !count($object->errors)) - { + if ($result >= 0 && !count($object->errors)) { $categories = GETPOST('memcats', 'array'); $object->setCategories($categories); // Logo/Photo save $dir = $conf->adherent->dir_output.'/'.get_exdir(0, 0, 0, 1, $object, 'member').'/photos'; $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']); - if ($file_OK) - { - if (GETPOST('deletephoto')) - { + if ($file_OK) { + if (GETPOST('deletephoto')) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $fileimg = $conf->adherent->dir_output.'/'.get_exdir(0, 0, 0, 1, $object, 'member').'/photos/'.$object->photo; $dirthumbs = $conf->adherent->dir_output.'/'.get_exdir(0, 0, 0, 1, $object, 'member').'/photos/thumbs'; @@ -362,15 +328,12 @@ if (empty($reshook)) dol_delete_dir_recursive($dirthumbs); } - if (image_format_supported($_FILES['photo']['name']) > 0) - { + if (image_format_supported($_FILES['photo']['name']) > 0) { dol_mkdir($dir); - if (@is_dir($dir)) - { + if (@is_dir($dir)) { $newfile = $dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']); - if (!dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1, 0, $_FILES['photo']['error']) > 0) - { + if (!dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1, 0, $_FILES['photo']['error']) > 0) { setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors'); } else { // Create thumbs @@ -381,8 +344,7 @@ if (empty($reshook)) setEventMessages("ErrorBadImageFormat", null, 'errors'); } } else { - switch ($_FILES['photo']['error']) - { + switch ($_FILES['photo']['error']) { case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form $errors[] = "ErrorFileSizeTooLarge"; @@ -397,8 +359,7 @@ if (empty($reshook)) $id = $object->id; $action = ''; - if (!empty($backtopage)) - { + if (!empty($backtopage)) { header("Location: ".$backtopage); exit; } @@ -411,19 +372,16 @@ if (empty($reshook)) } } - if ($action == 'add' && $user->rights->adherent->creer) - { + if ($action == 'add' && $user->rights->adherent->creer) { if ($canvas) $object->canvas = $canvas; $birthdate = ''; if (isset($_POST["birthday"]) && $_POST["birthday"] && isset($_POST["birthmonth"]) && $_POST["birthmonth"] - && isset($_POST["birthyear"]) && $_POST["birthyear"]) - { + && isset($_POST["birthyear"]) && $_POST["birthyear"]) { $birthdate = dol_mktime(12, 0, 0, $_POST["birthmonth"], $_POST["birthday"], $_POST["birthyear"]); } $datesubscription = ''; - if (isset($_POST["reday"]) && isset($_POST["remonth"]) && isset($_POST["reyear"])) - { + if (isset($_POST["reday"]) && isset($_POST["remonth"]) && isset($_POST["reyear"])) { $datesubscription = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); } @@ -508,8 +466,7 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("MemberNature")), null, 'errors'); } // Tests if the login already exists - if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) - { + if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { if (empty($login)) { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Login")), null, 'errors'); @@ -557,14 +514,12 @@ if (empty($reshook)) $public = 0; if (isset($public)) $public = 1; - if (!$error) - { + if (!$error) { $db->begin(); // Email about right and login does not exist $result = $object->create($user); - if ($result > 0) - { + if ($result > 0) { // Foundation categories $memcats = GETPOST('memcats', 'array'); $object->setCategories($memcats); @@ -590,13 +545,10 @@ if (empty($reshook)) } } - if ($user->rights->adherent->supprimer && $action == 'confirm_delete' && $confirm == 'yes') - { + if ($user->rights->adherent->supprimer && $action == 'confirm_delete' && $confirm == 'yes') { $result = $object->delete($id, $user); - if ($result > 0) - { - if (!empty($backtopage)) - { + if ($result > 0) { + if (!empty($backtopage)) { header("Location: ".$backtopage); exit; } else { @@ -608,8 +560,7 @@ if (empty($reshook)) } } - if ($user->rights->adherent->creer && $action == 'confirm_valid' && $confirm == 'yes') - { + if ($user->rights->adherent->creer && $action == 'confirm_valid' && $confirm == 'yes') { $error = 0; $db->begin(); @@ -619,11 +570,9 @@ if (empty($reshook)) $result = $object->validate($user); - if ($result >= 0 && !count($object->errors)) - { + if ($result >= 0 && !count($object->errors)) { // Send confirmation email (according to parameters of member type. Otherwise generic) - if ($object->email && GETPOST("send_mail")) - { + if ($object->email && GETPOST("send_mail")) { $subject = ''; $msg = ''; @@ -641,8 +590,7 @@ if (empty($reshook)) if (!empty($labeltouse)) $arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse); - if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) - { + if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) { $subject = $arraydefaultmessage->topic; $msg = $arraydefaultmessage->content; } @@ -661,8 +609,7 @@ if (empty($reshook)) $moreinheader = 'X-Dolibarr-Info: send_an_email by adherents/card.php'."\r\n"; $result = $object->send_an_email($texttosend, $subjecttosend, array(), array(), array(), "", "", 0, -1, '', $moreinheader); - if ($result < 0) - { + if ($result < 0) { $error++; setEventMessages($object->error, $object->errors, 'errors'); } @@ -677,8 +624,7 @@ if (empty($reshook)) } } - if (!$error) - { + if (!$error) { $db->commit(); } else { $db->rollback(); @@ -686,21 +632,17 @@ if (empty($reshook)) $action = ''; } - if ($user->rights->adherent->supprimer && $action == 'confirm_resign') - { + if ($user->rights->adherent->supprimer && $action == 'confirm_resign') { $error = 0; - if ($confirm == 'yes') - { + if ($confirm == 'yes') { $adht = new AdherentType($db); $adht->fetch($object->typeid); $result = $object->resiliate($user); - if ($result >= 0 && !count($object->errors)) - { - if ($object->email && GETPOST("send_mail")) - { + if ($result >= 0 && !count($object->errors)) { + if ($object->email && GETPOST("send_mail")) { $subject = ''; $msg = ''; @@ -718,8 +660,7 @@ if (empty($reshook)) if (!empty($labeltouse)) $arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse); - if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) - { + if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) { $subject = $arraydefaultmessage->topic; $msg = $arraydefaultmessage->content; } @@ -738,8 +679,7 @@ if (empty($reshook)) $moreinheader = 'X-Dolibarr-Info: send_an_email by adherents/card.php'."\r\n"; $result = $object->send_an_email($texttosend, $subjecttosend, array(), array(), array(), "", "", 0, -1, '', $moreinheader); - if ($result < 0) - { + if ($result < 0) { $error++; setEventMessages($object->error, $object->errors, 'errors'); } @@ -756,31 +696,24 @@ if (empty($reshook)) $action = ''; } } - if (!empty($backtopage) && !$error) - { + if (!empty($backtopage) && !$error) { header("Location: ".$backtopage); exit; } } // SPIP Management - if ($user->rights->adherent->supprimer && $action == 'confirm_del_spip' && $confirm == 'yes') - { - if (!count($object->errors)) - { - if (!$mailmanspip->del_to_spip($object)) - { + if ($user->rights->adherent->supprimer && $action == 'confirm_del_spip' && $confirm == 'yes') { + if (!count($object->errors)) { + if (!$mailmanspip->del_to_spip($object)) { setEventMessages($langs->trans('DeleteIntoSpipError').': '.$mailmanspip->error, null, 'errors'); } } } - if ($user->rights->adherent->creer && $action == 'confirm_add_spip' && $confirm == 'yes') - { - if (!count($object->errors)) - { - if (!$mailmanspip->add_to_spip($object)) - { + if ($user->rights->adherent->creer && $action == 'confirm_add_spip' && $confirm == 'yes') { + if (!count($object->errors)) { + if (!$mailmanspip->add_to_spip($object)) { setEventMessages($langs->trans('AddIntoSpipError').': '.$mailmanspip->error, null, 'errors'); } } @@ -817,13 +750,11 @@ llxHeader('', $title, $help_url); $countrynotdefined = $langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')'; -if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) -{ +if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // ----------------------------------------- // When used with CANVAS // ----------------------------------------- - if (empty($object->error) && $id) - { + if (empty($object->error) && $id) { $object = new Adherent($db); $result = $object->fetch($id); if ($result <= 0) dol_print_error('', $object->error); @@ -835,8 +766,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) // When used in standard mode // ----------------------------------------- - if ($action == 'create') - { + if ($action == 'create') { /* ************************************************************************** */ /* */ /* Creation mode */ @@ -847,8 +777,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) // We set country_id, country_code and country for the selected country $object->country_id = GETPOST('country_id', 'int') ?GETPOST('country_id', 'int') : $mysoc->country_id; - if ($object->country_id) - { + if ($object->country_id) { $tmparray = getCountry($object->country_id, 'all'); $object->country_code = $tmparray['code']; $object->country = $tmparray['label']; @@ -858,8 +787,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) $object = new Societe($db); if ($socid > 0) $object->fetch($socid); - if (!($object->id > 0)) - { + if (!($object->id > 0)) { $langs->load("errors"); print($langs->trans('ErrorRecordNotFound')); exit; @@ -870,8 +798,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) print load_fiche_titre($langs->trans("NewMember"), '', 'members'); - if ($conf->use_javascript_ajax) - { + if ($conf->use_javascript_ajax) { print "\n".''; - } - } - } - - return $out; - } - - /** - * Fill array_options property of object by extrafields value (using for data sent by forms) - * - * @param array $extralabels Deprecated (old $array of extrafields, now set this to null) - * @param object $object Object - * @param string $onlykey Only the following key is filled. When we make update of only one extrafield ($action = 'update_extras'), calling page must set this to avoid to have other extrafields being reset. - * @return int 1 if array_options set, 0 if no value, -1 if error (field required missing for example) - */ - public function setOptionalsFromPost($extralabels, &$object, $onlykey = '') - { - global $_POST, $langs; - - $nofillrequired = 0; // For error when required field left blank - $error_field_required = array(); - - if (is_array($this->attributes[$object->table_element]['label'])) $extralabels = $this->attributes[$object->table_element]['label']; - - if (is_array($extralabels)) - { - // Get extra fields - foreach ($extralabels as $key => $value) - { - if (!empty($onlykey) && $key != $onlykey) continue; - - $key_type = $this->attributes[$object->table_element]['type'][$key]; - if ($key_type == 'separate') continue; - - $enabled = 1; - if (isset($this->attributes[$object->table_element]['list'][$key])) - { - $enabled = dol_eval($this->attributes[$object->table_element]['list'][$key], 1); - } - $perms = 1; - if (isset($this->attributes[$object->table_element]['perms'][$key])) - { - $perms = dol_eval($this->attributes[$object->table_element]['perms'][$key], 1); - } - if (empty($enabled)) continue; - if (empty($perms)) continue; - - if ($this->attributes[$object->table_element]['required'][$key]) // Value is required - { - // Check if empty without using GETPOST, value can be alpha, int, array, etc... - if ((!is_array($_POST["options_".$key]) && empty($_POST["options_".$key]) && $this->attributes[$object->table_element]['type'][$key] != 'select' && $_POST["options_".$key] != '0') - || (!is_array($_POST["options_".$key]) && empty($_POST["options_".$key]) && $this->attributes[$object->table_element]['type'][$key] == 'select') - || (is_array($_POST["options_".$key]) && empty($_POST["options_".$key]))) - { - //print 'ccc'.$value.'-'.$this->attributes[$object->table_element]['required'][$key]; - $nofillrequired++; - $error_field_required[] = $langs->transnoentitiesnoconv($value); - } - } - - if (in_array($key_type, array('date'))) - { - // Clean parameters - // TODO GMT date in memory must be GMT so we should add gm=true in parameters - $value_key = dol_mktime(0, 0, 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]); - } - elseif (in_array($key_type, array('datetime'))) - { - // Clean parameters - // TODO GMT date in memory must be GMT so we should add gm=true in parameters - $value_key = dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]); - } - elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) - { - $value_arr = GETPOST("options_".$key, 'array'); // check if an array - if (!empty($value_arr)) { - $value_key = implode($value_arr, ','); - } else { - $value_key = ''; - } - } - elseif (in_array($key_type, array('price', 'double'))) - { - $value_arr = GETPOST("options_".$key, 'alpha'); - $value_key = price2num($value_arr); - } - else - { - $value_key = GETPOST("options_".$key); - if (in_array($key_type, array('link')) && $value_key == '-1') $value_key = ''; - } - - $object->array_options["options_".$key] = $value_key; - } - - if ($nofillrequired) { - $langs->load('errors'); - setEventMessages($langs->trans('ErrorFieldsRequired').' : '.implode(', ', $error_field_required), null, 'errors'); - return -1; - } - else { - return 1; - } - } - else { - return 0; - } - } - - /** - * return array_options array of data of extrafields value of object sent by a search form - * - * @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 - */ - public function getOptionalsFromPost($extrafieldsobjectkey, $keyprefix = '', $keysuffix = '') - { - global $_POST; - - if (is_string($extrafieldsobjectkey) && is_array($this->attributes[$extrafieldsobjectkey]['label'])) - { - $extralabels = $this->attributes[$extrafieldsobjectkey]['label']; - } - else - { - $extralabels = $extrafieldsobjectkey; - } - - if (is_array($extralabels)) - { - $array_options = array(); - - // Get extra fields - foreach ($extralabels as $key => $value) - { - $key_type = ''; - if (is_string($extrafieldsobjectkey)) - { - $key_type = $this->attributes[$extrafieldsobjectkey]['type'][$key]; - } - - if (in_array($key_type, array('date', 'datetime'))) - { - if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix."year")) continue; // Value was not provided, we should not set it. - // Clean parameters - $value_key = dol_mktime(GETPOST($keysuffix."options_".$key.$keyprefix."hour", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."min", 'int'), 0, GETPOST($keysuffix."options_".$key.$keyprefix."month", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."day", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."year", 'int')); - } - elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) - { - if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. - $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix); - // Make sure we get an array even if there's only one checkbox - $value_arr = (array) $value_arr; - $value_key = implode(',', $value_arr); - } - elseif (in_array($key_type, array('price', 'double', 'int'))) - { - if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. - $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix); - $value_key = price2num($value_arr); - } - else - { - if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. - $value_key = GETPOST($keysuffix."options_".$key.$keyprefix); - } - - $array_options[$keysuffix."options_".$key] = $value_key; // No keyprefix here. keyprefix is used only for read. - } - - return $array_options; - } - - return 0; - } } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 32abc8f7240..d7e46922f56 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -368,6 +368,8 @@ class Form $s = picto_from_langcode($langcode, 'class="pictoforlang paddingright"'); $resultforextrlang .= $s; + + // TODO Use the showInputField() method of ExtraLanguages object if ($typeofdata == 'textarea') { $resultforextrlang .= '', null, 'warnings'); setEventMessages($langs->trans("MailingNeedCommand2"), null, 'warnings'); $action = ''; - } - elseif ($conf->global->MAILING_LIMIT_SENDBYWEB < 0) + } elseif ($conf->global->MAILING_LIMIT_SENDBYWEB < 0) { setEventMessages($langs->trans("NotEnoughPermissions"), null, 'warnings'); $action = ''; - } - else { + } else { $upload_dir = $conf->mailing->dir_output."/".get_exdir($object->id, 2, 0, 1, $object, 'mailing'); if ($object->statut == 0) @@ -232,8 +228,7 @@ if (empty($reshook)) $substitutionarray['__SECUREKEYPAYMENT_ORDER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); $substitutionarray['__SECUREKEYPAYMENT_INVOICE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); $substitutionarray['__SECUREKEYPAYMENT_CONTRACTLINE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); - } - else { + } else { $substitutionarray['__SECUREKEYPAYMENT_MEMBER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$obj->source_id, 2); $substitutionarray['__SECUREKEYPAYMENT_ORDER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'order'.$obj->source_id, 2); $substitutionarray['__SECUREKEYPAYMENT_INVOICE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'invoice'.$obj->source_id, 2); @@ -312,8 +307,7 @@ if (empty($reshook)) if (!$resql2) { dol_print_error($db); - } - else { + } else { //if cheack read is use then update prospect contact status if (strpos($message, '__CHECK_READ__') !== false) { @@ -345,8 +339,7 @@ if (empty($reshook)) } //test if CHECK READ change statut prospect contact - } - else { + } else { // Mail failed $nbko++; @@ -363,8 +356,7 @@ if (empty($reshook)) $i++; } - } - else { + } else { setEventMessages($langs->transnoentitiesnoconv("NoMoreRecipientToSendTo"), null, 'mesgs'); } @@ -374,14 +366,12 @@ if (empty($reshook)) $statut = 2; // Status 'sent partially' (because at least one error) if ($nbok > 0) setEventMessages($langs->transnoentitiesnoconv("EMailSentToNRecipients", $nbok), null, 'mesgs'); else setEventMessages($langs->transnoentitiesnoconv("EMailSentToNRecipients", $nbok), null, 'mesgs'); - } - else { + } else { if ($nbok >= $num) { $statut = 3; // Send to everybody setEventMessages($langs->transnoentitiesnoconv("EMailSentToNRecipients", $nbok), null, 'mesgs'); - } - else { + } else { $statut = 2; // Status 'sent partially' (because not send to everybody) setEventMessages($langs->transnoentitiesnoconv("EMailSentToNRecipients", $nbok), null, 'mesgs'); } @@ -394,8 +384,7 @@ if (empty($reshook)) { dol_print_error($db); } - } - else { + } else { dol_syslog($db->error()); dol_print_error($db); } @@ -462,8 +451,7 @@ if (empty($reshook)) { setEventMessages($langs->trans("MailSuccessfulySent", $mailfile->getValidAddress($object->email_from, 2), $mailfile->getValidAddress($object->sendto, 2)), null, 'mesgs'); $action = ''; - } - else { + } else { setEventMessages($langs->trans("ResultKo").'
'.$mailfile->error.' '.$result, null, 'errors'); $action = 'test'; } @@ -600,8 +588,7 @@ if (empty($reshook)) setEventMessages($mesg, $mesgs, 'errors'); $action = "edit"; - } - else { + } else { $action = "edit"; } } @@ -615,8 +602,7 @@ if (empty($reshook)) setEventMessages($langs->trans("MailingSuccessfullyValidated"), null, 'mesgs'); header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { dol_print_error($db); } } @@ -632,12 +618,10 @@ if (empty($reshook)) //setEventMessages($langs->trans("MailingSuccessfullyValidated"), null, 'mesgs'); header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { dol_print_error($db); } } @@ -660,13 +644,11 @@ if (empty($reshook)) $db->commit(); header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } - } - else { + } else { dol_print_error($db); } } @@ -766,8 +748,7 @@ if ($action == 'create') print '
'; print ''; -} -else { +} else { if ($object->id > 0) { $upload_dir = $conf->mailing->dir_output."/".get_exdir($object->id, 2, 0, 1, $object, 'mailing'); @@ -823,8 +804,7 @@ else { setEventMessages($langs->trans("MailSendSetupIs2", $linktoadminemailbefore, $linktoadminemailend, $langs->transnoentitiesnoconv("MAIN_MAIL_SENDMODE"), $listofmethods['smtps']), null, 'warnings'); if (!empty($conf->global->MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS)) setEventMessages($langs->trans("MailSendSetupIs3", $conf->global->MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS), null, 'warnings'); $_GET["action"] = ''; - } - elseif ($conf->global->MAILING_LIMIT_SENDBYWEB < 0) + } elseif ($conf->global->MAILING_LIMIT_SENDBYWEB < 0) { if (!empty($conf->global->MAILING_LIMIT_WARNING_PHPMAIL) && $sendingmode == 'mail') setEventMessages($langs->transnoentitiesnoconv($conf->global->MAILING_LIMIT_WARNING_PHPMAIL), null, 'warnings'); if (!empty($conf->global->MAILING_LIMIT_WARNING_NOPHPMAIL) && $sendingmode != 'mail') setEventMessages($langs->transnoentitiesnoconv($conf->global->MAILING_LIMIT_WARNING_NOPHPMAIL), null, 'warnings'); @@ -837,8 +817,7 @@ else { setEventMessages($langs->trans("MailingNeedCommand2"), null, 'warnings'); // You can send online with constant... } $_GET["action"] = ''; - } - else { + } else { if (!empty($conf->global->MAILING_LIMIT_WARNING_PHPMAIL) && $sendingmode == 'mail') setEventMessages($langs->transnoentitiesnoconv($conf->global->MAILING_LIMIT_WARNING_PHPMAIL), null, 'warnings'); if (!empty($conf->global->MAILING_LIMIT_WARNING_NOPHPMAIL) && $sendingmode != 'mail') setEventMessages($langs->transnoentitiesnoconv($conf->global->MAILING_LIMIT_WARNING_NOPHPMAIL), null, 'warnings'); @@ -920,8 +899,7 @@ else { if ($conf->global->MAILING_LIMIT_SENDBYWEB > 0) { $text .= $langs->trans('LimitSendingEmailing', $conf->global->MAILING_LIMIT_SENDBYWEB); - } - else { + } else { $text .= $langs->trans('SendingFromWebInterfaceIsNotAllowed'); } } @@ -929,8 +907,7 @@ else { if ($text) { print $form->textwithpicto($nbemail, $text, 1, 'warning'); - } - else { + } else { print $nbemail; } } @@ -977,8 +954,7 @@ else { if (!empty($conf->fckeditor->enabled) && !empty($conf->global->FCKEDITOR_ENABLE_MAILING)) { print ''.$langs->trans("EditWithEditor").''; - } - else { + } else { print ''.$langs->trans("EditWithTextEditor").''; } @@ -990,8 +966,7 @@ else { if (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !$user->rights->mailing->mailing_advance->send) { print ''.$langs->trans("TestMailing").''; - } - else { + } else { print ''.$langs->trans("TestMailing").''; } @@ -1000,12 +975,10 @@ else { if ($object->nbemail <= 0) { print ''.$langs->trans("ValidMailing").''; - } - elseif (empty($user->rights->mailing->valider)) + } elseif (empty($user->rights->mailing->valider)) { print ''.$langs->trans("ValidMailing").''; - } - else { + } else { print ''.$langs->trans("ValidMailing").''; } } @@ -1015,12 +988,10 @@ else { if ($conf->global->MAILING_LIMIT_SENDBYWEB < 0) { print ''.$langs->trans("SendMailing").''; - } - elseif (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !$user->rights->mailing->mailing_advance->send) + } elseif (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !$user->rights->mailing->mailing_advance->send) { print ''.$langs->trans("SendMailing").''; - } - else { + } else { print ''.$langs->trans("SendMailing").''; } } @@ -1035,8 +1006,7 @@ else { if (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !$user->rights->mailing->mailing_advance->send) { print ''.$langs->trans("ResetMailing").''; - } - else { + } else { print ''.$langs->trans("ResetMailing").''; } } @@ -1046,8 +1016,7 @@ else { if ($object->statut > 0 && (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !$user->rights->mailing->mailing_advance->delete)) { print ''.$langs->trans("DeleteMailing").''; - } - else { + } else { print ''.$langs->trans("DeleteMailing").''; } } @@ -1126,8 +1095,7 @@ else { print img_mime($listofpaths[$key]['name']).' '.$listofpaths[$key]['name']; print '
'; } - } - else { + } else { print ''.$langs->trans("NoAttachedFiles").'
'; } print ''; @@ -1148,13 +1116,11 @@ else { require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor('bodyemail', $object->body, '', 600, 'dolibarr_mailings', '', false, true, empty($conf->global->FCKEDITOR_ENABLE_MAILING) ? 0 : 1, 20, '90%', $readonly); $doleditor->Create(); - } - else print dol_htmlentitiesbr($object->body); + } else print dol_htmlentitiesbr($object->body); print ''; dol_fiche_end(); - } - else { + } else { /* * Mailing en mode edition (CKeditor or HTML source) */ @@ -1200,8 +1166,7 @@ else { if ($conf->global->MAILING_LIMIT_SENDBYWEB > 0) { $text .= $langs->trans('LimitSendingEmailing', $conf->global->MAILING_LIMIT_SENDBYWEB); - } - else { + } else { $text .= $langs->trans('SendingFromWebInterfaceIsNotAllowed'); } } @@ -1209,8 +1174,7 @@ else { if ($text) { print $form->textwithpicto($nbemail, $text, 1, 'warning'); - } - else { + } else { print $nbemail; } } @@ -1284,8 +1248,7 @@ else { $out .= ' '; $out .= '
'; } - } - else { + } else { $out .= $langs->trans("NoAttachedFiles").'
'; } // Add link to add file @@ -1334,8 +1297,7 @@ else { print ''; print '
'; } - } - else { + } else { dol_print_error($db, $object->error); } } diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index e89a645cf20..27e0c2e5b0c 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -160,8 +160,7 @@ if (GETPOST('exportcsv', 'int')) } exit; - } - else { + } else { dol_print_error($db); } exit; @@ -180,13 +179,11 @@ if ($action == 'delete') $obj->update_nb($id); setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs'); - } - else { + } else { header("Location: list.php"); exit; } - } - else { + } else { dol_print_error($db); } } @@ -290,8 +287,7 @@ if ($object->fetch($id) >= 0) if ($conf->global->MAILING_LIMIT_SENDBYWEB > 0) { $text .= $langs->trans('LimitSendingEmailing', $conf->global->MAILING_LIMIT_SENDBYWEB); - } - else { + } else { $text .= $langs->trans('SendingFromWebInterfaceIsNotAllowed'); } } @@ -299,8 +295,7 @@ if ($object->fetch($id) >= 0) if ($text) { print $form->textwithpicto($nbemail, $text, 1, 'warning'); - } - else { + } else { print $nbemail; } } @@ -400,8 +395,7 @@ if ($object->fetch($id) >= 0) { print '
'; print ''; - } - else { + } else { print '
'; } @@ -414,8 +408,7 @@ if ($object->fetch($id) >= 0) try { $nbofrecipient = $obj->getNbOfRecipients(''); - } - catch (Exception $e) + } catch (Exception $e) { dol_syslog($e->getMessage(), LOG_ERR); } @@ -424,8 +417,7 @@ if ($object->fetch($id) >= 0) if ($nbofrecipient >= 0) { print $nbofrecipient; - } - else { + } else { print $langs->trans("Error").' '.img_error($obj->error); } print '
'; @@ -435,8 +427,7 @@ if ($object->fetch($id) >= 0) { try { $filter = $obj->formFilter(); - } - catch (Exception $e) + } catch (Exception $e) { dol_syslog($e->getMessage(), LOG_ERR); } @@ -449,8 +440,7 @@ if ($object->fetch($id) >= 0) if ($allowaddtarget) { print ''; - } - else { + } else { print ''; //print $langs->trans("MailNoChangePossible"); print " "; @@ -624,29 +614,24 @@ if ($object->fetch($id) >= 0) if (empty($obj->source_id) || empty($obj->source_type)) { print empty($obj->source_url) ? '' : $obj->source_url; // For backward compatibility - } - else { + } else { if ($obj->source_type == 'member') { $objectstaticmember->fetch($obj->source_id); print $objectstaticmember->getNomUrl(1); - } - elseif ($obj->source_type == 'user') + } elseif ($obj->source_type == 'user') { $objectstaticuser->fetch($obj->source_id); print $objectstaticuser->getNomUrl(1); - } - elseif ($obj->source_type == 'thirdparty') + } elseif ($obj->source_type == 'thirdparty') { $objectstaticcompany->fetch($obj->source_id); print $objectstaticcompany->getNomUrl(1); - } - elseif ($obj->source_type == 'contact') + } elseif ($obj->source_type == 'contact') { $objectstaticcontact->fetch($obj->source_id); print $objectstaticcontact->getNomUrl(1); - } - else { + } else { print $obj->source_url; } } @@ -666,8 +651,7 @@ if ($object->fetch($id) >= 0) print ''; print $object::libStatutDest($obj->statut, 2, ''); print ''; - } - else { + } else { // Date sent print ''.$obj->date_envoi.''; @@ -693,8 +677,7 @@ if ($object->fetch($id) >= 0) $i++; } - } - else { + } else { if ($object->statut < 2) { print ''; @@ -708,8 +691,7 @@ if ($object->fetch($id) >= 0) print '
'; $db->free($resql); - } - else { + } else { dol_print_error($db); } diff --git a/htdocs/comm/mailing/class/advtargetemailing.class.php b/htdocs/comm/mailing/class/advtargetemailing.class.php index dd6f59e80b9..983ad374980 100644 --- a/htdocs/comm/mailing/class/advtargetemailing.class.php +++ b/htdocs/comm/mailing/class/advtargetemailing.class.php @@ -165,8 +165,7 @@ class AdvanceTargetingMailing extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -220,8 +219,7 @@ class AdvanceTargetingMailing extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); return -1; @@ -282,8 +280,7 @@ class AdvanceTargetingMailing extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); return -1; @@ -348,8 +345,7 @@ class AdvanceTargetingMailing extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); return -1; @@ -407,8 +403,7 @@ class AdvanceTargetingMailing extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -448,8 +443,7 @@ class AdvanceTargetingMailing extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -683,8 +677,7 @@ class AdvanceTargetingMailing extends CommonObject if (!empty($arrayquery['contact_no_email'])) { $tmpwhere .= "(t.email IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE t.entity IN (".getEntity('mailing').") AND email = '".$this->db->escape($arrayquery['contact_no_email'])."'))"; - } - else { + } else { $tmpwhere .= "(t.email NOT IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE t.entity IN (".getEntity('mailing').") AND email = '".$this->db->escape($arrayquery['contact_no_email'])."'))"; } $sqlwhere[] = $tmpwhere; diff --git a/htdocs/comm/mailing/class/html.formadvtargetemailing.class.php b/htdocs/comm/mailing/class/html.formadvtargetemailing.class.php index fd674945beb..e6f928d539f 100644 --- a/htdocs/comm/mailing/class/html.formadvtargetemailing.class.php +++ b/htdocs/comm/mailing/class/html.formadvtargetemailing.class.php @@ -314,8 +314,7 @@ class FormAdvTargetEmailing extends Form $i++; } } - } - else { + } else { dol_print_error($this->db); } @@ -399,8 +398,7 @@ class FormAdvTargetEmailing extends Form $i++; } } - } - else { + } else { dol_print_error($this->db); } diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index a6c44c96a8d..1bb4864876c 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -144,16 +144,14 @@ class Mailing extends CommonObject if ($this->update($user) > 0) { $this->db->commit(); - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; } return $this->id; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -184,8 +182,7 @@ class Mailing extends CommonObject if ($result) { return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -250,13 +247,11 @@ class Mailing extends CommonObject $this->extraparams = (array) json_decode($obj->extraparams, true); return 1; - } - else { + } else { dol_syslog(get_class($this)."::fetch Erreur -1"); return -1; } - } - else { + } else { dol_syslog(get_class($this)."::fetch Erreur -2"); return -2; } @@ -363,8 +358,7 @@ class Mailing extends CommonObject ); } } - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -380,8 +374,7 @@ class Mailing extends CommonObject { $this->db->commit(); return $object->id; - } - else { + } else { $this->db->rollback(); return -1; } @@ -405,8 +398,7 @@ class Mailing extends CommonObject if ($this->db->query($sql)) { return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -429,8 +421,7 @@ class Mailing extends CommonObject if ($resql) { return $this->delete_targets(); - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -453,8 +444,7 @@ class Mailing extends CommonObject if ($resql) { return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return 0; } @@ -480,8 +470,7 @@ class Mailing extends CommonObject if ($resql) { return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -511,8 +500,7 @@ class Mailing extends CommonObject { $obj = $this->db->fetch_object($resql); if ($obj) return $obj->nb; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -572,8 +560,7 @@ class Mailing extends CommonObject $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; */ - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; diff --git a/htdocs/comm/mailing/index.php b/htdocs/comm/mailing/index.php index edcb12d1bb2..cf439e4314b 100644 --- a/htdocs/comm/mailing/index.php +++ b/htdocs/comm/mailing/index.php @@ -129,8 +129,7 @@ if (is_resource($handle)) } $db->free($result); - } - else { + } else { dol_print_error($db); } print ''; @@ -190,14 +189,12 @@ if ($result) { print ''; $i++; } - } - else { + } else { print ''.$langs->trans("None").''; } print "
"; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/comm/mailing/list.php b/htdocs/comm/mailing/list.php index dcba1333b11..d22dd130507 100644 --- a/htdocs/comm/mailing/list.php +++ b/htdocs/comm/mailing/list.php @@ -130,8 +130,7 @@ if ($filteremail) if ($search_all) $sql .= " AND (m.titre like '%".$db->escape($search_all)."%' OR m.sujet like '%".$db->escape($search_all)."%' OR m.body like '%".$db->escape($search_all)."%')"; if (!$sortorder) $sortorder = "ASC"; if (!$sortfield) $sortfield = "m.rowid"; -} -else { +} else { $sql = "SELECT m.rowid, m.titre, m.nbemail, m.statut, m.date_creat as datec, m.date_envoi as date_envoi"; $sql .= " FROM ".MAIN_DB_PREFIX."mailing as m"; $sql .= " WHERE m.entity = ".$conf->entity; @@ -273,8 +272,7 @@ if ($resql) if ($filteremail) { print $email::libStatutDest($obj->sendstatut, 2); - } - else { + } else { print $email->LibStatut($obj->statut, 5); } print ''; @@ -295,8 +293,7 @@ if ($resql) print ''; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/comm/multiprix.php b/htdocs/comm/multiprix.php index 964663a976b..cd5d5c9ace9 100644 --- a/htdocs/comm/multiprix.php +++ b/htdocs/comm/multiprix.php @@ -152,8 +152,7 @@ if ($_socid > 0) } $db->free($resql); print ""; - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 6b9ed10f18a..a2d27943c89 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -161,8 +161,7 @@ if (empty($reshook)) if (!GETPOST('socid', 3)) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); - } - else { + } else { if ($object->id > 0) { if (!empty($conf->global->PROPAL_CLONE_DATE_DELIVERY)) { //Get difference between old and new delivery date and change lines according to difference @@ -268,9 +267,7 @@ if (empty($reshook)) if (count($object->errors) > 0) setEventMessages($object->error, $object->errors, 'errors'); else setEventMessages($langs->trans($object->error), null, 'errors'); } - } - - elseif ($action == 'setdate' && $usercancreate) + } elseif ($action == 'setdate' && $usercancreate) { $datep = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); @@ -284,14 +281,12 @@ if (empty($reshook)) if ($result < 0) dol_print_error($db, $object->error); } - } - elseif ($action == 'setecheance' && $usercancreate) + } elseif ($action == 'setecheance' && $usercancreate) { $result = $object->set_echeance($user, dol_mktime(12, 0, 0, $_POST['echmonth'], $_POST['echday'], $_POST['echyear'])); if ($result < 0) dol_print_error($db, $object->error); - } - elseif ($action == 'setdate_livraison' && $usercancreate) + } elseif ($action == 'setdate_livraison' && $usercancreate) { $result = $object->set_date_livraison($user, dol_mktime(12, 0, 0, $_POST['date_livraisonmonth'], $_POST['date_livraisonday'], $_POST['date_livraisonyear'])); if ($result < 0) @@ -600,13 +595,11 @@ if (empty($reshook)) header('Location: '.$_SERVER["PHP_SELF"].'?id='.$id); exit(); - } - else { + } else { $db->rollback(); $action = 'create'; } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); $action = 'create'; @@ -630,8 +623,7 @@ if (empty($reshook)) if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -657,8 +649,7 @@ if (empty($reshook)) if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -682,8 +673,7 @@ if (empty($reshook)) if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -705,8 +695,7 @@ if (empty($reshook)) { dol_include_once('/'.$fromElement.'/class/'.$fromElement.'.class.php'); $lineClassName = 'OrderLine'; - } - elseif ($fromElement == 'propal') + } elseif ($fromElement == 'propal') { dol_include_once('/comm/'.$fromElement.'/class/'.$fromElement.'.class.php'); $lineClassName = 'PropaleLigne'; @@ -758,8 +747,7 @@ if (empty($reshook)) } else { $error++; } - } - else { + } else { $error++; } } @@ -798,9 +786,7 @@ if (empty($reshook)) $ret = $object->fetch($id); // Reload to get new records $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); } - } - - elseif ($action == "setabsolutediscount" && $usercancreate) { + } elseif ($action == "setabsolutediscount" && $usercancreate) { if ($_POST["remise_id"]) { if ($object->id > 0) { $result = $object->insert_discount($_POST["remise_id"]); @@ -823,8 +809,7 @@ if (empty($reshook)) { $idprod = 0; $tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); - } - else { + } else { $idprod = GETPOST('idprod', 'int'); $tva_tx = ''; } @@ -956,8 +941,7 @@ if (empty($reshook)) if ($priceforthequantityarray['price_base_type'] == 'HT') { $pu_ht = $priceforthequantityarray['unitprice']; - } - else { + } else { $pu_ttc = $priceforthequantityarray['unitprice']; } // Note: the remise_percent or price by qty is used to set data on form, so we will use value from POST. @@ -981,8 +965,7 @@ if (empty($reshook)) if ($priceforthequantityarray['price_base_type'] == 'HT') { $pu_ht = $priceforthequantityarray['unitprice']; - } - else { + } else { $pu_ttc = $priceforthequantityarray['unitprice']; } // Note: the remise_percent or price by qty is used to set data on form, so we will use value from POST. @@ -1309,9 +1292,7 @@ if (empty($reshook)) } elseif ($action == 'updateline' && $usercancreate && GETPOST('cancel', 'alpha')) { header('Location: '.$_SERVER['PHP_SELF'].'?id='.$object->id); // Pour reaffichage de la fiche en cours d'edition exit(); - } - - elseif ($action == 'classin' && $usercancreate) { + } elseif ($action == 'classin' && $usercancreate) { // Set project $object->setProject(GETPOST('projectid', 'int')); } @@ -1329,13 +1310,9 @@ if (empty($reshook)) // Terms of payment elseif ($action == 'setconditions' && $usercancreate) { $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); - } - - elseif ($action == 'setremisepercent' && $usercancreate) { + } elseif ($action == 'setremisepercent' && $usercancreate) { $result = $object->set_remise_percent($user, $_POST['remise_percent']); - } - - elseif ($action == 'setremiseabsolue' && $usercancreate) { + } elseif ($action == 'setremiseabsolue' && $usercancreate) { $result = $object->set_remise_absolue($user, $_POST['remise_absolue']); } @@ -1362,9 +1339,7 @@ if (empty($reshook)) // shipping method elseif ($action == 'setshippingmethod' && $usercancreate) { $result = $object->setShippingMethod(GETPOST('shipping_method_id', 'int')); - } - - elseif ($action == 'update_extras') { + } elseif ($action == 'update_extras') { $object->oldcopy = dol_clone($object); // Fill array 'array_options' with data from update form @@ -1523,8 +1498,7 @@ if ($action == 'create') if (!empty($conf->global->MULTICURRENCY_USE_ORIGIN_TX) && !empty($objectsrc->multicurrency_tx)) $currency_tx = $objectsrc->multicurrency_tx; } } - } - else { + } else { if (!empty($conf->multicurrency->enabled) && !empty($soc->multicurrency_code)) $currency_code = $soc->multicurrency_code; } @@ -2298,8 +2272,7 @@ if ($action == 'create') if ($action != 'editincoterm') { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); - } - else { + } else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?id='.$object->id); } print ''; @@ -2466,8 +2439,7 @@ if ($action == 'create') if ($usercanvalidate) { print '
'.$langs->trans('Validate').''; - } - else print ''.$langs->trans('Validate').''; + } else print ''.$langs->trans('Validate').''; } // Create event /*if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD)) // Add hidden condition because this is not a "workflow" action so should appears somewhere else on page. @@ -2542,8 +2514,7 @@ if ($action == 'create') if ($usercanclose) { print 'socid.'">'.$langs->trans("ClassifyBilled").''; - } - else { + } else { print ''.$langs->trans("ClassifyBilled").''; } } diff --git a/htdocs/comm/propal/class/api_proposals.class.php b/htdocs/comm/propal/class/api_proposals.class.php index 563e71d79d3..8efc4aa5c19 100644 --- a/htdocs/comm/propal/class/api_proposals.class.php +++ b/htdocs/comm/propal/class/api_proposals.class.php @@ -220,8 +220,7 @@ class Proposals extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieve propal list : '.$db->lasterror()); } if (!count($obj_ret)) { @@ -456,8 +455,7 @@ class Proposals extends DolibarrApi $updateRes = $this->propal->deleteline($lineid); if ($updateRes > 0) { return $this->get($id); - } - else { + } else { throw new RestException(405, $this->propal->error); } } @@ -587,8 +585,7 @@ class Proposals extends DolibarrApi if ($this->propal->update(DolibarrApiAccess::$user) > 0) { return $this->get($id); - } - else { + } else { throw new RestException(500, $this->propal->error); } } diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 0827ddd64c7..5a8ddc31982 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -390,8 +390,7 @@ class Propal extends CommonObject if ($conf->global->PRODUIT_MULTIPRICES && $this->thirdparty->price_level) { $price = $prod->multiprices[$this->thirdparty->price_level]; - } - else { + } else { $price = $prod->price; } @@ -472,19 +471,16 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $line->error; $this->db->rollback(); return -2; } - } - else { + } else { $this->db->rollback(); return -2; } @@ -557,8 +553,7 @@ class Propal extends CommonObject if ($price_base_type == 'HT') { $pu = $pu_ht; - } - else { + } else { $pu = $pu_ttc; } @@ -710,20 +705,17 @@ class Propal extends CommonObject { $this->db->commit(); return $this->line->id; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->line->error; $this->db->rollback(); return -2; } - } - else { + } else { dol_syslog(get_class($this)."::addline status of proposal must be Draft to allow use of ->addline()", LOG_ERR); return -3; } @@ -909,15 +901,13 @@ class Propal extends CommonObject $this->db->commit(); return $result; - } - else { + } else { $this->error = $this->line->error; $this->db->rollback(); return -1; } - } - else { + } else { dol_syslog(get_class($this)."::updateline Erreur -2 Propal en mode incompatible pour cette action"); return -2; } @@ -949,13 +939,11 @@ class Propal extends CommonObject $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = 'ErrorDeleteLineNotAllowedByObjectStatus'; return -2; } @@ -1129,8 +1117,7 @@ class Propal extends CommonObject $error++; } } - } - else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) + } else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) { $origin_id = $tmp_origin_id; $ret = $this->add_object_linked($origin, $origin_id); @@ -1157,8 +1144,7 @@ class Propal extends CommonObject if (!is_object($this->lines[$i])) // If this->lines is not array of objects, coming from REST API { // Convert into object this->lines[$i]. $line = (object) $this->lines[$i]; - } - else { + } else { $line = $this->lines[$i]; } // Reset fk_parent_line for line that are not child lines or special product @@ -1254,14 +1240,12 @@ class Propal extends CommonObject if ($result < 0) { $error++; } // End call triggers } - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } } - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } @@ -1271,13 +1255,11 @@ class Propal extends CommonObject $this->db->commit(); dol_syslog(get_class($this)."::create done id=".$this->id); return $this->id; - } - else { + } else { $this->db->rollback(); return -2; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -1357,8 +1339,7 @@ class Propal extends CommonObject $object->ref_client = ''; // TODO Change product price if multi-prices - } - else { + } else { $objsoc->fetch($object->socid); } @@ -1426,8 +1407,7 @@ class Propal extends CommonObject { $this->db->commit(); return $object->id; - } - else { + } else { $this->db->rollback(); return -1; } @@ -1481,8 +1461,7 @@ class Propal extends CommonObject if ($ref) { $sql .= " WHERE p.entity IN (".getEntity('propal').")"; // Dont't use entity if you use rowid $sql .= " AND p.ref='".$this->db->escape($ref)."'"; - } - else $sql .= " WHERE p.rowid=".$rowid; + } else $sql .= " WHERE p.rowid=".$rowid; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $resql = $this->db->query($sql); @@ -1592,8 +1571,7 @@ class Propal extends CommonObject $this->error = "Record Not Found"; return 0; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -1687,8 +1665,7 @@ class Propal extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -1816,8 +1793,7 @@ class Propal extends CommonObject $this->db->free($result); return $num; - } - else { + } else { $this->error = $this->db->lasterror(); return -3; } @@ -1865,8 +1841,7 @@ class Propal extends CommonObject if (!$error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life { $num = $this->getNextNumRef($soc); - } - else { + } else { $num = $this->ref; } $this->newref = dol_sanitizeFileName($num); @@ -1939,8 +1914,7 @@ class Propal extends CommonObject $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -2002,8 +1976,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2063,8 +2036,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2124,8 +2096,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2186,8 +2157,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2196,8 +2166,7 @@ class Propal extends CommonObject $this->db->rollback(); return -1 * $error; } - } - else { + } else { $error_str = 'Propal status do not meet requirement '.$this->statut; dol_syslog(__METHOD__.$error_str, LOG_ERR); $this->error = $error_str; @@ -2257,8 +2226,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2267,8 +2235,7 @@ class Propal extends CommonObject $this->db->rollback(); return -1 * $error; } - } - else { + } else { $error_str = 'Propal status do not meet requirement '.$this->statut; dol_syslog(__METHOD__.$error_str, LOG_ERR); $this->error = $error_str; @@ -2324,8 +2291,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2334,8 +2300,7 @@ class Propal extends CommonObject $this->db->rollback(); return -1 * $error; } - } - else { + } else { return -1; } } @@ -2392,8 +2357,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2459,8 +2423,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2526,8 +2489,7 @@ class Propal extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -2620,8 +2582,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->statut = $this->oldcopy->statut; $this->date_cloture = $this->oldcopy->date_cloture; $this->note_private = $this->oldcopy->note_private; @@ -2629,8 +2590,7 @@ class Propal extends CommonObject $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -2679,8 +2639,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2745,8 +2704,7 @@ class Propal extends CommonObject $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2812,12 +2770,10 @@ class Propal extends CommonObject if ($shortlist == 1) { $ga[$obj->propalid] = $obj->ref; - } - elseif ($shortlist == 2) + } elseif ($shortlist == 2) { $ga[$obj->propalid] = $obj->ref.' ('.$obj->name.')'; - } - else { + } else { $ga[$i]['id'] = $obj->propalid; $ga[$i]['ref'] = $obj->ref; $ga[$i]['name'] = $obj->name; @@ -2827,8 +2783,7 @@ class Propal extends CommonObject } } return $ga; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -2921,12 +2876,10 @@ class Propal extends CommonObject } } return $ga; - } - else { + } else { return -1; } - } - else return $ga; + } else return $ga; } /** @@ -3023,26 +2976,22 @@ class Propal extends CommonObject dol_syslog(get_class($this)."::delete ".$this->id." by ".$user->id, LOG_DEBUG); $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return 0; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -3; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; } - } - else { + } else { $this->db->rollback(); return -1; } @@ -3096,8 +3045,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -3106,8 +3054,7 @@ class Propal extends CommonObject $this->db->rollback(); return -1 * $error; } - } - else { + } else { $error_str = 'Propal status do not meet requirement '.$this->statut; dol_syslog(__METHOD__.$error_str, LOG_ERR); $this->error = $error_str; @@ -3166,8 +3113,7 @@ class Propal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -3176,8 +3122,7 @@ class Propal extends CommonObject $this->db->rollback(); return -1 * $error; } - } - else { + } else { $error_str = 'Propal status do not meet requirement '.$this->statut; dol_syslog(__METHOD__.$error_str, LOG_ERR); $this->error = $error_str; @@ -3234,8 +3179,7 @@ class Propal extends CommonObject } } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -3370,8 +3314,7 @@ class Propal extends CommonObject } return $response; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -3449,8 +3392,7 @@ class Propal extends CommonObject $line->total_ttc = 60; $line->total_tva = 10; $line->remise_percent = 50; - } - else { + } else { $line->total_ht = 100; $line->total_ttc = 120; $line->total_tva = 20; @@ -3509,8 +3451,7 @@ class Propal extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -3560,14 +3501,12 @@ class Propal extends CommonObject if ($numref != "") { return $numref; - } - else { + } else { $this->error = $obj->error; //dol_print_error($db,"Propale::getNextNumRef ".$obj->error); return ""; } - } - else { + } else { $langs->load("errors"); print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Proposal")); return ""; @@ -3615,14 +3554,11 @@ class Propal extends CommonObject if ($option == '') { $url = DOL_URL_ROOT.'/comm/propal/card.php?id='.$this->id.$get_params; - } - elseif ($option == 'compta') { // deprecated + } elseif ($option == 'compta') { // deprecated $url = DOL_URL_ROOT.'/comm/propal/card.php?id='.$this->id.$get_params; - } - elseif ($option == 'expedition') { + } elseif ($option == 'expedition') { $url = DOL_URL_ROOT.'/expedition/propal.php?id='.$this->id.$get_params; - } - elseif ($option == 'document') { + } elseif ($option == 'document') { $url = DOL_URL_ROOT.'/comm/propal/document.php?id='.$this->id.$get_params; } @@ -3970,12 +3906,10 @@ class PropaleLigne extends CommonObjectLine $this->db->free($result); return 1; - } - else { + } else { return 0; } - } - else { + } else { return -1; } } @@ -4024,8 +3958,7 @@ class PropaleLigne extends CommonObjectLine if (($result = $this->defineBuyPrice($this->subprice, $this->remise_percent, $this->fk_product)) < 0) { return $result; - } - else { + } else { $this->pa_ht = $result; } } @@ -4112,8 +4045,7 @@ class PropaleLigne extends CommonObjectLine $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; @@ -4165,8 +4097,7 @@ class PropaleLigne extends CommonObjectLine $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; @@ -4213,8 +4144,7 @@ class PropaleLigne extends CommonObjectLine if (($result = $this->defineBuyPrice($this->subprice, $this->remise_percent, $this->fk_product)) < 0) { return $result; - } - else { + } else { $this->pa_ht = $result; } } @@ -4291,8 +4221,7 @@ class PropaleLigne extends CommonObjectLine $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -2; @@ -4325,8 +4254,7 @@ class PropaleLigne extends CommonObjectLine { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -2; diff --git a/htdocs/comm/propal/contact.php b/htdocs/comm/propal/contact.php index ac6f500cce2..da23b4fc2bc 100644 --- a/htdocs/comm/propal/contact.php +++ b/htdocs/comm/propal/contact.php @@ -55,8 +55,7 @@ if ($id > 0 || !empty($ref)) $langs->load("errors"); setEventMessages($langs->trans('ErrorRecordNotFound'), null, 'errors'); $error++; - } - elseif ($ret < 0) + } elseif ($ret < 0) { setEventMessages($object->error, $object->errors, 'errors'); $error++; @@ -65,8 +64,7 @@ if ($id > 0 || !empty($ref)) if (!$error) { $object->fetch_thirdparty(); -} -else { +} else { header('Location: '.DOL_URL_ROOT.'/comm/propal/list.php'); exit; } @@ -88,14 +86,12 @@ if ($action == 'addcontact' && $user->rights->propale->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -119,8 +115,7 @@ elseif ($action == 'deletecontact' && $user->rights->propale->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/comm/propal/document.php b/htdocs/comm/propal/document.php index f9d89ca981d..70c67566091 100644 --- a/htdocs/comm/propal/document.php +++ b/htdocs/comm/propal/document.php @@ -179,8 +179,7 @@ if ($object->id > 0) $permtoedit = $user->rights->propal->creer; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/comm/propal/index.php b/htdocs/comm/propal/index.php index d456a507f19..9e138c52cbe 100644 --- a/htdocs/comm/propal/index.php +++ b/htdocs/comm/propal/index.php @@ -163,8 +163,7 @@ if ($resql) //print ''.$langs->trans("Total").' ('.$langs->trans("CustomersOrdersRunning").')'.$totalinprocess.''; print ''.$langs->trans("Total").''.$total.''; print "
"; -} -else { +} else { dol_print_error($db); } @@ -219,8 +218,7 @@ if (!empty($conf->propal->enabled)) if ($num > $nbofloop) { print ''.$langs->trans("XMoreLines", ($num - $nbofloop)).""; - } - elseif ($total > 0) + } elseif ($total > 0) { print ''.$langs->trans("Total").''.price($total).""; } @@ -309,8 +307,7 @@ if ($resql) } print ""; print "
"; -} -else dol_print_error($db); +} else dol_print_error($db); /* @@ -393,16 +390,14 @@ if (!empty($conf->propal->enabled) && $user->rights->propale->lire) if ($num > $nbofloop) { print ''.$langs->trans("XMoreLines", ($num - $nbofloop)).""; - } - elseif ($total > 0) + } elseif ($total > 0) { print ''.$langs->trans("Total")."".price($total)." "; } print ""; print "
"; } - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 9c31bd72bf7..6710ac56b58 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -414,8 +414,7 @@ if ($resql) $soc->fetch($socid); $title = $langs->trans('ListOfProposals').' - '.$soc->name; if (empty($search_societe)) $search_societe = $soc->name; - } - else { + } else { $title = $langs->trans('ListOfProposals'); } @@ -1027,8 +1026,7 @@ if ($resql) { print ''.dol_print_date($db->jdate($obj->dfv), 'day'); print ''; - } - else { + } else { print ' '; } if (!$i) $totalarray['nbfield']++; @@ -1040,8 +1038,7 @@ if ($resql) { print ''.dol_print_date($db->jdate($obj->ddelivery), 'day'); print ''; - } - else { + } else { print ' '; } if (!$i) $totalarray['nbfield']++; @@ -1166,8 +1163,7 @@ if ($resql) if ($nbofsalesrepresentative > 3) // We print only number { print $nbofsalesrepresentative; - } - elseif ($nbofsalesrepresentative > 0) + } elseif ($nbofsalesrepresentative > 0) { $userstatic = new User($db); $j = 0; @@ -1189,8 +1185,7 @@ if ($resql) } } //else print $langs->trans("NoSalesRepresentativeAffected"); - } - else { + } else { print ' '; } print ''; @@ -1275,8 +1270,7 @@ if ($resql) $delallowed = $user->rights->propal->creer; print $formfile->showdocuments('massfilesarea_proposals', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php index c4f92d36b6a..00a79f3c1be 100644 --- a/htdocs/comm/propal/stats/index.php +++ b/htdocs/comm/propal/stats/index.php @@ -112,8 +112,7 @@ if (!$user->rights->societe->client->voir || $user->socid) { $filenamenb = $dir.'/proposalsnbinyear-'.$user->id.'-'.$year.'.png'; $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsnbinyear-'.$user->id.'-'.$year.'.png'; -} -else { +} else { $filenamenb = $dir.'/proposalsnbinyear-'.$year.'.png'; $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsnbinyear-'.$year.'.png'; } @@ -151,8 +150,7 @@ if (!$user->rights->societe->client->voir || $user->socid) { $filenameamount = $dir.'/proposalsamountinyear-'.$user->id.'-'.$year.'.png'; $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsamountinyear-'.$user->id.'-'.$year.'.png'; -} -else { +} else { $filenameamount = $dir.'/proposalsamountinyear-'.$year.'.png'; $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsamountinyear-'.$year.'.png'; } @@ -190,8 +188,7 @@ if (!$user->rights->societe->client->voir || $user->socid) $filename_avg = $dir.'/ordersaverage-'.$user->id.'-'.$year.'.png'; if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$user->id.'-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$user->id.'-'.$year.'.png'; -} -else { +} else { $filename_avg = $dir.'/ordersaverage-'.$year.'.png'; if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$year.'.png'; @@ -344,8 +341,7 @@ print '
'; // Show graphs print '
'; -if ($mesg) { print $mesg; } -else { +if ($mesg) { print $mesg; } else { print $px1->show(); print "
\n"; print $px2->show(); diff --git a/htdocs/comm/prospect/index.php b/htdocs/comm/prospect/index.php index 386e27f0ec3..b49f334dadd 100644 --- a/htdocs/comm/prospect/index.php +++ b/htdocs/comm/prospect/index.php @@ -223,8 +223,7 @@ if (!empty($conf->propal->enabled) && $user->rights->propale->lire) } print "

"; } - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/comm/prospect/recap-prospect.php b/htdocs/comm/prospect/recap-prospect.php index 2edc331d71e..e393f5fce56 100644 --- a/htdocs/comm/prospect/recap-prospect.php +++ b/htdocs/comm/prospect/recap-prospect.php @@ -83,8 +83,7 @@ if ($socid > 0) print $langs->trans("FeatureNotYetAvailable"); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/comm/recap-client.php b/htdocs/comm/recap-client.php index 170eb5b247a..284c248f1f0 100644 --- a/htdocs/comm/recap-client.php +++ b/htdocs/comm/recap-client.php @@ -83,8 +83,7 @@ if ($socid > 0) print $langs->trans("FeatureNotYetAvailable"); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/comm/remise.php b/htdocs/comm/remise.php index a735cd07028..a7517c9cb60 100644 --- a/htdocs/comm/remise.php +++ b/htdocs/comm/remise.php @@ -70,13 +70,11 @@ if (GETPOST('action', 'aZ09') == 'setremise') { header("Location: ".$backtopage); exit; - } - else { + } else { header("Location: remise.php?id=".$_GET["id"]); exit; } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -250,14 +248,12 @@ if ($socid > 0) print ''; $i++; } - } - else { + } else { print ''.$langs->trans("None").''; } $db->free($resql); print ""; - } - else { + } else { dol_print_error($db); } } @@ -307,14 +303,12 @@ if ($socid > 0) print ''; $i++; } - } - else { + } else { print ''.$langs->trans("None").''; } $db->free($resql); print ""; - } - else { + } else { dol_print_error($db); } diff --git a/htdocs/comm/remx.php b/htdocs/comm/remx.php index 62b38f9e390..ffd4c1738c0 100644 --- a/htdocs/comm/remx.php +++ b/htdocs/comm/remx.php @@ -105,8 +105,7 @@ if ($action == 'confirm_split' && GETPOST("confirm", "alpha") == 'yes') { $newdiscount1->description = $discount->description; $newdiscount2->description = $discount->description; - } - else { + } else { $newdiscount1->description = $discount->description.' (1)'; $newdiscount2->description = $discount->description.' (2)'; } @@ -149,8 +148,7 @@ if ($action == 'confirm_split' && GETPOST("confirm", "alpha") == 'yes') $db->commit(); header("Location: ".$_SERVER["PHP_SELF"].'?id='.$id.($backtopage ? '&backtopage='.urlencode($backtopage) : '')); // To avoid pb whith back exit; - } - else { + } else { $db->rollback(); } } @@ -187,19 +185,16 @@ if ($action == 'setremise' && $user->rights->societe->creer) { header("Location: ".$backtopage.'&discountid='.$discountid); exit; - } - else { + } else { header("Location: remx.php?id=".$id); exit; } - } - else { + } else { $error++; setEventMessages($soc->error, $soc->errors, 'errors'); } } - } - else { + } else { setEventMessages($langs->trans("ErrorFieldFormat", $langs->transnoentitiesnoconv("AmountHT")), null, 'errors'); } } @@ -219,8 +214,7 @@ if (GETPOST('action', 'aZ09') == 'confirm_remove' && GETPOST("confirm") == 'yes' $db->commit(); header("Location: ".$_SERVER["PHP_SELF"].'?id='.$id); // To avoid pb whith back exit; - } - else { + } else { setEventMessages($discount->error, $discount->errors, 'errors'); $db->rollback(); } @@ -294,8 +288,7 @@ if ($socid > 0) $obj = $db->fetch_object($resql); $remise_all += $obj->amount; if ($obj->fk_user == $user->id) $remise_user += $obj->amount; - } - else { + } else { dol_print_error($db); } @@ -325,8 +318,7 @@ if ($socid > 0) $obj = $db->fetch_object($resql); $remise_all += $obj->amount; if ($obj->fk_user == $user->id) $remise_user += $obj->amount; - } - else { + } else { dol_print_error($db); } @@ -481,8 +473,7 @@ if ($socid > 0) $facturestatic->type = $obj->type; print preg_replace('/\(CREDIT_NOTE\)/', $langs->trans("CreditNote"), $obj->description).' '.$facturestatic->getNomURl(1); print ''; - } - elseif (preg_match('/\(DEPOSIT\)/', $obj->description)) + } elseif (preg_match('/\(DEPOSIT\)/', $obj->description)) { print ''; $facturestatic->id = $obj->fk_facture_source; @@ -490,8 +481,7 @@ if ($socid > 0) $facturestatic->type = $obj->type; print preg_replace('/\(DEPOSIT\)/', $langs->trans("InvoiceDeposit"), $obj->description).' '.$facturestatic->getNomURl(1); print ''; - } - elseif (preg_match('/\(EXCESS RECEIVED\)/', $obj->description)) + } elseif (preg_match('/\(EXCESS RECEIVED\)/', $obj->description)) { print ''; $facturestatic->id = $obj->fk_facture_source; @@ -499,8 +489,7 @@ if ($socid > 0) $facturestatic->type = $obj->type; print preg_replace('/\(EXCESS RECEIVED\)/', $langs->trans("ExcessReceived"), $obj->description).' '.$facturestatic->getNomURl(1); print ''; - } - else { + } else { print ''; print $obj->description; print ''; @@ -526,8 +515,7 @@ if ($socid > 0) print 'rowid.($backtopage ? '&backtopage='.urlencode($backtopage) : '').'">'.img_split($langs->trans("SplitDiscount")).''; print 'rowid.($backtopage ? '&backtopage='.urlencode($backtopage) : '').'">'.img_delete($langs->trans("RemoveDiscount")).''; print ''; - } - else print ' '; + } else print ' '; print ''; if ($_GET["action"] == 'split' && GETPOST('remid') == $obj->rowid) @@ -537,8 +525,7 @@ if ($socid > 0) } $i++; } - } - else { + } else { $colspan = 8; if (!empty($conf->multicurrency->enabled)) $colspan += 2; print ''.$langs->trans("None").''; @@ -559,8 +546,7 @@ if ($socid > 0) $langs->load("dict"); print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&remid='.$showconfirminfo['rowid'].($backtopage ? '&backtopage='.urlencode($backtopage) : ''), $langs->trans('SplitDiscount'), $langs->trans('ConfirmSplitDiscount', price($showconfirminfo['amount_ttc']), $langs->transnoentities("Currency".$conf->currency)), 'confirm_split', $formquestion, '', 0); } - } - else { + } else { dol_print_error($db); } } @@ -635,8 +621,7 @@ if ($socid > 0) $facturefournstatic->type = $obj->type; print preg_replace('/\(CREDIT_NOTE\)/', $langs->trans("CreditNote"), $obj->description).' '.$facturefournstatic->getNomURl(1); print ''; - } - elseif (preg_match('/\(DEPOSIT\)/', $obj->description)) + } elseif (preg_match('/\(DEPOSIT\)/', $obj->description)) { print ''; $facturefournstatic->id = $obj->fk_invoice_supplier_source; @@ -644,8 +629,7 @@ if ($socid > 0) $facturefournstatic->type = $obj->type; print preg_replace('/\(DEPOSIT\)/', $langs->trans("InvoiceDeposit"), $obj->description).' '.$facturefournstatic->getNomURl(1); print ''; - } - elseif (preg_match('/\(EXCESS PAID\)/', $obj->description)) + } elseif (preg_match('/\(EXCESS PAID\)/', $obj->description)) { print ''; $facturefournstatic->id = $obj->fk_invoice_supplier_source; @@ -653,8 +637,7 @@ if ($socid > 0) $facturefournstatic->type = $obj->type; print preg_replace('/\(EXCESS PAID\)/', $langs->trans("ExcessPaid"), $obj->description).' '.$facturefournstatic->getNomURl(1); print ''; - } - else { + } else { print ''; print $obj->description; print ''; @@ -680,8 +663,7 @@ if ($socid > 0) print 'rowid.($backtopage ? '&backtopage='.urlencode($backtopage) : '').'">'.img_split($langs->trans("SplitDiscount")).''; print 'rowid.($backtopage ? '&backtopage='.urlencode($backtopage) : '').'">'.img_delete($langs->trans("RemoveDiscount")).''; print ''; - } - else print ' '; + } else print ' '; print ''; if ($_GET["action"] == 'split' && GETPOST('remid') == $obj->rowid) @@ -691,8 +673,7 @@ if ($socid > 0) } $i++; } - } - else { + } else { $colspan = 8; if (!empty($conf->multicurrency->enabled)) $colspan += 2; print ''.$langs->trans("None").''; @@ -713,8 +694,7 @@ if ($socid > 0) $langs->load("dict"); print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&remid='.$showconfirminfo['rowid'].($backtopage ? '&backtopage='.urlencode($backtopage) : ''), $langs->trans('SplitDiscount'), $langs->trans('ConfirmSplitDiscount', price($showconfirminfo['amount_ttc']), $langs->transnoentities("Currency".$conf->currency)), 'confirm_split', $formquestion, 0, 0); } - } - else { + } else { dol_print_error($db); } @@ -843,8 +823,7 @@ if ($socid > 0) $facturestatic->type = $obj->type; print preg_replace('/\(CREDIT_NOTE\)/', $langs->trans("CreditNote"), $obj->description).' '.$facturestatic->getNomURl(1); print ''; - } - elseif (preg_match('/\(DEPOSIT\)/', $obj->description)) + } elseif (preg_match('/\(DEPOSIT\)/', $obj->description)) { print ''; $facturestatic->id = $obj->fk_facture_source; @@ -852,8 +831,7 @@ if ($socid > 0) $facturestatic->type = $obj->type; print preg_replace('/\(DEPOSIT\)/', $langs->trans("InvoiceDeposit"), $obj->description).' '.$facturestatic->getNomURl(1); print ''; - } - elseif (preg_match('/\(EXCESS RECEIVED\)/', $obj->description)) + } elseif (preg_match('/\(EXCESS RECEIVED\)/', $obj->description)) { print ''; $facturestatic->id = $obj->fk_facture_source; @@ -861,8 +839,7 @@ if ($socid > 0) $facturestatic->type = $obj->type; print preg_replace('/\(EXCESS RECEIVED\)/', $langs->trans("Invoice"), $obj->description).' '.$facturestatic->getNomURl(1); print ''; - } - else { + } else { print ''; print $obj->description; print ''; @@ -891,8 +868,7 @@ if ($socid > 0) print ''; $i++; } - } - else { + } else { $colspan = 8; if (!empty($conf->multicurrency->enabled)) $colspan += 2; print ''.$langs->trans("None").''; @@ -900,8 +876,7 @@ if ($socid > 0) print ""; print '
'; - } - else { + } else { dol_print_error($db); } } @@ -1018,8 +993,7 @@ if ($socid > 0) $facturefournstatic->type = $obj->type; print preg_replace('/\(CREDIT_NOTE\)/', $langs->trans("CreditNote"), $obj->description).' '.$facturefournstatic->getNomURl(1); print ''; - } - elseif (preg_match('/\(DEPOSIT\)/', $obj->description)) + } elseif (preg_match('/\(DEPOSIT\)/', $obj->description)) { print ''; $facturefournstatic->id = $obj->fk_invoice_supplier_source; @@ -1027,8 +1001,7 @@ if ($socid > 0) $facturefournstatic->type = $obj->type; print preg_replace('/\(DEPOSIT\)/', $langs->trans("InvoiceDeposit"), $obj->description).' '.$facturefournstatic->getNomURl(1); print ''; - } - elseif (preg_match('/\(EXCESS PAID\)/', $obj->description)) + } elseif (preg_match('/\(EXCESS PAID\)/', $obj->description)) { print ''; $facturefournstatic->id = $obj->fk_invoice_supplier_source; @@ -1036,8 +1009,7 @@ if ($socid > 0) $facturefournstatic->type = $obj->type; print preg_replace('/\(EXCESS PAID\)/', $langs->trans("Invoice"), $obj->description).' '.$facturefournstatic->getNomURl(1); print ''; - } - else { + } else { print ''; print $obj->description; print ''; @@ -1065,8 +1037,7 @@ if ($socid > 0) print ''; $i++; } - } - else { + } else { $colspan = 8; if (!empty($conf->multicurrency->enabled)) $colspan += 2; print ''.$langs->trans("None").''; @@ -1074,8 +1045,7 @@ if ($socid > 0) print ""; print '
'; - } - else { + } else { dol_print_error($db); } diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 2dfb0b67c6e..a8544c94b70 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -154,8 +154,7 @@ if (empty($reshook)) if (1 == 0 && !GETPOST('clone_content') && !GETPOST('clone_receivers')) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); - } - else { + } else { if ($object->id > 0) { // Because createFromClone modifies the object, we must clone it so that we can restore it later @@ -166,8 +165,7 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $object = $orig; $action = ''; @@ -185,8 +183,7 @@ if (empty($reshook)) if ($result > 0) { setEventMessages($langs->trans('OrderReopened', $object->ref), null); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -200,8 +197,7 @@ if (empty($reshook)) { header('Location: list.php?restore_lastsearch_values=1'); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -230,8 +226,7 @@ if (empty($reshook)) header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -497,17 +492,14 @@ if (empty($reshook)) setEventMessages($object->error, $object->errors, 'errors'); } } - } - - elseif ($action == 'classifybilled' && $usercancreate) + } elseif ($action == 'classifybilled' && $usercancreate) { $ret = $object->classifyBilled($user); if ($ret < 0) { setEventMessages($object->error, $object->errors, 'errors'); } - } - elseif ($action == 'classifyunbilled' && $usercancreate) + } elseif ($action == 'classifyunbilled' && $usercancreate) { $ret = $object->classifyUnBilled(); if ($ret < 0) { @@ -522,17 +514,13 @@ if (empty($reshook)) { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'setremise' && $usercancreate) { + } elseif ($action == 'setremise' && $usercancreate) { $result = $object->set_remise($user, GETPOST('remise')); if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'setabsolutediscount' && $usercancreate) { + } elseif ($action == 'setabsolutediscount' && $usercancreate) { if (GETPOST('remise_id')) { if ($object->id > 0) { $object->insert_discount(GETPOST('remise_id')); @@ -540,9 +528,7 @@ if (empty($reshook)) dol_print_error($db, $object->error); } } - } - - elseif ($action == 'setdate' && $usercancreate) { + } elseif ($action == 'setdate' && $usercancreate) { // print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; $date = dol_mktime(0, 0, 0, GETPOST('order_month'), GETPOST('order_day'), GETPOST('order_year')); @@ -550,9 +536,7 @@ if (empty($reshook)) if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'setdate_livraison' && $usercancreate) { + } elseif ($action == 'setdate_livraison' && $usercancreate) { // print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; $datelivraison = dol_mktime(0, 0, 0, GETPOST('liv_month'), GETPOST('liv_day'), GETPOST('liv_year')); @@ -560,9 +544,7 @@ if (empty($reshook)) if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'setmode' && $usercancreate) { + } elseif ($action == 'setmode' && $usercancreate) { $result = $object->setPaymentMethods(GETPOST('mode_reglement_id', 'int')); if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); @@ -576,21 +558,15 @@ if (empty($reshook)) // Multicurrency rate elseif ($action == 'setmulticurrencyrate' && $usercancreate) { $result = $object->setMulticurrencyRate(price2num(GETPOST('multicurrency_tx'))); - } - - elseif ($action == 'setavailability' && $usercancreate) { + } elseif ($action == 'setavailability' && $usercancreate) { $result = $object->availability(GETPOST('availability_id')); if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); - } - - elseif ($action == 'setdemandreason' && $usercancreate) { + } elseif ($action == 'setdemandreason' && $usercancreate) { $result = $object->demand_reason(GETPOST('demand_reason_id')); if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); - } - - elseif ($action == 'setconditions' && $usercancreate) { + } elseif ($action == 'setconditions' && $usercancreate) { $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); if ($result < 0) { dol_print_error($db, $object->error); @@ -643,13 +619,9 @@ if (empty($reshook)) if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'setremisepercent' && $usercancreate) { + } elseif ($action == 'setremisepercent' && $usercancreate) { $result = $object->set_remise($user, GETPOST('remise_percent')); - } - - elseif ($action == 'setremiseabsolue' && $usercancreate) { + } elseif ($action == 'setremiseabsolue' && $usercancreate) { $result = $object->set_remise_absolue($user, GETPOST('remise_absolue')); } @@ -669,8 +641,7 @@ if (empty($reshook)) { $idprod = 0; $tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); - } - else { + } else { $idprod = GETPOST('idprod', 'int'); $tva_tx = ''; } @@ -718,8 +689,7 @@ if (empty($reshook)) if ($res = $prodcomb->fetchByProductCombination2ValuePairs($idprod, $combinations)) { $idprod = $res->fk_product_child; - } - else { + } else { setEventMessages($langs->trans('ErrorProductCombinationNotFound'), null, 'errors'); $error++; } @@ -787,8 +757,7 @@ if (empty($reshook)) $tva_npr = $prodcustprice->lines[0]->recuperableonly; if (empty($tva_tx)) $tva_npr = 0; } - } - else { + } else { setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); } } @@ -808,8 +777,7 @@ if (empty($reshook)) if ($priceforthequantityarray['price_base_type'] == 'HT') { $pu_ht = $priceforthequantityarray['unitprice']; - } - else { + } else { $pu_ttc = $priceforthequantityarray['unitprice']; } // Note: the remise_percent or price by qty is used to set data on form, so we will use value from POST. @@ -832,8 +800,7 @@ if (empty($reshook)) if ($priceforthequantityarray['price_base_type'] == 'HT') { $pu_ht = $priceforthequantityarray['unitprice']; - } - else { + } else { $pu_ttc = $priceforthequantityarray['unitprice']; } // Note: the remise_percent or price by qty is used to set data on form, so we will use value from POST. @@ -1146,9 +1113,7 @@ if (empty($reshook)) } elseif ($action == 'updateline' && $usercancreate && GETPOST('cancel', 'alpha') == $langs->trans('Cancel')) { header('Location: '.$_SERVER['PHP_SELF'].'?id='.$object->id); // Pour reaffichage de la fiche en cours d'edition exit(); - } - - elseif ($action == 'confirm_validate' && $confirm == 'yes' && $usercanvalidate) + } elseif ($action == 'confirm_validate' && $confirm == 'yes' && $usercanvalidate) { $idwarehouse = GETPOST('idwarehouse'); @@ -1156,8 +1121,7 @@ if (empty($reshook)) if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) { $qualified_for_stock_change = $object->hasProductsOrServices(2); - } - else { + } else { $qualified_for_stock_change = $object->hasProductsOrServices(1); } @@ -1192,8 +1156,7 @@ if (empty($reshook)) $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -1207,8 +1170,7 @@ if (empty($reshook)) if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) { $qualified_for_stock_change = $object->hasProductsOrServices(2); - } - else { + } else { $qualified_for_stock_change = $object->hasProductsOrServices(1); } @@ -1245,16 +1207,12 @@ if (empty($reshook)) } } } - } - - elseif ($action == 'confirm_shipped' && $confirm == 'yes' && $usercanclose) { + } elseif ($action == 'confirm_shipped' && $confirm == 'yes' && $usercanclose) { $result = $object->cloture($user); if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'confirm_cancel' && $confirm == 'yes' && $usercanvalidate) + } elseif ($action == 'confirm_cancel' && $confirm == 'yes' && $usercanvalidate) { $idwarehouse = GETPOST('idwarehouse'); @@ -1262,8 +1220,7 @@ if (empty($reshook)) if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) { $qualified_for_stock_change = $object->hasProductsOrServices(2); - } - else { + } else { $qualified_for_stock_change = $object->hasProductsOrServices(1); } @@ -1334,8 +1291,7 @@ if (empty($reshook)) { dol_include_once('/'.$fromElement.'/class/'.$fromElement.'.class.php'); $lineClassName = 'OrderLine'; - } - elseif ($fromElement == 'propal') + } elseif ($fromElement == 'propal') { dol_include_once('/comm/'.$fromElement.'/class/'.$fromElement.'.class.php'); $lineClassName = 'PropaleLigne'; @@ -1387,8 +1343,7 @@ if (empty($reshook)) } else { $error++; } - } - else { + } else { $error++; } } @@ -1518,12 +1473,10 @@ if ($action == 'create' && $usercancreate) // For compatibility if ($element == 'order' || $element == 'commande') { $element = $subelement = 'commande'; - } - elseif ($element == 'propal') { + } elseif ($element == 'propal') { $element = 'comm/propal'; $subelement = 'propal'; - } - elseif ($element == 'contract') { + } elseif ($element == 'contract') { $element = $subelement = 'contrat'; } @@ -1569,8 +1522,7 @@ if ($action == 'create' && $usercancreate) // Object source contacts list $srccontactslist = $objectsrc->liste_contact(-1, 'external', 1); } - } - else { + } else { $cond_reglement_id = $soc->cond_reglement_id; $mode_reglement_id = $soc->mode_reglement_id; $fk_account = $soc->fk_account; @@ -1941,8 +1893,7 @@ if ($action == 'create' && $usercancreate) if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) { $qualified_for_stock_change = $object->hasProductsOrServices(2); - } - else { + } else { $qualified_for_stock_change = $object->hasProductsOrServices(1); } @@ -1972,8 +1923,7 @@ if ($action == 'create' && $usercancreate) if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) { $qualified_for_stock_change = $object->hasProductsOrServices(2); - } - else { + } else { $qualified_for_stock_change = $object->hasProductsOrServices(1); } @@ -2013,8 +1963,7 @@ if ($action == 'create' && $usercancreate) if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) { $qualified_for_stock_change = $object->hasProductsOrServices(2); - } - else { + } else { $qualified_for_stock_change = $object->hasProductsOrServices(1); } @@ -2368,8 +2317,7 @@ if ($action == 'create' && $usercancreate) if ($action != 'editincoterm') { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); - } - else { + } else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?id='.$object->id); } print ''; diff --git a/htdocs/commande/class/api_orders.class.php b/htdocs/commande/class/api_orders.class.php index 2ba223b3866..cc7db3db852 100644 --- a/htdocs/commande/class/api_orders.class.php +++ b/htdocs/commande/class/api_orders.class.php @@ -223,8 +223,7 @@ class Orders extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieve commande list : '.$db->lasterror()); } if (!count($obj_ret)) { @@ -569,8 +568,7 @@ class Orders extends DolibarrApi if ($this->commande->update(DolibarrApiAccess::$user) > 0) { return $this->get($id); - } - else { + } else { throw new RestException(500, $this->commande->error); } } @@ -698,7 +696,7 @@ class Orders extends DolibarrApi $result = $this->commande->set_reopen(DolibarrApiAccess::$user); if ($result < 0) { throw new RestException(405, $this->commande->error); - }elseif ($result == 0) { + } elseif ($result == 0) { throw new RestException(304); } diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 3f86ce9de5b..b4abfee0c03 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -406,14 +406,12 @@ class Commande extends CommonOrder if ($numref != "") { return $numref; - } - else { + } else { $this->error = $obj->error; //dol_print_error($this->db,get_class($this)."::getNextNumRef ".$obj->error); return ""; } - } - else { + } else { print $langs->trans("Error")." ".$langs->trans("Error_COMMANDE_ADDON_NotDefined"); return ""; } @@ -466,8 +464,7 @@ class Commande extends CommonOrder if (!$error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life { $num = $this->getNextNumRef($soc); - } - else { + } else { $num = $this->ref; } $this->newref = dol_sanitizeFileName($num); @@ -578,8 +575,7 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -664,8 +660,7 @@ class Commande extends CommonOrder $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -706,8 +701,7 @@ class Commande extends CommonOrder $result = $this->call_trigger('ORDER_REOPEN', $user); if ($result < 0) $error++; // End call triggers - } - else { + } else { $error++; $this->error = $this->db->lasterror(); dol_print_error($this->db); @@ -720,8 +714,7 @@ class Commande extends CommonOrder $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::set_reopen ".$errmsg, LOG_ERR); @@ -776,13 +769,11 @@ class Commande extends CommonOrder $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); @@ -852,8 +843,7 @@ class Commande extends CommonOrder $this->statut = self::STATUS_CANCELED; $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::cancel ".$errmsg, LOG_ERR); @@ -862,8 +852,7 @@ class Commande extends CommonOrder $this->db->rollback(); return -1 * $error; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -1089,8 +1078,7 @@ class Commande extends CommonOrder $error++; } } - } - else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) + } else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) { $origin_id = $tmp_origin_id; $ret = $this->add_object_linked($origin, $origin_id); @@ -1136,8 +1124,7 @@ class Commande extends CommonOrder //print $objcontact->code.'-'.$objcontact->source.'-'.$objcontact->fk_socpeople."\n"; $this->add_contact($objcontact->fk_socpeople, $objcontact->code, $objcontact->source); // May failed because of duplicate key or because code of contact type does not exists for new object } - } - else dol_print_error($resqlcontact); + } else dol_print_error($resqlcontact); } if (!$error) @@ -1158,20 +1145,17 @@ class Commande extends CommonOrder { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1 * $error; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; } } - } - else { + } else { dol_print_error($this->db); $this->db->rollback(); return -1; @@ -1274,8 +1258,7 @@ class Commande extends CommonOrder { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1; } @@ -1406,10 +1389,8 @@ class Commande extends CommonOrder $this->valid($user); } return $ret; - } - else return -1; - } - else return -1; + } else return -1; + } else return -1; } @@ -1489,8 +1470,7 @@ class Commande extends CommonOrder if ($price_base_type == 'HT') { $pu = $pu_ht; - } - else { + } else { $pu = $pu_ttc; } $label = trim($label); @@ -1649,20 +1629,17 @@ class Commande extends CommonOrder { $this->db->commit(); return $this->line->id; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->line->error; dol_syslog(get_class($this)."::addline error=".$this->error, LOG_ERR); $this->db->rollback(); return -2; } - } - else { + } else { dol_syslog(get_class($this)."::addline status of order must be Draft to allow use of ->addline()", LOG_ERR); return -3; } @@ -1901,13 +1878,11 @@ class Commande extends CommonOrder return -3; } return 1; - } - else { + } else { $this->error = 'Order with id '.$id.' not found sql='.$sql; return 0; } - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -1971,19 +1946,16 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $line->error; $this->db->rollback(); return -2; } - } - else { + } else { $this->db->rollback(); return -2; } @@ -2108,8 +2080,7 @@ class Commande extends CommonOrder $this->db->free($result); return 1; - } - else { + } else { $this->error = $this->db->error(); return -3; } @@ -2172,8 +2143,7 @@ class Commande extends CommonOrder $this->db->free($resql); return $nb; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -2218,8 +2188,7 @@ class Commande extends CommonOrder } $this->db->free($resql); return $num; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -2248,8 +2217,7 @@ class Commande extends CommonOrder { $row = $this->db->fetch_row($resql); return $row[0]; - } - else dol_print_error($this->db); + } else dol_print_error($this->db); } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -2335,31 +2303,26 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; } - } - else { + } else { $this->db->rollback(); $this->error = $line->error; return -1; } - } - else { + } else { $this->db->rollback(); return 0; } - } - else { + } else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; } - } - else { + } else { $this->error = 'ErrorDeleteLineNotAllowedByObjectStatus'; return -1; } @@ -2418,8 +2381,7 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2485,8 +2447,7 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2547,8 +2508,7 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2557,8 +2517,7 @@ class Commande extends CommonOrder $this->db->rollback(); return -1 * $error; } - } - else { + } else { return -2; } } @@ -2611,8 +2570,7 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2621,8 +2579,7 @@ class Commande extends CommonOrder $this->db->rollback(); return -1 * $error; } - } - else { + } else { return -2; } } @@ -2679,12 +2636,10 @@ class Commande extends CommonOrder if ($shortlist == 1) { $ga[$obj->cid] = $obj->ref; - } - elseif ($shortlist == 2) + } elseif ($shortlist == 2) { $ga[$obj->cid] = $obj->ref.' ('.$obj->name.')'; - } - else { + } else { $ga[$i]['id'] = $obj->cid; $ga[$i]['ref'] = $obj->ref; $ga[$i]['name'] = $obj->name; @@ -2693,8 +2648,7 @@ class Commande extends CommonOrder } } return $ga; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -2748,8 +2702,7 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2758,8 +2711,7 @@ class Commande extends CommonOrder $this->db->rollback(); return -1 * $error; } - } - else { + } else { $error_str = 'Command status do not meet requirement '.$this->statut; dol_syslog(__METHOD__.$error_str, LOG_ERR); $this->error = $error_str; @@ -2818,8 +2770,7 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2828,8 +2779,7 @@ class Commande extends CommonOrder $this->db->rollback(); return -1 * $error; } - } - else { + } else { $error_str = 'order status do not meet requirement '.$this->statut; dol_syslog(__METHOD__.$error_str, LOG_ERR); $this->error = $error_str; @@ -2885,8 +2835,7 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2895,8 +2844,7 @@ class Commande extends CommonOrder $this->db->rollback(); return -1 * $error; } - } - else { + } else { return -1; } } @@ -2938,8 +2886,7 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::classifyBilled ".$errmsg, LOG_ERR); @@ -2948,8 +2895,7 @@ class Commande extends CommonOrder $this->db->rollback(); return -1 * $error; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -2991,8 +2937,7 @@ class Commande extends CommonOrder $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::classifyUnBilled ".$errmsg, LOG_ERR); @@ -3001,8 +2946,7 @@ class Commande extends CommonOrder $this->db->rollback(); return -1 * $error; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -3110,8 +3054,7 @@ class Commande extends CommonOrder if ($price_base_type == 'TTC') { $subprice = $pu_ttc; - } - else { + } else { $subprice = $pu_ht; } $remise = 0; @@ -3214,15 +3157,13 @@ class Commande extends CommonOrder $this->db->commit(); return $result; - } - else { + } else { $this->error = $this->line->error; $this->db->rollback(); return -1; } - } - else { + } else { $this->error = get_class($this)."::updateline Order status makes operation forbidden"; $this->errors = array('OrderStatusMakeOperationForbidden'); return -2; @@ -3316,8 +3257,7 @@ class Commande extends CommonOrder } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -3449,8 +3389,7 @@ class Commande extends CommonOrder { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { $this->error .= ($this->error ? ', '.$errmsg : $errmsg); @@ -3515,8 +3454,7 @@ class Commande extends CommonOrder } return $response; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -3570,38 +3508,31 @@ class Commande extends CommonOrder $labelStatus = $langs->trans('StatusOrderCanceled'); $labelStatusShort = $langs->trans('StatusOrderCanceledShort'); $statusType = 'status9'; - } - elseif ($status == self::STATUS_DRAFT) { + } elseif ($status == self::STATUS_DRAFT) { $labelStatus = $langs->trans('StatusOrderDraft'); $labelStatusShort = $langs->trans('StatusOrderDraftShort'); $statusType = 'status0'; - } - elseif ($status == self::STATUS_VALIDATED) { + } elseif ($status == self::STATUS_VALIDATED) { $labelStatus = $langs->trans('StatusOrderValidated').$billedtext; $labelStatusShort = $langs->trans('StatusOrderValidatedShort').$billedtext; $statusType = 'status1'; - } - elseif ($status == self::STATUS_SHIPMENTONPROCESS) { + } elseif ($status == self::STATUS_SHIPMENTONPROCESS) { $labelStatus = $langs->trans('StatusOrderSentShort').$billedtext; $labelStatusShort = $langs->trans('StatusOrderSentShort').$billedtext; $statusType = 'status4'; - } - elseif ($status == self::STATUS_CLOSED && (!$billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) { + } elseif ($status == self::STATUS_CLOSED && (!$billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) { $labelStatus = $langs->trans('StatusOrderToBill'); $labelStatusShort = $langs->trans('StatusOrderToBillShort'); $statusType = 'status4'; - } - elseif ($status == self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) { + } elseif ($status == self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) { $labelStatus = $langs->trans('StatusOrderProcessed').$billedtext; $labelStatusShort = $langs->trans('StatusOrderProcessed').$billedtext; $statusType = 'status6'; - } - elseif ($status == self::STATUS_CLOSED && (!empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) { + } elseif ($status == self::STATUS_CLOSED && (!empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) { $labelStatus = $langs->trans('StatusOrderDelivered'); $labelStatusShort = $langs->trans('StatusOrderDelivered'); $statusType = 'status6'; - } - else { + } else { $labelStatus = $langs->trans('Unknown'); $labelStatusShort = ''; $statusType = ''; @@ -3763,8 +3694,7 @@ class Commande extends CommonOrder } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -3838,8 +3768,7 @@ class Commande extends CommonOrder $line->total_ttc = 60; $line->total_tva = 10; $line->remise_percent = 50; - } - else { + } else { $line->total_ht = 100; $line->total_ttc = 120; $line->total_tva = 20; @@ -3897,8 +3826,7 @@ class Commande extends CommonOrder } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -4149,8 +4077,7 @@ class OrderLine extends CommonOrderLine $this->db->free($result); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -4236,8 +4163,7 @@ class OrderLine extends CommonOrderLine } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -4282,8 +4208,7 @@ class OrderLine extends CommonOrderLine if (($result = $this->defineBuyPrice($this->subprice, $this->remise_percent, $this->fk_product)) < 0) { return $result; - } - else { + } else { $this->pa_ht = $result; } } @@ -4378,8 +4303,7 @@ class OrderLine extends CommonOrderLine } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -2; @@ -4426,8 +4350,7 @@ class OrderLine extends CommonOrderLine if (($result = $this->defineBuyPrice($this->subprice, $this->remise_percent, $this->fk_product)) < 0) { return $result; - } - else { + } else { $this->pa_ht = $result; } } @@ -4510,8 +4433,7 @@ class OrderLine extends CommonOrderLine } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -2; @@ -4550,8 +4472,7 @@ class OrderLine extends CommonOrderLine { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -2; diff --git a/htdocs/commande/class/commandestats.class.php b/htdocs/commande/class/commandestats.class.php index cbb93b940de..5af5fb23060 100644 --- a/htdocs/commande/class/commandestats.class.php +++ b/htdocs/commande/class/commandestats.class.php @@ -78,8 +78,7 @@ class CommandeStats extends Stats $this->field = 'total_ht'; $this->field_line = 'total_ht'; $this->where .= " c.fk_statut > 0"; // Not draft and not cancelled - } - elseif ($mode == 'supplier') + } elseif ($mode == 'supplier') { $object = new CommandeFournisseur($this->db); $this->from = MAIN_DB_PREFIX.$object->table_element." as c"; diff --git a/htdocs/commande/contact.php b/htdocs/commande/contact.php index 4fd050799dc..2d11feeeee2 100644 --- a/htdocs/commande/contact.php +++ b/htdocs/commande/contact.php @@ -63,14 +63,12 @@ if ($action == 'addcontact' && $user->rights->commande->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -82,8 +80,7 @@ elseif ($action == 'swapstatut' && $user->rights->commande->creer) if ($object->fetch($id)) { $result = $object->swapContactStatus(GETPOST('ligne')); - } - else { + } else { dol_print_error($db); } } @@ -98,8 +95,7 @@ elseif ($action == 'deletecontact' && $user->rights->commande->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { dol_print_error($db); } } @@ -203,8 +199,7 @@ if ($id > 0 || !empty($ref)) $res = @include dol_buildpath($reldir.'/contacts.tpl.php'); if ($res) break; } - } - else { + } else { // Contact not found print "ErrorRecordNotFound"; } diff --git a/htdocs/commande/customer.php b/htdocs/commande/customer.php index 020b1654ac9..f78d6ce2e84 100644 --- a/htdocs/commande/customer.php +++ b/htdocs/commande/customer.php @@ -184,8 +184,7 @@ if ($resql) print ''; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/commande/document.php b/htdocs/commande/document.php index 516dcd56fc0..27d38378bcb 100644 --- a/htdocs/commande/document.php +++ b/htdocs/commande/document.php @@ -182,12 +182,10 @@ if ($id > 0 || !empty($ref)) $permtoedit = $user->rights->commande->creer; $param = '&id='.$object->id.'&entity='.(!empty($object->entity) ? $object->entity : $conf->entity); include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; - } - else { + } else { dol_print_error($db); } -} -else { +} else { header('Location: index.php'); exit; } diff --git a/htdocs/commande/index.php b/htdocs/commande/index.php index 53f6b20b4f6..96476caeeed 100644 --- a/htdocs/commande/index.php +++ b/htdocs/commande/index.php @@ -173,8 +173,7 @@ if ($resql) //if ($totalinprocess != $total) print ''.$langs->trans("Total").''.$total.''; print "
"; -} -else { +} else { dol_print_error($db); } @@ -231,8 +230,7 @@ if (!empty($conf->commande->enabled)) print ''; $i++; } - } - else { + } else { print ''.$langs->trans("NoOrder").''; } print "
"; @@ -321,8 +319,7 @@ if ($resql) } } print "
"; -} -else dol_print_error($db); +} else dol_print_error($db); $max = 10; @@ -408,8 +405,7 @@ if (!empty($conf->commande->enabled)) } print "
"; - } - else dol_print_error($db); + } else dol_print_error($db); } /* @@ -493,8 +489,7 @@ if (!empty($conf->commande->enabled)) } } print "
"; - } - else dol_print_error($db); + } else dol_print_error($db); } diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 088512d6fa2..63c82775ff1 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -395,8 +395,7 @@ if ($resql) $soc->fetch($socid); $title = $langs->trans('ListOfOrders').' - '.$soc->name; if (empty($search_company)) $search_company = $soc->name; - } - else { + } else { $title = $langs->trans('ListOfOrders'); } if (strval($search_status) == '0') @@ -540,8 +539,7 @@ if ($resql) { print $form->selectyesno('validate_invoices', 0, 1, 1); print ' ('.$langs->trans("AutoValidationNotPossibleWhenStockIsDecreasedOnInvoiceValidation").')'; - } - else { + } else { print $form->selectyesno('validate_invoices', 0, 1); } if (!empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER)) print '     '.$langs->trans("IfValidateInvoiceIsNoOrderStayUnbilled").''; @@ -960,8 +958,7 @@ if ($resql) { $notshippable++; } - } - else { // Detailed code, looks bugged + } else { // Detailed code, looks bugged // stock order and stock order_supplier $stock_order = 0; $stock_order_supplier = 0; @@ -1308,8 +1305,7 @@ if ($resql) $delallowed = $user->rights->commande->creer; print $formfile->showdocuments('massfilesarea_orders', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/commande/orderstoinvoice.php b/htdocs/commande/orderstoinvoice.php index cae54d69bbd..c3d82821249 100644 --- a/htdocs/commande/orderstoinvoice.php +++ b/htdocs/commande/orderstoinvoice.php @@ -83,8 +83,7 @@ if ($action == 'create') { $error++; setEventMessages($langs->trans('Error_OrderNotChecked'), null, 'errors'); - } - else { + } else { $origin = GETPOST('origin'); $originid = GETPOST('originid'); } @@ -208,8 +207,7 @@ if (($action == 'create' || $action == 'add') && !$error) if ($db->query($sql)) { $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -254,14 +252,12 @@ if (($action == 'create' || $action == 'add') && !$error) { $result = $object->insert_discount($discountid); //$result=$discount->link_to_invoice($lineid,$id); - } - else { + } else { setEventMessages($discount->error, $discount->errors, 'errors'); $error++; break; } - } - else { + } else { // Positive line $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0); // Date start @@ -316,8 +312,7 @@ if (($action == 'create' || $action == 'add') && !$error) if ($result > 0) { $lineid = $result; - } - else { + } else { $lineid = 0; $error++; break; @@ -329,15 +324,13 @@ if (($action == 'create' || $action == 'add') && !$error) } } } - } - else { + } else { setEventMessages($objectsrc->error, $objectsrc->errors, 'errors'); $error++; } $ii++; } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $error++; } @@ -351,8 +344,7 @@ if (($action == 'create' || $action == 'add') && !$error) $db->commit(); header('Location: '.DOL_URL_ROOT.'/compta/facture/card.php?facid='.$id); exit; - } - else { + } else { $db->rollback(); $action = 'create'; $_GET["origin"] = $_POST["origin"]; @@ -721,8 +713,7 @@ if (($action != 'create' && $action != 'add') || ($action == 'create' && $error) print ''; $db->free($resql); - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/commande/stats/index.php b/htdocs/commande/stats/index.php index 35f9f60020c..0910e4ee7ad 100644 --- a/htdocs/commande/stats/index.php +++ b/htdocs/commande/stats/index.php @@ -114,8 +114,7 @@ if (!$user->rights->societe->client->voir || $user->socid) $filenamenb = $dir.'/ordersnbinyear-'.$user->id.'-'.$year.'.png'; if ($mode == 'customer') $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersnbinyear-'.$user->id.'-'.$year.'.png'; if ($mode == 'supplier') $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersnbinyear-'.$user->id.'-'.$year.'.png'; -} -else { +} else { $filenamenb = $dir.'/ordersnbinyear-'.$year.'.png'; if ($mode == 'customer') $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersnbinyear-'.$year.'.png'; if ($mode == 'supplier') $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersnbinyear-'.$year.'.png'; @@ -156,8 +155,7 @@ if (!$user->rights->societe->client->voir || $user->socid) $filenameamount = $dir.'/ordersamountinyear-'.$user->id.'-'.$year.'.png'; if ($mode == 'customer') $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersamountinyear-'.$user->id.'-'.$year.'.png'; if ($mode == 'supplier') $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersamountinyear-'.$user->id.'-'.$year.'.png'; -} -else { +} else { $filenameamount = $dir.'/ordersamountinyear-'.$year.'.png'; if ($mode == 'customer') $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersamountinyear-'.$year.'.png'; if ($mode == 'supplier') $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersamountinyear-'.$year.'.png'; @@ -196,8 +194,7 @@ if (!$user->rights->societe->client->voir || $user->socid) $filename_avg = $dir.'/ordersaverage-'.$user->id.'-'.$year.'.png'; if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$user->id.'-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$user->id.'-'.$year.'.png'; -} -else { +} else { $filename_avg = $dir.'/ordersaverage-'.$year.'.png'; if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$year.'.png'; @@ -378,8 +375,7 @@ print '
'; // Show graphs print ''; - } - else { + } else { // Sort array by date ASC to calculate balance $totalET_debit = 0; diff --git a/htdocs/compta/bank/account_statement_document.php b/htdocs/compta/bank/account_statement_document.php index 05f89e1bc6f..767c8f8709b 100644 --- a/htdocs/compta/bank/account_statement_document.php +++ b/htdocs/compta/bank/account_statement_document.php @@ -138,12 +138,10 @@ if ($id > 0 || !empty($ref)) { $moreparam = '&num='.urlencode($num); ; $relativepathwithnofile = $id."/statement/".dol_sanitizeFileName($num)."/"; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; - } - else { + } else { dol_print_error($db); } -} -else { +} else { Header('Location: index.php'); exit; } diff --git a/htdocs/compta/bank/annuel.php b/htdocs/compta/bank/annuel.php index 51d838878b8..72a7e33d3f2 100644 --- a/htdocs/compta/bank/annuel.php +++ b/htdocs/compta/bank/annuel.php @@ -50,8 +50,7 @@ if (!$year_start) { $year_start = $year_current - 2; $year_end = $year_current; -} -else { +} else { $year_end = $year_start + 2; } @@ -106,8 +105,7 @@ if ($resql) $encaiss[$row[1]] = $row[0]; $i++; } -} -else { +} else { dol_print_error($db); } @@ -133,8 +131,7 @@ if ($resql) $decaiss[$row[1]] = -$row[0]; $i++; } -} -else { +} else { dol_print_error($db); } @@ -154,8 +151,7 @@ if (!empty($id)) if (!preg_match('/,/', $id)) { dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref, '', 0, '', '', 1); - } - else { + } else { $bankaccount = new Account($db); $listid = explode(',', $id); foreach ($listid as $key => $aId) @@ -166,8 +162,7 @@ if (!empty($id)) if ($key < (count($listid) - 1)) print ', '; } } -} -else { +} else { print $langs->trans("AllAccounts"); } @@ -252,8 +247,7 @@ if ($resql) { $obj = $db->fetch_object($resql); if ($obj) $balance = $obj->total; -} -else { +} else { dol_print_error($db); } @@ -275,8 +269,7 @@ if ($result < 0) $langs->load("errors"); $error++; setEventMessages($langs->trans("ErrorFailedToCreateDir"), null, 'errors'); -} -else { +} else { // Calcul de $min et $max $sql = "SELECT MIN(b.datev) as min, MAX(b.datev) as max"; $sql .= " FROM ".MAIN_DB_PREFIX."bank as b"; @@ -292,8 +285,7 @@ else { $obj = $db->fetch_object($resql); $min = $db->jdate($obj->min); $max = $db->jdate($obj->max); - } - else { + } else { dol_print_error($db); } $log = "graph.php: min=".$min." max=".$max; @@ -331,8 +323,7 @@ else { $i++; } $db->free($resql); - } - else { + } else { dol_print_error($db); } } @@ -417,8 +408,7 @@ else { $i++; } $db->free($resql); - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index d5fb533016e..c5ded35cb51 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -68,8 +68,7 @@ if ($fielvalue) { if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'banque', $fieldvalue, 'bank_account&bank_account', '', '', $fieldtype); -} -else { +} else { if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'banque'); } @@ -240,14 +239,12 @@ if ((GETPOST('confirm_savestatement', 'alpha') || GETPOST('confirm_reconcile', ' } } } - } - else { + } else { $error++; $langs->load("errors"); setEventMessages($langs->trans("NoRecordSelected"), null, 'errors'); } - } - else { + } else { $error++; $langs->load("errors"); setEventMessages($langs->trans("ErrorPleaseTypeBankTransactionReportName"), null, 'errors'); @@ -283,8 +280,7 @@ if (GETPOST('save') && !$cancel && $user->rights->banque->modifier) if (price2num($_POST["addcredit"]) > 0) { $amount = price2num($_POST["addcredit"]); - } - else { + } else { $amount = - price2num($_POST["adddebit"]); } @@ -333,12 +329,10 @@ if (GETPOST('save') && !$cancel && $user->rights->banque->modifier) setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); header("Location: ".$_SERVER['PHP_SELF'].($id ? "?id=".$id : '')); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { $action = 'addline'; } } @@ -462,8 +456,7 @@ if ($id > 0 || !empty($ref)) } } } -} -else { +} else { llxHeader('', $langs->trans("BankTransactions"), '', '', 0, 0, array(), array(), $param); } @@ -667,8 +660,7 @@ if ($resql) if ($numr >= $nbmax) $liste = "...   ".$liste; print $liste; if ($numr <= 0) print ''.$langs->trans("None").''; - } - else { + } else { dol_print_error($db); } @@ -784,13 +776,11 @@ if ($resql) if (empty($conf->global->BANK_USE_OLD_VARIOUS_PAYMENT)) // If direct entries is done using miscellaneous payments { $newcardbutton = dolGetButtonTitle($langs->trans('AddBankRecord'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/compta/bank/various_payment/card.php?action=create&accountid='.$search_account.'&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.urlencode($search_account)), '', $user->rights->banque->modifier); - } - else // If direct entries is not done using miscellaneous payments + } else // If direct entries is not done using miscellaneous payments { $newcardbutton = dolGetButtonTitle($langs->trans('AddBankRecord'), '', 'fa fa-plus-circle', $_SERVER["PHP_SELF"].'?action=addline&page='.$page.$param, '', $user->rights->banque->modifier); } - } - else { + } else { $newcardbutton = dolGetButtonTitle($langs->trans('AddBankRecord'), '', 'fa fa-plus-circle', $_SERVER["PHP_SELF"].'?action=addline&page='.$page.$param, '', -1); } } @@ -1036,8 +1026,7 @@ if ($resql) $balance = $objforbalance->previoustotal; } } - } - else dol_print_error($db); + } else dol_print_error($db); $balancecalculated = true; @@ -1118,8 +1107,7 @@ if ($resql) { $balance = price2num($balancebefore, 'MT'); // balance = balancebefore of previous line (sort is desc) $balancebefore = price2num($balancebefore - ($sign * $objp->amount), 'MT'); - } - else { + } else { $balancebefore = price2num($balance, 'MT'); // balancebefore = balance of previous line (sort is asc) $balance = price2num($balance + ($sign * $objp->amount), 'MT'); } @@ -1130,8 +1118,7 @@ if ($resql) $bankaccounttmp->fetch($objp->bankid); $cachebankaccount[$objp->bankid] = $bankaccounttmp; $bankaccount = $bankaccounttmp; - } - else { + } else { $bankaccount = $cachebankaccount[$objp->bankid]; } @@ -1195,63 +1182,53 @@ if ($resql) $banktransferstatic->id = $links[$key]['url_id']; $banktransferstatic->ref = $links[$key]['label']; print ' '.$banktransferstatic->getNomUrl(0); - } - elseif ($links[$key]['type'] == 'payment') + } elseif ($links[$key]['type'] == 'payment') { $paymentstatic->id = $links[$key]['url_id']; $paymentstatic->ref = $links[$key]['url_id']; // FIXME This is id, not ref of payment print ' '.$paymentstatic->getNomUrl(2); - } - elseif ($links[$key]['type'] == 'payment_supplier') + } elseif ($links[$key]['type'] == 'payment_supplier') { $paymentsupplierstatic->id = $links[$key]['url_id']; $paymentsupplierstatic->ref = $links[$key]['url_id']; // FIXME This is id, not ref of payment print ' '.$paymentsupplierstatic->getNomUrl(2); - } - elseif ($links[$key]['type'] == 'payment_sc') + } elseif ($links[$key]['type'] == 'payment_sc') { print ''; print ' '.img_object($langs->trans('ShowPayment'), 'payment').' '; //print $langs->trans("SocialContributionPayment"); print ''; - } - elseif ($links[$key]['type'] == 'payment_vat') + } elseif ($links[$key]['type'] == 'payment_vat') { $paymentvatstatic->id = $links[$key]['url_id']; $paymentvatstatic->ref = $links[$key]['url_id']; print ' '.$paymentvatstatic->getNomUrl(2); - } - elseif ($links[$key]['type'] == 'payment_salary') + } elseif ($links[$key]['type'] == 'payment_salary') { $paymentsalstatic->id = $links[$key]['url_id']; $paymentsalstatic->ref = $links[$key]['url_id']; print ' '.$paymentsalstatic->getNomUrl(2); - } - elseif ($links[$key]['type'] == 'payment_loan') + } elseif ($links[$key]['type'] == 'payment_loan') { print ''; print ' '.img_object($langs->trans('ShowPayment'), 'payment').' '; print ''; - } - elseif ($links[$key]['type'] == 'payment_donation') + } elseif ($links[$key]['type'] == 'payment_donation') { print ''; print ' '.img_object($langs->trans('ShowPayment'), 'payment').' '; print ''; - } - elseif ($links[$key]['type'] == 'payment_expensereport') + } elseif ($links[$key]['type'] == 'payment_expensereport') { $paymentexpensereportstatic->id = $links[$key]['url_id']; $paymentexpensereportstatic->ref = $links[$key]['url_id']; print ' '.$paymentexpensereportstatic->getNomUrl(2); - } - elseif ($links[$key]['type'] == 'payment_various') + } elseif ($links[$key]['type'] == 'payment_various') { $paymentvariousstatic->id = $links[$key]['url_id']; $paymentvariousstatic->ref = $links[$key]['url_id']; print ' '.$paymentvariousstatic->getNomUrl(2); - } - elseif ($links[$key]['type'] == 'banktransfert') + } elseif ($links[$key]['type'] == 'banktransfert') { // Do not show link to transfer since there is no transfer card (avoid confusion). Can already be accessed from transaction detail. if ($objp->amount > 0) @@ -1266,8 +1243,7 @@ if ($resql) $bankstatic->label = $objp->bankref; print $bankstatic->getNomUrl(1, ''); print ')'; - } - else { + } else { $bankstatic->id = $objp->bankid; $bankstatic->label = $objp->bankref; print ' ('.$langs->trans("TransferFrom").' '; @@ -1280,20 +1256,15 @@ if ($resql) print ')'; } //var_dump($links); - } - elseif ($links[$key]['type'] == 'company') + } elseif ($links[$key]['type'] == 'company') { - } - elseif ($links[$key]['type'] == 'user') + } elseif ($links[$key]['type'] == 'user') { - } - elseif ($links[$key]['type'] == 'member') + } elseif ($links[$key]['type'] == 'member') { - } - elseif ($links[$key]['type'] == 'sc') + } elseif ($links[$key]['type'] == 'sc') { - } - else { + } else { // Show link with label $links[$key]['label'] if (!empty($objp->label) && !empty($links[$key]['label'])) print ' - '; print ''; @@ -1302,8 +1273,7 @@ if ($resql) // Label generique car entre parentheses. On l'affiche en le traduisant if ($reg[1] == 'paiement') $reg[1] = 'Payment'; print ' '.$langs->trans($reg[1]); - } - else { + } else { print ' '.$links[$key]['label']; } print ''; @@ -1380,8 +1350,7 @@ if ($resql) $companystatic->code_compta = $objp->code_compta; $companystatic->code_compta_fournisseur = $objp->code_compta_fournisseur; print $companystatic->getNomUrl(1); - } - else { + } else { print ' '; } print ''; @@ -1433,12 +1402,10 @@ if ($resql) if ($balancebefore >= 0) { print ''; - } - else { + } else { print ''; } - } - else { + } else { print ''; } if (!$i) $totalarray['nbfield']++; @@ -1451,12 +1418,10 @@ if ($resql) if ($balance >= 0) { print ''; - } - else { + } else { print ''; } - } - else { + } else { print ''; } if (!$i) $totalarray['nbfield']++; @@ -1502,15 +1467,13 @@ if ($resql) print ''; print img_edit(); print ''; - } - else { + } else { if ($user->rights->banque->modifier || $user->rights->banque->consolidate) { print ''; print img_edit(); print ''; - } - else { + } else { print ''; print img_view(); print ''; @@ -1560,16 +1523,14 @@ if ($resql) { if ($num < $limit && empty($offset)) print ''; else print ''; - } - elseif ($totalarray['totaldebfield'] == $i) print ''; + } elseif ($totalarray['totaldebfield'] == $i) print ''; elseif ($totalarray['totalcredfield'] == $i) print ''; elseif ($i == $posconciliatecol) { print ''; - } - else print ''; + } else print ''; } print ''; } @@ -1587,8 +1548,7 @@ if ($resql) print ''; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/bank/budget.php b/htdocs/compta/bank/budget.php index 3a15ddf72e1..8559096477d 100644 --- a/htdocs/compta/bank/budget.php +++ b/htdocs/compta/bank/budget.php @@ -89,8 +89,7 @@ if ($result) print ''; print ''; print ''; -} -else { +} else { dol_print_error($db); } print "
'; -if ($mesg) { print $mesg; } -else { +if ($mesg) { print $mesg; } else { print $px1->show(); print "
\n"; print $px2->show(); diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index b14e3adafad..0c20e46e316 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -334,8 +334,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { $nofile['sens'] = $objd->sens; $filesarray[$nofile['item'].'_'.$nofile['id']] = $nofile; - } - else { + } else { foreach ($files as $key => $file) { $file['id'] = $objd->id; @@ -382,14 +381,12 @@ if (($action == 'searchfiles' || $action == 'dl')) { $i++; } - } - else { + } else { dol_print_error($db); } $db->free($resd); - } - else { + } else { setEventMessages($langs->trans("ErrorSelectAtLeastOne"), null, 'errors'); $error++; } @@ -489,8 +486,7 @@ if ($result && $action == "dl" && !$error) dol_delete_file($zipname); exit(); - } - else { + } else { setEventMessages($langs->trans("FailedToOpenFile", $zipname), null, 'errors'); } } @@ -622,8 +618,7 @@ if (!empty($date_start) && !empty($date_stop)) if (empty($TData)) { print '
'.$langs->trans("NoItem").'
 '.price($balancebefore).' '.price($balancebefore).'- '.price($balance).' '.price($balance).'-'.$langs->trans("Total").''.$langs->trans("Totalforthispage").''.price(-1 * $totalarray['totaldeb']).''.price(-1 * $totalarray['totaldeb']).''.price($totalarray['totalcred']).''; if ($user->rights->banque->consolidate && $action == 'reconcile') print ''; print '
'.$langs->trans("Total").''.price($total).''.price($totalnb ?price2num($total / $totalnb, 'MT') : 0).'
"; diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index 3af40ffb2a0..3771d010f4f 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -99,8 +99,7 @@ if ($action == 'add') if (empty($account_number) || $account_number == '-1') { $object->account_number = ''; - } - else { + } else { $object->account_number = $account_number; } $fk_accountancy_journal = GETPOST('fk_accountancy_journal', 'int'); @@ -154,8 +153,7 @@ if ($action == 'add') $_GET["id"] = $id; // Force chargement page en mode visu $action = ''; - } - else { + } else { $error++; setEventMessages($object->error, $object->errors, 'errors'); @@ -166,8 +164,7 @@ if ($action == 'add') if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -203,8 +200,7 @@ if ($action == 'update') if (empty($account_number) || $account_number == '-1') { $object->account_number = ''; - } - else { + } else { $object->account_number = $account_number; } $fk_accountancy_journal = GETPOST('fk_accountancy_journal', 'int'); @@ -256,8 +252,7 @@ if ($action == 'update') $object->setCategories($categories); $_GET["id"] = $_POST["id"]; // Force chargement page en mode visu - } - else { + } else { $error++; setEventMessages($object->error, $object->errors, 'errors'); $action = 'edit'; // Force chargement page edition @@ -267,8 +262,7 @@ if ($action == 'update') if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -285,8 +279,7 @@ if ($action == 'confirm_delete' && $_POST["confirm"] == "yes" && $user->rights-> setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs'); header("Location: ".DOL_URL_ROOT."/compta/bank/list.php"); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } @@ -377,8 +370,7 @@ if ($action == 'create') if (isset($_POST["account_country_id"])) { $selectedcode = $_POST["account_country_id"] ? $_POST["account_country_id"] : $object->country_code; - } - elseif (empty($selectedcode)) $selectedcode = $mysoc->country_code; + } elseif (empty($selectedcode)) $selectedcode = $mysoc->country_code; $object->country_code = getCountry($selectedcode, 2); // Force country code on account to have following field on bank fields matching country rules print ''.$langs->trans("BankAccountCountry").''; @@ -392,8 +384,7 @@ if ($action == 'create') if ($selectedcode) { $formcompany->select_departement(isset($_POST["account_state_id"]) ? $_POST["account_state_id"] : '', $selectedcode, 'account_state_id'); - } - else { + } else { print $countrynotdefined; } print ''; @@ -537,8 +528,7 @@ if ($action == 'create') print ''; print $formaccounting->select_account($object->account_number, 'account_number', 1, '', 1, 1); print ''; - } - else { + } else { print ''.$langs->trans("AccountancyCode").''; print 'account_number).'">'; } @@ -877,8 +867,7 @@ else { if ($selectedcode) { print $formcompany->select_state(isset($_POST["account_state_id"]) ? $_POST["account_state_id"] : $object->state_id, $selectedcode, 'account_state_id'); - } - else { + } else { print $countrynotdefined; } print ''; diff --git a/htdocs/compta/bank/categ.php b/htdocs/compta/bank/categ.php index b7bbb4d157e..0f71134d08a 100644 --- a/htdocs/compta/bank/categ.php +++ b/htdocs/compta/bank/categ.php @@ -132,8 +132,7 @@ if ($result) print ''; print ''; print ""; - } - else { + } else { print "".$objp->label.""; print ''; print ''.img_edit().''; diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index cae83563b42..adb170ee81d 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -343,9 +343,9 @@ class Account extends CommonObject $string .= $this->code_guichet.' '; } elseif ($val == 'BankAccountNumberKey') { $string .= $this->cle_rib.' '; - }elseif ($val == 'BIC') { + } elseif ($val == 'BIC') { $string .= $this->bic.' '; - }elseif ($val == 'IBAN') { + } elseif ($val == 'IBAN') { $string .= $this->iban.' '; } } @@ -403,8 +403,7 @@ class Account extends CommonObject { $rowid = $this->db->last_insert_id(MAIN_DB_PREFIX."bank_url"); return $rowid; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -436,8 +435,7 @@ class Account extends CommonObject $sql .= " FROM ".MAIN_DB_PREFIX."bank_url"; if ($fk_bank > 0) { $sql .= " WHERE fk_bank = ".$fk_bank; - } - else { $sql .= " WHERE url_id = ".$url_id." AND type = '".$type."'"; + } else { $sql .= " WHERE url_id = ".$url_id." AND type = '".$type."'"; } $sql .= " ORDER BY type, label"; @@ -463,8 +461,7 @@ class Account extends CommonObject $lines[$i]['fk_bank'] = $obj->fk_bank; $i++; } - } - else dol_print_error($this->db); + } else dol_print_error($this->db); return $lines; } @@ -508,8 +505,7 @@ class Account extends CommonObject { $obj = $this->db->fetch_object($resql); $oper = $obj->code; - } - else { + } else { dol_print_error($this->db, 'Failed to get payment type code'); return -1; } @@ -718,18 +714,15 @@ class Account extends CommonObject if ($result < 0) $error++; // End call triggers } - } - else { + } else { $error++; } - } - else { + } else { if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $this->error = $langs->trans("ErrorBankLabelAlreadyExists"); $error++; - } - else { + } else { $this->error = $this->db->error()." sql=".$sql; $error++; } @@ -739,8 +732,7 @@ class Account extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1 * $error; } @@ -831,8 +823,7 @@ class Account extends CommonObject if ($result < 0) $error++; // End call triggers } - } - else { + } else { $error++; $this->error = $this->db->lasterror(); dol_print_error($this->db); @@ -842,8 +833,7 @@ class Account extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1 * $error; } @@ -900,8 +890,7 @@ class Account extends CommonObject if ($result) { return 1; - } - else { + } else { $this->error = $this->db->lasterror(); dol_print_error($this->db); return -1; @@ -998,12 +987,10 @@ class Account extends CommonObject $this->fetch_optionals(); return 1; - } - else { + } else { return 0; } - } - else { + } else { $this->error = $this->db->lasterror; $this->errors[] = $this->error; return -1; @@ -1103,8 +1090,7 @@ class Account extends CommonObject dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); } } - } - else { + } else { $error++; $this->error = "Error ".$this->db->lasterror(); } @@ -1114,8 +1100,7 @@ class Account extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -1180,8 +1165,7 @@ class Account extends CommonObject if ($resql) { $obj = $this->db->fetch_object($resql); if ($obj->nb <= 1) $can_be_deleted = true; // Juste le solde - } - else { + } else { dol_print_error($this->db); } return $can_be_deleted; @@ -1279,8 +1263,7 @@ class Account extends CommonObject } return $response; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -1317,8 +1300,7 @@ class Account extends CommonObject $this->nb["banklines"] = $obj->nb; } $this->db->free($resql); - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -1352,8 +1334,7 @@ class Account extends CommonObject { $obj = $db->fetch_object($resql); $nb = $obj->nb; - } - else dol_print_error($db); + } else dol_print_error($db); return $nb; } @@ -1400,8 +1381,7 @@ class Account extends CommonObject if ($mode == 'transactions') { $url = DOL_URL_ROOT.'/compta/bank/bankentries_list.php?id='.$this->id; - } - elseif ($mode == 'receipts') + } elseif ($mode == 'receipts') { $url = DOL_URL_ROOT.'/compta/bank/releve.php?account='.$this->id; } @@ -1461,8 +1441,7 @@ class Account extends CommonObject if ($this->error_number == 0) { return 1; - } - else { + } else { return 0; } } @@ -1881,8 +1860,7 @@ class AccountLine extends CommonObject } $this->db->free($result); return $ret; - } - else { + } else { return -1; } } @@ -1969,8 +1947,7 @@ class AccountLine extends CommonObject $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -1998,8 +1975,7 @@ class AccountLine extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -$nbko; } @@ -2036,8 +2012,7 @@ class AccountLine extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -$nbko; } @@ -2067,8 +2042,7 @@ class AccountLine extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); $this->error = $this->db->error(); return -1; @@ -2132,8 +2106,7 @@ class AccountLine extends CommonObject $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -2169,13 +2142,11 @@ class AccountLine extends CommonObject { return 1; } - } - else { + } else { dol_print_error($this->db); return 0; } - } - else dol_print_error($this->db); + } else dol_print_error($this->db); return 0; } @@ -2235,13 +2206,11 @@ class AccountLine extends CommonObject { return 1; } - } - else { + } else { dol_print_error($this->db); return 0; } - } - else dol_print_error($this->db); + } else dol_print_error($this->db); return 0; } @@ -2311,8 +2280,7 @@ class AccountLine extends CommonObject //$this->date_rappro = $obj->daterappro; // Not yet managed } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -2453,8 +2421,7 @@ class AccountLine extends CommonObject { $alreadydispatched = $obj->nb; } - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } diff --git a/htdocs/compta/bank/class/api_bankaccounts.class.php b/htdocs/compta/bank/class/api_bankaccounts.class.php index 6943d2bc5e1..3293f746033 100644 --- a/htdocs/compta/bank/class/api_bankaccounts.class.php +++ b/htdocs/compta/bank/class/api_bankaccounts.class.php @@ -225,8 +225,7 @@ class BankAccounts extends DolibarrApi if ($accountto->currency_code == $accountfrom->currency_code) { $amount_to = $amount; - } - else { + } else { if (!$amount_to || empty($amount_to)) { throw new RestException(422, 'You must provide amount_to value since bankaccount_from and bankaccount_to does not share the same currency.'); @@ -302,8 +301,7 @@ class BankAccounts extends DolibarrApi 'message' => 'Internal wire transfer created successfully.' ) ); - } - else { + } else { $this->db->rollback(); throw new RestException(500, $accountfrom->error.' '.$accountto->error); } @@ -336,8 +334,7 @@ class BankAccounts extends DolibarrApi if ($account->update(DolibarrApiAccess::$user) > 0) { return $this->get($id); - } - else { + } else { throw new RestException(500, $account->error); } } diff --git a/htdocs/compta/bank/class/paymentvarious.class.php b/htdocs/compta/bank/class/paymentvarious.class.php index ec88fea3f84..65c7e7ce2ea 100644 --- a/htdocs/compta/bank/class/paymentvarious.class.php +++ b/htdocs/compta/bank/class/paymentvarious.class.php @@ -169,8 +169,7 @@ class PaymentVarious extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -243,8 +242,7 @@ class PaymentVarious extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -428,8 +426,7 @@ class PaymentVarious extends CommonObject if ($bank_line_id > 0) { $this->update_fk_bank($bank_line_id); - } - else { + } else { $this->error = $acc->error; $error++; } @@ -458,20 +455,17 @@ class PaymentVarious extends CommonObject $result = $this->call_trigger('PAYMENT_VARIOUS_CREATE', $user); if ($result < 0) $error++; // End call triggers - } - else $error++; + } else $error++; if (!$error) { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -2; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -494,8 +488,7 @@ class PaymentVarious extends CommonObject if ($result) { return 1; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -529,30 +522,25 @@ class PaymentVarious extends CommonObject if ($mode == 0) { return $langs->trans($this->statuts[$status]); - } - elseif ($mode == 1) + } elseif ($mode == 1) { return $langs->trans($this->statuts_short[$status]); - } - elseif ($mode == 2) + } elseif ($mode == 2) { if ($status == 0) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts_short[$status]); elseif ($status == 1) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts_short[$status]); elseif ($status == 2) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($mode == 3) + } elseif ($mode == 3) { if ($status == 0 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); elseif ($status == 1 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); elseif ($status == 2 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); - } - elseif ($mode == 4) + } elseif ($mode == 4) { if ($status == 0 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts[$status]); elseif ($status == 1 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts[$status]); elseif ($status == 2 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts[$status]); - } - elseif ($mode == 5) + } elseif ($mode == 5) { if ($status == 0 && !empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); elseif ($status == 1 && !empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); @@ -610,8 +598,7 @@ class PaymentVarious extends CommonObject $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; */ - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; @@ -670,8 +657,7 @@ class PaymentVarious extends CommonObject $this->date_modif = $this->db->jdate($obj->tms); } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -698,8 +684,7 @@ class PaymentVarious extends CommonObject { $alreadydispatched = $obj->nb; } - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } diff --git a/htdocs/compta/bank/document.php b/htdocs/compta/bank/document.php index d003463e5af..09cd81d4198 100644 --- a/htdocs/compta/bank/document.php +++ b/htdocs/compta/bank/document.php @@ -137,12 +137,10 @@ if ($id > 0 || !empty($ref)) { $permtoedit = $user->rights->banque->modifier; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; - } - else { + } else { dol_print_error($db); } -} -else { +} else { Header('Location: index.php'); exit; } diff --git a/htdocs/compta/bank/graph.php b/htdocs/compta/bank/graph.php index 796529a24d9..296211bf35c 100644 --- a/htdocs/compta/bank/graph.php +++ b/htdocs/compta/bank/graph.php @@ -84,8 +84,7 @@ if ($result < 0) $langs->load("errors"); $error++; setEventMessages($langs->trans("ErrorFailedToCreateDir"), null, 'errors'); -} -else { +} else { // Calcul $min and $max $sql = "SELECT MIN(b.datev) as min, MAX(b.datev) as max"; $sql .= " FROM ".MAIN_DB_PREFIX."bank as b"; @@ -101,8 +100,7 @@ else { $obj = $db->fetch_object($resql); $min = $db->jdate($obj->min); $max = $db->jdate($obj->max); - } - else { + } else { dol_print_error($db); } if (empty($min)) $min = dol_now() - 3600 * 24; @@ -149,8 +147,7 @@ else { $i++; } $db->free($resql); - } - else { + } else { dol_print_error($db); } @@ -171,8 +168,7 @@ else { $row = $db->fetch_row($resql); $solde = $row[0]; $db->free($resql); - } - else { + } else { dol_print_error($db); } @@ -195,8 +191,7 @@ else { if ($day > time()) { $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph - } - else { + } else { $datas[$i] = $solde + $subtotal; } $datamin[$i] = $object->min_desired; @@ -289,8 +284,7 @@ else { $i++; } $db->free($resql); - } - else { + } else { dol_print_error($db); } @@ -311,8 +305,7 @@ else { $row = $db->fetch_row($resql); $solde = $row[0]; $db->free($resql); - } - else { + } else { dol_print_error($db); } @@ -336,8 +329,7 @@ else { if ($day > $now) { $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph - } - else { + } else { $datas[$i] = $solde + $subtotal; } $datamin[$i] = $object->min_desired; @@ -423,8 +415,7 @@ else { $amounts[$row[0]] = $row[1]; $i++; } - } - else { + } else { dol_print_error($db); } @@ -450,8 +441,7 @@ else { if ($day > ($max + 86400)) { $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph - } - else { + } else { $datas[$i] = 0 + $solde + $subtotal; } $datamin[$i] = $object->min_desired; @@ -547,8 +537,7 @@ else { $i++; } $db->free($resql); - } - else { + } else { dol_print_error($db); } @@ -580,8 +569,7 @@ else { $debits[$row[0]] = abs($row[1]); } $db->free($resql); - } - else { + } else { dol_print_error($db); } @@ -662,8 +650,7 @@ else { $i++; } $db->free($resql); - } - else { + } else { dol_print_error($db); } $sql = "SELECT date_format(b.datev,'%m')"; @@ -686,8 +673,7 @@ else { $debits[$row[0]] = abs($row[1]); } $db->free($resql); - } - else { + } else { dol_print_error($db); } @@ -756,14 +742,12 @@ if ($account) { $morehtml = ''.$langs->trans("ShowAllAccounts").''; dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', '', $moreparam, 0, '', '', 1); - } - else { + } else { $morehtml = ''.$langs->trans("BackToAccount").''; print $langs->trans("AllAccounts"); //print $morehtml; } - } - else { + } else { $bankaccount = new Account($db); $listid = explode(',', $account); foreach ($listid as $key => $id) @@ -774,8 +758,7 @@ if ($account) if ($key < (count($listid) - 1)) print ', '; } } -} -else { +} else { print $langs->trans("AllAccounts"); } @@ -791,8 +774,7 @@ if ($mode == 'showalltime') print ''; print $langs->trans("GoBack"); print ''; -} -else { +} else { print ''; print $langs->trans("ShowAllTimeBalance"); print ''; diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index a1c37d59050..d2b3e6099dd 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -76,15 +76,15 @@ if ($user->rights->banque->consolidate && $action == 'donext') { $al = new AccountLine($db); $al->dateo_next($_GET["rowid"]); -}elseif ($user->rights->banque->consolidate && $action == 'doprev') +} elseif ($user->rights->banque->consolidate && $action == 'doprev') { $al = new AccountLine($db); $al->dateo_previous($_GET["rowid"]); -}elseif ($user->rights->banque->consolidate && $action == 'dvnext') +} elseif ($user->rights->banque->consolidate && $action == 'dvnext') { $al = new AccountLine($db); $al->datev_next($_GET["rowid"]); -}elseif ($user->rights->banque->consolidate && $action == 'dvprev') +} elseif ($user->rights->banque->consolidate && $action == 'dvprev') { $al = new AccountLine($db); $al->datev_previous($_GET["rowid"]); @@ -99,8 +99,7 @@ if ($action == 'confirm_delete_categ' && $confirm == "yes" && $user->rights->ban { dol_print_error($db); } - } - else { + } else { setEventMessages($langs->trans("MissingIds"), null, 'errors'); } } @@ -119,8 +118,7 @@ if ($user->rights->banque->modifier && $action == "update") if (GETPOST('accountid', 'int') > 0 && !$acline->rappro && !$acline->getVentilExportCompta()) // We ask to change bank account { $actarget->fetch(GETPOST('accountid', 'int')); - } - else { + } else { $actarget->fetch($id); } @@ -189,8 +187,7 @@ if ($user->rights->banque->modifier && $action == "update") { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); $db->commit(); - } - else { + } else { $db->rollback(); dol_print_error($db); } @@ -226,8 +223,7 @@ if ($user->rights->banque->consolidate && ($action == 'num_releve' || $action == { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); $db->commit(); - } - else { + } else { $db->rollback(); dol_print_error($db); } @@ -320,8 +316,7 @@ if ($result) if (!$objp->rappro && !$bankline->getVentilExportCompta()) { $form->select_comptes($acct->id, 'accountid', 0, '', 0); - } - else { + } else { print $acct->getNomUrl(1, 'transactions', 'reflabel'); } print ''; @@ -345,8 +340,7 @@ if ($result) print $langs->trans("Payment"); print '';*/ print $paymenttmp->getNomUrl(1); - } - elseif ($links[$key]['type'] == 'payment_supplier') { + } elseif ($links[$key]['type'] == 'payment_supplier') { require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php'; $paymenttmp = new PaiementFourn($db); $paymenttmp->fetch($links[$key]['url_id']); @@ -356,79 +350,66 @@ if ($result) print $langs->trans("Payment"); print '';*/ print $paymenttmp->getNomUrl(1); - } - elseif ($links[$key]['type'] == 'company') { + } elseif ($links[$key]['type'] == 'company') { $societe = new Societe($db); $societe->fetch($links[$key]['url_id']); print $societe->getNomUrl(1); - } - elseif ($links[$key]['type'] == 'sc') { + } elseif ($links[$key]['type'] == 'sc') { print ''; print img_object($langs->trans('SocialContribution'), 'bill').' '; print $langs->trans("SocialContribution").($links[$key]['label'] ? ' - '.$links[$key]['label'] : ''); print ''; - } - elseif ($links[$key]['type'] == 'payment_sc') { + } elseif ($links[$key]['type'] == 'payment_sc') { print ''; print img_object($langs->trans('Payment'), 'payment').' '; print $langs->trans("SocialContributionPayment"); print ''; - } - elseif ($links[$key]['type'] == 'payment_vat') { + } elseif ($links[$key]['type'] == 'payment_vat') { print ''; print img_object($langs->trans('VAT'), 'payment').' '; print $langs->trans("VATPayment"); print ''; - } - elseif ($links[$key]['type'] == 'payment_salary') { + } elseif ($links[$key]['type'] == 'payment_salary') { print ''; print img_object($langs->trans('PaymentSalary'), 'payment').' '; print $langs->trans("SalaryPayment"); print ''; - } - elseif ($links[$key]['type'] == 'payment_loan') { + } elseif ($links[$key]['type'] == 'payment_loan') { print ''; print img_object($langs->trans('LoanPayment'), 'payment').' '; print $langs->trans("PaymentLoan"); print ''; - } - elseif ($links[$key]['type'] == 'loan') { + } elseif ($links[$key]['type'] == 'loan') { print ''; print img_object($langs->trans('Loan'), 'bill').' '; print $langs->trans("Loan"); print ''; - } - elseif ($links[$key]['type'] == 'member') { + } elseif ($links[$key]['type'] == 'member') { print ''; print img_object($langs->trans('Member'), 'user').' '; print $links[$key]['label']; print ''; - } - elseif ($links[$key]['type'] == 'payment_donation') { + } elseif ($links[$key]['type'] == 'payment_donation') { print ''; print img_object($langs->trans('Donation'), 'payment').' '; print $langs->trans("DonationPayment"); print ''; - } - elseif ($links[$key]['type'] == 'banktransfert') { + } elseif ($links[$key]['type'] == 'banktransfert') { print ''; print img_object($langs->trans('Transaction'), 'payment').' '; print $langs->trans("TransactionOnTheOtherAccount"); print ''; - } - elseif ($links[$key]['type'] == 'user') { + } elseif ($links[$key]['type'] == 'user') { print ''; print img_object($langs->trans('User'), 'user').' '; print $langs->trans("User"); print ''; - } - elseif ($links[$key]['type'] == 'payment_various') { + } elseif ($links[$key]['type'] == 'payment_various') { print ''; print img_object($langs->trans('VariousPayment'), 'payment').' '; print $langs->trans("VariousPayment"); print ''; - } - else { + } else { print ''; print img_object('', 'generic').' '; print $links[$key]['label']; @@ -458,8 +439,7 @@ if ($result) print '     '.$langs->trans("CheckReceipt").': '.$receipt->getNomUrl(2); } print ''; - } - else { + } else { print ''.$objp->fk_type.' '.$objp->num_chq.''; } print ""; @@ -473,8 +453,7 @@ if ($result) print ''; print ''; print ''; - } - else { + } else { print ''.$objp->emetteur.''; } print ""; @@ -488,8 +467,7 @@ if ($result) print ''; print ''; print ''; - } - else { + } else { print ''.$objp->banque.''; } print ""; @@ -509,8 +487,7 @@ if ($result) print img_edit_add().""; } print ''; - } - else { + } else { print ''; print dol_print_date($db->jdate($objp->do), "day"); print ''; @@ -532,8 +509,7 @@ if ($result) print img_edit_add().""; } print ''; - } - else { + } else { print ''; print dol_print_date($db->jdate($objp->dv), "day"); print ''; @@ -550,21 +526,18 @@ if ($result) { // Label generique car entre parentheses. On l'affiche en le traduisant print $langs->trans($reg[1]); - } - else { + } else { print $objp->label; } print '">'; print ''; - } - else { + } else { print ''; if (preg_match('/^\((.*)\)$/i', $objp->label, $reg)) { // Label generique car entre parentheses. On l'affiche en le traduisant print $langs->trans($reg[1]); - } - else { + } else { print $objp->label; } print ''; @@ -578,8 +551,7 @@ if ($result) print ''; print 'rappro ? ' disabled' : '').' value="'.price($objp->amount).'"> '.$langs->trans("Currency".$acct->currency_code); print ''; - } - else { + } else { print ''; print price($objp->amount); print ''; @@ -635,14 +607,12 @@ if ($result) { print $langs->trans("AccountStatement").' rappro ? ' disabled' : '').'>'; print ''; - } - else { + } else { print $langs->trans("AccountStatement").' rappro ? ' disabled' : '').'>'; } if ($objp->num_releve) print '   ('.$langs->trans("AccountStatement").' '.$objp->num_releve.')'; print ''; - } - else { + } else { print ''.$objp->num_releve.' '; } print ''; @@ -653,8 +623,7 @@ if ($result) print ''; print 'rappro ? ' checked="checked"' : '')).'">'; print ''; - } - else { + } else { print ''.yn($objp->rappro).''; } print ''; @@ -677,8 +646,7 @@ if ($result) } $db->free($result); -} -else dol_print_error($db); +} else dol_print_error($db); // End of page llxFooter(); diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index bc45c708f33..882244518f7 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -212,8 +212,7 @@ if ($resql) $i++; } $db->free($resql); -} -else dol_print_error($db); +} else dol_print_error($db); @@ -487,8 +486,7 @@ foreach ($accounts as $key=>$type) $accountingaccount = new AccountingAccount($db); $accountingaccount->fetch('', $objecttmp->account_number, 1); print $accountingaccount->getNomUrl(0, 1, 1, '', 1); - } - else { + } else { print $objecttmp->account_number; } print ''; @@ -504,8 +502,7 @@ foreach ($accounts as $key=>$type) $accountingjournal = new AccountingJournal($db); $accountingjournal->fetch($objecttmp->fk_accountancy_journal); print $accountingjournal->getNomUrl(0, 1, 1, '', 1); - } - else { + } else { print ''; } print ''; diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php index 65476665963..4244856c9ab 100644 --- a/htdocs/compta/bank/releve.php +++ b/htdocs/compta/bank/releve.php @@ -125,8 +125,7 @@ if ($_GET["rel"] == 'prev') $found = true; } } -} -elseif ($_GET["rel"] == 'next') +} elseif ($_GET["rel"] == 'next') { // Recherche valeur pour num = numero releve precedent $sql = "SELECT DISTINCT(b.num_releve) as num"; @@ -147,8 +146,7 @@ elseif ($_GET["rel"] == 'next') $found = true; } } -} -else { +} else { // On veut le releve num $found = true; } @@ -295,15 +293,13 @@ if (empty($numref)) if (!isset($objp->numr)) { // - } - else { + } else { print ''; print ''; if ($action != 'editbankreceipt' || $objp->numr != $brref) { print ''.$objp->numr.''; - } - else { + } else { print ''; print ''; print ''; @@ -353,12 +349,10 @@ if (empty($numref)) print ''; print "\n
\n"; - } - else { + } else { dol_print_error($db); } -} -else { +} else { /** * Show list of record into a bank statement */ @@ -484,58 +478,50 @@ else { $paymentstatic->ref = $langs->trans("Payment"); print ' '.$paymentstatic->getNomUrl(1); $newline = 0; - } - elseif ($links[$key]['type'] == 'payment_supplier') + } elseif ($links[$key]['type'] == 'payment_supplier') { $paymentsupplierstatic->id = $links[$key]['url_id']; $paymentsupplierstatic->ref = $langs->trans("Payment"); print ' '.$paymentsupplierstatic->getNomUrl(1); $newline = 0; - } - elseif ($links[$key]['type'] == 'payment_sc') + } elseif ($links[$key]['type'] == 'payment_sc') { print ''; print ' '.img_object($langs->trans('ShowPayment'), 'payment').' '; print $langs->trans("SocialContributionPayment"); print ''; $newline = 0; - } - elseif ($links[$key]['type'] == 'payment_vat') + } elseif ($links[$key]['type'] == 'payment_vat') { $paymentvatstatic->id = $links[$key]['url_id']; $paymentvatstatic->ref = $langs->trans("Payment"); print ' '.$paymentvatstatic->getNomUrl(1); - } - elseif ($links[$key]['type'] == 'payment_salary') + } elseif ($links[$key]['type'] == 'payment_salary') { print ''; print ' '.img_object($langs->trans('ShowPayment'), 'payment').' '; print $langs->trans("Payment"); print ''; $newline = 0; - } - elseif ($links[$key]['type'] == 'payment_donation') + } elseif ($links[$key]['type'] == 'payment_donation') { $paymentdonationstatic->id = $links[$key]['url_id']; $paymentdonationstatic->ref = $langs->trans("Payment"); print ' '.$paymentdonationstatic->getNomUrl(1); $newline = 0; - } - elseif ($links[$key]['type'] == 'payment_loan') + } elseif ($links[$key]['type'] == 'payment_loan') { $paymentloanstatic->id = $links[$key]['url_id']; $paymentloanstatic->ref = $langs->trans("Payment"); print ' '.$paymentloanstatic->getNomUrl(1); $newline = 0; - } - elseif ($links[$key]['type'] == 'payment_various') + } elseif ($links[$key]['type'] == 'payment_various') { $paymentvariousstatic->id = $links[$key]['url_id']; $paymentvariousstatic->ref = $langs->trans("Payment"); print ' '.$paymentvariousstatic->getNomUrl(1); $newline = 0; - } - elseif ($links[$key]['type'] == 'banktransfert') { + } elseif ($links[$key]['type'] == 'banktransfert') { // Do not show link to transfer since there is no transfer card (avoid confusion). Can already be accessed from transaction detail. if ($objp->amount > 0) { @@ -549,8 +535,7 @@ else { $bankstatic->label = $objp->bankref; print $bankstatic->getNomUrl(1, ''); print ')'; - } - else { + } else { $bankstatic->id = $objp->bankid; $bankstatic->label = $objp->bankref; print ' ('.$langs->trans("from").' '; @@ -562,35 +547,30 @@ else { print $bankstatic->getNomUrl(1, 'transactions'); print ')'; } - } - elseif ($links[$key]['type'] == 'company') { + } elseif ($links[$key]['type'] == 'company') { $societestatic->id = $links[$key]['url_id']; $societestatic->name = $links[$key]['label']; print $societestatic->getNomUrl(1, 'company', 24); $newline = 0; - } - elseif ($links[$key]['type'] == 'member') { + } elseif ($links[$key]['type'] == 'member') { print ''; print img_object($langs->trans('ShowMember'), 'user').' '; print $links[$key]['label']; print ''; $newline = 0; - } - elseif ($links[$key]['type'] == 'user') { + } elseif ($links[$key]['type'] == 'user') { print ''; print img_object($langs->trans('ShowUser'), 'user').' '; print $links[$key]['label']; print ''; $newline = 0; - } - elseif ($links[$key]['type'] == 'sc') { + } elseif ($links[$key]['type'] == 'sc') { print ''; print img_object($langs->trans('ShowBill'), 'bill').' '; print $langs->trans("SocialContribution"); print ''; $newline = 0; - } - else { + } else { print ''; print $links[$key]['label']; print ''; @@ -620,8 +600,7 @@ else { print "
".$objc->label.""; $ii++; } - } - else { + } else { dol_print_error($db); } } @@ -632,8 +611,7 @@ else { { $totald = $totald + abs($objp->amount); print ''.price($objp->amount * -1)." \n"; - } - else { + } else { $totalc = $totalc + abs($objp->amount); print ' '.price($objp->amount)."\n"; } @@ -645,8 +623,7 @@ else { print ''; print img_edit(); print ""; - } - else { + } else { print " "; } print ""; diff --git a/htdocs/compta/bank/transfer.php b/htdocs/compta/bank/transfer.php index 99a66321648..7228c38fe50 100644 --- a/htdocs/compta/bank/transfer.php +++ b/htdocs/compta/bank/transfer.php @@ -87,8 +87,7 @@ if ($action == 'add') if ($accountto->currency_code == $accountfrom->currency_code) { $amountto = $amount; - } - else { + } else { if (!$amountto) { $error++; @@ -129,13 +128,11 @@ if ($action == 'add') $mesgs = $langs->trans("TransferFromToDone", ''.$accountfrom->label."", ''.$accountto->label."", $amount, $langs->transnoentities("Currency".$conf->currency)); setEventMessages($mesgs, null, 'mesgs'); $db->commit(); - } - else { + } else { setEventMessages($accountfrom->error.' '.$accountto->error, null, 'errors'); $db->rollback(); } - } - else { + } else { $error++; setEventMessages($langs->trans("ErrorFromToAccountsMustDiffers"), null, 'errors'); } diff --git a/htdocs/compta/bank/treso.php b/htdocs/compta/bank/treso.php index 929a1611775..cf494b77a90 100644 --- a/htdocs/compta/bank/treso.php +++ b/htdocs/compta/bank/treso.php @@ -72,8 +72,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) if ($vline) { $viewline = $vline; - } - else { + } else { $viewline = 20; } @@ -289,8 +288,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) if ($obj->family == 'invoice') { $mc->getInfo($obj->entity); print "".$mc->label.""; - } - else { + } else { print ""; } } @@ -303,8 +301,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) $i++; } - } - else { + } else { dol_print_error($db); } @@ -324,8 +321,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) print ""; print "
"; -} -else { +} else { print $langs->trans("ErrorBankAccountNotFound"); } diff --git a/htdocs/compta/bank/various_payment/card.php b/htdocs/compta/bank/various_payment/card.php index ffabd082bfa..071a5abf0a9 100644 --- a/htdocs/compta/bank/various_payment/card.php +++ b/htdocs/compta/bank/various_payment/card.php @@ -163,8 +163,7 @@ if (empty($reshook)) $urltogo = ($backtopage ? $backtopage : DOL_URL_ROOT.'/compta/bank/various_payment/list.php'); header("Location: ".$urltogo); exit; - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); $action = "create"; @@ -197,19 +196,16 @@ if (empty($reshook)) $db->commit(); header("Location: ".DOL_URL_ROOT.'/compta/bank/various_payment/list.php'); exit; - } - else { + } else { $object->error = $accountline->error; $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { setEventMessages('Error try do delete a line linked to a conciliated bank transaction', null, 'errors'); } } @@ -371,8 +367,7 @@ if ($action == 'create') print ''; print $formaccounting->select_account($accountancy_code, 'accountancy_code', 1, null, 1, 1); print ''; - } - else // For external software + } else // For external software { print ''.$langs->trans("AccountAccounting").''; print ''; @@ -387,13 +382,11 @@ if ($action == 'create') if (!empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX)) { print $formaccounting->select_auxaccount($subledger_account, 'subledger_account', 1, ''); - } - else { + } else { print ''; } print ''; - } - else // For external software + } else // For external software { print ''.$langs->trans("SubledgerAccount").''; print ''; @@ -559,12 +552,10 @@ if ($id) } else { print ''; } - } - else { + } else { print ''; } - } - else { + } else { print ''; } diff --git a/htdocs/compta/bank/various_payment/document.php b/htdocs/compta/bank/various_payment/document.php index 624ead86073..7a89fd77986 100644 --- a/htdocs/compta/bank/various_payment/document.php +++ b/htdocs/compta/bank/various_payment/document.php @@ -149,8 +149,7 @@ if ($object->id) $permission = $user->rights->banque->modifier; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/compta/bank/various_payment/list.php b/htdocs/compta/bank/various_payment/list.php index 5fa44ba8555..d02f75819e4 100644 --- a/htdocs/compta/bank/various_payment/list.php +++ b/htdocs/compta/bank/various_payment/list.php @@ -75,8 +75,7 @@ if (!GETPOST('typeid')) $part = explode(':', $val); if ($part[0] == 'v.fk_typepayment') $typeid = $part[1]; } -} -else { +} else { $typeid = GETPOST('typeid'); } @@ -312,8 +311,7 @@ if ($result) $accountstatic->label = $obj->blabel; print $accountstatic->getNomUrl(1); - } - else print ' '; + } else print ' '; print ''; if (!$i) $totalarray['nbfield']++; } @@ -372,8 +370,7 @@ if ($result) print ''; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index fce50a977e4..b14b77d5264 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -107,8 +107,7 @@ if (GETPOST('cancel', 'alpha')) { if ($action == 'valid') { $action = 'view'; - } - else { + } else { $action = 'create'; } } @@ -144,8 +143,7 @@ if ($action == "start") $action = 'create'; $error++; } -} -elseif ($action == "add") +} elseif ($action == "add") { if (GETPOST('opening', 'alpha') == '') { @@ -177,8 +175,7 @@ elseif ($action == "add") { $db->commit(); $action = "view"; - } - else { + } else { $db->rollback; $action = "view"; } @@ -216,8 +213,7 @@ if ($action == "valid") // validate = close { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); - } - else { + } else { setEventMessages($langs->trans("CashFenceDone"), null); $db->commit(); } @@ -251,8 +247,7 @@ if ($action == 'confirm_delete' && !empty($permissiontodelete)) setEventMessages("RecordDeleted", null, 'mesgs'); header("Location: ".$backurlforlist); exit; - } - else { + } else { if (!empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); else setEventMessages($object->error, null, 'errors'); } @@ -279,8 +274,7 @@ if ($action == "create" || $action == "start" || $action == 'close') $syear = $object->year_close; $smonth = $object->month_close; $sday = $object->day_close; - } - elseif (GETPOST('posnumber', 'alpha') != '' && GETPOST('posnumber', 'alpha') != '' && GETPOST('posnumber', 'alpha') != '-1') + } elseif (GETPOST('posnumber', 'alpha') != '' && GETPOST('posnumber', 'alpha') != '' && GETPOST('posnumber', 'alpha') != '-1') { $posmodule = GETPOST('posmodule', 'alpha'); $terminalid = GETPOST('posnumber', 'alpha'); @@ -324,10 +318,8 @@ if ($action == "create" || $action == "start" || $action == 'close') { $obj = $db->fetch_object($resql); if ($obj) $initialbalanceforterminal[$terminalid][$key] = $obj->total; - } - else dol_print_error($db); - } - else { + } else dol_print_error($db); + } else { setEventMessages($langs->trans("SetupOfTerminalNotComplete", $terminaltouse), null, 'errors'); $error++; } @@ -366,8 +358,7 @@ if ($action == "create" || $action == "start" || $action == 'close') $theoricalamountforterminal[$terminalid][$key] = price2num($theoricalamountforterminal[$terminalid][$key] + $obj->total); $theoricalnbofinvoiceforterminal[$terminalid][$key] = $obj->nb; } - } - else dol_print_error($db); + } else dol_print_error($db); } } @@ -383,13 +374,11 @@ if ($action == "create" || $action == "start" || $action == 'close') if ($action == 'start' && GETPOST('posnumber', 'int') != '' && GETPOST('posnumber', 'int') != '' && GETPOST('posnumber', 'int') != '-1') { print ''; - } - elseif ($action == 'close') + } elseif ($action == 'close') { print ''; print ''; - } - else { + } else { print ''; } @@ -463,8 +452,7 @@ if ($action == "create" || $action == "start" || $action == 'close') if ($action == 'start' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '-1') { print ''; - } - else { + } else { print ''; } print ''; @@ -562,8 +550,7 @@ if ($action == "create" || $action == "start" || $action == 'close') { $object->fetch($id); print $object->opening; - } - else print (GETPOSTISSET('opening') ?price2num(GETPOST('opening', 'alpha')) : price($initialbalanceforterminal[$terminalid]['cash'])); + } else print (GETPOSTISSET('opening') ?price2num(GETPOST('opening', 'alpha')) : price($initialbalanceforterminal[$terminalid]['cash'])); print '">'; print ''; // Amount per payment type @@ -601,8 +588,7 @@ if (empty($action) || $action == "view" || $action == "close") if ($result <= 0) { print $langs->trans("ErrorRecordNotFound"); - } - else { + } else { $head = array(); $head[0][0] = DOL_URL_ROOT.'/compta/cashcontrol/cashcontrol_card.php?id='.$object->id; $head[0][1] = $langs->trans("CashControl"); @@ -699,13 +685,11 @@ if (empty($action) || $action == "view" || $action == "close") if ($action == 'start' && GETPOST('posnumber', 'int') != '' && GETPOST('posnumber', 'int') != '' && GETPOST('posnumber', 'int') != '-1') { print ''; - } - elseif ($action == 'close') + } elseif ($action == 'close') { print ''; print ''; - } - else { + } else { print ''; } @@ -852,8 +836,7 @@ if (empty($action) || $action == "view" || $action == "close") { $object->fetch($id); print $object->opening; - } - else print (GETPOSTISSET('opening') ?price2num(GETPOST('opening', 'alpha')) : price($initialbalanceforterminal[$terminalid]['cash'])); + } else print (GETPOSTISSET('opening') ?price2num(GETPOST('opening', 'alpha')) : price($initialbalanceforterminal[$terminalid]['cash'])); print '">'; print ''; // Amount per payment type diff --git a/htdocs/compta/cashcontrol/cashcontrol_list.php b/htdocs/compta/cashcontrol/cashcontrol_list.php index 5269c07bab2..0279ad5143c 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_list.php +++ b/htdocs/compta/cashcontrol/cashcontrol_list.php @@ -259,8 +259,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) { $num = $nbtotalofrecords; -} -else { +} else { $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 81a19389244..0f60be3c3a8 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -404,8 +404,7 @@ class CashControl extends CommonObject $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; */ - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; diff --git a/htdocs/compta/cashcontrol/report.php b/htdocs/compta/cashcontrol/report.php index 5b9079f9d72..f2d8e38fb15 100644 --- a/htdocs/compta/cashcontrol/report.php +++ b/htdocs/compta/cashcontrol/report.php @@ -172,8 +172,7 @@ if ($resql) $bankaccounttmp->fetch($objp->bankid); $cachebankaccount[$objp->bankid] = $bankaccounttmp; $bankaccount = $bankaccounttmp; - } - else { + } else { $bankaccount = $cachebankaccount[$objp->bankid]; } @@ -207,8 +206,7 @@ if ($resql) print $bankaccount->getNomUrl(1); if ($cashcontrol->posmodule == "takepos") { $var1 = 'CASHDESK_ID_BANKACCOUNT_CASH'.$cashcontrol->posnumber; - } - else { + } else { $var1 = 'CASHDESK_ID_BANKACCOUNT_CASH'; } if ($objp->code == 'CHQ') { @@ -310,8 +308,7 @@ if ($resql) print ''; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index 991d039d1fb..def4fda9b10 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -103,8 +103,7 @@ if ($mode != 'sconly') { $center = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 1); -} -else { +} else { print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 0); } @@ -216,8 +215,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) $accountstatic->accountancy_journal = $obj->accountancy_journal; $accountstatic->label = $obj->blabel; print $accountstatic->getNomUrl(1); - } - else print ' '; + } else print ' '; print ''; } // Paid @@ -239,8 +237,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) if (!empty($conf->banque->enabled)) print ''; print ''.price($totalpaye).""; print ""; - } - else { + } else { dol_print_error($db); } print ''; @@ -332,8 +329,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) $accountstatic->accountancy_journal = $obj->accountancy_journal; $accountstatic->label = $obj->blabel; print $accountstatic->getNomUrl(1); - } - else print ' '; + } else print ' '; print ''; } @@ -354,8 +350,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) print ""; $db->free($result); - } - else { + } else { dol_print_error($db); } } @@ -366,18 +361,15 @@ if ($mysoc->localtax1_assuj == "1" && $mysoc->localtax2_assuj == "1") { $j = 1; $numlt = 3; -} -elseif ($mysoc->localtax1_assuj == "1") +} elseif ($mysoc->localtax1_assuj == "1") { $j = 1; $numlt = 2; -} -elseif ($mysoc->localtax2_assuj == "1") +} elseif ($mysoc->localtax2_assuj == "1") { $j = 2; $numlt = 3; -} -else { +} else { $j = 0; $numlt = 0; } @@ -447,8 +439,7 @@ while ($j < $numlt) print ""; $db->free($result); - } - else { + } else { dol_print_error($db); } } @@ -541,8 +532,7 @@ if (!empty($conf->salaries->enabled) && !empty($user->rights->salaries->read)) $accountstatic->accountancy_journal = $obj->accountancy_journal; $accountstatic->label = $obj->blabel; print $accountstatic->getNomUrl(1); - } - else print ' '; + } else print ' '; print ''; } @@ -560,8 +550,7 @@ if (!empty($conf->salaries->enabled) && !empty($user->rights->salaries->read)) $db->free($result); print "
"; - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/compta/clients.php b/htdocs/compta/clients.php index 74cc0d594e5..5632e8ebc1a 100644 --- a/htdocs/compta/clients.php +++ b/htdocs/compta/clients.php @@ -196,8 +196,7 @@ if ($resql) print ''; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/deplacement/card.php b/htdocs/compta/deplacement/card.php index b688bd17907..d2fd1c54cce 100644 --- a/htdocs/compta/deplacement/card.php +++ b/htdocs/compta/deplacement/card.php @@ -70,14 +70,11 @@ if ($action == 'validate' && $user->rights->deplacement->creer) { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } -} - -elseif ($action == 'classifyrefunded' && $user->rights->deplacement->creer) +} elseif ($action == 'classifyrefunded' && $user->rights->deplacement->creer) { $object->fetch($id); if ($object->statut == Deplacement::STATUS_VALIDATED) @@ -87,27 +84,21 @@ elseif ($action == 'classifyrefunded' && $user->rights->deplacement->creer) { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } -} - -elseif ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->deplacement->supprimer) +} elseif ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->deplacement->supprimer) { $result = $object->delete($id); if ($result >= 0) { header("Location: index.php"); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } -} - -elseif ($action == 'add' && $user->rights->deplacement->creer) +} elseif ($action == 'add' && $user->rights->deplacement->creer) { if (!GETPOST('cancel', 'alpha')) { @@ -146,17 +137,14 @@ elseif ($action == 'add' && $user->rights->deplacement->creer) { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $action = 'create'; } - } - else { + } else { $action = 'create'; } - } - else { + } else { header("Location: index.php"); exit; } @@ -183,12 +171,10 @@ elseif ($action == 'update' && $user->rights->deplacement->creer) { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } @@ -209,8 +195,7 @@ elseif ($action == 'setdated' && $user->rights->deplacement->creer) $object->fetch($id); $result = $object->setValueFrom('dated', $dated, '', '', 'date', '', $user, 'DEPLACEMENT_MODIFY'); if ($result < 0) dol_print_error($db, $object->error); -} -elseif ($action == 'setkm' && $user->rights->deplacement->creer) +} elseif ($action == 'setkm' && $user->rights->deplacement->creer) { $object->fetch($id); $result = $object->setValueFrom('km', GETPOST('km', 'int'), '', null, 'text', '', $user, 'DEPLACEMENT_MODIFY'); @@ -305,8 +290,7 @@ if ($action == 'create') print ''; print ''; -} -elseif ($id) +} elseif ($id) { $result = $object->fetch($id); if ($result > 0) @@ -404,8 +388,7 @@ elseif ($id) print ''; print ''; - } - else { + } else { /* * Confirm delete trip */ @@ -483,8 +466,7 @@ elseif ($id) if ($action == 'classify') { $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1); - } - else { + } else { $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0); } print ''; @@ -518,8 +500,7 @@ elseif ($id) if ($user->rights->deplacement->creer) { print ''.$langs->trans('Modify').''; - } - else { + } else { print ''.$langs->trans('Modify').''; } } @@ -529,8 +510,7 @@ elseif ($id) if ($user->rights->deplacement->creer) { print ''.$langs->trans('Validate').''; - } - else { + } else { print ''.$langs->trans('Validate').''; } } @@ -540,8 +520,7 @@ elseif ($id) if ($user->rights->deplacement->creer) { print ''.$langs->trans('ClassifyRefunded').''; - } - else { + } else { print ''.$langs->trans('ClassifyRefunded').''; } } @@ -549,15 +528,13 @@ elseif ($id) if ($user->rights->deplacement->supprimer) { print ''.$langs->trans('Delete').''; - } - else { + } else { print ''.$langs->trans('Delete').''; } print ''; } - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/compta/deplacement/class/deplacement.class.php b/htdocs/compta/deplacement/class/deplacement.class.php index 8051d074db5..69baf710b95 100644 --- a/htdocs/compta/deplacement/class/deplacement.class.php +++ b/htdocs/compta/deplacement/class/deplacement.class.php @@ -199,14 +199,12 @@ class Deplacement extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return $result; } - } - else { + } else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; @@ -265,8 +263,7 @@ class Deplacement extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -309,8 +306,7 @@ class Deplacement extends CommonObject $this->extraparams = (array) json_decode($obj->extraparams, true); return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -334,8 +330,7 @@ class Deplacement extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -370,30 +365,25 @@ class Deplacement extends CommonObject if ($mode == 0) { return $langs->trans($this->statuts[$status]); - } - elseif ($mode == 1) + } elseif ($mode == 1) { return $langs->trans($this->statuts_short[$status]); - } - elseif ($mode == 2) + } elseif ($mode == 2) { if ($status == 0) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts_short[$status]); elseif ($status == 1) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts_short[$status]); elseif ($status == 2) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($mode == 3) + } elseif ($mode == 3) { if ($status == 0 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); elseif ($status == 1 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); elseif ($status == 2 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); - } - elseif ($mode == 4) + } elseif ($mode == 4) { if ($status == 0 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts[$status]); elseif ($status == 1 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts[$status]); elseif ($status == 2 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts[$status]); - } - elseif ($mode == 5) + } elseif ($mode == 5) { if ($status == 0 && !empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); elseif ($status == 1 && !empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); @@ -455,8 +445,7 @@ class Deplacement extends CommonObject $ret[$obj->code] = (($langs->trans($obj->code) != $obj->code) ? $langs->trans($obj->code) : $obj->label); $i++; } - } - else { + } else { dol_print_error($this->db); } @@ -501,8 +490,7 @@ class Deplacement extends CommonObject $this->date_modification = $this->db->jdate($obj->tms); } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/compta/deplacement/document.php b/htdocs/compta/deplacement/document.php index 4ad2044c0f1..889eb390ca2 100644 --- a/htdocs/compta/deplacement/document.php +++ b/htdocs/compta/deplacement/document.php @@ -123,8 +123,7 @@ if ($object->id) $permission = $user->rights->deplacement->creer; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/compta/deplacement/index.php b/htdocs/compta/deplacement/index.php index 9ed6e430c4c..0cea847f9ce 100644 --- a/htdocs/compta/deplacement/index.php +++ b/htdocs/compta/deplacement/index.php @@ -192,13 +192,11 @@ if ($result) $i++; } - } - else { + } else { print ''.$langs->trans("None").''; } print '
'; -} -else dol_print_error($db); +} else dol_print_error($db); print ''; diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php index 1ebaeb5c6fa..78c1f32556d 100644 --- a/htdocs/compta/deplacement/list.php +++ b/htdocs/compta/deplacement/list.php @@ -196,8 +196,7 @@ if ($resql) print ""; print "\n"; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/deplacement/stats/index.php b/htdocs/compta/deplacement/stats/index.php index 91c6546a83c..7707cb40786 100644 --- a/htdocs/compta/deplacement/stats/index.php +++ b/htdocs/compta/deplacement/stats/index.php @@ -167,8 +167,7 @@ if (!$user->rights->societe->client->voir || $user->socid) $filename_avg = $dir.'/ordersaverage-'.$user->id.'-'.$year.'.png'; if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$user->id.'-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$user->id.'-'.$year.'.png'; -} -else { +} else { $filename_avg = $dir.'/ordersaverage-'.$year.'.png'; if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$year.'.png'; @@ -293,8 +292,7 @@ print '
'; // Show graphs print '"; - } - else { + } else { print ''; } @@ -1184,12 +1166,10 @@ if ($action == 'create') print ''; print ''; print "\n"; - } - else { + } else { dol_print_error('', "Error, no invoice ".$object->id); } -} -else { +} else { /* * View mode */ @@ -1312,8 +1292,7 @@ else { if ($action == 'editconditions') { $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->cond_reglement_id, 'cond_reglement_id'); - } - else { + } else { $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->cond_reglement_id, 'none'); } } else { @@ -1333,8 +1312,7 @@ else { if ($action == 'editmode') { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT', 1, 1); - } - else { + } else { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'none'); } print ''; @@ -1441,8 +1419,7 @@ else { if ($action == 'editbankaccount') { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1); - } - else { + } else { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none'); } print ""; @@ -1467,8 +1444,7 @@ else { } $select = 'select;'.implode(',', $list); print $form->editfieldval($langs->trans("Model"), 'modelpdf', $object->modelpdf, $object, $user->rights->facture->creer, $select); - } - else { + } else { print $object->modelpdf; } print ""; @@ -1516,13 +1492,11 @@ else { print ''; print ''; print '
'; -if ($mesg) { print $mesg; } -else { +if ($mesg) { print $mesg; } else { print $px1->show(); print "
\n"; print $px2->show(); diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index 8256aeacc5a..a0d09a11980 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -238,8 +238,7 @@ if (empty($reshook)) setEventMessages($oldinvoice->error, $oldinvoice->errors, 'errors'); $action = "create"; } - } - else { + } else { $error++; setEventMessages($object->error, $object->errors, 'errors'); $action = "create"; @@ -251,8 +250,7 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF'].'?facid='.$object->id); exit; - } - else { + } else { $db->rollback(); $error++; @@ -298,8 +296,7 @@ if (empty($reshook)) $object->titre = GETPOST('ref', 'alpha'); // deprecated $object->title = GETPOST('ref', 'alpha'); $object->ref = $object->title; - } - else dol_print_error($db, $object->error, $object->errors); + } else dol_print_error($db, $object->error, $object->errors); } // Set bank account elseif ($action == 'setbankaccount' && $user->rights->facture->creer) @@ -354,8 +351,7 @@ if (empty($reshook)) if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } @@ -377,8 +373,7 @@ if (empty($reshook)) if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } @@ -414,18 +409,15 @@ if (empty($reshook)) { $db->commit(); $object->fetch($object->id); // Reload lines - } - else { + } else { $db->rollback(); setEventMessages($db->lasterror(), null, 'errors'); } - } - else { + } else { $db->rollback(); setEventMessages($line->error, $line->errors, 'errors'); } - } - elseif ($action == 'update_extras') + } elseif ($action == 'update_extras') { $object->oldcopy = dol_clone($object); @@ -460,8 +452,7 @@ if (empty($reshook)) { $idprod = 0; $tva_tx = (GETPOST('tva_tx', 'alpha') ? GETPOST('tva_tx', 'alpha') : 0); - } - else { + } else { $idprod = GETPOST('idprod', 'int'); $tva_tx = ''; } @@ -571,8 +562,7 @@ if (empty($reshook)) if ($price_base_type != 'HT') { $pu_ht = price2num($pu_ttc / (1 + ($tmpvat / 100)), 'MU'); - } - else { + } else { $pu_ttc = price2num($pu_ht * (1 + ($tmpvat / 100)), 'MU'); } } @@ -595,8 +585,7 @@ if (empty($reshook)) } $desc = (!empty($prod->multilangs [$outputlangs->defaultlang] ["description"])) ? $prod->multilangs [$outputlangs->defaultlang] ["description"] : $prod->description; - } - else { + } else { $desc = $prod->description; } @@ -631,8 +620,7 @@ if (empty($reshook)) $type = $prod->type; $fk_unit = $prod->fk_unit; - } - else { + } else { $pu_ht = price2num($price_ht, 'MU'); $pu_ttc = price2num(GETPOST('price_ttc'), 'MU'); $tva_npr = (preg_match('/\*/', $tva_tx) ? 1 : 0); @@ -662,8 +650,7 @@ if (empty($reshook)) if ($usercanproductignorepricemin && (!empty($price_min) && (price2num($pu_ht) * (1 - price2num($remise_percent) / 100) < price2num($price_min)))) { $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)); setEventMessages($mesg, null, 'errors'); - } - else { + } else { // Insert line $result = $object->addline($desc, $pu_ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idprod, $remise_percent, $price_base_type, $info_bits, '', $pu_ttc, $type, - 1, $special_code, $label, $fk_unit, 0, $date_start_fill, $date_end_fill, $fournprice, $buyingprice); @@ -727,17 +714,14 @@ if (empty($reshook)) unset($_POST['situations']); unset($_POST['progress']); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } $action = ''; } } - } - - elseif ($action == 'updateline' && $usercancreate && !GETPOST('cancel', 'alpha')) + } elseif ($action == 'updateline' && $usercancreate && !GETPOST('cancel', 'alpha')) { if (!$object->fetch($id) > 0) dol_print_error($db); $object->fetch_thirdparty(); @@ -935,8 +919,7 @@ if (empty($reshook)) unset($_POST['situations']); unset($_POST['progress']); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -1131,8 +1114,7 @@ if ($action == 'create') $select = array('0'=>$langs->trans('DoNotGenerateDoc'), '1'=>$langs->trans('AutoGenerateDoc')); print $form->selectarray('generate_pdf', $select, GETPOST('generate_pdf')); print "
'; - } - else { + } else { if ($object->frequency > 0) { print $langs->trans('FrequencyPer_'.$object->unit_frequency, $object->frequency); - } - else { + } else { print $langs->trans("NotARecurringInvoiceTemplate"); } } @@ -1533,8 +1507,7 @@ else { if ($action == 'date_when' || $object->frequency > 0) { print $form->editfieldkey($langs->trans("NextDateToExecution"), 'date_when', $object->date_when, $object, $user->rights->facture->creer, 'day'); - } - else { + } else { print $langs->trans("NextDateToExecution"); } print ''; @@ -1546,8 +1519,7 @@ else { if (!$object->isMaxNbGenReached()) { if (!$object->suspended && $action != 'editdate_when' && $object->frequency > 0 && $object->date_when && $object->date_when < $now) print img_warning($langs->trans("Late")); - } - else { + } else { print img_info($langs->trans("MaxNumberOfGenerationReached")); } print ''; @@ -1558,16 +1530,14 @@ else { if ($action == 'nb_gen_max' || $object->frequency > 0) { print $form->editfieldkey($langs->trans("MaxPeriodNumber"), 'nb_gen_max', $object->nb_gen_max, $object, $user->rights->facture->creer); - } - else { + } else { print $langs->trans("MaxPeriodNumber"); } print ''; if ($action == 'nb_gen_max' || $object->frequency > 0) { print $form->editfieldval($langs->trans("MaxPeriodNumber"), 'nb_gen_max', $object->nb_gen_max ? $object->nb_gen_max : '', $object, $user->rights->facture->creer); - } - else { + } else { print ''; } print ''; @@ -1602,8 +1572,7 @@ else { } print ''; print ''; - } - else { + } else { print ''; } @@ -1704,18 +1673,15 @@ else { if (!empty($object->frequency) && $object->nb_gen_max > 0 && ($object->nb_gen_done >= $object->nb_gen_max)) { print ''; - } - else { + } else { if (empty($object->frequency) || $object->date_when <= $today) { print ''; - } - else { + } else { print ''; } } - } - else { + } else { print ''; } } @@ -1725,8 +1691,7 @@ else { if (empty($object->suspended)) { print ''; - } - else { + } else { print ''; } } diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 68b1a6e91df..677701b9970 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -335,32 +335,24 @@ if (empty($reshook)) } } } - } - - elseif ($action == 'set_thirdparty' && $usercancreate) + } elseif ($action == 'set_thirdparty' && $usercancreate) { $object->fetch($id); $object->setValueFrom('fk_soc', $socid, '', null, 'int', '', $user, 'BILL_MODIFY'); header('Location: '.$_SERVER["PHP_SELF"].'?facid='.$id); exit(); - } - - elseif ($action == 'classin' && $usercancreate) + } elseif ($action == 'classin' && $usercancreate) { $object->fetch($id); $object->setProject($_POST['projectid']); - } - - elseif ($action == 'setmode' && $usercancreate) + } elseif ($action == 'setmode' && $usercancreate) { $object->fetch($id); $result = $object->setPaymentMethods(GETPOST('mode_reglement_id', 'int')); if ($result < 0) dol_print_error($db, $object->error); - } - - elseif ($action == 'setretainedwarrantyconditions' && $user->rights->facture->creer) + } elseif ($action == 'setretainedwarrantyconditions' && $user->rights->facture->creer) { $object->fetch($id); $object->retained_warranty_fk_cond_reglement = 0; // To clean property @@ -373,17 +365,13 @@ if (empty($reshook)) if ($object->retained_warranty_date_limit < $object->date) $object->retained_warranty_date_limit = $object->date; $result = $object->update($user); if ($result < 0) dol_print_error($db, $object->error); - } - - elseif ($action == 'setretainedwarranty' && $user->rights->facture->creer) + } elseif ($action == 'setretainedwarranty' && $user->rights->facture->creer) { $object->fetch($id); $result = $object->setRetainedWarranty(GETPOST('retained_warranty', 'float')); if ($result < 0) dol_print_error($db, $object->error); - } - - elseif ($action == 'setretainedwarrantydatelimit' && $user->rights->facture->creer) + } elseif ($action == 'setretainedwarrantydatelimit' && $user->rights->facture->creer) { $object->fetch($id); $result = $object->setRetainedWarrantyDateLimit(GETPOST('retained_warranty_date_limit', 'float')); @@ -400,9 +388,7 @@ if (empty($reshook)) // Multicurrency rate elseif ($action == 'setmulticurrencyrate' && $usercancreate) { $result = $object->setMulticurrencyRate(price2num(GETPOST('multicurrency_tx')), GETPOST('calculation_mode', 'int')); - } - - elseif ($action == 'setinvoicedate' && $usercancreate) + } elseif ($action == 'setinvoicedate' && $usercancreate) { $object->fetch($id); $old_date_lim_reglement = $object->date_lim_reglement; @@ -421,9 +407,7 @@ if (empty($reshook)) if ($result < 0) { dol_print_error($db, $object->error); } - } - - elseif ($action == 'setdate_pointoftax' && $usercancreate) + } elseif ($action == 'setdate_pointoftax' && $usercancreate) { $object->fetch($id); $date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']); @@ -432,9 +416,7 @@ if (empty($reshook)) if ($result < 0) { dol_print_error($db, $object->error); } - } - - elseif ($action == 'setconditions' && $usercancreate) + } elseif ($action == 'setconditions' && $usercancreate) { $object->fetch($id); $object->cond_reglement_code = 0; // To clean property @@ -450,9 +432,7 @@ if (empty($reshook)) if ($result < 0) { dol_print_error($db, $object->error); } - } - - elseif ($action == 'setpaymentterm' && $usercancreate) + } elseif ($action == 'setpaymentterm' && $usercancreate) { $object->fetch($id); $object->date_lim_reglement = dol_mktime(12, 0, 0, $_POST['paymenttermmonth'], $_POST['paymenttermday'], $_POST['paymenttermyear']); @@ -464,9 +444,7 @@ if (empty($reshook)) if ($result < 0) { dol_print_error($db, $object->error); } - } - - elseif ($action == 'setrevenuestamp' && $usercancreate) + } elseif ($action == 'setrevenuestamp' && $usercancreate) { $object->fetch($id); $object->revenuestamp = GETPOST('revenuestamp'); @@ -506,15 +484,11 @@ if (empty($reshook)) elseif ($action == 'setbankaccount' && $usercancreate) { $result = $object->setBankAccount(GETPOST('fk_account', 'int')); - } - - elseif ($action == 'setremisepercent' && $usercancreate) + } elseif ($action == 'setremisepercent' && $usercancreate) { $object->fetch($id); $result = $object->set_remise($user, $_POST['remise_percent']); - } - - elseif ($action == "setabsolutediscount" && $usercancreate) + } elseif ($action == "setabsolutediscount" && $usercancreate) { // POST[remise_id] or POST[remise_id_for_payment] @@ -570,15 +544,11 @@ if (empty($reshook)) $result = $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'setref' && $usercancreate) + } elseif ($action == 'setref' && $usercancreate) { $object->fetch($id); $object->setValueFrom('ref', GETPOST('ref'), '', null, '', '', $user, 'BILL_MODIFY'); - } - - elseif ($action == 'setref_client' && $usercancreate) + } elseif ($action == 'setref_client' && $usercancreate) { $object->fetch($id); $object->set_ref_client(GETPOST('ref_client')); @@ -618,8 +588,7 @@ if (empty($reshook)) } } } - } - else { + } else { //var_dump($conf->global->SOCIETE_EMAIL_MANDATORY); if ($key == 'EMAIL') { @@ -694,8 +663,7 @@ if (empty($reshook)) $result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { if (count($object->errors)) setEventMessages(null, $object->errors, 'errors'); else setEventMessages($object->error, $object->errors, 'errors'); } @@ -969,16 +937,14 @@ if (empty($reshook)) if ($result >= 0) { $db->commit(); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } } else { $db->commit(); } - } - else { + } else { setEventMessages($discount->error, $discount->errors, 'errors'); $db->rollback(); } @@ -1171,8 +1137,7 @@ if (empty($reshook)) { $searchPreviousInvoice = false; // find, exit; break; - } - else { + } else { $lineIndex--; // go to previous invoice in cycle } } @@ -1360,8 +1325,7 @@ if (empty($reshook)) if (in_array($object->type, $retainedWarrantyInvoiceAvailableType)) { $object->retained_warranty = GETPOST('retained_warranty', 'int'); $object->retained_warranty_fk_cond_reglement = GETPOST('retained_warranty_fk_cond_reglement', 'int'); - } - else { + } else { $object->retained_warranty = 0; $object->retained_warranty_fk_cond_reglement = 0; } @@ -1464,13 +1428,11 @@ if (empty($reshook)) $amount_ttc_diff += $am; $amountdeposit[$tva] += $am / (1 + $tva / 100); // Convert into HT for the addline } - } - else { + } else { if ($typeamount == 'amount') { $amountdeposit[0] = $valuedeposit; - } - elseif ($typeamount == 'variable') + } elseif ($typeamount == 'variable') { if ($result > 0) { @@ -1718,8 +1680,7 @@ if (empty($reshook)) setEventMessages($object->error, $object->errors, 'errors'); $error++; } - } - else { // If some invoice's lines coming from page + } else { // If some invoice's lines coming from page $id = $object->create($user); for ($i = 1; $i <= $NBLINES; $i++) { @@ -1845,8 +1806,7 @@ if (empty($reshook)) if ($id <= 0) { $mesg = $object->error; - } - else { + } else { $nextSituationInvoice = new Facture($db); $nextSituationInvoice->fetch($id); @@ -1886,8 +1846,7 @@ if (empty($reshook)) header('Location: '.$_SERVER["PHP_SELF"].'?facid='.$id); exit(); - } - else { + } else { $db->rollback(); $action = 'create'; $_GET["origin"] = $_POST["origin"]; @@ -1912,8 +1871,7 @@ if (empty($reshook)) { $idprod = 0; $tva_tx = (GETPOST('tva_tx', 'alpha') ? GETPOST('tva_tx', 'alpha') : 0); - } - else { + } else { $idprod = GETPOST('idprod', 'int'); $tva_tx = ''; } @@ -1960,8 +1918,7 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldCantBeNegativeOnInvoice", $langs->transnoentitiesnoconv("UnitPriceHT"), $langs->transnoentitiesnoconv("CustomerAbsoluteDiscountShort")), null, 'errors'); } $error++; - } - else { + } else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors'); $error++; } @@ -1987,8 +1944,7 @@ if (empty($reshook)) if ($res = $prodcomb->fetchByProductCombination2ValuePairs($idprod, $combinations)) { $idprod = $res->fk_product_child; - } - else { + } else { setEventMessages($langs->trans('ErrorProductCombinationNotFound'), null, 'errors'); $error++; } @@ -2052,8 +2008,7 @@ if (empty($reshook)) if ($price_base_type != 'HT') { $pu_ht = price2num($pu_ttc / (1 + ($tmpvat / 100)), 'MU'); - } - else { + } else { $pu_ttc = price2num($pu_ht * (1 + ($tmpvat / 100)), 'MU'); } } @@ -2220,9 +2175,7 @@ if (empty($reshook)) $action = ''; } } - } - - elseif ($action == 'updateline' && $usercancreate && !GETPOST('cancel', 'alpha')) + } elseif ($action == 'updateline' && $usercancreate && !GETPOST('cancel', 'alpha')) { if (!$object->fetch($id) > 0) dol_print_error($db); $object->fetch_thirdparty(); @@ -2279,16 +2232,14 @@ if (empty($reshook)) setEventMessages($mesg, null, 'warnings'); $error++; $result = -1; - } - elseif (GETPOST('progress') < $line->situation_percent) // TODO : use a modified $line->get_prev_progress($object->id) result + } elseif (GETPOST('progress') < $line->situation_percent) // TODO : use a modified $line->get_prev_progress($object->id) result { $mesg = $langs->trans("CantBeLessThanMinPercent"); setEventMessages($mesg, null, 'warnings'); $error++; $result = -1; } - } - elseif (GETPOST('progress') < $percent) + } elseif (GETPOST('progress') < $percent) { $mesg = '
'.$langs->trans("CantBeLessThanMinPercent").'
'; setEventMessages($mesg, null, 'warnings'); @@ -2343,8 +2294,7 @@ if (empty($reshook)) setEventMessages($langs->trans("ErrorFieldCantBeNegativeOnInvoice", $langs->transnoentitiesnoconv("UnitPriceHT"), $langs->transnoentitiesnoconv("CustomerAbsoluteDiscountShort")), null, 'errors'); } $error++; - } - else { + } else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors'); $error++; } @@ -2429,9 +2379,7 @@ if (empty($reshook)) setEventMessages($object->error, $object->errors, 'errors'); } } - } - - elseif ($action == 'updatealllines' && $usercancreate && $_POST['all_percent'] == $langs->trans('Modifier')) // Update all lines of situation invoice + } elseif ($action == 'updatealllines' && $usercancreate && $_POST['all_percent'] == $langs->trans('Modifier')) // Update all lines of situation invoice { if (!$object->fetch($id) > 0) dol_print_error($db); if (GETPOST('all_progress') != "") @@ -2447,9 +2395,7 @@ if (empty($reshook)) } else $object->update_percent($line, $_POST['all_progress']); } } - } - - elseif ($action == 'updateline' && $usercancreate && $_POST['cancel'] == $langs->trans('Cancel')) { + } elseif ($action == 'updateline' && $usercancreate && $_POST['cancel'] == $langs->trans('Cancel')) { header('Location: '.$_SERVER["PHP_SELF"].'?facid='.$id); // To show again edited page exit(); } @@ -2524,8 +2470,7 @@ if (empty($reshook)) { $searchPreviousInvoice = false; // find, exit; break; - } - else { + } else { $lineIndex--; // go to previous invoice in cycle } } @@ -2552,16 +2497,13 @@ if (empty($reshook)) { setEventMessages($langs->trans('Updated'), '', 'mesgs'); header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); - } - else { + } else { setEventMessages($langs->trans('ErrorOutingSituationInvoiceCreditNote'), array(), 'errors'); } - } - else { + } else { setEventMessages($langs->trans('ErrorOutingSituationInvoiceOnUpdate'), array(), 'errors'); } - } - else { + } else { setEventMessages($langs->trans('ErrorFindNextSituationInvoice'), array(), 'errors'); } } @@ -2583,8 +2525,7 @@ if (empty($reshook)) { dol_include_once('/'.$fromElement.'/class/'.$fromElement.'.class.php'); $lineClassName = 'OrderLine'; - } - elseif ($fromElement == 'propal') + } elseif ($fromElement == 'propal') { dol_include_once('/comm/'.$fromElement.'/class/'.$fromElement.'.class.php'); $lineClassName = 'PropaleLigne'; @@ -2626,8 +2567,7 @@ if (empty($reshook)) $array_options = $originLine->array_options; if ($object->type == Facture::TYPE_SITUATION) { $situation_percent = 0; - } - else { + } else { $situation_percent = 100; } $fk_prev_id = ''; @@ -2641,8 +2581,7 @@ if (empty($reshook)) } else { $error++; } - } - else { + } else { $error++; } } @@ -2855,8 +2794,7 @@ if ($action == 'create') //Replicate extrafields $expesrc->fetch_optionals(); $object->array_options = $expesrc->array_options; - } - else { + } else { $cond_reglement_id = (!empty($objectsrc->cond_reglement_id) ? $objectsrc->cond_reglement_id : (!empty($soc->cond_reglement_id) ? $soc->cond_reglement_id : 0)); $mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0)); $fk_account = (!empty($objectsrc->fk_account) ? $objectsrc->fk_account : (!empty($soc->fk_account) ? $soc->fk_account : 0)); @@ -2874,8 +2812,7 @@ if ($action == 'create') $object->array_options = $objectsrc->array_options; } } - } - else { + } else { $cond_reglement_id = $soc->cond_reglement_id; $mode_reglement_id = $soc->mode_reglement_id; $fk_account = $soc->fk_account; @@ -2957,8 +2894,7 @@ if ($action == 'create') print ')'; print ''; print ''."\n"; - } - else { + } else { print ''.$langs->trans('Customer').''; print ''; print $form->select_company($soc->id, 'socid', '((s.client = 1 OR s.client = 3) AND s.status=1)', 'SelectThirdParty', 0, 0, null, 0, 'minwidth300'); @@ -3181,8 +3117,7 @@ if ($action == 'create') print $desc; print '
'; } - } - else { + } else { if (!empty($conf->global->INVOICE_USE_SITUATION)) { print '
'; @@ -3287,8 +3222,7 @@ if ($action == 'create') print '
'; } - } - else { + } else { print '
'; if (empty($conf->global->INVOICE_CREDIT_NOTE_STANDALONE)) $tmp = ' '; else $tmp = ' '; @@ -3655,8 +3589,7 @@ if ($action == 'create') } print '
'; -} -elseif ($id > 0 || !empty($ref)) +} elseif ($id > 0 || !empty($ref)) { /* * Show object in view mode @@ -3765,8 +3698,7 @@ elseif ($id > 0 || !empty($ref)) array('type' => 'other', 'name' => 'idwarehouse', 'label' => $label, 'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse') ?GETPOST('idwarehouse') : 'ifone', 'idwarehouse', '', 1, 0, 0, $langs->trans("NoStockAction"), 0, $forcecombo)) ); $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id, $langs->trans('DeleteBill'), $text, 'confirm_delete', $formquestion, "yes", 1); - } - else { + } else { $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id, $langs->trans('DeleteBill'), $text, 'confirm_delete', '', 'no', 1); } } else { @@ -4247,8 +4179,7 @@ elseif ($id > 0 || !empty($ref)) if ($action == 'editmode') { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT', 1, 1); - } - else { + } else { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'none', 'CRDT'); } print ''; @@ -4311,8 +4242,7 @@ elseif ($id > 0 || !empty($ref)) if ($action == 'editbankaccount') { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1); - } - else { + } else { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none'); } print ""; @@ -4333,8 +4263,7 @@ elseif ($id > 0 || !empty($ref)) if ($action != 'editincoterm') { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); - } - else { + } else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?id='.$object->id); } print ''; @@ -4368,8 +4297,7 @@ elseif ($id > 0 || !empty($ref)) print ''; print ''; print ''; - } - else { + } else { print price($object->retained_warranty).'%'; } print ''; @@ -4402,8 +4330,7 @@ elseif ($id > 0 || !empty($ref)) $form->select_conditions_paiements($retained_warranty_fk_cond_reglement, 'retained_warranty_fk_cond_reglement', -1, 1); print ''; print ''; - } - else { + } else { $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->retained_warranty_fk_cond_reglement, 'none'); if (!$displayWarranty) { print img_picto($langs->trans('RetainedWarrantyNeed100Percent'), 'warning.png', 'class="pictowarning valignmiddle" '); @@ -4436,8 +4363,7 @@ elseif ($id > 0 || !empty($ref)) print ''; print ''; print ''; - } - else { + } else { print dol_print_date($object->retained_warranty_date_limit, 'day'); } print ''; @@ -4894,8 +4820,7 @@ elseif ($id > 0 || !empty($ref)) if ($object->type == Facture::TYPE_SITUATION) { $retainedWarranty = $total_global_ttc * $object->retained_warranty / 100; - } - else { + } else { // Because one day retained warranty could be used on standard invoices $retainedWarranty = $object->total_ttc * $object->retained_warranty / 100; } @@ -4910,8 +4835,7 @@ elseif ($id > 0 || !empty($ref)) print !empty($object->retained_warranty_date_limit) ? ' '.$langs->trans("ToPayOn", dol_print_date($object->retained_warranty_date_limit, 'day')) : ''; print ' :'.price($retainedWarranty).' '; } - } - else // Credit note + } else // Credit note { $cssforamountpaymentcomplete = 'amountpaymentneutral'; @@ -5084,8 +5008,7 @@ elseif ($id > 0 || !empty($ref)) print ''.$langs->trans('Modify').''; } } - } - else { + } else { print ''.$langs->trans('Modify').''; } } @@ -5142,12 +5065,10 @@ elseif ($id > 0 || !empty($ref)) } else { print ''.$langs->trans('MakeWithdrawRequest').''; } - } - else { + } else { //print ''.$langs->trans("MakeWithdrawRequest").''; } - } - else { + } else { //print ''.$langs->trans("MakeWithdrawRequest").''; } } @@ -5181,8 +5102,7 @@ elseif ($id > 0 || !empty($ref)) if ($resteapayer == 0) { print ''.$langs->trans('DoPaymentBack').''; - } - else { + } else { print ''.$langs->trans('DoPaymentBack').''; } } @@ -5221,15 +5141,13 @@ elseif ($id > 0 || !empty($ref)) { // If one payment or one credit note was linked to this invoice print ''.$langs->trans('ClassifyPaidPartially').''; - } - else { + } else { if (empty($conf->global->INVOICE_CAN_NEVER_BE_CANCELED)) { if ($objectidnext) { print ''.$langs->trans('ClassifyCanceled').''; - } - else { + } else { print ''.$langs->trans('ClassifyCanceled').''; } } @@ -5291,8 +5209,7 @@ elseif ($id > 0 || !empty($ref)) if (($object->total_ttc - $totalcreditnotes) == 0) { print ''.$langs->trans("RemoveSituationFromCycle").''; - } - else { + } else { print ''.$langs->trans("RemoveSituationFromCycle").''; } } @@ -5315,25 +5232,19 @@ elseif ($id > 0 || !empty($ref)) //var_dump($isErasable); if ($isErasable == -4) { print ''.$langs->trans('Delete').''; - } - elseif ($isErasable == -3) { + } elseif ($isErasable == -3) { print ''.$langs->trans('Delete').''; - } - elseif ($isErasable == -2) { + } elseif ($isErasable == -2) { print ''.$langs->trans('Delete').''; - } - elseif ($isErasable == -1) { + } elseif ($isErasable == -1) { print ''.$langs->trans('Delete').''; - } - elseif ($isErasable <= 0) // Any other cases + } elseif ($isErasable <= 0) // Any other cases { print ''.$langs->trans('Delete').''; - } - elseif ($objectidnext) + } elseif ($objectidnext) { print ''.$langs->trans('Delete').''; - } - else { + } else { print ''.$langs->trans('Delete').''; } } else { diff --git a/htdocs/compta/facture/class/api_invoices.class.php b/htdocs/compta/facture/class/api_invoices.class.php index d56d1b5cfef..c1ed5b809da 100644 --- a/htdocs/compta/facture/class/api_invoices.class.php +++ b/htdocs/compta/facture/class/api_invoices.class.php @@ -244,8 +244,7 @@ class Invoices extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieve invoice list : '.$db->lasterror()); } if (!count($obj_ret)) { @@ -548,8 +547,7 @@ class Invoices extends DolibarrApi $updateRes = $this->invoice->deleteline($lineid); if ($updateRes > 0) { return $this->get($id); - } - else { + } else { throw new RestException(405, $this->invoice->error); } } @@ -1040,14 +1038,11 @@ class Invoices extends DolibarrApi $discount = new DiscountAbsolute($this->db); if ($this->invoice->type == Facture::TYPE_CREDIT_NOTE) { $discount->description = '(CREDIT_NOTE)'; - } - elseif ($this->invoice->type == Facture::TYPE_DEPOSIT) { + } elseif ($this->invoice->type == Facture::TYPE_DEPOSIT) { $discount->description = '(DEPOSIT)'; - } - elseif ($this->invoice->type == Facture::TYPE_STANDARD || $this->invoice->type == Facture::TYPE_REPLACEMENT || $this->invoice->type == Facture::TYPE_SITUATION) { + } elseif ($this->invoice->type == Facture::TYPE_STANDARD || $this->invoice->type == Facture::TYPE_REPLACEMENT || $this->invoice->type == Facture::TYPE_SITUATION) { $discount->description = '(EXCESS RECEIVED)'; - } - else { + } else { throw new RestException(500, 'Cant convert to reduc an Invoice of this type'); } @@ -1123,16 +1118,14 @@ class Invoices extends DolibarrApi if ($result >= 0) { $this->db->commit(); - } - else { + } else { $this->db->rollback(); throw new RestException(500, 'Could not set paid'); } } else { $this->db->commit(); } - } - else { + } else { $this->db->rollback(); throw new RestException(500, 'Discount creation error'); } diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 904f59ea432..581e63be08a 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -336,8 +336,7 @@ class FactureRec extends CommonInvoice if ($result_insert < 0) { $error++; - } - else { + } else { $objectline = new FactureLigneRec($this->db); if ($objectline->fetch($result_insert)) { @@ -377,8 +376,7 @@ class FactureRec extends CommonInvoice $error++; } } - } - else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) + } else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) { $origin_id = $tmp_origin_id; $ret = $this->add_object_linked($origin, $origin_id); @@ -394,19 +392,16 @@ class FactureRec extends CommonInvoice if ($error) { $this->db->rollback(); - } - else { + } else { $this->db->commit(); return $this->id; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; } - } - else { + } else { $this->db->rollback(); return -1; } @@ -457,8 +452,7 @@ class FactureRec extends CommonInvoice } $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; @@ -580,14 +574,12 @@ class FactureRec extends CommonInvoice return -3; } return 1; - } - else { + } else { $this->error = 'Bill with id '.$rowid.' or ref '.$ref.' not found sql='.$sql; dol_syslog('Facture::Fetch Error '.$this->error, LOG_ERR); return -2; } - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -716,8 +708,7 @@ class FactureRec extends CommonInvoice $this->db->free($result); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -3; } @@ -759,13 +750,11 @@ class FactureRec extends CommonInvoice // Delete extrafields $res = $this->deleteExtraFields(); if ($res < 0) $error = -4; - } - else { + } else { $this->error = $this->db->lasterror(); $error = -1; } - } - else { + } else { $this->error = $this->db->lasterror(); $error = -2; } @@ -774,8 +763,7 @@ class FactureRec extends CommonInvoice { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return $error; } @@ -850,8 +838,7 @@ class FactureRec extends CommonInvoice if ($price_base_type == 'HT') { $pu = $pu_ht; - } - else { + } else { $pu = $pu_ttc; } @@ -958,8 +945,7 @@ class FactureRec extends CommonInvoice $this->id = $facid; $this->update_price(); return $lineId; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -1033,8 +1019,7 @@ class FactureRec extends CommonInvoice if ($price_base_type == 'HT') { $pu = $pu_ht; - } - else { + } else { $pu = $pu_ttc; } @@ -1118,8 +1103,7 @@ class FactureRec extends CommonInvoice $this->id = $facid; $this->update_price(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -1273,8 +1257,7 @@ class FactureRec extends CommonInvoice $error++; } } - } - else { + } else { $error++; $this->error = "Failed to load invoice template with id=".$line->rowid.", entity=".$conf->entity."\n"; $this->errors[] = "Failed to load invoice template with id=".$line->rowid.", entity=".$conf->entity; @@ -1287,8 +1270,7 @@ class FactureRec extends CommonInvoice dol_syslog("createRecurringInvoices Process invoice template ".$facturerec->ref." is finished with a success generation"); $nb_create++; $this->output .= $langs->trans("InvoiceGeneratedFromTemplate", $facture->ref, $facturerec->ref)."\n"; - } - else { + } else { $db->rollback("createRecurringInvoices Process invoice template id=".$facturerec->id.", ref=".$facturerec->ref); } @@ -1306,8 +1288,7 @@ class FactureRec extends CommonInvoice } $conf->entity = $saventity; // Restore entity context - } - else dol_print_error($db); + } else dol_print_error($db); $this->output = trim($this->output); @@ -1413,66 +1394,54 @@ class FactureRec extends CommonInvoice { if ($status == self::STATUS_SUSPENDED) { $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $labelStatus = $langs->trans('Active'); } - } - else { + } else { if ($status == self::STATUS_SUSPENDED) { $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $labelStatus = $langs->trans("Draft"); } } - } - elseif ($mode == 1) + } elseif ($mode == 1) { $prefix = 'Short'; if ($recur) { if ($status == self::STATUS_SUSPENDED) { $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $labelStatus = $langs->trans('Active'); } - } - else { + } else { if ($status == self::STATUS_SUSPENDED) { $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $labelStatus = $langs->trans("Draft"); } } - } - elseif ($mode == 2) + } elseif ($mode == 2) { if ($recur) { if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $statusType = 'status4'; $labelStatus = $langs->trans('Active'); } - } - else { + } else { if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $statusType = 'status0'; $labelStatus = $langs->trans('Draft'); } } - } - elseif ($mode == 3) + } elseif ($mode == 3) { if ($recur) { @@ -1480,24 +1449,20 @@ class FactureRec extends CommonInvoice if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $statusType = 'status4'; $labelStatus = $langs->trans('Active'); } - } - else { + } else { if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $statusType = 'status0'; $labelStatus = $langs->trans('Draft'); } } - } - elseif ($mode == 4) + } elseif ($mode == 4) { $prefix = ''; if ($recur) @@ -1505,24 +1470,20 @@ class FactureRec extends CommonInvoice if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $statusType = 'status4'; $labelStatus = $langs->trans('Active'); } - } - else { + } else { if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $statusType = 'status0'; $labelStatus = $langs->trans('Draft'); } } - } - elseif ($mode == 5 || $mode == 6) + } elseif ($mode == 5 || $mode == 6) { $prefix = ''; if ($mode == 5) $prefix = 'Short'; @@ -1531,18 +1492,15 @@ class FactureRec extends CommonInvoice if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $statusType = 'status4'; $labelStatus = $langs->trans('Active'); } - } - else { + } else { if ($status == self::STATUS_SUSPENDED) { $statusType = 'status6'; $labelStatus = $langs->trans('Disabled'); - } - else { + } else { $statusType = 'status0'; $labelStatus = $langs->trans('Draft'); } @@ -1631,16 +1589,14 @@ class FactureRec extends CommonInvoice $line->total_ht = -100; $line->total_ttc = -119.6; $line->total_tva = -19.6; - } - elseif ($xnbp == 2) // UP is negative (free line) + } elseif ($xnbp == 2) // UP is negative (free line) { $line->subprice = -100; $line->total_ht = -100; $line->total_ttc = -119.6; $line->total_tva = -19.6; $line->remise_percent = 0; - } - elseif ($xnbp == 3) // Discount is 50% (product line) + } elseif ($xnbp == 3) // Discount is 50% (product line) { $prodid = mt_rand(1, $num_prods); $line->fk_product = $prodids[$prodid]; @@ -1648,8 +1604,7 @@ class FactureRec extends CommonInvoice $line->total_ttc = 59.8; $line->total_tva = 9.8; $line->remise_percent = 50; - } - else // (product line) + } else // (product line) { $prodid = mt_rand(1, $num_prods); $line->fk_product = $prodids[$prodid]; @@ -1738,8 +1693,7 @@ class FactureRec extends CommonInvoice $this->frequency = $frequency; if (!empty($unit)) $this->unit_frequency = $unit; return 1; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -1770,8 +1724,7 @@ class FactureRec extends CommonInvoice $this->date_when = $date; if ($increment_nb_gen_done > 0) $this->nb_gen_done++; return 1; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -1802,8 +1755,7 @@ class FactureRec extends CommonInvoice { $this->nb_gen_max = $nb; return 1; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -1832,8 +1784,7 @@ class FactureRec extends CommonInvoice { $this->auto_validate = $validate; return 1; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -1862,8 +1813,7 @@ class FactureRec extends CommonInvoice { $this->generate_pdf = $validate; return 1; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -1892,8 +1842,7 @@ class FactureRec extends CommonInvoice { $this->modelpdf = $model; return 1; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -2038,8 +1987,7 @@ class FactureLigneRec extends CommonInvoiceLine $this->db->free($result); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -3; } @@ -2119,8 +2067,7 @@ class FactureLigneRec extends CommonInvoiceLine } $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 55adb5eb138..28f0883bb90 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -678,8 +678,7 @@ class Facture extends CommonInvoice $error++; } } - } - else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) + } else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) { $origin_id = $tmp_origin_id; $ret = $this->add_object_linked($origin, $origin_id); @@ -726,8 +725,7 @@ class Facture extends CommonInvoice //print $objcontact->code.'-'.$objcontact->source.'-'.$objcontact->fk_socpeople."\n"; $this->add_contact($objcontact->fk_socpeople, $objcontact->code, $objcontact->source); // May failed because of duplicate key or because code of contact type does not exists for new object } - } - else dol_print_error($resqlcontact); + } else dol_print_error($resqlcontact); } /* @@ -787,8 +785,7 @@ class Facture extends CommonInvoice break; } } - } - elseif (!$error && empty($this->fac_rec)) // If this->lines is an array of invoice line arrays + } elseif (!$error && empty($this->fac_rec)) // If this->lines is an array of invoice line arrays { $fk_parent_line = 0; @@ -987,25 +984,21 @@ class Facture extends CommonInvoice { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -4; } - } - else { + } else { $this->error = $langs->trans('FailedToUpdatePrice'); $this->db->rollback(); return -3; } - } - else { + } else { dol_syslog(get_class($this)."::create error ".$this->error, LOG_ERR); $this->db->rollback(); return -2; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -1090,8 +1083,7 @@ class Facture extends CommonInvoice { $this->error = $facture->error; $this->errors = $facture->errors; - } - elseif ($this->type == self::TYPE_SITUATION && !empty($conf->global->INVOICE_USE_SITUATION)) + } elseif ($this->type == self::TYPE_SITUATION && !empty($conf->global->INVOICE_USE_SITUATION)) { $this->fetchObjectLinked('', '', $this->id, 'facture'); @@ -1236,8 +1228,7 @@ class Facture extends CommonInvoice { $this->db->commit(); return $object->id; - } - else { + } else { $this->db->rollback(); return -1; } @@ -1362,10 +1353,8 @@ class Facture extends CommonInvoice if (!$error) { return 1; - } - else return -1; - } - else return -1; + } else return -1; + } else return -1; } /** @@ -1640,14 +1629,12 @@ class Facture extends CommonInvoice return -3; } return 1; - } - else { + } else { $this->error = 'Invoice with id='.$rowid.' or ref='.$ref.' or ref_ext='.$ref_ext.' not found'; dol_syslog(get_class($this)."::fetch Error ".$this->error, LOG_ERR); return 0; } - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -1768,8 +1755,7 @@ class Facture extends CommonInvoice } $this->db->free($result); return 1; - } - else { + } else { $this->error = $this->db->error(); return -3; } @@ -1807,8 +1793,7 @@ class Facture extends CommonInvoice ) { $this->tab_previous_situation_invoice[] = $invoice; - } - else { + } else { $this->tab_next_situation_invoice[] = $invoice; } } @@ -1924,8 +1909,7 @@ class Facture extends CommonInvoice } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -2011,20 +1995,17 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; - } - else { + } else { $this->error = $facligne->error; $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $facligne->error; $this->db->rollback(); return -2; } - } - else { + } else { $this->db->rollback(); return -3; } @@ -2080,8 +2061,7 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -2245,20 +2225,17 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror()." sql=".$sql; $this->db->rollback(); return -6; } - } - else { + } else { $this->error = $this->db->lasterror()." sql=".$sql; $this->db->rollback(); return -4; } - } - else { + } else { $this->db->rollback(); return -2; } @@ -2303,8 +2280,7 @@ class Facture extends CommonInvoice $result = $this->call_trigger('BILL_PAYED', $user); if ($result < 0) $error++; // End call triggers - } - else { + } else { $error++; $this->error = $this->db->lasterror(); } @@ -2313,13 +2289,11 @@ class Facture extends CommonInvoice { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { return 0; } } @@ -2355,8 +2329,7 @@ class Facture extends CommonInvoice $result = $this->call_trigger('BILL_UNPAYED', $user); if ($result < 0) $error++; // End call triggers - } - else { + } else { $error++; $this->error = $this->db->error(); dol_print_error($this->db); @@ -2366,8 +2339,7 @@ class Facture extends CommonInvoice { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -2422,14 +2394,12 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -2; @@ -2538,8 +2508,7 @@ class Facture extends CommonInvoice if ($force_number) { $num = $force_number; - } - elseif (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref)) // empty should not happened, but when it occurs, the test save life + } elseif (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref)) // empty should not happened, but when it occurs, the test save life { if (!empty($conf->global->FAC_FORCE_DATE_VALIDATION)) // If option enabled, we force invoice date { @@ -2547,8 +2516,7 @@ class Facture extends CommonInvoice $this->date_lim_reglement = $this->calculate_date_lim_reglement(); } $num = $this->getNextNumRef($this->thirdparty); - } - else { + } else { $num = $this->ref; } $this->newref = dol_sanitizeFileName($num); @@ -2777,8 +2745,7 @@ class Facture extends CommonInvoice $this->setFinal($user); } } - } - else { + } else { $error++; } @@ -2786,8 +2753,7 @@ class Facture extends CommonInvoice { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -2914,13 +2880,11 @@ class Facture extends CommonInvoice { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -3039,8 +3003,7 @@ class Facture extends CommonInvoice if ($price_base_type == 'HT') { $pu = $pu_ht; - } - else { + } else { $pu = $pu_ttc; } @@ -3181,20 +3144,17 @@ class Facture extends CommonInvoice { $this->db->commit(); return $this->line->id; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->line->error; $this->db->rollback(); return -2; } - } - else { + } else { dol_syslog(get_class($this)."::addline status of order must be Draft to allow use of ->addline()", LOG_ERR); return -3; } @@ -3409,14 +3369,12 @@ class Facture extends CommonInvoice $this->update_price(1); $this->db->commit(); return $result; - } - else { + } else { $this->error = $this->line->error; $this->db->rollback(); return -1; } - } - else { + } else { $this->error = "Invoice statut makes operation forbidden"; return -2; } @@ -3536,14 +3494,12 @@ class Facture extends CommonInvoice { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; } - } - else { + } else { $this->db->rollback(); $this->error = $line->error; return -1; @@ -3601,8 +3557,7 @@ class Facture extends CommonInvoice $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -3669,8 +3624,7 @@ class Facture extends CommonInvoice { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -3828,8 +3782,7 @@ class Facture extends CommonInvoice $this->date_closing = $this->db->jdate($obj->dateclosing); } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -3887,12 +3840,10 @@ class Facture extends CommonInvoice if ($shortlist == 1) { $ga[$obj->fid] = $obj->ref; - } - elseif ($shortlist == 2) + } elseif ($shortlist == 2) { $ga[$obj->fid] = $obj->ref.' ('.$obj->name.')'; - } - else { + } else { $ga[$i]['id'] = $obj->fid; $ga[$i]['ref'] = $obj->ref; $ga[$i]['name'] = $obj->name; @@ -3901,8 +3852,7 @@ class Facture extends CommonInvoice } } return $ga; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -3950,8 +3900,7 @@ class Facture extends CommonInvoice } //print_r($return); return $return; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -3997,8 +3946,7 @@ class Facture extends CommonInvoice $sqlSit .= " GROUP BY fs.situation_cycle_ref"; $sqlSit .= " ORDER BY fs.situation_counter"; $sql .= " AND ( f.type != ".self::TYPE_SITUATION." OR f.rowid IN (".$sqlSit.") )"; // Type non 5 si facture non avoir - } - else { + } else { $sql .= " AND f.type != ".self::TYPE_SITUATION; // Type non 5 si facture non avoir } @@ -4023,8 +3971,7 @@ class Facture extends CommonInvoice } return $return; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -4100,8 +4047,7 @@ class Facture extends CommonInvoice dol_syslog(get_class($this).'::demandeprelevement Erreur'); $error++; } - } - else { + } else { $this->error = 'WithdrawRequestErrorNilAmount'; dol_syslog(get_class($this).'::demandeprelevement WithdrawRequestErrorNilAmount'); $error++; @@ -4119,20 +4065,17 @@ class Facture extends CommonInvoice if ($error) return -1; return 1; - } - else { + } else { $this->error = "A request already exists"; dol_syslog(get_class($this).'::demandeprelevement Impossible de creer une demande, demande deja en cours'); return 0; } - } - else { + } else { $this->error = $this->db->error(); dol_syslog(get_class($this).'::demandeprelevement Erreur -2'); return -2; } - } - else { + } else { $this->error = "Status of invoice does not allow this"; dol_syslog(get_class($this)."::demandeprelevement ".$this->error." $this->statut, $this->paye, $this->mode_reglement_id"); return -3; @@ -4156,8 +4099,7 @@ class Facture extends CommonInvoice if ($this->db->query($sql)) { return 0; - } - else { + } else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::demande_prelevement_delete Error '.$this->error); return -1; @@ -4222,8 +4164,7 @@ class Facture extends CommonInvoice } return $response; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -4343,8 +4284,7 @@ class Facture extends CommonInvoice $line->multicurrency_total_ht = -200; $line->multicurrency_total_ttc = -239.2; $line->multicurrency_total_tva = -39.2; - } - elseif ($xnbp == 2) // UP is negative (free line) + } elseif ($xnbp == 2) // UP is negative (free line) { $line->subprice = -100; $line->total_ht = -100; @@ -4354,8 +4294,7 @@ class Facture extends CommonInvoice $line->multicurrency_total_ht = -200; $line->multicurrency_total_ttc = -239.2; $line->multicurrency_total_tva = -39.2; - } - elseif ($xnbp == 3) // Discount is 50% (product line) + } elseif ($xnbp == 3) // Discount is 50% (product line) { $prodid = mt_rand(1, $num_prods); $line->fk_product = $prodids[$prodid]; @@ -4366,8 +4305,7 @@ class Facture extends CommonInvoice $line->multicurrency_total_ttc = 119.6; $line->multicurrency_total_tva = 19.6; $line->remise_percent = 50; - } - else // (product line) + } else // (product line) { $prodid = mt_rand(1, $num_prods); $line->fk_product = $prodids[$prodid]; @@ -4453,8 +4391,7 @@ class Facture extends CommonInvoice } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -4615,8 +4552,7 @@ class Facture extends CommonInvoice { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); @@ -4701,12 +4637,10 @@ class Facture extends CommonInvoice if (($totalpaye < $this->total_ttc - $RetainedWarrantyAmount) && $this->date_lim_reglement < ($now - $conf->facture->client->warning_delay)) { $hasDelay = 1; - } - elseif ($totalpaye < $this->total_ttc && $this->retained_warranty_date_limit < ($now - $conf->facture->client->warning_delay)) + } elseif ($totalpaye < $this->total_ttc && $this->retained_warranty_date_limit < ($now - $conf->facture->client->warning_delay)) { $hasDelay = 1; - } - else { + } else { $hasDelay = 0; } } @@ -4792,12 +4726,10 @@ class Facture extends CommonInvoice $total2BillWT += $this->total_ttc; $retainedWarrantyAmount = $total2BillWT * $this->retained_warranty / 100; - } - else { + } else { return -1; } - } - else { + } else { // Because one day retained warranty could be used on standard invoices $retainedWarrantyAmount = $this->total_ttc * $this->retained_warranty / 100; } @@ -4833,14 +4765,12 @@ class Facture extends CommonInvoice { $this->retained_warranty = floatval($value); return 1; - } - else { + } else { dol_syslog(get_class($this).'::setRetainedWarranty Erreur '.$sql.' - '.$this->db->error()); $this->error = $this->db->error(); return -1; } - } - else { + } else { dol_syslog(get_class($this).'::setRetainedWarranty, status of the object is incompatible'); $this->error = 'Status of the object is incompatible '.$this->statut; return -2; @@ -4874,14 +4804,12 @@ class Facture extends CommonInvoice { $this->retained_warranty_date_limit = $timestamp; return 1; - } - else { + } else { dol_syslog(get_class($this).'::setRetainedWarrantyDateLimit Erreur '.$sql.' - '.$this->db->error()); $this->error = $this->db->error(); return -1; } - } - else { + } else { dol_syslog(get_class($this).'::setRetainedWarrantyDateLimit, status of the object is incompatible'); $this->error = 'Status of the object is incompatible '.$this->statut; return -2; @@ -5062,8 +4990,7 @@ class FactureLigne extends CommonInvoiceLine $this->db->free($result); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -5116,8 +5043,7 @@ class FactureLigne extends CommonInvoiceLine if (($result = $this->defineBuyPrice($this->subprice, $this->remise_percent, $this->fk_product)) < 0) { return $result; - } - else { + } else { $this->pa_ht = $result; } } @@ -5233,8 +5159,7 @@ class FactureLigne extends CommonInvoiceLine $this->db->rollback(); return -3; } - } - else { + } else { $result = $discount->link_to_invoice($this->rowid, 0); if ($result < 0) { @@ -5244,15 +5169,13 @@ class FactureLigne extends CommonInvoiceLine return -3; } } - } - else { + } else { $this->error = $langs->trans("ErrorADiscountThatHasBeenRemovedIsIncluded"); dol_syslog(get_class($this)."::insert Error ".$this->error, LOG_ERR); $this->db->rollback(); return -3; } - } - else { + } else { $this->error = $discount->error; dol_syslog(get_class($this)."::insert Error ".$this->error, LOG_ERR); $this->db->rollback(); @@ -5274,8 +5197,7 @@ class FactureLigne extends CommonInvoiceLine $this->db->commit(); return $this->id; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; @@ -5328,8 +5250,7 @@ class FactureLigne extends CommonInvoiceLine if (($result = $this->defineBuyPrice($this->subprice, $this->remise_percent, $this->fk_product)) < 0) { return $result; - } - else { + } else { $this->pa_ht = $result; } } @@ -5407,8 +5328,7 @@ class FactureLigne extends CommonInvoiceLine } $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -2; @@ -5450,8 +5370,7 @@ class FactureLigne extends CommonInvoiceLine { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; @@ -5491,8 +5410,7 @@ class FactureLigne extends CommonInvoiceLine { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -2; diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php index 1fddf20b023..9888bd23d13 100644 --- a/htdocs/compta/facture/class/paymentterm.class.php +++ b/htdocs/compta/facture/class/paymentterm.class.php @@ -145,8 +145,7 @@ class PaymentTerm // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -201,8 +200,7 @@ class PaymentTerm // extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -237,8 +235,7 @@ class PaymentTerm // extends CommonObject } $this->db->free($resql); return $ret; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -302,8 +299,7 @@ class PaymentTerm // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -341,8 +337,7 @@ class PaymentTerm // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -391,8 +386,7 @@ class PaymentTerm // extends CommonObject { $this->db->commit(); return $object->id; - } - else { + } else { $this->db->rollback(); return -1; } diff --git a/htdocs/compta/facture/contact.php b/htdocs/compta/facture/contact.php index 77ff0f813c3..44954d863e5 100644 --- a/htdocs/compta/facture/contact.php +++ b/htdocs/compta/facture/contact.php @@ -69,14 +69,12 @@ if ($action == 'addcontact' && $user->rights->facture->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -88,8 +86,7 @@ elseif ($action == 'swapstatut' && $user->rights->facture->creer) if ($object->fetch($id)) { $result = $object->swapContactStatus(GETPOST('ligne')); - } - else { + } else { dol_print_error($db); } } @@ -104,8 +101,7 @@ elseif ($action == 'deletecontact' && $user->rights->facture->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { dol_print_error($db); } } @@ -204,8 +200,7 @@ if ($id > 0 || !empty($ref)) $res = @include dol_buildpath($reldir.'/contacts.tpl.php'); if ($res) break; } - } - else { + } else { // Record not found print "ErrorRecordNotFound"; } diff --git a/htdocs/compta/facture/document.php b/htdocs/compta/facture/document.php index 7e95b92cc3d..ed9b032ae90 100644 --- a/htdocs/compta/facture/document.php +++ b/htdocs/compta/facture/document.php @@ -181,12 +181,10 @@ if ($id > 0 || !empty($ref)) $permtoedit = $user->rights->facture->creer; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; - } - else { + } else { dol_print_error($db); } -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php index 8275dbcf450..dfda4a5b16d 100644 --- a/htdocs/compta/facture/invoicetemplate_list.php +++ b/htdocs/compta/facture/invoicetemplate_list.php @@ -609,8 +609,7 @@ if ($resql) if (!$invoicerectmp->isMaxNbGenReached()) { if (!$objp->suspended && $objp->frequency > 0 && $db->jdate($objp->date_when) && $db->jdate($objp->date_when) < $now) print img_warning($langs->trans("Late")); - } - else { + } else { print img_info($langs->trans("MaxNumberOfGenerationReached")); } print '
'; @@ -653,17 +652,14 @@ if ($resql) if ($invoicerectmp->isMaxNbGenReached()) { print $langs->trans("MaxNumberOfGenerationReached"); - } - elseif (empty($objp->frequency) || $db->jdate($objp->date_when) <= $today) + } elseif (empty($objp->frequency) || $db->jdate($objp->date_when) <= $today) { print ''; print $langs->trans("CreateBill").''; - } - else { + } else { print $form->textwithpicto('', $langs->trans("DateIsNotEnough")); } - } - else { + } else { print " "; } if (!$i) $totalarray['nbfield']++; @@ -673,8 +669,7 @@ if ($resql) $i++; } - } - else { + } else { $colspan = 1; foreach ($arrayfields as $key => $val) { if (!empty($val['checked'])) $colspan++; } print ''.$langs->trans("NoRecordFound").''; @@ -689,8 +684,7 @@ if ($resql) print ""; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 7b3025db810..c21d19ad538 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -304,8 +304,7 @@ if ($massaction == 'makepayment'){ header('Location: '.$loc); exit; -} -elseif ($massaction == 'withdrawrequest') +} elseif ($massaction == 'withdrawrequest') { $langs->load("withdrawals"); @@ -313,8 +312,7 @@ elseif ($massaction == 'withdrawrequest') { $error++; setEventMessages($langs->trans("NotEnoughPermissions"), null, 'errors'); - } - else { + } else { //Checking error $error = 0; @@ -362,12 +360,10 @@ elseif ($massaction == 'withdrawrequest') if ($numprlv > 0) { $error++; setEventMessages($objecttmp->ref.' '.$langs->trans("RequestAlreadyDone"), $objecttmp->errors, 'warnings'); - } - elseif (!empty($objecttmp->mode_reglement_code) && $objecttmp->mode_reglement_code != 'PRE') { + } elseif (!empty($objecttmp->mode_reglement_code) && $objecttmp->mode_reglement_code != 'PRE') { $error++; setEventMessages($objecttmp->ref.' '.$langs->trans("BadPaymentMethod"), $objecttmp->errors, 'errors'); - } - else { + } else { $listofbills[] = $objecttmp; // $listofbills will only contains invoices with good payment method and no request already done } } @@ -385,8 +381,7 @@ elseif ($massaction == 'withdrawrequest') { $db->commit(); $nbwithdrawrequestok++; - } - else { + } else { $db->rollback(); setEventMessages($aBill->error, $aBill->errors, 'errors'); } @@ -513,8 +508,7 @@ if ($search_status != '-1' && $search_status != '') if ($search_status == '1') $sql .= " AND f.fk_statut = 1"; // unpayed if ($search_status == '2') $sql .= " AND f.fk_statut = 2"; // payed Not that some corrupted data may contains f.fk_statut = 1 AND f.paye = 1 (it means payed too but should not happend. If yes, reopen and reclassify billed) if ($search_status == '3') $sql .= " AND f.fk_statut = 3"; // abandonned - } - else { + } else { $sql .= " AND f.fk_statut IN (".$db->escape($search_status).")"; // When search_status is '1,2' for example } } @@ -560,8 +554,7 @@ if (!$sall) 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 : ''); } -} -else { +} else { $sql .= natural_search(array_keys($fieldstosearchall), $sall); } @@ -670,8 +663,7 @@ if ($resql) if ($user->rights->facture->supprimer) { if (!empty($conf->global->INVOICE_CAN_REMOVE_DRAFT_ONLY)) { $arrayofmassactions['predeletedraft'] = $langs->trans("Deletedraft"); - } - elseif (!empty($conf->global->INVOICE_CAN_ALWAYS_BE_REMOVED)) { // mass deletion never possible on invoices on such situation + } elseif (!empty($conf->global->INVOICE_CAN_ALWAYS_BE_REMOVED)) { // mass deletion never possible on invoices on such situation $arrayofmassactions['predelete'] = $langs->trans("Delete"); } } @@ -1215,8 +1207,7 @@ if ($resql) if ($contextpage == 'poslist') { print $obj->ref; - } - else { + } else { print $facturestatic->getNomUrl(1, '', 200, 0, '', 0, 1); } @@ -1311,8 +1302,7 @@ if ($resql) if ($contextpage == 'poslist') { print $thirdpartystatic->name; - } - else { + } else { print $thirdpartystatic->getNomUrl(1, 'customer'); } print ''; @@ -1613,8 +1603,7 @@ if ($resql) $title = ''; print $formfile->showdocuments('massfilesarea_invoices', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php index 109231a240d..7cbe336e126 100644 --- a/htdocs/compta/facture/prelevement.php +++ b/htdocs/compta/facture/prelevement.php @@ -86,8 +86,7 @@ if (empty($reshook)) $db->commit(); setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } @@ -291,12 +290,10 @@ if ($object->id > 0) if ($action == 'editinvoicedate') { $form->form_date($_SERVER['PHP_SELF'].'?id='.$object->id, $object->date, 'invoicedate'); - } - else { + } else { print dol_print_date($object->date, 'daytext'); } - } - else { + } else { print dol_print_date($object->date, 'daytext'); } print ''; @@ -315,12 +312,10 @@ if ($object->id > 0) if ($action == 'editconditions') { $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'cond_reglement_id'); - } - else { + } else { $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'none'); } - } - else { + } else { print ' '; } print ''; @@ -338,15 +333,13 @@ if ($object->id > 0) if ($action == 'editpaymentterm') { $form->form_date($_SERVER['PHP_SELF'].'?id='.$object->id, $object->date_lim_reglement, 'paymentterm'); - } - else { + } else { print dol_print_date($object->date_lim_reglement, 'daytext'); if ($object->hasDelay()) { print img_warning($langs->trans('Late')); } } - } - else { + } else { print ' '; } print ''; @@ -362,8 +355,7 @@ if ($object->id > 0) if ($action == 'editmode') { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->mode_reglement_id, 'mode_reglement_id'); - } - else { + } else { $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->mode_reglement_id, 'none'); } print ''; @@ -380,8 +372,7 @@ if ($object->id > 0) if ($action == 'editbankaccount') { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1); - } - else { + } else { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none'); } print ""; @@ -493,8 +484,7 @@ if ($object->id > 0) { $num = $db->num_rows($result_sql); $numopen = $num; - } - else { + } else { dol_print_error($db); } @@ -510,8 +500,7 @@ if ($object->id > 0) { $obj = $db->fetch_object($result_sql); if ($obj) $pending = $obj->amount; - } - else { + } else { dol_print_error($db); } @@ -538,22 +527,18 @@ if ($object->id > 0) print ''; print ''; print ''; - } - else { + } else { print ''.$langs->trans("MakeWithdrawRequest").''; } - } - else { + } else { print ''.$langs->trans("MakeWithdrawRequest").''; } - } - else { + } else { if ($num == 0) { if ($object->statut > Facture::STATUS_DRAFT) print ''.$langs->trans("MakeWithdrawRequest").''; else print ''.$langs->trans("MakeWithdrawRequest").''; - } - else print ''.$langs->trans("MakeWithdrawRequest").''; + } else print ''.$langs->trans("MakeWithdrawRequest").''; } print "

\n"; @@ -620,8 +605,7 @@ if ($object->id > 0) } $db->free($result_sql); - } - else { + } else { dol_print_error($db); } @@ -681,8 +665,7 @@ if ($object->id > 0) print ''.$langs->trans("None").''; $db->free($result); - } - else { + } else { dol_print_error($db); } diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index d0c7eacffc6..82ba8a33467 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -180,8 +180,7 @@ if (!$user->rights->societe->client->voir || $user->socid) $filename_avg = $dir.'/ordersaverage-'.$user->id.'-'.$year.'.png'; if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$user->id.'-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$user->id.'-'.$year.'.png'; -} -else { +} else { $filename_avg = $dir.'/ordersaverage-'.$year.'.png'; if ($mode == 'customer') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstats&file=ordersaverage-'.$year.'.png'; if ($mode == 'supplier') $fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-'.$year.'.png'; @@ -368,8 +367,7 @@ print '
'; // Show graphs print ''; print ''; print ''; - } - else { + } else { print ''; } print "
'; -if ($mesg) { print $mesg; } -else { +if ($mesg) { print $mesg; } else { print $px1->show(); print "
\n"; print $px2->show(); diff --git a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php index 571a00d6b47..ef35c03eb54 100644 --- a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php @@ -78,8 +78,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) // If not abandonned $total = $total + $sign * $objectlink->total_ht; echo price($objectlink->total_ht); - } - else { + } else { echo ''.price($objectlink->total_ht).''; } } diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index 2efe20a2fc5..d5daadcb557 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -214,14 +214,12 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) print '
'.$langs->trans("Total").''.price($tot_ttc).'
'.$langs->trans("NoInvoice").'

"; $db->free($resql); - } - else { + } else { dol_print_error($db); } } @@ -300,14 +298,12 @@ if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SU print ''.$langs->trans("Total").''; print ''.price($tot_ttc).''; print ''; - } - else { + } else { print ''.$langs->trans("NoInvoice").''; } print "

"; $db->free($resql); - } - else { + } else { dol_print_error($db); } } @@ -424,16 +420,14 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) $i++; } - } - else { + } else { $colspan = 5; if (!empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) $colspan++; print ''.$langs->trans("NoInvoice").''; } print '
'; $db->free($resql); - } - else { + } else { dol_print_error($db); } } @@ -523,15 +517,13 @@ if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SU $totalam += $obj->am; $i++; } - } - else { + } else { $colspan = 5; if (!empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) $colspan++; print ''.$langs->trans("NoInvoice").''; } print '
'; - } - else { + } else { dol_print_error($db); } } @@ -600,13 +592,11 @@ if (!empty($conf->don->enabled) && $user->rights->don->lire) $i++; } - } - else { + } else { print ''.$langs->trans("None").''; } print '
'; - } - else dol_print_error($db); + } else dol_print_error($db); } /** @@ -677,14 +667,12 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) print ''; print ' '; print ''; - } - else { + } else { print ''.$langs->trans("None").''; } print "
"; $db->free($resql); - } - else { + } else { dol_print_error($db); } } @@ -804,8 +792,7 @@ if (!empty($conf->facture->enabled) && !empty($conf->commande->enabled) && $user print '
'; } $db->free($resql); - } - else { + } else { dol_print_error($db); } } @@ -927,16 +914,14 @@ if (!empty($conf->facture->enabled) && $user->rights->facture->lire) print ''.price($totalam).''; print ' '; print ''; - } - else { + } else { $colspan = 6; if (!empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) $colspan++; print ''.$langs->trans("NoInvoice").''; } print '
'; $db->free($resql); - } - else { + } else { dol_print_error($db); } } @@ -1035,15 +1020,13 @@ if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SU print ''.price($totalam).''; print ' '; print ''; - } - else { + } else { $colspan = 6; if (!empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) $colspan++; print ''.$langs->trans("NoInvoice").''; } print '
'; - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/compta/journal/purchasesjournal.php b/htdocs/compta/journal/purchasesjournal.php index 91d855d4454..78ef32072d6 100644 --- a/htdocs/compta/journal/purchasesjournal.php +++ b/htdocs/compta/journal/purchasesjournal.php @@ -168,8 +168,7 @@ if ($result) $i++; } -} -else { +} else { dol_print_error($db); } @@ -238,8 +237,7 @@ foreach ($tabfac as $key => $val) { print ''.($mt < 0 ?price(-$mt) : '').""; print ''.($mt >= 0 ?price($mt) : '').""; - } - else { + } else { print ''.($mt >= 0 ?price($mt) : '').""; print ''.($mt < 0 ?price(-$mt) : '').""; } diff --git a/htdocs/compta/journal/sellsjournal.php b/htdocs/compta/journal/sellsjournal.php index a7eb09de31a..bd44f6c47cc 100644 --- a/htdocs/compta/journal/sellsjournal.php +++ b/htdocs/compta/journal/sellsjournal.php @@ -114,8 +114,7 @@ $sql .= " WHERE f.entity IN (".getEntity('invoice').")"; $sql .= " AND f.fk_statut > 0"; if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { $sql .= " AND f.type IN (".Facture::TYPE_STANDARD.",".Facture::TYPE_REPLACEMENT.",".Facture::TYPE_CREDIT_NOTE.",".Facture::TYPE_SITUATION.")"; -} -else { +} else { $sql .= " AND f.type IN (".Facture::TYPE_STANDARD.",".Facture::TYPE_STANDARD.",".Facture::TYPE_CREDIT_NOTE.",".Facture::TYPE_DEPOSIT.",".Facture::TYPE_SITUATION.")"; } @@ -195,8 +194,7 @@ if ($result) $tabcompany[$obj->rowid] = array('id'=>$obj->socid, 'name'=>$obj->name, 'client'=>$obj->client); $i++; } -} -else { +} else { dol_print_error($db); } @@ -268,8 +266,7 @@ foreach ($tabfac as $key => $val) { print ''.($mt >= 0 ?price($mt) : '').""; print ''.($mt < 0 ?price(-$mt) : '').""; - } - else { + } else { print ''.($mt < 0 ?price(-$mt) : '').""; print ''.($mt >= 0 ?price($mt) : '').""; } diff --git a/htdocs/compta/localtax/card.php b/htdocs/compta/localtax/card.php index e5a20b5486b..cd7bbfd11c2 100644 --- a/htdocs/compta/localtax/card.php +++ b/htdocs/compta/localtax/card.php @@ -80,8 +80,7 @@ if ($action == 'add' && $_POST["cancel"] <> $langs->trans("Cancel")) $db->commit(); header("Location: list.php?localTaxType=".$lttype); exit; - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); $_GET["action"] = "create"; @@ -112,19 +111,16 @@ if ($action == 'delete') $db->commit(); header("Location: ".DOL_URL_ROOT.'/compta/localtax/list.php?localTaxType='.$object->ltt); exit; - } - else { + } else { $object->error = $accountline->error; $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { $mesg = 'Error try do delete a line linked to a conciliated bank transaction'; setEventMessages($mesg, null, 'errors'); } @@ -285,8 +281,7 @@ if ($id) if ($object->rappro == 0) { print ''.$langs->trans("Delete").''; - } - else { + } else { print ''.$langs->trans("Delete").''; } print ""; diff --git a/htdocs/compta/localtax/class/localtax.class.php b/htdocs/compta/localtax/class/localtax.class.php index 59adc220c8f..1dfeb0b8930 100644 --- a/htdocs/compta/localtax/class/localtax.class.php +++ b/htdocs/compta/localtax/class/localtax.class.php @@ -137,13 +137,11 @@ class Localtax extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); $this->db->rollback(); return -1; @@ -204,8 +202,7 @@ class Localtax extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -267,8 +264,7 @@ class Localtax extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -373,13 +369,11 @@ class Localtax extends CommonObject $ret = $obj->amount; $this->db->free($result); return $ret; - } - else { + } else { $this->db->free($result); return 0; } - } - else { + } else { print $this->db->lasterror(); return -1; } @@ -412,13 +406,11 @@ class Localtax extends CommonObject $ret = $obj->total_localtax; $this->db->free($result); return $ret; - } - else { + } else { $this->db->free($result); return 0; } - } - else { + } else { print $this->db->lasterror(); return -1; } @@ -453,13 +445,11 @@ class Localtax extends CommonObject $ret = $obj->amount; $this->db->free($result); return $ret; - } - else { + } else { $this->db->free($result); return 0; } - } - else { + } else { print $this->db->lasterror(); return -1; } @@ -537,8 +527,7 @@ class Localtax extends CommonObject if ($bank_line_id > 0) { $this->update_fk_bank($bank_line_id); - } - else { + } else { $this->error = $acc->error; $ok = 0; } @@ -556,19 +545,16 @@ class Localtax extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -3; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -590,8 +576,7 @@ class Localtax extends CommonObject $result = $this->db->query($sql); if ($result) { return 1; - } - else { + } else { dol_print_error($this->db); return -1; } diff --git a/htdocs/compta/localtax/clients.php b/htdocs/compta/localtax/clients.php index 12112766c24..10111dd7faa 100644 --- a/htdocs/compta/localtax/clients.php +++ b/htdocs/compta/localtax/clients.php @@ -53,15 +53,13 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $q = GETPOST("q"); if (empty($q)) { - if (GETPOST("month")) { $date_start = dol_get_first_day($year_start, GETPOST("month"), false); $date_end = dol_get_last_day($year_start, GETPOST("month"), false); } - else { + if (GETPOST("month")) { $date_start = dol_get_first_day($year_start, GETPOST("month"), false); $date_end = dol_get_last_day($year_start, GETPOST("month"), false); } else { $date_start = dol_get_first_day($year_start, empty($conf->global->SOCIETE_FISCAL_MONTH_START) ? 1 : $conf->global->SOCIETE_FISCAL_MONTH_START, false); if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1; elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1; elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) $date_end = dol_time_plus_duree($date_start, 1, 'm') - 1; } - } - else { + } else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -199,8 +197,7 @@ if ($calc == 0 || $calc == 2) if ($coll->assuj == '1') { $intra = $langs->trans('Unknown'); - } - else { + } else { $intra = ''; } } @@ -226,8 +223,7 @@ if ($calc == 0 || $calc == 2) print ''.price($totalamount).''; print ''.price($total).''; print ''; - } - else { + } else { $langs->load("errors"); if ($coll_list == -1) print ''.$langs->trans("ErrorNoAccountancyModuleLoaded").''; @@ -269,8 +265,7 @@ if ($calc == 0 || $calc == 1) { if ($coll->assuj == '1') { $intra = $langs->trans('Unknown'); - } - else { + } else { $intra = ''; } } @@ -298,8 +293,7 @@ if ($calc == 0 || $calc == 1) { print ''; print ''; - } - else { + } else { $langs->load("errors"); if ($coll_list == -1) print ''.$langs->trans("ErrorNoAccountancyModuleLoaded").''; diff --git a/htdocs/compta/localtax/index.php b/htdocs/compta/localtax/index.php index b8a906ac818..8e810495ff4 100644 --- a/htdocs/compta/localtax/index.php +++ b/htdocs/compta/localtax/index.php @@ -52,13 +52,11 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $q = GETPOST("q", "int"); if (empty($q)) { - if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } - else { + if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } else { $date_start = dol_get_first_day($year_start, $conf->global->SOCIETE_FISCAL_MONTH_START, false); $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1; } - } - else { + } else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -150,8 +148,7 @@ function pt($db, $sql, $date) $amountpaid = 0; $previousmode = ''; $previousmonth = ''; - } - else { + } else { $previousmode = $obj->mode; $previousmonth = $obj->dm; } @@ -179,8 +176,7 @@ function pt($db, $sql, $date) print ""; $db->free($result); - } - else { + } else { dol_print_error($db); } } @@ -385,8 +381,7 @@ while ((($y < $yend) || ($y == $yend && $m <= $mend)) && $mcursor < 1000) // $mc 'localtax2' =>$x_paye[$my_paye_rate]['localtax2_list'][$id], //'link' =>$expensereport->getNomUrl(1) ); - } - else { + } else { //$invoice_supplier->id=$x_paye[$my_paye_rate]['facid'][$id]; //$invoice_supplier->ref=$x_paye[$my_paye_rate]['facnum'][$id]; //$invoice_supplier->type=$x_paye[$my_paye_rate]['type'][$id]; diff --git a/htdocs/compta/localtax/list.php b/htdocs/compta/localtax/list.php index 58ec8cb090e..a8b37c3ef93 100644 --- a/htdocs/compta/localtax/list.php +++ b/htdocs/compta/localtax/list.php @@ -95,8 +95,7 @@ if ($result) print ""; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php index 45d34f10cce..058f6871c7d 100644 --- a/htdocs/compta/localtax/quadri_detail.php +++ b/htdocs/compta/localtax/quadri_detail.php @@ -63,15 +63,13 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $q = GETPOST("q", "int"); if (empty($q)) { - if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } - else { + if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } else { $date_start = dol_get_first_day($year_start, empty($conf->global->SOCIETE_FISCAL_MONTH_START) ? 1 : $conf->global->SOCIETE_FISCAL_MONTH_START, false); if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1; elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1; elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) $date_end = dol_time_plus_duree($date_start, 1, 'm') - 1; } - } - else { + } else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -221,8 +219,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) elseif ($x_coll == -2) print ''.$langs->trans("FeatureNotYetAvailable").''; else print ''.$langs->trans("Error").''; -} -else { +} else { $x_both = array(); //now, from these two arrays, get another array with one rate per line @@ -368,8 +365,7 @@ else { $product_static->type = $fields['ptype']; print $product_static->getNomUrl(1); if (dol_string_nohtmltag($fields['descr'])) print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']), 16); - } - else { + } else { if ($type) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); if (preg_match('/^\((.*)\)$/', $fields['descr'], $reg)) @@ -411,8 +407,7 @@ else { if ($type == 0) { print $langs->trans("NotUsedForGoods"); - } - else { + } else { print price($fields['payment_amount']); if (isset($fields['payment_amount'])) print ' ('.round($ratiopaymentinvoice * 100, 2).'%)'; } @@ -527,8 +522,7 @@ else { $product_static->type = $fields['ptype']; print $product_static->getNomUrl(1); if (dol_string_nohtmltag($fields['descr'])) print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']), 16); - } - else { + } else { if ($type) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']), 16); @@ -566,8 +560,7 @@ else { if ($type == 0) { print $langs->trans("NA"); - } - else { + } else { print price(price2num($fields['payment_amount'], 'MT')); if (isset($fields['payment_amount'])) { print ' ('.round($ratiopaymentinvoice * 100, 2).'%)'; diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php index 5c0f258a091..4eea16f706b 100644 --- a/htdocs/compta/paiement.php +++ b/htdocs/compta/paiement.php @@ -131,8 +131,7 @@ if (empty($reshook)) } $formquestion[$i++] = array('type' => 'hidden', 'name' => $key, 'value' => $_POST[$key]); - } - elseif (substr($key, 0, 21) == 'multicurrency_amount_') + } elseif (substr($key, 0, 21) == 'multicurrency_amount_') { $cursorfacid = substr($key, 21); $multicurrency_amounts[$cursorfacid] = price2num(trim(GETPOST($key))); @@ -312,8 +311,7 @@ if (empty($reshook)) else $loc = DOL_URL_ROOT.'/compta/paiement/card.php?id='.$paiement_id; header('Location: '.$loc); exit; - } - else { + } else { $db->rollback(); } } @@ -502,8 +500,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print ''; $form->select_comptes($accountid, 'accountid', 0, '', 2); print ''; - } - else { + } else { print ' '; } print "\n"; @@ -558,8 +555,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie if ($facture->type != Facture::TYPE_CREDIT_NOTE) { $sql .= ' AND type IN (0,1,3,5)'; // Standard invoice, replacement, deposit, situation - } - else { + } else { $sql .= ' AND type = 2'; // If paying back a credit note, we show all credit notes } // Sort invoices by date and serial number: the older one comes first @@ -662,8 +658,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie } print ''; - } - else { + } else { print ''; } @@ -706,8 +701,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmout' data-rowname='".$namef."' data-value='".($sign * $multicurrency_remaintopay)."'"); print ''; print ''; - } - else { + } else { print ''; print ''; } @@ -741,8 +735,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmout' data-rowname='".$namef."' data-value='".($sign * $remaintopay)."'"); print ''; print ''; - } - else { + } else { print ''; print ''; } @@ -797,8 +790,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie //print "\n"; } $db->free($resql); - } - else { + } else { dol_print_error($db); } diff --git a/htdocs/compta/paiement/card.php b/htdocs/compta/paiement/card.php index f67a2e2c12a..4acfd34a53a 100644 --- a/htdocs/compta/paiement/card.php +++ b/htdocs/compta/paiement/card.php @@ -65,8 +65,7 @@ if ($action == 'setnote' && $user->rights->facture->paiement) { $db->commit(); $action = ''; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } @@ -86,13 +85,11 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->facture-> { header("Location: ".$backtopage); exit; - } - else { + } else { header("Location: list.php"); exit; } - } - else { + } else { $langs->load("errors"); setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); @@ -128,8 +125,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->facture-> header('Location: '.$_SERVER['PHP_SELF'].'?id='.$object->id); exit; - } - else { + } else { $langs->load("errors"); setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); @@ -143,8 +139,7 @@ if ($action == 'setnum_paiement' && !empty($_POST['num_paiement'])) if ($res === 0) { setEventMessages($langs->trans('PaymentNumberUpdateSucceeded'), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans('PaymentNumberUpdateFailed'), null, 'errors'); } } @@ -157,8 +152,7 @@ if ($action == 'setdatep' && !empty($_POST['datepday'])) if ($res === 0) { setEventMessages($langs->trans('PaymentDateUpdateSucceeded'), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans('PaymentDateUpdateFailed'), null, 'errors'); } } @@ -407,8 +401,7 @@ if ($resql) print ''; $db->free($resql); -} -else { +} else { dol_print_error($db); } @@ -438,8 +431,7 @@ if ($user->socid == 0 && $action == '') if (!$disable_delete) { print ''.$langs->trans('Delete').''; - } - else { + } else { print ''.$langs->trans('Delete').''; } } diff --git a/htdocs/compta/paiement/cheque/card.php b/htdocs/compta/paiement/cheque/card.php index 44a160b35e0..5c490ce3128 100644 --- a/htdocs/compta/paiement/cheque/card.php +++ b/htdocs/compta/paiement/cheque/card.php @@ -79,8 +79,7 @@ if ($action == 'setdate' && $user->rights->banque->cheque) { setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -97,8 +96,7 @@ if ($action == 'setrefext' && $user->rights->banque->cheque) { setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -115,8 +113,7 @@ if ($action == 'setref' && $user->rights->banque->cheque) { setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -146,12 +143,10 @@ if ($action == 'create' && $_POST["accountid"] > 0 && $user->rights->banque->che header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { setEventMessages($langs->trans("ErrorSelectAtLeastOne"), null, 'mesgs'); $action = 'new'; } @@ -165,8 +160,7 @@ if ($action == 'remove' && $id > 0 && $_GET["lineid"] > 0 && $user->rights->banq { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -179,8 +173,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->banque->c { header("Location: index.php"); exit; - } - else { + } else { setEventMessages($paiement->error, $paiement->errors, 'errors'); } } @@ -205,8 +198,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->banque->c header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -224,8 +216,7 @@ if ($action == 'confirm_reject_check' && $confirm == 'yes' && $user->rights->ban //header("Location: ".DOL_URL_ROOT.'/compta/paiement/card.php?id='.$paiement_id); //exit; $action = ''; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } @@ -252,8 +243,7 @@ if ($action == 'builddoc' && $user->rights->banque->cheque) { dol_print_error($db, $object->error); exit; - } - else { + } else { header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id.(empty($conf->global->MAIN_JUMP_TAG) ? '' : '#builddoc')); exit; } @@ -304,8 +294,7 @@ if ($action == 'new') $h++; print load_fiche_titre($langs->trans("Cheques"), '', 'bank_account'); -} -else { +} else { $result = $object->fetch($id, $ref); if ($result < 0) { @@ -498,8 +487,7 @@ if ($action == 'new') if ($paymentstatic->id) { print $paymentstatic->getNomUrl(1); - } - else { + } else { print ' '; } print ''; @@ -509,8 +497,7 @@ if ($action == 'new') if ($accountlinestatic->rowid) { print $accountlinestatic->getNomUrl(1); - } - else { + } else { print ' '; } print ''; @@ -530,15 +517,13 @@ if ($action == 'new') if ($user->rights->banque->cheque) { print ''; - } - else { + } else { print ''.$langs->trans('NewCheckDepositOn', $account_label).''; } print '
'; print ''; } -} -else { +} else { $paymentstatic = new Paiement($db); $accountlinestatic = new AccountLine($db); $accountstatic = new Account($db); @@ -572,8 +557,7 @@ else { print $form->selectDate($object->date_bordereau, 'datecreate_', '', '', '', "setdate"); print ''; print ''; - } - else { + } else { print $object->date_bordereau ? dol_print_date($object->date_bordereau, 'day') : ' '; } @@ -683,8 +667,7 @@ else { if ($paymentstatic->id) { print $paymentstatic->getNomUrl(1); - } - else { + } else { print ' '; } print ''; @@ -694,8 +677,7 @@ else { if ($accountlinestatic->rowid) { print $accountlinestatic->getNomUrl(1); - } - else { + } else { print ' '; } print ''; @@ -718,8 +700,7 @@ else { $i++; } - } - else { + } else { print ''; print $langs->trans("None"); print ''; @@ -736,8 +717,7 @@ else { } print ""; - } - else { + } else { dol_print_error($db); } diff --git a/htdocs/compta/paiement/cheque/class/remisecheque.class.php b/htdocs/compta/paiement/cheque/class/remisecheque.class.php index 9d252a7456e..48c58dc7219 100644 --- a/htdocs/compta/paiement/cheque/class/remisecheque.class.php +++ b/htdocs/compta/paiement/cheque/class/remisecheque.class.php @@ -120,16 +120,14 @@ class RemiseCheque extends CommonObject if ($this->statut == 0) { $this->ref = "(PROV".$this->id.")"; - } - else { + } else { $this->ref = $obj->ref; } } $this->db->free($resql); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -225,8 +223,7 @@ class RemiseCheque extends CommonObject array_push($lines, $row[0]); } $this->db->free($resql); - } - else { + } else { $this->errno = -1026; dol_syslog("RemiseCheque::Create Error ".$this->errno, LOG_ERR); } @@ -266,8 +263,7 @@ class RemiseCheque extends CommonObject dol_syslog("RemiseCheque::Create Error update amount ".$this->errno, LOG_ERR); } } - } - else { + } else { $this->errno = -1; $this->error = $this->db->lasterror(); $this->errno = $this->db->lasterrno(); @@ -284,8 +280,7 @@ class RemiseCheque extends CommonObject $this->db->commit(); dol_syslog("RemiseCheque::Create end", LOG_DEBUG); return $this->id; - } - else { + } else { $this->db->rollback(); dol_syslog("RemiseCheque::Create end", LOG_DEBUG); return $this->errno; @@ -336,8 +331,7 @@ class RemiseCheque extends CommonObject if ($this->errno === 0) { $this->db->commit(); - } - else { + } else { $this->db->rollback(); dol_syslog("RemiseCheque::Delete ROLLBACK ($this->errno)"); } @@ -379,13 +373,11 @@ class RemiseCheque extends CommonObject { $this->ref = $numref; $this->statut = 1; - } - else { + } else { $this->errno = -1029; dol_syslog("Remisecheque::Validate Error ".$this->errno, LOG_ERR); } - } - else { + } else { $this->errno = -1033; dol_syslog("Remisecheque::Validate Error ".$this->errno, LOG_ERR); } @@ -396,8 +388,7 @@ class RemiseCheque extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); dol_syslog("RemiseCheque::Validate ".$this->errno, LOG_ERR); return $this->errno; @@ -479,8 +470,7 @@ class RemiseCheque extends CommonObject } return $numref; - } - else { + } else { $langs->load("errors"); print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Bank")); return ""; @@ -534,8 +524,7 @@ class RemiseCheque extends CommonObject } return $response; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -573,8 +562,7 @@ class RemiseCheque extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -652,15 +640,13 @@ class RemiseCheque extends CommonObject { //$outputlangs->charset_output=$sav_charset_output; return 1; - } - else { + } else { //$outputlangs->charset_output=$sav_charset_output; dol_syslog("Error"); dol_print_error($this->db, $docmodel->error); return 0; } - } - else { + } else { $this->error = $langs->trans("ErrorFileDoesNotExists", $dir.$file); return -1; } @@ -706,8 +692,7 @@ class RemiseCheque extends CommonObject $this->errno = -1030; dol_syslog("RemiseCheque::updateAmount ERREUR UPDATE ($this->errno)"); } - } - else { + } else { $this->errno = -1031; dol_syslog("RemiseCheque::updateAmount ERREUR SELECT ($this->errno)"); } @@ -715,8 +700,7 @@ class RemiseCheque extends CommonObject if ($this->errno === 0) { $this->db->commit(); - } - else { + } else { $this->db->rollback(); dol_syslog("RemiseCheque::updateAmount ROLLBACK ($this->errno)"); } @@ -745,8 +729,7 @@ class RemiseCheque extends CommonObject if ($resql) { $this->updateAmount(); - } - else { + } else { $this->errno = -1032; dol_syslog("RemiseCheque::removeCheck ERREUR UPDATE ($this->errno)"); } @@ -821,27 +804,23 @@ class RemiseCheque extends CommonObject { $this->db->commit(); return $rejectedPayment->id; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $rejectedPayment->error; $this->errors = $rejectedPayment->errors; $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $rejectedPayment->error; $this->errors = $rejectedPayment->errors; $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -914,13 +893,11 @@ class RemiseCheque extends CommonObject { $this->date_bordereau = $date; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } - } - else { + } else { return -2; } } @@ -947,13 +924,11 @@ class RemiseCheque extends CommonObject if ($resql) { return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } - } - else { + } else { return -2; } } @@ -1021,8 +996,7 @@ class RemiseCheque extends CommonObject } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; diff --git a/htdocs/compta/paiement/cheque/index.php b/htdocs/compta/paiement/cheque/index.php index 7971a34db0d..1ee79aeafd9 100644 --- a/htdocs/compta/paiement/cheque/index.php +++ b/htdocs/compta/paiement/cheque/index.php @@ -76,8 +76,7 @@ if ($resql) { print ''.$num.''; print ''; print "\n"; -} -else { +} else { dol_print_error($db); } @@ -139,8 +138,7 @@ if ($resql) print ""; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index cda8c2a679d..e76936c71fd 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -221,8 +221,7 @@ if ($resql) print "\n"; $i++; } - } - else { + } else { print ''; print ''.$langs->trans("None").""; print ''; @@ -230,8 +229,7 @@ if ($resql) print ""; print ""; print "\n"; -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 99250bd9373..f57e4408a6f 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -200,13 +200,11 @@ class Paiement extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->db->free($resql); return 0; } - } - else { + } else { dol_print_error($this->db); return -1; } @@ -240,8 +238,7 @@ class Paiement extends CommonObject { $amounts = &$this->amounts; $amounts_to_update = &$this->multicurrency_amounts; - } - else { + } else { $amounts = &$this->multicurrency_amounts; $amounts_to_update = &$this->amounts; } @@ -279,8 +276,7 @@ class Paiement extends CommonObject { $total = $totalamount; $mtotal = $totalamount_converted; // Maybe use price2num with MT for the converted value - } - else { + } else { $total = $totalamount_converted; // Maybe use price2num with MT for the converted value $mtotal = $totalamount; } @@ -424,13 +420,11 @@ class Paiement extends CommonObject $error++; } } - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } - } - else { + } else { dol_syslog(get_class($this).'::Create Amount line '.$key.' not a number. We discard it.'); } } @@ -442,8 +436,7 @@ class Paiement extends CommonObject if ($result < 0) { $error++; } // Fin appel triggers } - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } @@ -455,8 +448,7 @@ class Paiement extends CommonObject $this->multicurrency_amount = $mtotal; $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1; } @@ -492,8 +484,7 @@ class Paiement extends CommonObject $this->db->rollback(); return -1; } - } - else { + } else { $this->db->rollback(); return -2; } @@ -557,8 +548,7 @@ class Paiement extends CommonObject $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error; $this->db->rollback(); return -5; @@ -719,8 +709,7 @@ class Paiement extends CommonObject if ($result < 0) { $error++; } // Fin appel triggers } - } - else { + } else { $this->error = $acc->error; $error++; } @@ -728,8 +717,7 @@ class Paiement extends CommonObject if (!$error) { $this->db->commit(); - } - else { + } else { $this->db->rollback(); } } @@ -737,8 +725,7 @@ class Paiement extends CommonObject if (!$error) { return $bank_line_id; - } - else { + } else { return -1; } } @@ -762,8 +749,7 @@ class Paiement extends CommonObject if ($result) { return 1; - } - else { + } else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::update_fk_bank '.$this->error); return -1; @@ -824,8 +810,7 @@ class Paiement extends CommonObject $this->db->commit(); return 0; - } - else { + } else { $this->db->rollback(); return -2; } @@ -854,8 +839,7 @@ class Paiement extends CommonObject { $this->num_payment = $this->db->escape($num); return 0; - } - else { + } else { $this->error = 'Error -1 '.$this->db->error(); return -2; } @@ -878,8 +862,7 @@ class Paiement extends CommonObject if ($result) { return 1; - } - else { + } else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::valide '.$this->error); return -1; @@ -901,8 +884,7 @@ class Paiement extends CommonObject if ($result) { return 1; - } - else { + } else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::reject '.$this->error); return -1; @@ -946,8 +928,7 @@ class Paiement extends CommonObject $this->date_modification = $this->db->jdate($obj->tms); } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -979,8 +960,7 @@ class Paiement extends CommonObject } return $billsarray; - } - else { + } else { $this->error = $this->db->error(); dol_syslog(get_class($this).'::getBillsArray Error '.$this->error.' -', LOG_DEBUG); return -1; @@ -1012,8 +992,7 @@ class Paiement extends CommonObject } return $amounts; - } - else { + } else { $this->error = $this->db->error(); dol_syslog(get_class($this).'::getAmountsArray Error '.$this->error.' -', LOG_DEBUG); return -1; @@ -1096,8 +1075,7 @@ class Paiement extends CommonObject } return $numref; - } - else { + } else { $langs->load("errors"); print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Invoice")); return ""; @@ -1198,8 +1176,7 @@ class Paiement extends CommonObject } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $url = DOL_URL_ROOT.'/compta/paiement/card.php?id='.$this->id; diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index dbdf4f4675e..eb2523960f3 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -129,8 +129,7 @@ if (GETPOST("orphelins", "alpha")) $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; -} -else { +} else { $sql = "SELECT DISTINCT p.rowid, p.ref, p.datep as dp, p.amount,"; // DISTINCT is to avoid duplicate when there is a link to sales representatives $sql .= " p.statut, p.num_paiement as num_payment,"; $sql .= " c.code as paiement_code,"; @@ -377,8 +376,7 @@ if ($resql) print "\n"; print ""; print "\n"; -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/paiement/rapport.php b/htdocs/compta/paiement/rapport.php index 66f239fdf96..9d3bae3140d 100644 --- a/htdocs/compta/paiement/rapport.php +++ b/htdocs/compta/paiement/rapport.php @@ -70,8 +70,7 @@ if ($action == 'builddoc') if ($rap->write_file($dir, $_POST["remonth"], $_POST["reyear"], $outputlangs) > 0) { $outputlangs->charset_output = $sav_charset_output; - } - else { + } else { $outputlangs->charset_output = $sav_charset_output; dol_print_error($db, $obj->error); } diff --git a/htdocs/compta/paiement/tovalidate.php b/htdocs/compta/paiement/tovalidate.php index b978fc8e218..349c483a5db 100644 --- a/htdocs/compta/paiement/tovalidate.php +++ b/htdocs/compta/paiement/tovalidate.php @@ -126,8 +126,7 @@ if ($resql) if ($objp->statut == 0) { print ''.$langs->trans("PaymentStatusToValidShort").''; - } - else { + } else { print "-"; } diff --git a/htdocs/compta/paiement_charge.php b/htdocs/compta/paiement_charge.php index d1b448c5932..9c5ceea22bf 100644 --- a/htdocs/compta/paiement_charge.php +++ b/htdocs/compta/paiement_charge.php @@ -141,8 +141,7 @@ if ($action == 'add_payment' || ($action == 'confirm_paiement' && $confirm == 'y $loc = DOL_URL_ROOT.'/compta/sociales/card.php?id='.$chid; header('Location: '.$loc); exit; - } - else { + } else { $db->rollback(); } } @@ -282,8 +281,7 @@ if ($action == 'create') if ($objp->date_ech > 0) { print ''.dol_print_date($objp->date_ech, 'day').''."\n"; - } - else { + } else { print "!!!\n"; } @@ -303,8 +301,7 @@ if ($action == 'create') $remaintopay = $objp->amount - $sumpaid; print ''; print ''; - } - else { + } else { print '-'; } print ""; diff --git a/htdocs/compta/payment_sc/card.php b/htdocs/compta/payment_sc/card.php index 69b425356d1..fbe5d926d33 100644 --- a/htdocs/compta/payment_sc/card.php +++ b/htdocs/compta/payment_sc/card.php @@ -66,8 +66,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->tax->char $db->commit(); header("Location: ".DOL_URL_ROOT."/compta/sociales/payments.php?mode=sconly"); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } @@ -282,8 +281,7 @@ if ($resql) print "\n"; $db->free($resql); -} -else { +} else { dol_print_error($db); } @@ -314,8 +312,7 @@ if ($action == '') if (!$disable_delete) { print ''.$langs->trans('Delete').''; - } - else { + } else { print ''.$langs->trans('Delete').''; } } diff --git a/htdocs/compta/paymentbybanktransfer/index.php b/htdocs/compta/paymentbybanktransfer/index.php index d2611e8a354..63769e2bd9e 100644 --- a/htdocs/compta/paymentbybanktransfer/index.php +++ b/htdocs/compta/paymentbybanktransfer/index.php @@ -158,13 +158,11 @@ if ($resql) print ''; $i++; } - } - else { + } else { print ''.$langs->trans("NoSupplierInvoiceToWithdraw", $langs->transnoentitiesnoconv("BankTransfer")).''; } print "
"; -} -else { +} else { dol_print_error($db); } @@ -218,8 +216,7 @@ if ($result) } print "
"; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/bons.php b/htdocs/compta/prelevement/bons.php index 106f848f732..347b3ebb37f 100644 --- a/htdocs/compta/prelevement/bons.php +++ b/htdocs/compta/prelevement/bons.php @@ -190,8 +190,7 @@ if ($result) print ''; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php index d5051e06bfa..7d56cec823e 100644 --- a/htdocs/compta/prelevement/card.php +++ b/htdocs/compta/prelevement/card.php @@ -408,8 +408,7 @@ if ($id > 0 || $ref) if ($obj->statut == 3) { print ''.$langs->trans("StatusRefused").''; - } - else { + } else { print " "; } @@ -441,8 +440,7 @@ if ($id > 0 || $ref) print ''; $db->free($result); - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 91a165ee454..6192d97d92f 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -151,18 +151,15 @@ class BonPrelevement extends CommonObject if ($this->db->query($sql)) { $result = 0; - } - else { + } else { $result = -1; dol_syslog(get_class($this)."::AddFacture Erreur $result"); } - } - else { + } else { $result = -2; dol_syslog(get_class($this)."::AddFacture Erreur $result"); } - } - else { + } else { $result = -3; dol_syslog(get_class($this)."::AddFacture Erreur $result"); } @@ -205,12 +202,10 @@ class BonPrelevement extends CommonObject if ($resql) { $num = $this->db->num_rows($resql); - } - else { + } else { $result = -1; } - } - else { + } else { /* * No aggregate */ @@ -238,8 +233,7 @@ class BonPrelevement extends CommonObject { $line_id = $this->db->last_insert_id(MAIN_DB_PREFIX."prelevement_lignes"); $result = 0; - } - else { + } else { dol_syslog(get_class($this)."::addline Error -2"); $result = -2; } @@ -314,13 +308,11 @@ class BonPrelevement extends CommonObject $this->fetched = 1; return 1; - } - else { + } else { dol_syslog(get_class($this)."::Fetch Erreur aucune ligne retournee"); return -1; } - } - else { + } else { return -2; } } @@ -388,15 +380,13 @@ class BonPrelevement extends CommonObject { $this->db->commit(); return 0; - } - else { + } else { $this->db->rollback(); dol_syslog(get_class($this)."::set_credite ROLLBACK "); return -1; } - } - else { + } else { dol_syslog(get_class($this)."::set_credite Ouverture transaction SQL impossible "); return -2; } @@ -480,8 +470,7 @@ class BonPrelevement extends CommonObject { dol_syslog(get_class($this)."::set_infocredit AddPayment Error"); $error++; - } - else { + } else { $result = $paiement->addPaymentToBank($user, 'payment', '(WithdrawalPayment)', $bankaccount, '', ''); if ($result < 0) { @@ -505,8 +494,7 @@ class BonPrelevement extends CommonObject dol_syslog(get_class($this)."::set_infocredit Update lines Error"); $error++; } - } - else { + } else { dol_syslog(get_class($this)."::set_infocredit Update Bons Error"); $error++; } @@ -521,24 +509,20 @@ class BonPrelevement extends CommonObject $this->db->commit(); return 0; - } - else { + } else { $this->db->rollback(); dol_syslog("bon-prelevment::set_infocredit ROLLBACK "); return -1; } - } - else { + } else { dol_syslog(get_class($this)."::set_infocredit 1025 Open SQL transaction impossible "); return -1025; } - } - else { + } else { dol_syslog("bon-prelevment::set_infocredit 1027 Date de credit < Date de trans "); return -1027; } - } - else { + } else { return -1026; } } @@ -580,8 +564,7 @@ class BonPrelevement extends CommonObject $message .= $langs->trans("InfoTransData", price($this->amount), $this->methodes_trans[$this->method_trans], dol_print_date($date, 'day')); // TODO Call trigger to create a notification using notification module - } - else { + } else { $error++; } @@ -592,15 +575,13 @@ class BonPrelevement extends CommonObject $this->db->commit(); return 0; - } - else { + } else { $this->db->rollback(); dol_syslog(get_class($this)."::set_infotrans ROLLBACK", LOG_ERR); return -1; } - } - else { + } else { dol_syslog(get_class($this)."::set_infotrans Ouverture transaction SQL impossible", LOG_CRIT); return -2; } @@ -655,8 +636,7 @@ class BonPrelevement extends CommonObject } } $this->db->free($resql); - } - else { + } else { dol_syslog(get_class($this)."::getListInvoices Erreur"); } @@ -693,8 +673,7 @@ class BonPrelevement extends CommonObject $this->db->free($resql); return $obj->nb; - } - else { + } else { $error = 1; dol_syslog(get_class($this)."::SommeAPrelever Erreur -1"); dol_syslog($this->db->error()); @@ -737,8 +716,7 @@ class BonPrelevement extends CommonObject $this->db->free($resql); return $obj->nb; - } - else { + } else { $this->error = get_class($this)."::NbFactureAPrelever Erreur -1 sql=".$this->db->error(); return -1; } @@ -825,8 +803,7 @@ class BonPrelevement extends CommonObject } $this->db->free($resql); dol_syslog(__METHOD__."::Read invoices, ".$i." invoices to withdraw", LOG_DEBUG); - } - else { + } else { $error++; dol_syslog(__METHOD__."::Read invoices error ".$this->db->error(), LOG_ERR); } @@ -870,23 +847,19 @@ class BonPrelevement extends CommonObject $factures_prev_id[$i] = $fac[0]; $i++; //dol_syslog(__METHOD__."::RIB is ok", LOG_DEBUG); - } - else { + } else { dol_syslog(__METHOD__."::Check RIB Error on default bank number IBAN/BIC for thirdparty reported by verif() ".$fact->socid." ".$soc->name, LOG_WARNING); $this->invoice_in_error[$fac[0]] = "Error on default bank number IBAN/BIC for invoice ".$fact->getNomUrl(0)." for thirdparty ".$soc->getNomUrl(0); $this->thirdparty_in_error[$soc->id] = "Error on default bank number IBAN/BIC for invoice ".$fact->getNomUrl(0)." for thirdparty ".$soc->getNomUrl(0); } - } - else { + } else { dol_syslog(__METHOD__."::Check RIB Failed to read company", LOG_WARNING); } - } - else { + } else { dol_syslog(__METHOD__."::Check RIB Failed to read invoice", LOG_WARNING); } } - } - else { + } else { dol_syslog(__METHOD__."::Check RIB No invoice to process", LOG_WARNING); } } @@ -912,8 +885,7 @@ class BonPrelevement extends CommonObject if ($mode == 'real') { $ok = 1; - } - else { + } else { print $langs->trans("ModeWarning"); //"Option for real mode was not set, we stop after this simulation\n"; } } @@ -970,13 +942,11 @@ class BonPrelevement extends CommonObject $prev_id = $this->db->last_insert_id(MAIN_DB_PREFIX."prelevement_bons"); $this->id = $prev_id; $this->ref = $ref; - } - else { + } else { $error++; dol_syslog(__METHOD__."::Create withdraw receipt ".$this->db->lasterror(), LOG_ERR); } - } - else { + } else { $error++; dol_syslog(__METHOD__."::Get last withdraw receipt ".$this->db->lasterror(), LOG_ERR); } @@ -1097,14 +1067,12 @@ class BonPrelevement extends CommonObject if (!$error) { $this->db->commit(); - } - else { + } else { $this->db->rollback(); } return count($factures_prev); - } - else { + } else { return 0; } } @@ -1164,8 +1132,7 @@ class BonPrelevement extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -1224,8 +1191,7 @@ class BonPrelevement extends CommonObject $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; */ - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; @@ -1266,8 +1232,7 @@ class BonPrelevement extends CommonObject if ($this->db->query($sql)) { return 0; - } - else { + } else { return -1; } } @@ -1291,8 +1256,7 @@ class BonPrelevement extends CommonObject if ($this->db->query($sql)) { return 0; - } - else { + } else { return -1; } } @@ -1322,8 +1286,7 @@ class BonPrelevement extends CommonObject if ($this->db->query($sql)) { $result = 0; - } - else { + } else { $result = -1; dol_syslog(get_class($this)."::AddNotification Error $result"); } @@ -1426,8 +1389,7 @@ class BonPrelevement extends CommonObject $i++; } $nbtotalDrctDbtTxInf = $i; - } - else { + } else { fputs($this->file, 'ERROR DEBITOR '.$sql.$CrLf); // DEBITOR = Customers $result = -2; } @@ -1436,8 +1398,7 @@ class BonPrelevement extends CommonObject if ($result != -2) { $fileEmetteurSection .= $this->EnregEmetteurSEPA($conf, $date_actu, $nbtotalDrctDbtTxInf, $this->total, $CrLf, $format); - } - else { + } else { fputs($this->file, 'ERROR CREDITOR'.$CrLf); // CREDITOR = My company } @@ -1503,8 +1464,7 @@ class BonPrelevement extends CommonObject $this->total = $this->total + $obj->amount; $i++; } - } - else { + } else { $result = -2; } @@ -1874,8 +1834,7 @@ class BonPrelevement extends CommonObject $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; - } - else { + } else { fputs($this->file, 'INCORRECT EMETTEUR '.$XML_SEPA_INFO.$CrLf); $result = -2; } diff --git a/htdocs/compta/prelevement/class/ligneprelevement.class.php b/htdocs/compta/prelevement/class/ligneprelevement.class.php index accd64e2694..1e731b24524 100644 --- a/htdocs/compta/prelevement/class/ligneprelevement.class.php +++ b/htdocs/compta/prelevement/class/ligneprelevement.class.php @@ -96,15 +96,13 @@ class LignePrelevement $this->statut = $obj->statut; $this->bon_ref = $obj->ref; $this->bon_rowid = $obj->bon_rowid; - } - else { + } else { $result++; dol_syslog("LignePrelevement::Fetch rowid=$rowid numrows=0"); } $this->db->free($resql); - } - else { + } else { $result++; dol_syslog("LignePrelevement::Fetch rowid=$rowid"); dol_syslog($this->db->error()); @@ -140,20 +138,17 @@ class LignePrelevement if ($mode == 0) { return $langs->trans($this->statuts[$status]); - } - elseif ($mode == 1) + } elseif ($mode == 1) { if ($status == 0) return img_picto($langs->trans($this->statuts[$status]), 'statut1').' '.$langs->trans($this->statuts[$status]); // Waiting elseif ($status == 2) return img_picto($langs->trans($this->statuts[$status]), 'statut6').' '.$langs->trans($this->statuts[$status]); // Credited elseif ($status == 3) return img_picto($langs->trans($this->statuts[$status]), 'statut8').' '.$langs->trans($this->statuts[$status]); // Refused - } - elseif ($mode == 2) + } elseif ($mode == 2) { if ($status == 0) return img_picto($langs->trans($this->statuts[$status]), 'statut1'); elseif ($status == 2) return img_picto($langs->trans($this->statuts[$status]), 'statut6'); elseif ($status == 3) return img_picto($langs->trans($this->statuts[$status]), 'statut8'); - } - elseif ($mode == 3) + } elseif ($mode == 3) { if ($status == 0) return $langs->trans($this->statuts[$status]).' '.img_picto($langs->trans($this->statuts[$status]), 'statut1'); elseif ($status == 2) return $langs->trans($this->statuts[$status]).' '.img_picto($langs->trans($this->statuts[$status]), 'statut6'); diff --git a/htdocs/compta/prelevement/class/rejetprelevement.class.php b/htdocs/compta/prelevement/class/rejetprelevement.class.php index 1edd942fc42..8599987fb23 100644 --- a/htdocs/compta/prelevement/class/rejetprelevement.class.php +++ b/htdocs/compta/prelevement/class/rejetprelevement.class.php @@ -160,8 +160,7 @@ class RejetPrelevement { $error++; dol_syslog("RejetPrelevement::Create Error creation payment invoice ".$facs[$i][0]); - } - else { + } else { $result = $pai->addPaymentToBank($user, 'payment', '(InvoiceRefused)', $bankaccount, '', ''); if ($result < 0) { @@ -190,8 +189,7 @@ class RejetPrelevement { dol_syslog("RejetPrelevement::Create Commit"); $this->db->commit(); - } - else { + } else { dol_syslog("RejetPrelevement::Create Rollback"); $this->db->rollback(); } @@ -225,8 +223,7 @@ class RejetPrelevement $row = $this->db->fetch_row($resql); $userid = $row[0]; } - } - else { + } else { dol_syslog("RejetPrelevement::_send_email Erreur lecture user"); } @@ -262,12 +259,10 @@ class RejetPrelevement if ($result) { dol_syslog("RejetPrelevement::_send_email email envoye"); - } - else { + } else { dol_syslog("RejetPrelevement::_send_email Erreur envoi email"); } - } - else { + } else { dol_syslog("RejetPrelevement::_send_email Userid invalide"); } } @@ -315,8 +310,7 @@ class RejetPrelevement } } $this->db->free($resql); - } - else { + } else { dol_syslog("getListInvoices", LOG_ERR); } @@ -351,13 +345,11 @@ class RejetPrelevement $this->db->free($resql); return 0; - } - else { + } else { dol_syslog("RejetPrelevement::Fetch Erreur rowid=$rowid numrows=0"); return -1; } - } - else { + } else { dol_syslog("RejetPrelevement::Fetch Erreur rowid=$rowid"); return -2; } diff --git a/htdocs/compta/prelevement/create.php b/htdocs/compta/prelevement/create.php index 505ad070645..015380a669d 100644 --- a/htdocs/compta/prelevement/create.php +++ b/htdocs/compta/prelevement/create.php @@ -83,8 +83,7 @@ if (empty($reshook)) if ($result < 0) { setEventMessages($bprev->error, $bprev->errors, 'errors'); - } - elseif ($result == 0) + } elseif ($result == 0) { $mesg = $langs->trans("NoInvoiceCouldBeWithdrawed", $format); setEventMessages($mesg, null, 'errors'); @@ -93,8 +92,7 @@ if (empty($reshook)) { $mesg .= ''.$val."
\n"; } - } - else { + } else { setEventMessages($langs->trans("DirectDebitOrderCreated", $bprev->getNomUrl(1)), null); } } @@ -173,19 +171,16 @@ if ($nb) { } else { print '
'.$langs->trans("CreateAll")."\n"; } - } - else { + } else { if ($mysoc->isInEEC()) { print ''.$langs->trans("CreateForSepaFRST")."\n"; print ''.$langs->trans("CreateForSepaRCUR")."\n"; - } - else { + } else { print ''.$langs->trans("CreateAll")."\n"; } } -} -else { +} else { print 'transnoentitiesnoconv("StandingOrders"))).'">'.$langs->trans("CreateAll")."\n"; } @@ -303,15 +298,13 @@ if ($resql) print ''; $i++; } - } - else { + } else { print ''.$langs->trans("None").''; } print ""; print ""; print "
\n"; -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/demandes.php b/htdocs/compta/prelevement/demandes.php index 64ac904db6c..30618de8c24 100644 --- a/htdocs/compta/prelevement/demandes.php +++ b/htdocs/compta/prelevement/demandes.php @@ -88,8 +88,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' if (!$status) { $title = $langs->trans("RequestStandingOrderToTreat"); -} -else { +} else { $title = $langs->trans("RequestStandingOrderTreated"); } @@ -141,8 +140,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) { $num = $nbtotalofrecords; -} -else { +} else { $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); diff --git a/htdocs/compta/prelevement/factures.php b/htdocs/compta/prelevement/factures.php index bb3cced3eb4..c0fa4f55e68 100644 --- a/htdocs/compta/prelevement/factures.php +++ b/htdocs/compta/prelevement/factures.php @@ -134,8 +134,7 @@ if ($prev_id > 0 || $ref) print ''; dol_fiche_end(); - } - else { + } else { dol_print_error($db); } } @@ -245,12 +244,10 @@ if ($result) if ($obj->statut == 0) { print '-'; - } - elseif ($obj->statut == 2) + } elseif ($obj->statut == 2) { print $langs->trans("StatusCredited"); - } - elseif ($obj->statut == 3) + } elseif ($obj->statut == 3) { print ''.$langs->trans("StatusRefused").''; } @@ -288,8 +285,7 @@ if ($result) print ''; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/fiche-rejet.php b/htdocs/compta/prelevement/fiche-rejet.php index 4bfc07b0292..65116878bb9 100644 --- a/htdocs/compta/prelevement/fiche-rejet.php +++ b/htdocs/compta/prelevement/fiche-rejet.php @@ -135,8 +135,7 @@ if ($prev_id > 0 || $ref) print ''; dol_fiche_end(); - } - else { + } else { dol_print_error($db); } } @@ -219,8 +218,7 @@ if ($resql) $i++; } - } - else { + } else { print ''.$langs->trans("None").''; } @@ -236,8 +234,7 @@ if ($resql) print ''; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/fiche-stat.php b/htdocs/compta/prelevement/fiche-stat.php index 5dd01bad41d..0ada15853d9 100644 --- a/htdocs/compta/prelevement/fiche-stat.php +++ b/htdocs/compta/prelevement/fiche-stat.php @@ -132,8 +132,7 @@ if ($prev_id > 0 || $ref) print ''; dol_fiche_end(); - } - else { + } else { $langs->load("errors"); print $langs->trans("Error"); } @@ -184,8 +183,7 @@ if ($prev_id > 0 || $ref) print ""; $db->free($resql); - } - else { + } else { print $db->error().' '.$sql; } } diff --git a/htdocs/compta/prelevement/index.php b/htdocs/compta/prelevement/index.php index faa56184891..d182176f0fa 100644 --- a/htdocs/compta/prelevement/index.php +++ b/htdocs/compta/prelevement/index.php @@ -158,13 +158,11 @@ if ($resql) print ''; $i++; } - } - else { + } else { print ''.$langs->trans("NoInvoiceToWithdraw", $langs->transnoentitiesnoconv("StandingOrders")).''; } print "
"; -} -else { +} else { dol_print_error($db); } @@ -218,8 +216,7 @@ if ($result) } print "
"; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/line.php b/htdocs/compta/prelevement/line.php index 89d6ad93636..fd77d6d90f6 100644 --- a/htdocs/compta/prelevement/line.php +++ b/htdocs/compta/prelevement/line.php @@ -73,9 +73,7 @@ if ($action == 'confirm_rejet') { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors'); - } - - elseif ($daterej > dol_now()) + } elseif ($daterej > dol_now()) { $error++; $langs->load("error"); @@ -102,12 +100,10 @@ if ($action == 'confirm_rejet') header("Location: line.php?id=".$id); exit; } - } - else { + } else { $action = "rejet"; } - } - else { + } else { header("Location: line.php?id=".$id); exit; } @@ -159,22 +155,19 @@ if ($id) { /* Historique pour certaines install */ print $langs->trans("Unknown"); - } - else { + } else { print dol_print_date($rej->date_rejet, 'day'); } print ''; print ''.$langs->trans("RefusedInvoicing").''.$rej->invoicing.''; - } - else { + } else { print ''.$resf.''; } } print ''; dol_fiche_end(); - } - else { + } else { dol_print_error($db); } @@ -240,12 +233,10 @@ if ($id) if ($user->rights->prelevement->bons->credit) { print "id\">".$langs->trans("StandingOrderReject").""; - } - else { + } else { print "trans("NotAllowed")."\">".$langs->trans("StandingOrderReject").""; } - } - else { + } else { print "trans("NotPossibleForThisStatusOfWithdrawReceiptORLine")."\">".$langs->trans("StandingOrderReject").""; } } @@ -322,8 +313,7 @@ if ($id) print ""; $db->free($result); - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/compta/prelevement/list.php b/htdocs/compta/prelevement/list.php index b93042df8e6..3130aa475f6 100644 --- a/htdocs/compta/prelevement/list.php +++ b/htdocs/compta/prelevement/list.php @@ -235,8 +235,7 @@ if ($result) print ''; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/rejets.php b/htdocs/compta/prelevement/rejets.php index a7e7a6f3a53..61417a2cd5f 100644 --- a/htdocs/compta/prelevement/rejets.php +++ b/htdocs/compta/prelevement/rejets.php @@ -117,8 +117,7 @@ if ($result) print ""; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/prelevement/stats.php b/htdocs/compta/prelevement/stats.php index 609c75e065d..b12a6a2bb35 100644 --- a/htdocs/compta/prelevement/stats.php +++ b/htdocs/compta/prelevement/stats.php @@ -125,8 +125,7 @@ if ($resql) print ' '; print ""; $db->free(); -} -else { +} else { dol_print_error($db); } @@ -218,8 +217,7 @@ if ($resql) print ' '; print ""; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/recap-compta.php b/htdocs/compta/recap-compta.php index 83388f21e49..8b75ec38fce 100644 --- a/htdocs/compta/recap-compta.php +++ b/htdocs/compta/recap-compta.php @@ -211,13 +211,11 @@ if ($id > 0) } $db->free($resqlp); - } - else { + } else { dol_print_error($db); } } - } - else { + } else { dol_print_error($db); } @@ -286,8 +284,7 @@ if ($id > 0) print ""; } -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 8d7c0343b30..671921506d5 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -99,8 +99,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $month_end = $month_start - 1; if ($month_end < 1) $month_end = 12; else $year_end++; - } - else $month_end = $month_start; + } else $month_end = $month_start; $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); } if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } @@ -154,8 +153,7 @@ if ($modecompta == "CREANCES-DETTES") else $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("ReportInOut").', '.$langs->trans("ByPredefinedAccountGroups"); $calcmode = $langs->trans("CalcModeEngagement"); @@ -166,8 +164,7 @@ elseif ($modecompta == "RECETTES-DEPENSES") $description = $langs->trans("RulesResultInOut"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { $name = $langs->trans("ReportInOut").', '.$langs->trans("ByPredefinedAccountGroups"); $calcmode = $langs->trans("CalcModeBookkeeping"); @@ -212,8 +209,7 @@ print_liste_field_titre(''); if ($modecompta == 'BOOKKEEPING') { print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], 'amount', '', $param, 'class="right"', $sortfield, $sortorder); -} -else { +} else { if ($modecompta == 'CREANCES-DETTES') { print_liste_field_titre("AmountHT", $_SERVER["PHP_SELF"], 'amount_ht', '', $param, 'class="right"', $sortfield, $sortorder); @@ -311,14 +307,11 @@ if ($modecompta == 'BOOKKEEPING') $i++; } - } - else { + } else { print ''.$langs->trans("NoRecordFound").''; } - } - else dol_print_error($db); -} -else { + } else dol_print_error($db); +} else { /* * Factures clients */ @@ -336,8 +329,7 @@ else { else $sql .= " AND f.type IN (0,1,2,3,5)"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - } - elseif ($modecompta == 'RECETTES-DEPENSES') + } elseif ($modecompta == 'RECETTES-DEPENSES') { /* * Liste des paiements (les anciens paiements ne sont pas vus par cette requete car, sur les @@ -462,8 +454,7 @@ else { else $sql .= " AND f.type IN (0,1,2,3)"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - } - elseif ($modecompta == 'RECETTES-DEPENSES') + } elseif ($modecompta == 'RECETTES-DEPENSES') { $sql = "SELECT s.nom as name, s.rowid as socid, sum(pf.amount) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."paiementfourn as p"; @@ -512,8 +503,7 @@ else { print "\n"; $i++; } - } - else { + } else { print ' '; print ''.$langs->trans("None").''; print ''; @@ -546,8 +536,7 @@ else { $sql .= " AND c.deductible = 0"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND cs.date_ech >= '".$db->idate($date_start)."' AND cs.date_ech <= '".$db->idate($date_end)."'"; - } - elseif ($modecompta == 'RECETTES-DEPENSES') + } elseif ($modecompta == 'RECETTES-DEPENSES') { $sql = "SELECT c.id, c.libelle as label, sum(p.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c"; @@ -591,8 +580,7 @@ else { print ''; $i++; } - } - else { + } else { print ' '; print ''.$langs->trans("None").''; print ''; @@ -623,8 +611,7 @@ else { if (!empty($date_start) && !empty($date_end)) $sql .= " AND cs.date_ech >= '".$db->idate($date_start)."' AND cs.date_ech <= '".$db->idate($date_end)."'"; $sql .= " AND cs.entity = ".$conf->entity; - } - elseif ($modecompta == 'RECETTES-DEPENSES') + } elseif ($modecompta == 'RECETTES-DEPENSES') { $sql = "SELECT c.id, c.libelle as label, sum(p.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c"; @@ -668,8 +655,7 @@ else { print ''; $i++; } - } - else { + } else { print ' '; print ''.$langs->trans("None").''; print ''; @@ -761,14 +747,12 @@ else { print ''; $i++; } - } - else { + } else { print ' '; print ''.$langs->trans("None").''; print ''; } - } - else { + } else { dol_print_error($db); } print ''; @@ -845,14 +829,12 @@ else { print ''.price(-$obj->amount_ttc).''; print ''; } - } - else { + } else { print ' '; print ''.$langs->trans("None").''; print ''; } - } - else { + } else { dol_print_error($db); } print ''; @@ -877,8 +859,7 @@ else { $sql .= " FROM ".MAIN_DB_PREFIX."don as p"; $sql .= " WHERE p.entity IN (".getEntity('donation').")"; $sql .= " AND fk_statut in (1,2)"; - } - else { + } else { $sql = "SELECT p.societe as nom, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."don as p"; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."payment_donation as pe ON pe.fk_donation = p.rowid"; @@ -924,14 +905,12 @@ else { print ''; $i++; } - } - else { + } else { print ' '; print ''.$langs->trans("None").''; print ''; } - } - else { + } else { dol_print_error($db); } print ''; @@ -998,8 +977,7 @@ else { print ''.price($subtotal_ht).''; print ''.price($subtotal_ttc).''; print ''; - } - else dol_print_error($db); + } else dol_print_error($db); } /* @@ -1047,8 +1025,7 @@ else { print ''.price($subtotal_ht).''; print ''.price($subtotal_ttc).''; print ''; - } - else dol_print_error($db); + } else dol_print_error($db); } /* @@ -1157,8 +1134,7 @@ else { print ' '."\n"; print ''.price($amount)."\n"; print "\n"; - } - else { + } else { // VAT really already paid $amount = 0; $sql = "SELECT date_format(t.datev,'%Y-%m') as dm, sum(t.amount) as amount"; @@ -1237,8 +1213,7 @@ else { } } $db->free($result); - } - else { + } else { dol_print_error($db); } print ' '; diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index 04bed25d6b2..7221e932ca6 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -78,8 +78,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $month_end = $month_start - 1; if ($month_end < 1) $month_end = 12; else $year_end++; - } - else $month_end = $month_start; + } else $month_end = $month_start; $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); } if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } @@ -134,8 +133,7 @@ if ($modecompta == 'CREANCES-DETTES') else $description .= "
".$langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "RECETTES-DEPENSES") { +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("ReportInOut").', '.$langs->trans("ByYear"); $calcmode = $langs->trans("CalcModeEngagement"); $calcmode .= '
('.$langs->trans("SeeReportInDueDebtMode", '', '').')'; @@ -146,8 +144,7 @@ elseif ($modecompta == "RECETTES-DEPENSES") { $description .= '
'.$langs->trans("RulesResultInOut"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { $name = $langs->trans("ReportInOut").', '.$langs->trans("ByYear"); $calcmode = $langs->trans("CalcModeBookkeeping"); @@ -191,8 +188,7 @@ if (!empty($conf->facture->enabled) && ($modecompta == 'CREANCES-DETTES' || $mod else $sql .= " AND f.type IN (0,1,2,3,5)"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - } - elseif ($modecompta == "RECETTES-DEPENSES") + } elseif ($modecompta == "RECETTES-DEPENSES") { /* * Liste des paiements (les anciens paiements ne sont pas vus par cette requete car, sur les @@ -228,12 +224,10 @@ if (!empty($conf->facture->enabled) && ($modecompta == 'CREANCES-DETTES' || $mod $i++; } $db->free($result); - } - else { + } else { dol_print_error($db); } -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { // Nothing from this table } @@ -274,17 +268,14 @@ if (!empty($conf->facture->enabled) && ($modecompta == 'CREANCES-DETTES' || $mod $i++; } - } - else { + } else { dol_print_error($db); } - } - elseif ($modecompta == "RECETTES-DEPENSES") + } elseif ($modecompta == "RECETTES-DEPENSES") { // Nothing from this table } -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { // Nothing from this table } @@ -307,8 +298,7 @@ if (!empty($conf->facture->enabled) && ($modecompta == 'CREANCES-DETTES' || $mod else $sql .= " AND f.type IN (0,1,2,3)"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - } - elseif ($modecompta == "RECETTES-DEPENSES") + } elseif ($modecompta == "RECETTES-DEPENSES") { $sql = "SELECT sum(pf.amount) as amount_ttc, date_format(p.datep,'%Y-%m') as dm"; $sql .= " FROM ".MAIN_DB_PREFIX."paiementfourn as p"; @@ -343,12 +333,10 @@ if (!empty($conf->facture->enabled) && ($modecompta == 'CREANCES-DETTES' || $mod $i++; } $db->free($result); - } - else { + } else { dol_print_error($db); } -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { // Nothing from this table } @@ -429,8 +417,7 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom } else { dol_print_error($db); } - } - elseif ($modecompta == "RECETTES-DEPENSES") + } elseif ($modecompta == "RECETTES-DEPENSES") { // TVA really already paid $sql = "SELECT sum(t.amount) as amount, date_format(t.datev,'%Y-%m') as dm"; @@ -493,8 +480,7 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom dol_print_error($db); } } -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { // Nothing from this table } @@ -516,8 +502,7 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom $sql .= " AND c.deductible = 0"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND cs.date_ech >= '".$db->idate($date_start)."' AND cs.date_ech <= '".$db->idate($date_end)."'"; - } - elseif ($modecompta == "RECETTES-DEPENSES") + } elseif ($modecompta == "RECETTES-DEPENSES") { $sql = "SELECT c.libelle as nom, date_format(p.datep,'%Y-%m') as dm, sum(p.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c"; @@ -554,8 +539,7 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom } else { dol_print_error($db); } -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { // Nothing from this table } @@ -578,8 +562,7 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom $sql .= " AND c.deductible = 1"; if (!empty($date_start) && !empty($date_end)) $sql .= " AND cs.date_ech >= '".$db->idate($date_start)."' AND cs.date_ech <= '".$db->idate($date_end)."'"; - } - elseif ($modecompta == "RECETTES-DEPENSES") + } elseif ($modecompta == "RECETTES-DEPENSES") { $sql = "SELECT c.libelle as nom, date_format(p.datep,'%Y-%m') as dm, sum(p.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c"; @@ -616,8 +599,7 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom } else { dol_print_error($db); } -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { // Nothing from this table } @@ -664,8 +646,7 @@ if (!empty($conf->salaries->enabled) && ($modecompta == 'CREANCES-DETTES' || $mo } else { dol_print_error($db); } -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { // Nothing from this table } @@ -723,12 +704,10 @@ if (!empty($conf->expensereport->enabled) && ($modecompta == 'CREANCES-DETTES' | $decaiss_ttc[$obj->dm] += $obj->amount_ttc; } } - } - else { + } else { dol_print_error($db); } -} -elseif ($modecompta == 'BOOKKEEPING') { +} elseif ($modecompta == 'BOOKKEEPING') { // Nothing from this table } @@ -784,12 +763,10 @@ if (!empty($conf->don->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom $i++; } } - } - else { + } else { dol_print_error($db); } -} -elseif ($modecompta == 'BOOKKEEPING') { +} elseif ($modecompta == 'BOOKKEEPING') { // Nothing from this table } @@ -823,8 +800,7 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->ba $i++; } } - } - else { + } else { dol_print_error($db); } @@ -852,8 +828,7 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->ba $i++; } } - } - else { + } else { dol_print_error($db); } } @@ -889,8 +864,7 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_LOAN) && !empty($conf->loan $i++; } } - } - else { + } else { dol_print_error($db); } } @@ -955,8 +929,7 @@ if (!empty($conf->accounting->enabled) && ($modecompta == 'BOOKKEEPING')) $i++; } } - } - else { + } else { dol_print_error($db); } } @@ -1035,8 +1008,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) if (!isset($totsorties[$annee])) $totsorties[$annee] = 0; $totsorties[$annee] += $decaiss[$case]; } - } - else { + } else { if (isset($decaiss_ttc[$case]) && $decaiss_ttc[$case] != 0) { print ''.price(price2num($decaiss_ttc[$case], 'MT')).''; @@ -1055,8 +1027,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) if (!isset($totentrees[$annee])) $totentrees[$annee] = 0; $totentrees[$annee] += $encaiss[$case]; } - } - else { + } else { if (isset($encaiss_ttc[$case])) { print ''.price(price2num($encaiss_ttc[$case], 'MT')).''; diff --git a/htdocs/compta/resultat/result.php b/htdocs/compta/resultat/result.php index 172929aabff..48cb8b1154e 100644 --- a/htdocs/compta/resultat/result.php +++ b/htdocs/compta/resultat/result.php @@ -90,8 +90,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $month_end = $month_start - 1; if ($month_end < 1) $month_end = 12; else $year_end++; - } - else $month_end = $month_start; + } else $month_end = $month_start; $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); } if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } @@ -181,8 +180,7 @@ if ($modecompta == "CREANCES-DETTES") else $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "RECETTES-DEPENSES") { +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("AnnualByAccountInputOutputMode"); $calcmode = $langs->trans("CalcModeEngagement"); $calcmode .= '
('.$langs->trans("SeeReportInDueDebtMode", '', '').')'; @@ -192,8 +190,7 @@ elseif ($modecompta == "RECETTES-DEPENSES") { $description = $langs->trans("RulesResultInOut"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { $name = $langs->trans("ReportInOut").', '.$langs->trans("ByPersonalizedAccountGroups"); $calcmode = $langs->trans("CalcModeBookkeeping"); @@ -248,13 +245,11 @@ if ($modecompta == 'CREANCES-DETTES') { //if (! empty($date_start) && ! empty($date_end)) // $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { //if (! empty($date_start) && ! empty($date_end)) // $sql.= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { // Get array of all report groups that are active $cats = $AccCat->getCats(); // WARNING: Computed groups must be after group they include diff --git a/htdocs/compta/sociales/card.php b/htdocs/compta/sociales/card.php index 0cb706d3177..f9d5a90d543 100644 --- a/htdocs/compta/sociales/card.php +++ b/htdocs/compta/sociales/card.php @@ -128,8 +128,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes') { header("Location: list.php"); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -144,28 +143,23 @@ if ($action == 'add' && $user->rights->tax->charges->creer) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Date")), null, 'errors'); $action = 'create'; - } - elseif (!$dateperiod) + } elseif (!$dateperiod) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Period")), null, 'errors'); $action = 'create'; - } - elseif (!$actioncode > 0) + } elseif (!$actioncode > 0) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Type")), null, 'errors'); $action = 'create'; - } - elseif (empty($amount)) + } elseif (empty($amount)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount")), null, 'errors'); $action = 'create'; - } - elseif (!is_numeric($amount)) + } elseif (!is_numeric($amount)) { setEventMessages($langs->trans("ErrorFieldMustBeANumeric", $langs->transnoentities("Amount")), null, 'errors'); $action = 'create'; - } - else { + } else { $object->type = $actioncode; $object->label = GETPOST('label', 'alpha'); $object->date_ech = $dateech; @@ -193,23 +187,19 @@ if ($action == 'update' && !$_POST["cancel"] && $user->rights->tax->charges->cre { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Date")), null, 'errors'); $action = 'edit'; - } - elseif (!$dateperiod) + } elseif (!$dateperiod) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Period")), null, 'errors'); $action = 'edit'; - } - elseif (empty($amount)) + } elseif (empty($amount)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount")), null, 'errors'); $action = 'edit'; - } - elseif (!is_numeric($amount)) + } elseif (!is_numeric($amount)) { setEventMessages($langs->trans("ErrorFieldMustBeANumeric", $langs->transnoentities("Amount")), null, 'errors'); $action = 'create'; - } - else { + } else { $result = $object->fetch($id); $object->date_ech = $dateech; @@ -242,16 +232,14 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->tax->char if (GETPOST('clone_label', 'alphanohtml')) { $object->label = GETPOST('clone_label', 'alphanohtml'); - } - else { + } else { $object->label = $langs->trans("CopyOf").' '.$object->label; } if (GETPOST('clone_for_next_month', 'int')) { $object->periode = dol_time_plus_duree($object->periode, 1, 'm'); $object->date_ech = dol_time_plus_duree($object->date_ech, 1, 'm'); - } - else { + } else { $newdateperiod = dol_mktime(0, 0, 0, GETPOST('clone_periodmonth', 'int'), GETPOST('clone_periodday', 'int'), GETPOST('clone_periodyear', 'int')); $newdateech = dol_mktime(0, 0, 0, GETPOST('clone_date_echmonth', 'int'), GETPOST('clone_date_echday', 'int'), GETPOST('clone_date_echyear', 'int')); if ($newdateperiod) $object->periode = $newdateperiod; @@ -268,16 +256,14 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->tax->char header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; - } - else { + } else { $id = $originalId; $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } } - } - else { + } else { $db->rollback(); dol_print_error($db, $object->error); } @@ -426,8 +412,7 @@ if ($id > 0) if (!empty($conf->global->TAX_ADD_CLON_FOR_NEXT_MONTH_CHECKBOX)) { $formquestion[] = array('type' => 'checkbox', 'name' => 'clone_for_next_month', 'label' => $langs->trans("CloneTaxForNextMonth"), 'value' => 1); - } - else { + } else { $formquestion[] = array('type' => 'date', 'name' => 'clone_date_ech', 'label' => $langs->trans("Date"), 'value' => -1); $formquestion[] = array('type' => 'date', 'name' => 'clone_period', 'label' => $langs->trans("PeriodEndDate"), 'value' => -1); } @@ -529,8 +514,7 @@ if ($id > 0) if ($action == 'edit') { print $form->selectDate($object->periode, 'period', 0, 0, 0, 'charge', 1); - } - else { + } else { print dol_print_date($object->periode, "day"); } print ""; @@ -541,8 +525,7 @@ if ($id > 0) print ''.$langs->trans("AmountTTC").""; print ''; print ""; - } - else { + } else { print ''.$langs->trans("AmountTTC").''.price($object->amount, 0, $outputlangs, 1, -1, -1, $conf->currency).''; } @@ -667,8 +650,7 @@ if ($id > 0) $totalpaye += $objp->amount; $i++; } - } - else { + } else { print ''.$langs->trans("None").''; print ''; print ''; @@ -687,8 +669,7 @@ if ($id > 0) print ''; $db->free($resql); - } - else { + } else { dol_print_error($db); } @@ -758,8 +739,7 @@ if ($id > 0) print ""; } - } - else { + } else { /* Social contribution not found */ dol_print_error('', $object->error); } diff --git a/htdocs/compta/sociales/class/cchargesociales.class.php b/htdocs/compta/sociales/class/cchargesociales.class.php index b91d9ca31ee..cc66b56aabd 100644 --- a/htdocs/compta/sociales/class/cchargesociales.class.php +++ b/htdocs/compta/sociales/class/cchargesociales.class.php @@ -459,28 +459,23 @@ class Cchargesociales { if ($status == 1) return $langs->trans('Enabled'); elseif ($status == 0) return $langs->trans('Disabled'); - } - elseif ($mode == 1) + } elseif ($mode == 1) { if ($status == 1) return $langs->trans('Enabled'); elseif ($status == 0) return $langs->trans('Disabled'); - } - elseif ($mode == 2) + } elseif ($mode == 2) { if ($status == 1) return img_picto($langs->trans('Enabled'), 'statut4').' '.$langs->trans('Enabled'); elseif ($status == 0) return img_picto($langs->trans('Disabled'), 'statut5').' '.$langs->trans('Disabled'); - } - elseif ($mode == 3) + } elseif ($mode == 3) { if ($status == 1) return img_picto($langs->trans('Enabled'), 'statut4'); elseif ($status == 0) return img_picto($langs->trans('Disabled'), 'statut5'); - } - elseif ($mode == 4) + } elseif ($mode == 4) { if ($status == 1) return img_picto($langs->trans('Enabled'), 'statut4').' '.$langs->trans('Enabled'); elseif ($status == 0) return img_picto($langs->trans('Disabled'), 'statut5').' '.$langs->trans('Disabled'); - } - elseif ($mode == 5) + } elseif ($mode == 5) { if ($status == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'), 'statut4'); elseif ($status == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'), 'statut5'); diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index 0c709c031d5..81ae1e28f20 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -171,12 +171,10 @@ class ChargeSociales extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { return 0; } - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -250,13 +248,11 @@ class ChargeSociales extends CommonObject if (empty($error)) { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1 * $error; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -325,8 +321,7 @@ class ChargeSociales extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -382,8 +377,7 @@ class ChargeSociales extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -416,12 +410,10 @@ class ChargeSociales extends CommonObject $obj = $this->db->fetch_object($result); $this->db->free($result); return $obj->amount; - } - else { + } else { return 0; } - } - else { + } else { print $this->db->error(); return -1; } @@ -605,8 +597,7 @@ class ChargeSociales extends CommonObject $this->db->free($resql); return $amount; - } - else { + } else { return -1; } } @@ -659,8 +650,7 @@ class ChargeSociales extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index 9164ab39f1e..4cb81422284 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -194,13 +194,11 @@ class PaymentSocialContribution extends CommonObject if ($remaintopay == 0) { $result = $contrib->set_paid($user); - } - else dol_syslog("Remain to pay for conrib ".$contribid." not null. We do nothing."); + } else dol_syslog("Remain to pay for conrib ".$contribid." not null. We do nothing."); } } } - } - else { + } else { $error++; } } @@ -214,8 +212,7 @@ class PaymentSocialContribution extends CommonObject $this->total = $totalamount; // deprecated $this->db->commit(); return $this->id; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -284,8 +281,7 @@ class PaymentSocialContribution extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -355,8 +351,7 @@ class PaymentSocialContribution extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -410,8 +405,7 @@ class PaymentSocialContribution extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -460,8 +454,7 @@ class PaymentSocialContribution extends CommonObject { $this->db->commit(); return $object->id; - } - else { + } else { $this->db->rollback(); return -1; } @@ -571,8 +564,7 @@ class PaymentSocialContribution extends CommonObject if ($result <= 0) dol_print_error($this->db); } } - } - else { + } else { $this->error = $acc->error; $error++; } @@ -581,8 +573,7 @@ class PaymentSocialContribution extends CommonObject if (!$error) { return 1; - } - else { + } else { return -1; } } @@ -605,8 +596,7 @@ class PaymentSocialContribution extends CommonObject if ($result) { return 1; - } - else { + } else { $this->error = $this->db->error(); return 0; } diff --git a/htdocs/compta/sociales/document.php b/htdocs/compta/sociales/document.php index e63c5f354d0..e7d76b94a76 100644 --- a/htdocs/compta/sociales/document.php +++ b/htdocs/compta/sociales/document.php @@ -163,8 +163,7 @@ if ($object->id) $permtoedit = $user->rights->fournisseur->facture->creer; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/compta/sociales/list.php b/htdocs/compta/sociales/list.php index be5f7e6f973..43823490ed9 100644 --- a/htdocs/compta/sociales/list.php +++ b/htdocs/compta/sociales/list.php @@ -80,8 +80,7 @@ if (!GETPOSTISSET('search_typeid')) $part = explode(':', $val); if ($part[0] == 'cs.fk_type') $search_typeid = $part[1]; } -} -else { +} else { $search_typeid = GETPOST('search_typeid', 'int'); } @@ -207,8 +206,7 @@ if ($resql) $countrynotdefined = $langs->trans("ErrorSetACountryFirst"); print $countrynotdefined; print ''; - } - else { + } else { print '
'; print ''."\n"; @@ -311,8 +309,7 @@ if ($resql) if ($obj->periode) { print 'jdate($obj->periode)).'">'.dol_print_date($db->jdate($obj->periode), 'day').''; - } - else { + } else { print ' '; } print "\n"; @@ -342,8 +339,7 @@ if ($resql) print ''; } print ''; -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/sociales/payments.php b/htdocs/compta/sociales/payments.php index 05808877df9..fc1f66d5e2c 100644 --- a/htdocs/compta/sociales/payments.php +++ b/htdocs/compta/sociales/payments.php @@ -92,8 +92,7 @@ if ($mode != 'sconly') { $center = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'title_accountancy', 0, '', '', $limit, 1); -} -else { +} else { print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'title_accountancy', 0, '', '', $limit); } @@ -207,8 +206,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) print ''; print '"; print ""; - } - else { + } else { dol_print_error($db); } print '
 '.price($totalpaye)."
'; @@ -285,8 +283,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) print ""; $db->free($result); - } - else { + } else { dol_print_error($db); } } @@ -297,18 +294,15 @@ if ($mysoc->localtax1_assuj == "1" && $mysoc->localtax2_assuj == "1") { $j = 1; $numlt = 3; -} -elseif ($mysoc->localtax1_assuj == "1") +} elseif ($mysoc->localtax1_assuj == "1") { $j = 1; $numlt = 2; -} -elseif ($mysoc->localtax2_assuj == "1") +} elseif ($mysoc->localtax2_assuj == "1") { $j = 2; $numlt = 3; -} -else { +} else { $j = 0; $numlt = 0; } @@ -384,8 +378,7 @@ while ($j < $numlt) print ""; $db->free($result); - } - else { + } else { dol_print_error($db); } } @@ -467,8 +460,7 @@ if (!empty($conf->salaries->enabled) && !empty($user->rights->salaries->read)) $db->free($result); print "
"; - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/compta/stats/byratecountry.php b/htdocs/compta/stats/byratecountry.php index 3859b19df91..dc5ebd1731d 100644 --- a/htdocs/compta/stats/byratecountry.php +++ b/htdocs/compta/stats/byratecountry.php @@ -77,8 +77,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end else $year_end++; } $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); - } - else { + } else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -208,8 +207,7 @@ if ($modecompta == "CREANCES-DETTES") { } $builddate = dol_now(); -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("TurnoverCollected").', '.$langs->trans("ByVatRate"); $calcmode = $langs->trans("CalcModeEngagement"); @@ -219,11 +217,9 @@ elseif ($modecompta == "RECETTES-DEPENSES") $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { -} -elseif ($modecompta == "BOOKKEEPINGCOLLECTED") +} elseif ($modecompta == "BOOKKEEPINGCOLLECTED") { } $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index 513b0ffa350..ab2c1dcadb1 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -103,8 +103,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end else $year_end++; } $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); - } - else { + } else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -180,8 +179,7 @@ if ($modecompta == "CREANCES-DETTES") { } $builddate = dol_now(); -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("TurnoverCollected").', '.$langs->trans("ByProductsAndServices"); $calcmode = $langs->trans("CalcModeEngagement"); @@ -191,11 +189,9 @@ elseif ($modecompta == "RECETTES-DEPENSES") $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { -} -elseif ($modecompta == "BOOKKEEPINGCOLLECTED") +} elseif ($modecompta == "BOOKKEEPINGCOLLECTED") { } @@ -231,8 +227,7 @@ if ($modecompta == 'CREANCES-DETTES') if ($selected_cat === -2) // Without any category { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product"; - } - elseif ($selected_cat) // Into a specific category + } elseif ($selected_cat) // Into a specific category { $sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_product as cp"; } @@ -254,8 +249,7 @@ if ($modecompta == 'CREANCES-DETTES') if ($selected_cat === -2) // Without any category { $sql .= " AND cp.fk_product is null"; - } - elseif ($selected_cat) { // Into a specific category + } elseif ($selected_cat) { // Into a specific category $sql .= " AND (c.rowid = ".$selected_cat; if ($subcat) $sql .= " OR c.fk_parent = ".$selected_cat; $sql .= ")"; diff --git a/htdocs/compta/stats/cabyuser.php b/htdocs/compta/stats/cabyuser.php index 6d720b4f96d..8b6caa89a8f 100644 --- a/htdocs/compta/stats/cabyuser.php +++ b/htdocs/compta/stats/cabyuser.php @@ -96,8 +96,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } if ($q == 4) { $date_start = dol_get_first_day($year_start, 10, false); $date_end = dol_get_last_day($year_start, 12, false); } -} -else { +} else { // TODO We define q } // $date_start and $date_end are defined. We force $year_start and $nbofyear @@ -156,8 +155,7 @@ if ($modecompta == "CREANCES-DETTES") { else $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("TurnoverCollected").', '.$langs->trans("ByUserAuthorOfInvoice"); $calcmode = $langs->trans("CalcModeEngagement"); @@ -166,12 +164,10 @@ elseif ($modecompta == "RECETTES-DEPENSES") $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { // TODO -} -elseif ($modecompta == "BOOKKEEPINGCOLLECTED") +} elseif ($modecompta == "BOOKKEEPINGCOLLECTED") { // TODO } @@ -395,8 +391,7 @@ if (count($amount)) { } else { //print ''; } - } - elseif ($modecompta == 'CREANCES-DETTES') { + } elseif ($modecompta == 'CREANCES-DETTES') { if ($key > 0) { print ''; } else { @@ -415,8 +410,7 @@ if (count($amount)) { } else { //print ''; } - } - elseif ($modecompta == 'CREANCES-DETTES') { + } elseif ($modecompta == 'CREANCES-DETTES') { if ($key > 0) { print ''; } else { @@ -430,8 +424,7 @@ if (count($amount)) { } else { //print ''; } - } - elseif ($modecompta == 'CREANCES-DETTES') { + } elseif ($modecompta == 'CREANCES-DETTES') { if ($key > 0) { print ''; } diff --git a/htdocs/compta/stats/casoc.php b/htdocs/compta/stats/casoc.php index 85a27c7574a..ab71b147b50 100644 --- a/htdocs/compta/stats/casoc.php +++ b/htdocs/compta/stats/casoc.php @@ -113,8 +113,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } if ($q == 4) { $date_start = dol_get_first_day($year_start, 10, false); $date_end = dol_get_last_day($year_start, 12, false); } -} -else { +} else { // TODO We define q } @@ -182,8 +181,7 @@ if ($modecompta == "CREANCES-DETTES") else $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("TurnoverCollected").', '.$langs->trans("ByThirdParties"); $calcmode = $langs->trans("CalcModeEngagement"); @@ -192,11 +190,9 @@ elseif ($modecompta == "RECETTES-DEPENSES") $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { -} -elseif ($modecompta == "BOOKKEEPINGCOLLECTED") +} elseif ($modecompta == "BOOKKEEPINGCOLLECTED") { } $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); @@ -222,8 +218,7 @@ if ($modecompta == 'CREANCES-DETTES') { if ($selected_cat === -2) // Without any category { $sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_soc"; - } - elseif ($selected_cat) // Into a specific category + } elseif ($selected_cat) // Into a specific category { $sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_societe as cs"; } @@ -240,8 +235,7 @@ if ($modecompta == 'CREANCES-DETTES') { if ($selected_cat === -2) // Without any category { $sql .= " AND cs.fk_soc is null"; - } - elseif ($selected_cat) { // Into a specific category + } elseif ($selected_cat) { // Into a specific category $sql .= " AND (c.rowid = ".$db->escape($selected_cat); if ($subcat) $sql .= " OR c.fk_parent = ".$db->escape($selected_cat); $sql .= ")"; @@ -260,8 +254,7 @@ if ($modecompta == 'CREANCES-DETTES') { if ($selected_cat === -2) // Without any category { $sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_soc"; - } - elseif ($selected_cat) // Into a specific category + } elseif ($selected_cat) // Into a specific category { $sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_societe as cs"; } @@ -274,8 +267,7 @@ if ($modecompta == 'CREANCES-DETTES') { if ($selected_cat === -2) // Without any category { $sql .= " AND cs.fk_soc is null"; - } - elseif ($selected_cat) { // Into a specific category + } elseif ($selected_cat) { // Into a specific category $sql .= " AND (c.rowid = ".$selected_cat; if ($subcat) $sql .= " OR c.fk_parent = ".$selected_cat; $sql .= ")"; diff --git a/htdocs/compta/stats/index.php b/htdocs/compta/stats/index.php index cfc521c7c13..796ce2cc6a6 100644 --- a/htdocs/compta/stats/index.php +++ b/htdocs/compta/stats/index.php @@ -73,8 +73,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } $month_end = $month_start - 1; if ($month_end < 1) $month_end = 12; - } - else $month_end = $month_start; + } else $month_end = $month_start; $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); } if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } @@ -127,8 +126,7 @@ if ($modecompta == "CREANCES-DETTES") else $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("TurnoverCollected"); $calcmode = $langs->trans("CalcModeEngagement"); @@ -140,8 +138,7 @@ elseif ($modecompta == "RECETTES-DEPENSES") $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { $name = $langs->trans("Turnover"); $calcmode = $langs->trans("CalcModeBookkeeping"); @@ -173,8 +170,7 @@ if ($modecompta == 'CREANCES-DETTES') else $sql .= " AND f.type IN (0,1,2,3,5)"; $sql .= " AND f.entity IN (".getEntity('invoice').")"; if ($socid) $sql .= " AND f.fk_soc = ".$socid; -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { /* * Liste des paiements (les anciens paiements ne sont pas vus par cette requete car, sur les @@ -188,8 +184,7 @@ elseif ($modecompta == "RECETTES-DEPENSES") $sql .= " AND pf.fk_facture = f.rowid"; $sql .= " AND f.entity IN (".getEntity('invoice').")"; if ($socid) $sql .= " AND f.fk_soc = ".$socid; -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { $sql = "SELECT date_format(b.doc_date,'%Y-%m') as dm, sum(b.credit) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as b, ".MAIN_DB_PREFIX."accounting_journal as aj"; @@ -223,8 +218,7 @@ if ($result) $i++; } $db->free($result); -} -else { +} else { dol_print_error($db); } @@ -259,8 +253,7 @@ if ($modecompta == 'RECETTES-DEPENSES') } $i++; } - } - else { + } else { dol_print_error($db); } } @@ -338,10 +331,8 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) { $now_show_delta = 1; // On a trouve le premier mois de la premiere annee generant du chiffre. print ''.price($cum_ht[$case], 1).''; - } - else { - if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } - else { print ' '; } + } else { + if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } else { print ' '; } } print ""; } @@ -354,10 +345,8 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) if ($modecompta != 'BOOKKEEPING') print ''; print price($cum[$case], 1); if ($modecompta != 'BOOKKEEPING') print ''; - } - else { - if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } - else { print ' '; } + } else { + if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } else { print ' '; } } print ""; @@ -387,11 +376,9 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) { print '-'; } - } - else { + } else { print ''; - if ($minyearmonth <= $case && $case <= $maxyearmonth) { print '-'; } - else { print ' '; } + if ($minyearmonth <= $case && $case <= $maxyearmonth) { print '-'; } else { print ' '; } print ''; } @@ -479,8 +466,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) if ($total_ht[$annee] || ($annee >= $minyear && $annee <= max($nowyear, $maxyear))) { print ''.($total_ht[$annee] ?price($total_ht[$annee]) : "0").""; - } - else { + } else { print ' '; } } @@ -489,8 +475,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) if ($total[$annee] || ($annee >= $minyear && $annee <= max($nowyear, $maxyear))) { print ''.($total[$annee] ?price($total[$annee]) : "0").""; - } - else { + } else { print ' '; } @@ -513,11 +498,9 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) { print '+0%'; } - } - else { + } else { print ''; - if ($total[$annee] || ($minyear <= $annee && $annee <= max($nowyear, $maxyear))) { print '-'; } - else { print ' '; } + if ($total[$annee] || ($minyear <= $annee && $annee <= max($nowyear, $maxyear))) { print '-'; } else { print ' '; } print ''; } diff --git a/htdocs/compta/stats/supplier_turnover.php b/htdocs/compta/stats/supplier_turnover.php index e9e0ec5926c..c257d5d1f73 100644 --- a/htdocs/compta/stats/supplier_turnover.php +++ b/htdocs/compta/stats/supplier_turnover.php @@ -69,8 +69,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } $month_end = $month_start - 1; if ($month_end < 1) $month_end = 12; - } - else $month_end = $month_start; + } else $month_end = $month_start; $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); } if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } @@ -121,8 +120,7 @@ if ($modecompta == "CREANCES-DETTES") $description = $langs->trans("RulesPurchaseTurnoverDue"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("PurchaseTurnoverCollected"); $calcmode = $langs->trans("CalcModeEngagement"); @@ -133,8 +131,7 @@ elseif ($modecompta == "RECETTES-DEPENSES") $description = $langs->trans("RulesPurchaseTurnoverIn"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { $name = $langs->trans("PurchaseTurnover"); $calcmode = $langs->trans("CalcModeBookkeeping"); @@ -165,8 +162,7 @@ if ($modecompta == 'CREANCES-DETTES') $sql .= " AND f.type IN (0,2)"; $sql .= " AND f.entity IN (".getEntity('supplier_invoice').")"; if ($socid) $sql .= " AND f.fk_soc = ".$socid; -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { $sql = "SELECT date_format(p.datep,'%Y-%m') as dm, sum(pf.amount) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; @@ -176,8 +172,7 @@ elseif ($modecompta == "RECETTES-DEPENSES") $sql .= " AND pf.fk_facturefourn = f.rowid"; $sql .= " AND f.entity IN (".getEntity('supplier_invoice').")"; if ($socid) $sql .= " AND f.fk_soc = ".$socid; -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { $sql = "SELECT date_format(b.doc_date,'%Y-%m') as dm, sum(b.debit) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as b, ".MAIN_DB_PREFIX."accounting_journal as aj"; @@ -211,8 +206,7 @@ if ($result) $i++; } $db->free($result); -} -else { +} else { dol_print_error($db); } @@ -289,10 +283,8 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) { $now_show_delta = 1; // On a trouve le premier mois de la premiere annee generant du chiffre. print ''.price($cum_ht[$case], 1).''; - } - else { - if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } - else { print ' '; } + } else { + if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } else { print ' '; } } print ""; } @@ -305,10 +297,8 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) if ($modecompta != 'BOOKKEEPING') print ''; print price($cum[$case], 1); if ($modecompta != 'BOOKKEEPING') print ''; - } - else { - if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } - else { print ' '; } + } else { + if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } else { print ' '; } } print ""; @@ -338,11 +328,9 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) { print '-'; } - } - else { + } else { print ''; - if ($minyearmonth <= $case && $case <= $maxyearmonth) { print '-'; } - else { print ' '; } + if ($minyearmonth <= $case && $case <= $maxyearmonth) { print '-'; } else { print ' '; } print ''; } @@ -365,8 +353,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) if ($total_ht[$annee] || ($annee >= $minyear && $annee <= max($nowyear, $maxyear))) { print ''.($total_ht[$annee] ?price($total_ht[$annee]) : "0").""; - } - else { + } else { print ' '; } } @@ -375,8 +362,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) if ($total[$annee] || ($annee >= $minyear && $annee <= max($nowyear, $maxyear))) { print ''.($total[$annee] ?price($total[$annee]) : "0").""; - } - else { + } else { print ' '; } @@ -399,11 +385,9 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) { print '+0%'; } - } - else { + } else { print ''; - if ($total[$annee] || ($minyear <= $annee && $annee <= max($nowyear, $maxyear))) { print '-'; } - else { print ' '; } + if ($total[$annee] || ($minyear <= $annee && $annee <= max($nowyear, $maxyear))) { print '-'; } else { print ' '; } print ''; } diff --git a/htdocs/compta/stats/supplier_turnover_by_prodserv.php b/htdocs/compta/stats/supplier_turnover_by_prodserv.php index 9b25488c280..5911daaba45 100644 --- a/htdocs/compta/stats/supplier_turnover_by_prodserv.php +++ b/htdocs/compta/stats/supplier_turnover_by_prodserv.php @@ -100,8 +100,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end else $year_end++; } $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); - } - else { + } else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -171,8 +170,7 @@ if ($modecompta == "CREANCES-DETTES") { $description = $langs->trans("RulesPurchaseTurnoverDue"); $builddate = dol_now(); -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("PurchaseTurnoverCollected").', '.$langs->trans("ByProductsAndServices"); $calcmode = $langs->trans("CalcModeEngagement"); @@ -180,11 +178,9 @@ elseif ($modecompta == "RECETTES-DEPENSES") $description = $langs->trans("RulesPurchaseTurnoverIn"); $builddate = dol_now(); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { -} -elseif ($modecompta == "BOOKKEEPINGCOLLECTED") +} elseif ($modecompta == "BOOKKEEPINGCOLLECTED") { } @@ -220,8 +216,7 @@ if ($modecompta == 'CREANCES-DETTES') if ($selected_cat === -2) // Without any category { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product"; - } - elseif ($selected_cat) // Into a specific category + } elseif ($selected_cat) // Into a specific category { $sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_product as cp"; } @@ -239,8 +234,7 @@ if ($modecompta == 'CREANCES-DETTES') if ($selected_cat === -2) // Without any category { $sql .= " AND cp.fk_product is null"; - } - elseif ($selected_cat) { // Into a specific category + } elseif ($selected_cat) { // Into a specific category $sql .= " AND (c.rowid = ".$selected_cat; if ($subcat) $sql .= " OR c.fk_parent = ".$selected_cat; $sql .= ")"; diff --git a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php index 76f9c246e87..60d65049800 100644 --- a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php +++ b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php @@ -107,8 +107,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } if ($q == 4) { $date_start = dol_get_first_day($year_start, 10, false); $date_end = dol_get_last_day($year_start, 12, false); } -} -else { +} else { // TODO We define q } @@ -174,8 +173,7 @@ if ($modecompta == "CREANCES-DETTES") $description = $langs->trans("RulesPurchaseTurnoverDue"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "RECETTES-DEPENSES") +} elseif ($modecompta == "RECETTES-DEPENSES") { $name = $langs->trans("PurchaseTurnoverCollected").', '.$langs->trans("ByThirdParties"); $calcmode = $langs->trans("CalcModeEngagement"); @@ -183,11 +181,9 @@ elseif ($modecompta == "RECETTES-DEPENSES") $description = $langs->trans("RulesPurchaseTurnoverIn"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); -} -elseif ($modecompta == "BOOKKEEPING") +} elseif ($modecompta == "BOOKKEEPING") { -} -elseif ($modecompta == "BOOKKEEPINGCOLLECTED") +} elseif ($modecompta == "BOOKKEEPINGCOLLECTED") { } $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); @@ -214,8 +210,7 @@ if ($modecompta == 'CREANCES-DETTES') { if ($selected_cat === -2) // Without any category { $sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_soc"; - } - elseif ($selected_cat) // Into a specific category + } elseif ($selected_cat) // Into a specific category { $sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_societe as cs"; } @@ -228,8 +223,7 @@ if ($modecompta == 'CREANCES-DETTES') { if ($selected_cat === -2) // Without any category { $sql .= " AND cs.fk_soc is null"; - } - elseif ($selected_cat) { // Into a specific category + } elseif ($selected_cat) { // Into a specific category $sql .= " AND (c.rowid = ".$db->escape($selected_cat); if ($subcat) $sql .= " OR c.fk_parent = ".$db->escape($selected_cat); $sql .= ")"; @@ -244,8 +238,7 @@ if ($modecompta == 'CREANCES-DETTES') { if ($selected_cat === -2) // Without any category { $sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_soc"; - } - elseif ($selected_cat) // Into a specific category + } elseif ($selected_cat) // Into a specific category { $sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_societe as cs"; } @@ -258,8 +251,7 @@ if ($modecompta == 'CREANCES-DETTES') { if ($selected_cat === -2) // Without any category { $sql .= " AND cs.fk_soc is null"; - } - elseif ($selected_cat) { // Into a specific category + } elseif ($selected_cat) { // Into a specific category $sql .= " AND (c.rowid = ".$selected_cat; if ($subcat) $sql .= " OR c.fk_parent = ".$selected_cat; $sql .= ")"; diff --git a/htdocs/compta/tva/card.php b/htdocs/compta/tva/card.php index 3df7419019a..6fa22885dee 100644 --- a/htdocs/compta/tva/card.php +++ b/htdocs/compta/tva/card.php @@ -131,8 +131,7 @@ if ($action == 'add' && $_POST["cancel"] <> $langs->trans("Cancel")) $db->commit(); header("Location: list.php"); exit; - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); $action = "create"; @@ -165,19 +164,16 @@ if ($action == 'delete') $db->commit(); header("Location: ".DOL_URL_ROOT.'/compta/tva/list.php'); exit; - } - else { + } else { $object->error = $accountline->error; $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { $mesg = 'Error try do delete a line linked to a conciliated bank transaction'; setEventMessages($mesg, null, 'errors'); } @@ -384,12 +380,10 @@ if ($id) if (!empty($user->rights->tax->charges->supprimer)) { print ''; - } - else { + } else { print ''; } - } - else { + } else { print ''; } print "
"; diff --git a/htdocs/compta/tva/class/tva.class.php b/htdocs/compta/tva/class/tva.class.php index baeaff7a5d6..3274a3eaebd 100644 --- a/htdocs/compta/tva/class/tva.class.php +++ b/htdocs/compta/tva/class/tva.class.php @@ -150,13 +150,11 @@ class Tva extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); $this->db->rollback(); return -1; @@ -222,8 +220,7 @@ class Tva extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -290,8 +287,7 @@ class Tva extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -400,13 +396,11 @@ class Tva extends CommonObject $ret = $obj->amount; $this->db->free($result); return $ret; - } - else { + } else { $this->db->free($result); return 0; } - } - else { + } else { print $this->db->lasterror(); return -1; } @@ -439,13 +433,11 @@ class Tva extends CommonObject $ret = $obj->total_tva; $this->db->free($result); return $ret; - } - else { + } else { $this->db->free($result); return 0; } - } - else { + } else { print $this->db->lasterror(); return -1; } @@ -480,13 +472,11 @@ class Tva extends CommonObject $ret = $obj->amount; $this->db->free($result); return $ret; - } - else { + } else { $this->db->free($result); return 0; } - } - else { + } else { print $this->db->lasterror(); return -1; } @@ -602,8 +592,7 @@ class Tva extends CommonObject if ($bank_line_id > 0) { $this->update_fk_bank($bank_line_id); - } - else { + } else { $this->error = $acc->error; $ok = 0; } @@ -621,18 +610,15 @@ class Tva extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -3; } - } - else { + } else { $this->db->rollback(); return -2; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -655,8 +641,7 @@ class Tva extends CommonObject if ($result) { return 1; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -695,8 +680,7 @@ class Tva extends CommonObject } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; @@ -737,8 +721,7 @@ class Tva extends CommonObject $this->db->free($resql); return $amount; - } - else { + } else { return -1; } } @@ -783,8 +766,7 @@ class Tva extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/compta/tva/clients.php b/htdocs/compta/tva/clients.php index 158c974114d..52466e33d84 100644 --- a/htdocs/compta/tva/clients.php +++ b/htdocs/compta/tva/clients.php @@ -66,13 +66,11 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $q = GETPOST("q", "int"); if (empty($q)) { - if (GETPOST("month", 'int')) { $date_start = dol_get_first_day($year_start, GETPOST("month", 'int'), false); $date_end = dol_get_last_day($year_start, GETPOST("month", 'int'), false); } - else { + if (GETPOST("month", 'int')) { $date_start = dol_get_first_day($year_start, GETPOST("month", 'int'), false); $date_end = dol_get_last_day($year_start, GETPOST("month", 'int'), false); } else { if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) { // quaterly vat, we take last past complete quarter $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -3 - (($current_date['mon'] - $conf->global->SOCIETE_FISCAL_MONTH_START) % 3), 'm'); $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1; - } - elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) { // yearly vat + } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) { // yearly vat if ($current_date['mon'] < $conf->global->SOCIETE_FISCAL_MONTH_START) { if (($conf->global->SOCIETE_FISCAL_MONTH_START - $current_date['mon']) > 6) { // If period started from less than 6 years, we show past year $year_start--; @@ -84,14 +82,12 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } $date_start = dol_get_first_day($year_start, $conf->global->SOCIETE_FISCAL_MONTH_START, false); $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1; - } - elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) { // monthly vat, we take last past complete month + } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) { // monthly vat, we take last past complete month $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -1, 'm'); $date_end = dol_time_plus_duree($date_start, 1, 'm') - 1; } } - } - else { + } else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -319,8 +315,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) 'vat' =>$x_paye[$my_paye_thirdpartyid]['vat_list'][$id], 'link' =>$expensereport->getNomUrl(1) ); - } - else { + } else { $invoice_supplier->id = $x_paye[$my_paye_thirdpartyid]['facid'][$id]; $invoice_supplier->ref = $x_paye[$my_paye_thirdpartyid]['facnum'][$id]; $invoice_supplier->type = $x_paye[$my_paye_thirdpartyid]['type'][$id]; @@ -690,8 +685,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) || ($type == 1 && $conf->global->TAX_MODE_BUY_SERVICE == 'invoice')) { print $langs->trans("NA"); - } - else { + } else { if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) { $ratiopaymentinvoice = ($fields['payment_amount'] / $fields['ftotal_ttc']); } diff --git a/htdocs/compta/tva/document.php b/htdocs/compta/tva/document.php index 45efc9681d8..cb26304cde5 100644 --- a/htdocs/compta/tva/document.php +++ b/htdocs/compta/tva/document.php @@ -148,8 +148,7 @@ if ($object->id) $permtoedit = $user->rights->fournisseur->facture->creer; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/compta/tva/index.php b/htdocs/compta/tva/index.php index c85f2bbdb8f..43db8353c4c 100644 --- a/htdocs/compta/tva/index.php +++ b/htdocs/compta/tva/index.php @@ -57,13 +57,11 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $q = GETPOST("q", "int"); if (empty($q)) { - if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } - else { + if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } else { if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) { // quaterly vat, we take last past complete quarter $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -3 - (($current_date['mon'] - $conf->global->SOCIETE_FISCAL_MONTH_START) % 3), 'm'); $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1; - } - elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) { // yearly vat + } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) { // yearly vat if ($current_date['mon'] < $conf->global->SOCIETE_FISCAL_MONTH_START) { if (($conf->global->SOCIETE_FISCAL_MONTH_START - $current_date['mon']) > 6) { // If period started from less than 6 years, we show past year $year_start--; @@ -75,14 +73,12 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } $date_start = dol_get_first_day($year_start, $conf->global->SOCIETE_FISCAL_MONTH_START, false); $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1; - } - elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) { // monthly vat, we take last past complete month + } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) { // monthly vat, we take last past complete month $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -1, 'm'); $date_end = dol_time_plus_duree($date_start, 1, 'm') - 1; } } - } - else { + } else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -174,8 +170,7 @@ function pt($db, $sql, $date) $amountpaid = 0; $previousmode = ''; $previousmonth = ''; - } - else { + } else { $previousmode = $obj->mode; $previousmonth = $obj->dm; } @@ -204,8 +199,7 @@ function pt($db, $sql, $date) print ""; $db->free($result); - } - else { + } else { dol_print_error($db); } } @@ -368,8 +362,7 @@ while ((($y < $yend) || ($y == $yend && $m <= $mend)) && $mcursor < 1000) // $mc 'vat' =>$x_paye[$my_paye_rate]['vat_list'][$id], //'link' =>$expensereport->getNomUrl(1) ); - } - else { + } else { //$invoice_supplier->id=$x_paye[$my_paye_rate]['facid'][$id]; //$invoice_supplier->ref=$x_paye[$my_paye_rate]['facnum'][$id]; //$invoice_supplier->type=$x_paye[$my_paye_rate]['type'][$id]; diff --git a/htdocs/compta/tva/list.php b/htdocs/compta/tva/list.php index 98eede887c8..5b09da5305c 100644 --- a/htdocs/compta/tva/list.php +++ b/htdocs/compta/tva/list.php @@ -72,8 +72,7 @@ if (empty($_REQUEST['typeid'])) $part = explode(':', $val); if ($part[0] == 't.fk_typepayment') $typeid = $part[1]; } -} -else { +} else { $typeid = $_REQUEST['typeid']; } @@ -227,8 +226,7 @@ if ($result) if ($obj->payment_code <> '') { $type = ''.$langs->trans("PaymentTypeShort".$obj->payment_code).' '.$obj->num_payment.''; - } - else { + } else { $type = ' '; } @@ -264,8 +262,7 @@ if ($result) $bankstatic->label = $obj->blabel; print $bankstatic->getNomUrl(1); - } - else print ' '; + } else print ' '; print ''; } // Amount @@ -289,8 +286,7 @@ if ($result) print ''; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/compta/tva/quadri_detail.php b/htdocs/compta/tva/quadri_detail.php index 6e16165ab6c..abd5fb6841c 100644 --- a/htdocs/compta/tva/quadri_detail.php +++ b/htdocs/compta/tva/quadri_detail.php @@ -66,13 +66,11 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $q = GETPOST("q", "int"); if (empty($q)) { - if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } - else { + if (GETPOST("month", "int")) { $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false); $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false); } else { if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) { // quaterly vat, we take last past complete quarter $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -3 - (($current_date['mon'] - $conf->global->SOCIETE_FISCAL_MONTH_START) % 3), 'm'); $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1; - } - elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) { // yearly vat + } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) { // yearly vat if ($current_date['mon'] < $conf->global->SOCIETE_FISCAL_MONTH_START) { if (($conf->global->SOCIETE_FISCAL_MONTH_START - $current_date['mon']) > 6) { // If period started from less than 6 years, we show past year $year_start--; @@ -84,14 +82,12 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end } $date_start = dol_get_first_day($year_start, $conf->global->SOCIETE_FISCAL_MONTH_START, false); $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1; - } - elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) { // monthly vat, we take last past complete month + } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) { // monthly vat, we take last past complete month $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -1, 'm'); $date_end = dol_time_plus_duree($date_start, 1, 'm') - 1; } } - } - else { + } else { if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } @@ -313,8 +309,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) 'vat' =>$x_paye[$my_paye_rate]['vat_list'][$id], 'link' =>$expensereport->getNomUrl(1) ); - } - else { + } else { $invoice_supplier->id = $x_paye[$my_paye_rate]['facid'][$id]; $invoice_supplier->ref = $x_paye[$my_paye_rate]['facnum'][$id]; $invoice_supplier->type = $x_paye[$my_paye_rate]['type'][$id]; @@ -436,8 +431,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) if (dol_string_nohtmltag($fields['descr'])) { print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']), 24); } - } - else { + } else { if ($type) { $text = img_object($langs->trans('Service'), 'service'); } else { @@ -616,8 +610,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) if (dol_string_nohtmltag($fields['descr'])) { print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']), 24); } - } - else { + } else { if ($type) { $text = img_object($langs->trans('Service'), 'service'); } else { @@ -668,8 +661,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) || ($type == 1 && $conf->global->TAX_MODE_BUY_SERVICE == 'invoice')) { print $langs->trans("NA"); - } - else { + } else { if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) { $ratiopaymentinvoice = ($fields['payment_amount'] / $fields['ftotal_ttc']); } diff --git a/htdocs/contact/agenda.php b/htdocs/contact/agenda.php index 874a964a965..0ea0018632b 100644 --- a/htdocs/contact/agenda.php +++ b/htdocs/contact/agenda.php @@ -76,8 +76,7 @@ if (GETPOST('actioncode', 'array')) { $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; -} -else { +} else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); @@ -158,8 +157,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) } $objcanvas->assign_values($action, $object->id, $object->ref); // Set value for templates $objcanvas->display_canvas($action); // Show template -} -else { +} else { // ----------------------------------------- // When used in standard mode // ----------------------------------------- diff --git a/htdocs/contact/canvas/actions_contactcard_common.class.php b/htdocs/contact/canvas/actions_contactcard_common.class.php index e005d3dca7b..415d9e47790 100644 --- a/htdocs/contact/canvas/actions_contactcard_common.class.php +++ b/htdocs/contact/canvas/actions_contactcard_common.class.php @@ -119,8 +119,7 @@ abstract class ActionsContactCardCommon { $this->tpl['company'] = $objsoc->getNomUrl(1); $this->tpl['company_id'] = $objsoc->id; - } - else { + } else { $this->tpl['company'] = $form->select_company($this->object->socid, 'socid', '', 1); } @@ -207,8 +206,7 @@ abstract class ActionsContactCardCommon $dolibarr_user = new User($this->db); $result = $dolibarr_user->fetch($this->object->user_id); $this->tpl['dolibarr_user'] = $dolibarr_user->getLoginUrl(1); - } - else $this->tpl['dolibarr_user'] = $langs->trans("NoDolibarrAccess"); + } else $this->tpl['dolibarr_user'] = $langs->trans("NoDolibarrAccess"); } if ($action == 'view' || $action == 'delete') @@ -221,8 +219,7 @@ abstract class ActionsContactCardCommon $objsoc->fetch($this->object->socid); $this->tpl['company'] = $objsoc->getNomUrl(1); - } - else { + } else { $this->tpl['company'] = $langs->trans("ContactNotLinkedToCompany"); } @@ -307,8 +304,7 @@ abstract class ActionsContactCardCommon if ($resql) { $obj = $this->db->fetch_object($resql); - } - else { + } else { dol_print_error($this->db); } $this->object->country_id = $langs->trans("Country".$obj->code) ? $langs->trans("Country".$obj->code) : $obj->label; diff --git a/htdocs/contact/canvas/default/actions_contactcard_default.class.php b/htdocs/contact/canvas/default/actions_contactcard_default.class.php index 6ac81ac8bd4..099c973b0a4 100644 --- a/htdocs/contact/canvas/default/actions_contactcard_default.class.php +++ b/htdocs/contact/canvas/default/actions_contactcard_default.class.php @@ -104,8 +104,7 @@ class ActionsContactCardDefault extends ActionsContactCardCommon $this->tpl['actionstodo'] = show_actions_todo($conf, $langs, $db, $objsoc, $this->object, 1); $this->tpl['actionsdone'] = show_actions_done($conf, $langs, $db, $objsoc, $this->object, 1); - } - else { + } else { // Confirm delete contact if ($action == 'delete' && $user->rights->societe->contact->supprimer) { diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index 885878138ba..6b73172decc 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -128,18 +128,15 @@ if (empty($reshook)) if ($result2) { $db->commit(); - } - else { + } else { $error = $nuser->error; $errors = $nuser->errors; $db->rollback(); } - } - else { + } else { $error = $nuser->error; $errors = $nuser->errors; $db->rollback(); } - } - else { + } else { $error = $object->error; $errors = $object->errors; } } @@ -152,8 +149,7 @@ if (empty($reshook)) if ($object->setstatus(0) < 0) { setEventMessages($object->error, $object->errors, 'errors'); - } - else { + } else { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$id); exit; } @@ -166,8 +162,7 @@ if (empty($reshook)) if ($object->setstatus(1) < 0) { setEventMessages($object->error, $object->errors, 'errors'); - } - else { + } else { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$id); exit; } @@ -272,8 +267,7 @@ if (empty($reshook)) else $url = 'card.php?id='.$id; header("Location: ".$url); exit; - } - else { + } else { $db->rollback(); } } @@ -293,13 +287,11 @@ if (empty($reshook)) { header("Location: ".$backtopage); exit; - } - else { + } else { header("Location: ".DOL_URL_ROOT.'/contact/list.php'); exit; } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -342,20 +334,17 @@ if (empty($reshook)) if (!$result > 0) { $errors[] = "ErrorFailedToSaveFile"; - } - else { + } else { $object->photo = dol_sanitizeFileName($_FILES['photo']['name']); // Create thumbs $object->addThumbs($newfile); } } - } - else { + } else { $errors[] = "ErrorBadImageFormat"; } - } - else { + } else { switch ($_FILES['photo']['error']) { case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini @@ -440,8 +429,7 @@ if (empty($reshook)) $resql = $db->query($sql); } } - } - else { + } else { $sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE email = '".$db->escape($object->email)."' AND entity = ".$db->escape(getEntity('mailing', 0)); $resql = $db->query($sql); } @@ -452,8 +440,7 @@ if (empty($reshook)) $object->old_lastname = ''; $object->old_firstname = ''; $action = 'view'; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $action = 'edit'; } @@ -512,8 +499,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) } $objcanvas->assign_values($action, $object->id, $object->ref); // Set value for templates $objcanvas->display_canvas($action); // Show template -} -else { +} else { // ----------------------------------------- // When used in standard mode // ----------------------------------------- @@ -632,8 +618,7 @@ else { print ''; print ''; print ''; - } - else { + } else { print ''; print $form->select_company($socid, 'socid', '', 'SelectThirdParty'); print ''; @@ -688,16 +673,14 @@ else { if (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && ($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 || $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 2)) { print ''; - } - else { + } else { print ''; } if ($object->country_id) { print $formcompany->select_state(GETPOST("state_id", 'alpha') ? GETPOST("state_id", 'alpha') : $object->state_id, $object->country_code, 'state_id'); - } - else { + } else { print $countrynotdefined; } print ''; @@ -854,8 +837,7 @@ else { if ($object->birthday) { print $form->selectDate($object->birthday, 'birthday', 0, 0, 0, "perso", 1, 0); - } - else { + } else { print $form->selectDate('', 'birthday', 0, 0, 1, "perso", 1, 0); } print ''; @@ -864,8 +846,7 @@ else { if ($object->birthday_alert) { print ''; - } - else { + } else { print ''; } print ''; @@ -881,16 +862,14 @@ else { { print '     '; print ''; - } - else { + } else { print '     '; print ''; } print ''; print ""; - } - elseif ($action == 'edit' && !empty($id)) + } elseif ($action == 'edit' && !empty($id)) { /* * Fiche en mode edition @@ -1011,8 +990,7 @@ else { if (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && ($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 || $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 2)) { print ''; - } - else { + } else { print ''; } @@ -1049,8 +1027,7 @@ else { $langs->load("mails"); print ''.$langs->trans("NbOfEMailingsSend").''; print ''.$object->getNbOfEMailings().''; - } - else { + } else { print ''; } print ''; @@ -1074,8 +1051,7 @@ else { print ''; print ''.$form->selectyesno('no_email', (GETPOSTISSET("no_email") ?GETPOST("no_email", 'alpha') : $noemail), 1).''; - } - else { + } else { print ''; } print ''; @@ -1220,8 +1196,7 @@ else { $dolibarr_user = new User($db); $result = $dolibarr_user->fetch($object->user_id); print $dolibarr_user->getLoginUrl(1); - } - else print $langs->trans("NoDolibarrAccess"); + } else print $langs->trans("NoDolibarrAccess"); print ''; // Photo @@ -1396,8 +1371,7 @@ else { if (!empty($conf->commande->enabled) || !empty($conf->expedition->enabled)) { print ''; - if (!empty($conf->expedition->enabled)) { print $langs->trans("ContactForOrdersOrShipments"); } - else print $langs->trans("ContactForOrders"); + if (!empty($conf->expedition->enabled)) { print $langs->trans("ContactForOrdersOrShipments"); } else print $langs->trans("ContactForOrders"); print ''; $none = $langs->trans("NoContactForAnyOrder"); if (!empty($conf->expedition->enabled)) { $none = $langs->trans("NoContactForAnyOrderOrShipments"); } @@ -1425,8 +1399,7 @@ else { $dolibarr_user = new User($db); $result = $dolibarr_user->fetch($object->user_id); print $dolibarr_user->getLoginUrl(1); - } - else print $langs->trans("NoDolibarrAccess"); + } else print $langs->trans("NoDolibarrAccess"); print ''; print ''; @@ -1456,8 +1429,7 @@ else { { $langs->load("mails"); print ''; - } - else { + } else { $langs->load("mails"); print ''; } diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index fc640e7e032..cfe41eafca2 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -287,8 +287,7 @@ class Contact extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->lasterror(); return -1; @@ -387,14 +386,12 @@ class Contact extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR); return -2; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); @@ -593,14 +590,12 @@ class Contact extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { dol_syslog(get_class($this)."::update Error ".$this->error, LOG_ERR); $this->db->rollback(); return -$error; } - } - else { + } else { $this->error = $this->db->lasterror().' sql='.$sql; $this->db->rollback(); return -1; @@ -756,12 +751,10 @@ class Contact extends CommonObject $error++; $this->error = $this->db->lasterror(); } - } - else { + } else { $result = true; } - } - else { + } else { $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_alert "; $sql .= "WHERE type=1 AND fk_contact=".$this->db->escape($id)." AND fk_user=".$user->id; $result = $this->db->query($sql); @@ -784,8 +777,7 @@ class Contact extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { dol_syslog(get_class($this)."::update Error ".$this->error, LOG_ERR); $this->db->rollback(); return -$error; @@ -858,8 +850,7 @@ class Contact extends CommonObject dol_syslog($this->error, LOG_ERR); return 2; - } - elseif ($num) // $num = 1 + } elseif ($num) // $num = 1 { $obj = $this->db->fetch_object($resql); @@ -933,8 +924,7 @@ class Contact extends CommonObject $this->user_id = $uobj->rowid; } $this->db->free($resql); - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -960,8 +950,7 @@ class Contact extends CommonObject $this->birthday_alert = 1; } $this->db->free($resql); - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -976,13 +965,11 @@ class Contact extends CommonObject } return 1; - } - else { + } else { $this->error = $langs->trans("RecordNotFound"); return 0; } - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -1003,8 +990,7 @@ class Contact extends CommonObject if (in_array($this->civility_id, array('MR')) || in_array($this->civility_code, array('MR'))) { $this->gender = 'man'; - } - elseif (in_array($this->civility_id, array('MME', 'MLE')) || in_array($this->civility_code, array('MME', 'MLE'))) + } elseif (in_array($this->civility_id, array('MME', 'MLE')) || in_array($this->civility_code, array('MME', 'MLE'))) { $this->gender = 'woman'; } @@ -1048,8 +1034,7 @@ class Contact extends CommonObject } $this->db->free($resql); return 0; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -1104,8 +1089,7 @@ class Contact extends CommonObject $i++; } - } - else { + } else { $error++; $this->error = $this->db->error().' sql='.$sql; } @@ -1171,8 +1155,7 @@ class Contact extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); dol_syslog("Error ".$this->error, LOG_ERR); return -1; @@ -1219,8 +1202,7 @@ class Contact extends CommonObject } $this->db->free($resql); - } - else { + } else { print $this->db->error(); } } @@ -1245,8 +1227,7 @@ class Contact extends CommonObject $this->db->free($resql); return $nb; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -1507,8 +1488,7 @@ class Contact extends CommonObject { $this->db->rollback(); return -$error; - } - else { + } else { $this->db->commit(); return 1; } @@ -1661,8 +1641,7 @@ class Contact extends CommonObject } return $tab; - } - else { + } else { $this->error = $this->db->error(); dol_print_error($this->db); return -1; diff --git a/htdocs/contact/consumption.php b/htdocs/contact/consumption.php index ff3570e7e82..7655e00ea3f 100644 --- a/htdocs/contact/consumption.php +++ b/htdocs/contact/consumption.php @@ -178,8 +178,7 @@ if ($type_element == 'fichinter') $where = ' WHERE f.entity IN ('.getEntity('ficheinter').')'; $dateprint = 'f.datec'; $doc_number = 'f.ref'; -} -elseif ($type_element == 'invoice') +} elseif ($type_element == 'invoice') { // Customer : show products from invoices require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; $documentstatic = new Facture($db); @@ -193,8 +192,7 @@ elseif ($type_element == 'invoice') $dateprint = 'f.datef'; $doc_number = 'f.ref'; $thirdTypeSelect = 'customer'; -} -elseif ($type_element == 'propal') +} elseif ($type_element == 'propal') { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; $documentstatic = new Propal($db); @@ -208,8 +206,7 @@ elseif ($type_element == 'propal') $datePrint = 'c.datep'; $doc_number = 'c.ref'; $thirdTypeSelect = 'customer'; -} -elseif ($type_element == 'order') +} elseif ($type_element == 'order') { require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; $documentstatic = new Commande($db); @@ -223,8 +220,7 @@ elseif ($type_element == 'order') $dateprint = 'c.date_commande'; $doc_number = 'c.ref'; $thirdTypeSelect = 'customer'; -} -elseif ($type_element == 'supplier_invoice') +} elseif ($type_element == 'supplier_invoice') { // Supplier : Show products from invoices. require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; $documentstatic = new FactureFournisseur($db); @@ -266,8 +262,7 @@ elseif ($type_element == 'supplier_order') $dateprint = 'c.date_valid'; $doc_number = 'c.ref'; $thirdTypeSelect = 'supplier'; -} -elseif ($type_element == 'contract') +} elseif ($type_element == 'contract') { // Order require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; $documentstatic = new Contrat($db); @@ -423,8 +418,7 @@ if ($sql_select) if ($type_element == 'contract') { print $documentstaticline->getLibStatut(2); - } - else { + } else { print $documentstatic->getLibStatut(2); } print ''; @@ -466,8 +460,7 @@ if ($sql_select) } $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $objp->product_label; - } - else { + } else { $label = $objp->product_label; } @@ -499,27 +492,23 @@ if ($sql_select) $discount = new DiscountAbsolute($db); $discount->fetch($objp->fk_remise_except); echo ($txt ? ' - ' : '').$langs->transnoentities("DiscountFromExcessReceived", $discount->getNomUrl(0)); - } - elseif ($objp->description == '(EXCESS PAID)' && $objp->fk_remise_except > 0) + } elseif ($objp->description == '(EXCESS PAID)' && $objp->fk_remise_except > 0) { $discount = new DiscountAbsolute($db); $discount->fetch($objp->fk_remise_except); echo ($txt ? ' - ' : '').$langs->transnoentities("DiscountFromExcessPaid", $discount->getNomUrl(0)); - } - elseif ($objp->description == '(DEPOSIT)' && $objp->fk_remise_except > 0) + } elseif ($objp->description == '(DEPOSIT)' && $objp->fk_remise_except > 0) { $discount = new DiscountAbsolute($db); $discount->fetch($objp->fk_remise_except); echo ($txt ? ' - ' : '').$langs->transnoentities("DiscountFromDeposit", $discount->getNomUrl(0)); // Add date of deposit if (!empty($conf->global->INVOICE_ADD_DEPOSIT_DATE)) echo ' ('.dol_print_date($discount->datec).')'; - } - else { + } else { echo ($txt ? ' - ' : '').dol_htmlentitiesbr($objp->description); } } - } - else { + } else { if ($objp->fk_product > 0) { echo $form->textwithtooltip($text, $description, 3, '', '', $i, 0, ''); diff --git a/htdocs/contact/ldap.php b/htdocs/contact/ldap.php index 7934bbd5996..f601086ad05 100644 --- a/htdocs/contact/ldap.php +++ b/htdocs/contact/ldap.php @@ -67,8 +67,7 @@ if ($action == 'dolibarr2ldap') { setEventMessages($langs->trans("ContactSynchronized"), null, 'mesgs'); $db->commit(); - } - else { + } else { setEventMessages($ldap->error, $ldap->errors, 'errors'); $db->rollback(); } @@ -105,8 +104,7 @@ if ($object->socid > 0) $thirdparty->fetch($object->socid); print ''.$langs->trans("ThirdParty").''.$thirdparty->getNomUrl(1).''; -} -else { +} else { print ''.$langs->trans("ThirdParty").''; print $langs->trans("ContactNotLinkedToCompany"); print ''; @@ -181,19 +179,16 @@ if ($result > 0) if (!is_array($records)) { print ''.$langs->trans("ErrorFailedToReadLDAP").''; - } - else { + } else { $result = show_ldap_content($records, 0, $records['count'], true); } - } - else { + } else { print ''.$langs->trans("LDAPRecordNotFound").' (dn='.$dn.' - search='.$search.')'; } $ldap->unbind(); $ldap->close(); -} -else { +} else { setEventMessages($ldap->error, $ldap->errors, 'errors'); } diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index a6add5c7d75..fe80e709b28 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -123,14 +123,12 @@ if ($type == "c") if (empty($contextpage) || $contextpage == 'contactlist') $contextpage = 'contactcustomerlist'; $titre .= ' ('.$langs->trans("ThirdPartyCustomers").')'; $urlfiche = "card.php"; -} -elseif ($type == "f") +} elseif ($type == "f") { if (empty($contextpage) || $contextpage == 'contactlist') $contextpage = 'contactsupplierlist'; $titre .= ' ('.$langs->trans("ThirdPartySuppliers").')'; $urlfiche = "card.php"; -} -elseif ($type == "o") +} elseif ($type == "o") { if (empty($contextpage) || $contextpage == 'contactlist') $contextpage = 'contactotherlist'; $titre .= ' ('.$langs->trans("OthersNotLinkedToThirdParty").')'; @@ -326,8 +324,7 @@ if (!empty($userid)) // propre au commercial if ($search_priv != '0' && $search_priv != '1') { $sql .= " AND (p.priv='0' OR (p.priv='1' AND p.fk_user_creat=".$user->id."))"; -} -else { +} else { if ($search_priv == '0') $sql .= " AND p.priv='0'"; if ($search_priv == '1') $sql .= " AND (p.priv='1' AND p.fk_user_creat=".$user->id.")"; } @@ -375,16 +372,13 @@ if ($search_import_key) $sql .= natural_search("p.import_key", $sear if ($type == "o") // filtre sur type { $sql .= " AND p.fk_soc IS NULL"; -} -elseif ($type == "f") // filtre sur type +} elseif ($type == "f") // filtre sur type { $sql .= " AND s.fournisseur = 1"; -} -elseif ($type == "c") // filtre sur type +} elseif ($type == "c") // filtre sur type { $sql .= " AND s.client IN (1, 3)"; -} -elseif ($type == "p") // filtre sur type +} elseif ($type == "p") // filtre sur type { $sql .= " AND s.client IN (2, 3)"; } @@ -402,8 +396,7 @@ $sql .= $hookmanager->resPrint; if ($view == "recent") { $sql .= $db->order("p.datec", "DESC"); -} -else { +} else { $sql .= $db->order($sortfield, $sortorder); } @@ -920,8 +913,7 @@ while ($i < min($num, $limit)) $objsoc = new Societe($db); $objsoc->fetch($obj->socid); print $objsoc->getNomUrl(1); - } - else print ' '; + } else print ' '; print ''; if (!$i) $totalarray['nbfield']++; } diff --git a/htdocs/contact/perso.php b/htdocs/contact/perso.php index 5665030b6d5..a5a1714b6e5 100644 --- a/htdocs/contact/perso.php +++ b/htdocs/contact/perso.php @@ -85,18 +85,15 @@ if ($action == 'update' && !$_POST["cancel"] && $user->rights->societe->contact- if (!dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1, 0, $_FILES['photo']['error']) > 0) { setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors'); - } - else { + } else { // Create thumbs $object->addThumbs($newfile); } } - } - else { + } else { setEventMessages("ErrorBadImageFormat", null, 'errors'); } - } - else { + } else { switch ($_FILES['photo']['error']) { case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini @@ -108,8 +105,7 @@ if ($action == 'update' && !$_POST["cancel"] && $user->rights->societe->contact- break; } } - } - else { + } else { $error = $object->error; } } @@ -179,8 +175,7 @@ if ($action == 'edit') $objsoc->fetch($object->socid); print ''.$langs->trans("ThirdParty").''.$objsoc->getNomUrl(1).''; - } - else { + } else { print ''.$langs->trans("ThirdParty").''; print $langs->trans("ContactNotLinkedToCompany"); print ''; @@ -202,8 +197,7 @@ if ($action == 'edit') if (!empty($object->birthday_alert)) { print ''; - } - else { + } else { print ''; } print ''; @@ -219,8 +213,7 @@ if ($action == 'edit') print ''; print ""; -} -else { +} else { // View mode dol_fiche_head($head, 'perso', $title, -1, 'contact'); @@ -294,8 +287,7 @@ else { if ($object->birthday_alert) print $langs->trans("BirthdayAlertOn"); else print $langs->trans("BirthdayAlertOff"); print ''; - } - else { + } else { print ''.$langs->trans("DateToBirth").''; } print ""; diff --git a/htdocs/contrat/agenda.php b/htdocs/contrat/agenda.php index 36a9c950069..d016cb23d75 100644 --- a/htdocs/contrat/agenda.php +++ b/htdocs/contrat/agenda.php @@ -39,8 +39,7 @@ if (GETPOST('actioncode', 'array')) { $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; -} -else { +} else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 7a2f8cf311f..c4f923a7372 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -112,13 +112,10 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'confirm_closeline' && $confirm == 'yes' && $user->rights->contrat->activer) + } elseif ($action == 'confirm_closeline' && $confirm == 'yes' && $user->rights->contrat->activer) { if (!GETPOST('dateend')) { @@ -132,8 +129,7 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -301,13 +297,11 @@ if (empty($reshook)) } $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["libelle"])) ? $prod->multilangs[$outputlangs->defaultlang]["libelle"] : $lines[$i]->product_label; - } - else { + } else { $label = $lines[$i]->product_label; } $desc = ($lines[$i]->desc && $lines[$i]->desc != $lines[$i]->libelle) ?dol_htmlentitiesbr($lines[$i]->desc) : ''; - } - else { + } else { $desc = dol_htmlentitiesbr($lines[$i]->desc); } @@ -352,8 +346,7 @@ if (empty($reshook)) } } } - } - else { + } else { setEventMessages($srcobject->error, $srcobject->errors, 'errors'); $error++; } @@ -364,28 +357,23 @@ if (empty($reshook)) // modified by hook if ($reshook < 0) $error++; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $error++; } - } - else { + } else { $result = $object->create($user); if ($result > 0) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } $action = 'create'; } } - } - - elseif ($action == 'classin' && $user->rights->contrat->creer) + } elseif ($action == 'classin' && $user->rights->contrat->creer) { $object->setProject(GETPOST('projectid')); } @@ -402,8 +390,7 @@ if (empty($reshook)) { $idprod = 0; $tva_tx = (GETPOST('tva_tx', 'alpha') ? GETPOST('tva_tx', 'alpha') : 0); - } - else { + } else { $idprod = GETPOST('idprod', 'int'); $tva_tx = ''; } @@ -474,8 +461,7 @@ if (empty($reshook)) $pu_ttc = $prod->multiprices_ttc[$object->thirdparty->price_level]; $price_min = $prod->multiprices_min[$object->thirdparty->price_level]; $price_base_type = $prod->multiprices_base_type[$object->thirdparty->price_level]; - } - elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) + } elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { require_once DOL_DOCUMENT_ROOT.'/product/class/productcustomerprice.class.php'; @@ -507,8 +493,7 @@ if (empty($reshook)) if ($price_base_type != 'HT') { $pu_ht = price2num($pu_ttc / (1 + ($tmpvat / 100)), 'MU'); - } - else { + } else { $pu_ttc = price2num($pu_ht * (1 + ($tmpvat / 100)), 'MU'); } } @@ -518,8 +503,7 @@ if (empty($reshook)) else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION)); $fk_unit = $prod->fk_unit; - } - else { + } else { $pu_ht = GETPOST('price_ht'); $price_base_type = 'HT'; $tva_tx = GETPOST('tva_tx') ?str_replace('*', '', GETPOST('tva_tx')) : 0; // tva_tx field may be disabled, so we use vat rate 0 @@ -545,8 +529,7 @@ if (empty($reshook)) { $object->error = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); $result = -1; - } - else { + } else { // Insert line $result = $object->addline( $desc, @@ -619,14 +602,11 @@ if (empty($reshook)) unset($_POST['date_endday']); unset($_POST['date_endmonth']); unset($_POST['date_endyear']); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } - } - - elseif ($action == 'updateline' && $user->rights->contrat->creer && !GETPOST('cancel', 'alpha')) { + } elseif ($action == 'updateline' && $user->rights->contrat->creer && !GETPOST('cancel', 'alpha')) { $error = 0; if (!empty($date_start_update) && !empty($date_end_update) && $date_start_update > $date_end_update) @@ -732,13 +712,10 @@ if (empty($reshook)) if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - - elseif ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->contrat->creer) + } elseif ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->contrat->creer) { $result = $object->deleteline(GETPOST('lineid'), $user); @@ -746,13 +723,10 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->contrat->creer) + } elseif ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->contrat->creer) { $result = $object->validate($user); @@ -774,13 +748,10 @@ if (empty($reshook)) $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'reopen' && $user->rights->contrat->creer) + } elseif ($action == 'reopen' && $user->rights->contrat->creer) { $result = $object->reopen($user); if ($result < 0) @@ -807,22 +778,17 @@ if (empty($reshook)) { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->contrat->supprimer) + } elseif ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->contrat->supprimer) { $result = $object->delete($user); if ($result >= 0) { header("Location: list.php?restore_lastsearch_values=1"); return; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } - } - - elseif ($action == 'confirm_move' && $confirm == 'yes' && $user->rights->contrat->creer) + } elseif ($action == 'confirm_move' && $confirm == 'yes' && $user->rights->contrat->creer) { if (GETPOST('newcid') > 0) { @@ -834,16 +800,13 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); return; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("RefNewContract")), null, 'errors'); } - } - elseif ($action == 'update_extras') + } elseif ($action == 'update_extras') { $object->oldcopy = dol_clone($object); @@ -863,8 +826,7 @@ if (empty($reshook)) if ($error) { $action = 'edit_extras'; } - } - elseif ($action == 'setref_supplier') + } elseif ($action == 'setref_supplier') { $cancelbutton = GETPOST('cancel', 'alpha'); if (!$cancelbutton) { @@ -878,13 +840,11 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - } - else { + } else { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; } - } - elseif ($action == 'setref_customer') + } elseif ($action == 'setref_customer') { $cancelbutton = GETPOST('cancel', 'alpha'); @@ -900,13 +860,11 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - } - else { + } else { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; } - } - elseif ($action == 'setref') + } elseif ($action == 'setref') { $cancelbutton = GETPOST('cancel', 'alpha'); @@ -940,13 +898,11 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - } - else { + } else { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; } - } - elseif ($action == 'setdate_contrat') + } elseif ($action == 'setdate_contrat') { $cancelbutton = GETPOST('cancel', 'alpha'); @@ -964,8 +920,7 @@ if (empty($reshook)) header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } - } - else { + } else { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; } @@ -996,14 +951,12 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -1024,8 +977,7 @@ if (empty($reshook)) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -1037,8 +989,7 @@ if (empty($reshook)) if (!GETPOST('socid', 3)) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); - } - else { + } else { if ($object->id > 0) { $result = $object->createFromClone($user, $socid); if ($result > 0) { @@ -1098,8 +1049,7 @@ if ($action == 'create') if ($element == 'project') { $projectid = GETPOST('originid'); - } - else { + } else { // For compatibility if ($element == 'order' || $element == 'commande') { $element = $subelement = 'commande'; } if ($element == 'propal') { $element = 'comm/propal'; $subelement = 'propal'; } @@ -1126,8 +1076,7 @@ if ($action == 'create') // Object source contacts list $srccontactslist = $objectsrc->liste_contact(-1, 'external', 1); } - } - else { + } else { $projectid = GETPOST('projectid', 'int'); $note_private = GETPOST("note_private"); $note_public = GETPOST("note_public"); @@ -1173,8 +1122,7 @@ if ($action == 'create') print $soc->getNomUrl(1); print ''; print ''; - } - else { + } else { print ''; print $form->select_company('', 'socid', '', 'SelectThirdParty', 1, 0, null, 0, 'minwidth300'); print ' '.$langs->trans("AddThirdParty").''; @@ -1268,8 +1216,7 @@ if ($action == 'create') } print "\n"; -} -else /* *************************************************************************** */ +} else /* *************************************************************************** */ /* */ /* Mode vue et edition */ /* */ @@ -1575,8 +1522,7 @@ else /* ************************************************************************ echo $form->textwithtooltip($text, $description, 3, '', '', $cursorline, 0, (!empty($line->fk_parent_line) ?img_picto('', 'rightarrow') : '')); print ''; - } - else { + } else { print ''.img_object($langs->trans("ShowProductOrService"), ($objp->product_type ? 'service' : 'product')).' '.dol_htmlentitiesbr($objp->description)."\n"; } // VAT @@ -1597,8 +1543,7 @@ else /* ************************************************************************ if ($objp->remise_percent > 0) { print ''.$objp->remise_percent."%\n"; - } - else { + } else { print ' '; } @@ -1655,8 +1600,7 @@ else /* ************************************************************************ $textlate = $langs->trans("Late").' = '.$langs->trans("DateReference").' > '.$langs->trans("DateToday").' '.(ceil($warning_delay) >= 0 ? '+' : '').ceil($warning_delay).' '.$langs->trans("days"); print " ".img_warning($textlate); } - } - else print $langs->trans("Unknown"); + } else print $langs->trans("Unknown"); print '  -  '; print $langs->trans("DateEndPlanned").': '; if ($objp->date_fin) @@ -1667,8 +1611,7 @@ else /* ************************************************************************ $textlate = $langs->trans("Late").' = '.$langs->trans("DateReference").' > '.$langs->trans("DateToday").' '.(ceil($warning_delay) >= 0 ? '+' : '').ceil($warning_delay).' '.$langs->trans("days"); print " ".img_warning($textlate); } - } - else print $langs->trans("Unknown"); + } else print $langs->trans("Unknown"); print ''; print ''; @@ -1696,8 +1639,7 @@ else /* ************************************************************************ print $productstatic->getNomUrl(1, '', 32); print $objp->label ? ' - '.dol_trunc($objp->label, 32) : ''; print '
'; - } - else { + } else { print $objp->label ? $objp->label.'
' : ''; } @@ -1773,8 +1715,7 @@ else /* ************************************************************************ } $db->free($result); - } - else { + } else { dol_print_error($db); } @@ -1844,8 +1785,7 @@ else /* ************************************************************************ if (empty($dateactend)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("DateEndReal")), null, 'errors'); - } - else { + } else { print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id."&ligne=".GETPOST('ligne', 'int')."&date=".$dateactstart."&dateend=".$dateactend."&comment=".urlencode($comment), $langs->trans("CloseService"), $langs->trans("ConfirmCloseService", dol_print_date($dateactend, "%A %d %B %Y")), "confirm_closeline", '', 0, 1); } print '
'; @@ -2121,8 +2061,7 @@ else /* ************************************************************************ if ($user->rights->contrat->activer) { print ''; - } - else { + } else { print ''; } } @@ -2131,8 +2070,7 @@ else /* ************************************************************************ if ($user->rights->contrat->desactiver) { print ''; - } - else { + } else { print ''; } @@ -2151,8 +2089,7 @@ else /* ************************************************************************ if (($user->rights->contrat->creer && $object->statut == 0) || $user->rights->contrat->supprimer) { print ''; - } - else { + } else { print ''; } } diff --git a/htdocs/contrat/class/api_contracts.class.php b/htdocs/contrat/class/api_contracts.class.php index 9caa33fca2d..ffe66208afe 100644 --- a/htdocs/contrat/class/api_contracts.class.php +++ b/htdocs/contrat/class/api_contracts.class.php @@ -169,8 +169,7 @@ class Contracts extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieve contrat list : '.$db->lasterror()); } if (!count($obj_ret)) { @@ -464,8 +463,7 @@ class Contracts extends DolibarrApi $updateRes = $this->contract->deleteline($lineid, DolibarrApiAccess::$user); if ($updateRes > 0) { return $this->get($id); - } - else { + } else { throw new RestException(405, $this->contract->error); } } @@ -500,8 +498,7 @@ class Contracts extends DolibarrApi if ($this->contract->update(DolibarrApiAccess::$user) > 0) { return $this->get($id); - } - else { + } else { throw new RestException(500, $this->contract->error); } } diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 304628d97cc..a702847e23b 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -298,14 +298,12 @@ class Contrat extends CommonObject if ($numref != "") { return $numref; - } - else { + } else { $this->error = $obj->error; dol_print_error($db, get_class($this)."::getNextValue ".$obj->error); return ""; } - } - else { + } else { $langs->load("errors"); print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Contract")); return ""; @@ -408,8 +406,7 @@ class Contrat extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -464,8 +461,7 @@ class Contrat extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -504,12 +500,10 @@ class Contrat extends CommonObject if ($force_number) { $num = $force_number; - } - elseif (!$error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life + } elseif (!$error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life { $num = $this->getNextNumRef($this->thirdparty); - } - else { + } else { $num = $this->ref; } $this->newref = dol_sanitizeFileName($num); @@ -586,8 +580,7 @@ class Contrat extends CommonObject $this->brouillon = 0; $this->date_validation = $now; } - } - else { + } else { $error++; } @@ -595,8 +588,7 @@ class Contrat extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -659,8 +651,7 @@ class Contrat extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -712,8 +703,7 @@ class Contrat extends CommonObject $this->error = 'Fetch found several records.'; dol_syslog($this->error, LOG_ERR); $result = -2; - } - elseif ($num) // $num = 1 + } elseif ($num) // $num = 1 { $obj = $this->db->fetch_object($resql); if ($obj) @@ -762,14 +752,12 @@ class Contrat extends CommonObject return $this->id; } - } - else { + } else { dol_syslog(get_class($this)."::fetch Contract not found"); $this->error = "Contract not found"; return 0; } - } - else { + } else { dol_syslog(get_class($this)."::fetch Error searching contract"); $this->error = $this->db->error(); return -1; @@ -929,8 +917,7 @@ class Contrat extends CommonObject $pos++; } $this->db->free($result); - } - else { + } else { dol_syslog(get_class($this)."::Fetch Error when reading lines of contracts linked to products"); return -3; } @@ -1070,8 +1057,7 @@ class Contrat extends CommonObject $error++; } } - } - else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) + } else // Old behaviour, if linked_object has only one link per type, so is something like array('contract'=>id1)) { $origin_id = $tmp_origin_id; $ret = $this->add_object_linked($origin, $origin_id); @@ -1118,8 +1104,7 @@ class Contrat extends CommonObject //print $objcontact->code.'-'.$objcontact->source.'-'.$objcontact->fk_socpeople."\n"; $this->add_contact($objcontact->fk_socpeople, $objcontact->code, $objcontact->source); // May failed because of duplicate key or because code of contact type does not exists for new object } - } - else dol_print_error($resqlcontact); + } else dol_print_error($resqlcontact); } } @@ -1134,21 +1119,18 @@ class Contrat extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { dol_syslog(get_class($this)."::create - 30 - ".$this->error, LOG_ERR); $this->db->rollback(); return -3; } - } - else { + } else { $this->error = "Failed to add contract"; dol_syslog(get_class($this)."::create - 20 - ".$this->error, LOG_ERR); $this->db->rollback(); return -2; } - } - else { + } else { $this->error = $langs->trans("UnknownError: ".$this->db->error()." -", LOG_DEBUG); $this->db->rollback(); @@ -1317,8 +1299,7 @@ class Contrat extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -1411,8 +1392,7 @@ class Contrat extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -1489,8 +1469,7 @@ class Contrat extends CommonObject if ($price_base_type == 'HT') { $pu = $pu_ht; - } - else { + } else { $pu = $pu_ttc; } @@ -1541,8 +1520,7 @@ class Contrat extends CommonObject if (($result = $this->defineBuyPrice($pu_ht, $remise_percent, $fk_product)) < 0) { return $result; - } - else { + } else { $pa_ht = $result; } } @@ -1613,19 +1591,16 @@ class Contrat extends CommonObject { $this->db->rollback(); return -1; - } - else { + } else { $this->db->commit(); return $contractlineid; } - } - else { + } else { $this->db->rollback(); $this->error = $this->db->error()." sql=".$sql; return -1; } - } - else { + } else { dol_syslog(get_class($this)."::addline ErrorTryToAddLineOnValidatedContract", LOG_ERR); return -2; } @@ -1677,8 +1652,7 @@ class Contrat extends CommonObject { $remise = round(($pu * $remise_percent / 100), 2); $price = $pu - $remise; - } - else { + } else { $remise_percent = 0; } @@ -1728,8 +1702,7 @@ class Contrat extends CommonObject if (($result = $this->defineBuyPrice($pu, $remise_percent)) < 0) { return $result; - } - else { + } else { $pa_ht = $result; } } @@ -1752,14 +1725,10 @@ class Contrat extends CommonObject $sql .= ", total_ttc='".price2num($total_ttc)."'"; $sql .= ", fk_product_fournisseur_price=".($fk_fournprice > 0 ? $fk_fournprice : "null"); $sql .= ", buy_price_ht='".price2num($pa_ht)."'"; - if ($date_start > 0) { $sql .= ",date_ouverture_prevue='".$this->db->idate($date_start)."'"; } - else { $sql .= ",date_ouverture_prevue=null"; } - if ($date_end > 0) { $sql .= ",date_fin_validite='".$this->db->idate($date_end)."'"; } - else { $sql .= ",date_fin_validite=null"; } - if ($date_debut_reel > 0) { $sql .= ",date_ouverture='".$this->db->idate($date_debut_reel)."'"; } - else { $sql .= ",date_ouverture=null"; } - if ($date_fin_reel > 0) { $sql .= ",date_cloture='".$this->db->idate($date_fin_reel)."'"; } - else { $sql .= ",date_cloture=null"; } + if ($date_start > 0) { $sql .= ",date_ouverture_prevue='".$this->db->idate($date_start)."'"; } else { $sql .= ",date_ouverture_prevue=null"; } + if ($date_end > 0) { $sql .= ",date_fin_validite='".$this->db->idate($date_end)."'"; } else { $sql .= ",date_fin_validite=null"; } + if ($date_debut_reel > 0) { $sql .= ",date_ouverture='".$this->db->idate($date_debut_reel)."'"; } else { $sql .= ",date_ouverture=null"; } + if ($date_fin_reel > 0) { $sql .= ",date_cloture='".$this->db->idate($date_fin_reel)."'"; } else { $sql .= ",date_cloture=null"; } $sql .= ", fk_unit=".($fk_unit ? "'".$this->db->escape($fk_unit)."'" : "null"); $sql .= " WHERE rowid = ".$rowid; @@ -1802,14 +1771,12 @@ class Contrat extends CommonObject $this->db->commit(); return 1; } - } - else { + } else { $this->db->rollback(); dol_syslog(get_class($this)."::updateline Erreur -2"); return -2; } - } - else { + } else { $this->db->rollback(); $this->error = $this->db->error(); dol_syslog(get_class($this)."::updateline Erreur -1"); @@ -1870,8 +1837,7 @@ class Contrat extends CommonObject $this->db->rollback(); return -1; } - } - else { + } else { $this->error = 'ErrorDeleteLineNotAllowedByObjectStatus'; return -2; } @@ -1967,8 +1933,7 @@ class Contrat extends CommonObject $text .= ($mode != 7 || $this->nbofservicesclosed > 0) ? ($this->nbofservicesclosed.ContratLigne::LibStatut(5, 3, -1, 'class="marginleft2"')) : ''; $text .= ($mode == 7 ? '' : ''); return $text; - } - else { + } else { return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode); } } @@ -2086,8 +2051,7 @@ class Contrat extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -2122,8 +2086,7 @@ class Contrat extends CommonObject $i++; } return $tab; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -2159,8 +2122,7 @@ class Contrat extends CommonObject $i++; } return $tab; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -2192,8 +2154,7 @@ class Contrat extends CommonObject $sql .= " WHERE c.statut = 1"; $sql .= " AND c.rowid = cd.fk_contrat"; $sql .= " AND cd.statut = 0"; - } - elseif ($mode == 'expired') + } elseif ($mode == 'expired') { $sql = "SELECT cd.rowid, cd.date_fin_validite as datefin"; $sql .= $this->from; @@ -2201,8 +2162,7 @@ class Contrat extends CommonObject $sql .= " AND c.rowid = cd.fk_contrat"; $sql .= " AND cd.statut = 4"; $sql .= " AND cd.date_fin_validite < '".$this->db->idate(dol_now())."'"; - } - elseif ($mode == 'active') + } elseif ($mode == 'active') { $sql = "SELECT cd.rowid, cd.date_fin_validite as datefin"; $sql .= $this->from; @@ -2228,8 +2188,7 @@ class Contrat extends CommonObject $label = $langs->trans("BoardNotActivatedServices"); $labelShort = $langs->trans("BoardNotActivatedServicesShort"); $url = DOL_URL_ROOT.'/contrat/services_list.php?mainmenu=commercial&leftmenu=contracts&mode=0&sortfield=cd.date_fin_validite&sortorder=asc'; - } - elseif ($mode == 'expired') { + } elseif ($mode == 'expired') { $warning_delay = $conf->contrat->services->expires->warning_delay; $url = DOL_URL_ROOT.'/contrat/services_list.php?mainmenu=commercial&leftmenu=contracts&mode=4&filter=expired&sortfield=cd.date_fin_validite&sortorder=asc'; $label = $langs->trans("BoardExpiredServices"); @@ -2260,8 +2219,7 @@ class Contrat extends CommonObject } return $response; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -2302,8 +2260,7 @@ class Contrat extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -2759,11 +2716,7 @@ class ContratLigne extends CommonObjectLine global $langs; $langs->load("contracts"); - if ($status == self::STATUS_INITIAL) { $labelStatus = $langs->trans("ServiceStatusInitial"); $labelStatusShort = $langs->trans("ServiceStatusInitial"); } - elseif ($status == self::STATUS_OPEN && $expired == -1) { $labelStatus = $langs->trans("ServiceStatusRunning"); $labelStatusShort = $langs->trans("ServiceStatusRunning"); } - elseif ($status == self::STATUS_OPEN && $expired == 0) { $labelStatus = $langs->trans("ServiceStatusNotLate"); $labelStatusShort = $langs->trans("ServiceStatusNotLateShort"); } - elseif ($status == self::STATUS_OPEN && $expired == 1) { $labelStatus = $langs->trans("ServiceStatusLate"); $labelStatusShort = $langs->trans("ServiceStatusLateShort"); } - elseif ($status == self::STATUS_CLOSED) { $labelStatus = $langs->trans("ServiceStatusClosed"); $labelStatusShort = $langs->trans("ServiceStatusClosed"); } + if ($status == self::STATUS_INITIAL) { $labelStatus = $langs->trans("ServiceStatusInitial"); $labelStatusShort = $langs->trans("ServiceStatusInitial"); } elseif ($status == self::STATUS_OPEN && $expired == -1) { $labelStatus = $langs->trans("ServiceStatusRunning"); $labelStatusShort = $langs->trans("ServiceStatusRunning"); } elseif ($status == self::STATUS_OPEN && $expired == 0) { $labelStatus = $langs->trans("ServiceStatusNotLate"); $labelStatusShort = $langs->trans("ServiceStatusNotLateShort"); } elseif ($status == self::STATUS_OPEN && $expired == 1) { $labelStatus = $langs->trans("ServiceStatusLate"); $labelStatusShort = $langs->trans("ServiceStatusLateShort"); } elseif ($status == self::STATUS_CLOSED) { $labelStatus = $langs->trans("ServiceStatusClosed"); $labelStatusShort = $langs->trans("ServiceStatusClosed"); } $statusType = 'status'.$status; if ($status == self::STATUS_OPEN && $expired == 1) $statusType = 'status1'; @@ -2927,8 +2880,7 @@ class ContratLigne extends CommonObjectLine $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -3013,8 +2965,7 @@ class ContratLigne extends CommonObjectLine if (($result = $this->defineBuyPrice($this->subprice, $this->remise_percent, $this->fk_product)) < 0) { return $result; - } - else { + } else { $this->pa_ht = $result; } } @@ -3161,8 +3112,7 @@ class ContratLigne extends CommonObjectLine { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -2; @@ -3243,8 +3193,7 @@ class ContratLigne extends CommonObjectLine $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); $this->error = $this->db->error()." sql=".$sql; return -1; @@ -3297,8 +3246,7 @@ class ContratLigne extends CommonObjectLine $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } diff --git a/htdocs/contrat/contact.php b/htdocs/contrat/contact.php index 250d89e3e88..02d9c71776d 100644 --- a/htdocs/contrat/contact.php +++ b/htdocs/contrat/contact.php @@ -70,8 +70,7 @@ if ($action == 'addcontact' && $user->rights->contrat->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); $msg = $langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"); @@ -89,8 +88,7 @@ if ($action == 'swapstatut' && $user->rights->contrat->creer) if ($object->fetch($id)) { $result = $object->swapContactStatus(GETPOST('ligne')); - } - else { + } else { dol_print_error($db, $object->error); } } diff --git a/htdocs/contrat/document.php b/htdocs/contrat/document.php index e43db63826f..d60d54258bb 100644 --- a/htdocs/contrat/document.php +++ b/htdocs/contrat/document.php @@ -193,8 +193,7 @@ if ($object->id) $permtoedit = $user->rights->contrat->creer; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/contrat/index.php b/htdocs/contrat/index.php index 4530d01a6af..40a9a4100da 100644 --- a/htdocs/contrat/index.php +++ b/htdocs/contrat/index.php @@ -140,8 +140,7 @@ if ($resql) $i++; } $db->free($resql); -} -else { +} else { dol_print_error($db); } // Search by status (only expired) @@ -178,8 +177,7 @@ if ($resql) $i++; } $db->free($resql); -} -else { +} else { dol_print_error($db); } @@ -296,14 +294,12 @@ if (!empty($conf->contrat->enabled) && $user->rights->contrat->lire) //$tot_ttc+=$obj->total_ttc; $i++; } - } - else { + } else { print ''.$langs->trans("NoContracts").''; } print "
"; $db->free($resql); - } - else { + } else { dol_print_error($db); } } @@ -379,8 +375,7 @@ if ($result) $db->free($result); print ""; -} -else { +} else { dol_print_error($db); } @@ -434,8 +429,7 @@ if ($resql) $productstatic->ref = $obj->pref; $productstatic->entity = $obj->pentity; print $productstatic->getNomUrl(1, '', 20); - } - else { + } else { print ''.img_object($langs->trans("ShowService"), "service"); if ($obj->label) print ' '.dol_trunc($obj->label, 20).''; else print ' '.dol_trunc($obj->note, 20); @@ -456,8 +450,7 @@ if ($resql) $db->free(); print ""; -} -else { +} else { dol_print_error($db); } @@ -512,8 +505,7 @@ if ($resql) $productstatic->ref = $obj->pref; $productstatic->entity = $obj->pentity; print $productstatic->getNomUrl(1, '', 20); - } - else { + } else { print ''.img_object($langs->trans("ShowService"), "service"); if ($obj->label) print ' '.dol_trunc($obj->label, 20).''; else print ' '.dol_trunc($obj->note, 20); @@ -533,8 +525,7 @@ if ($resql) $db->free(); print ""; -} -else { +} else { dol_print_error($db); } @@ -590,8 +581,7 @@ if ($resql) $productstatic->ref = $obj->pref; $productstatic->entity = $obj->pentity; print $productstatic->getNomUrl(1, '', 20); - } - else { + } else { print ''.img_object($langs->trans("ShowService"), "service"); if ($obj->label) print ' '.dol_trunc($obj->label, 20).''; else print ' '.dol_trunc($obj->note, 20); @@ -611,8 +601,7 @@ if ($resql) $db->free(); print ""; -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 5053b703966..3627661c727 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -708,8 +708,7 @@ while ($i < min($num, $limit)) if ($nbofsalesrepresentative > 3) { // We print only number print $nbofsalesrepresentative; - } - elseif ($nbofsalesrepresentative > 0) + } elseif ($nbofsalesrepresentative > 0) { $userstatic = new User($db); $j = 0; @@ -731,8 +730,7 @@ while ($i < min($num, $limit)) } } //else print $langs->trans("NoSalesRepresentativeAffected"); - } - else { + } else { print ' '; } print ''; diff --git a/htdocs/contrat/services_list.php b/htdocs/contrat/services_list.php index 62a853270e1..fd46b8eba98 100644 --- a/htdocs/contrat/services_list.php +++ b/htdocs/contrat/services_list.php @@ -102,8 +102,7 @@ if ($search_status != '') if ($tmp[1] == 'filter=notexpired') $filter = 'notexpired'; if ($tmp[1] == 'filter=expired') $filter = 'expired'; } -} -else { +} else { $search_status = $mode; if ($filter == 'expired') $search_status .= '&filter=expired'; if ($filter == 'notexpired') $search_status .= '&filter=notexpired'; @@ -595,8 +594,7 @@ while ($i < min($num, $limit)) print $productstatic->getNomUrl(1, '', 24); print $obj->label ? ' - '.dol_trunc($obj->label, 16) : ''; if (!empty($obj->description) && !empty($conf->global->PRODUCT_DESC_IN_LIST)) print '
'.dol_nl2br($obj->description); - } - else { + } else { if ($obj->type == 0) print img_object($obj->description, 'product').' '.dol_trunc($obj->description, 24); if ($obj->type == 1) print img_object($obj->description, 'service').' '.dol_trunc($obj->description, 24); } @@ -679,8 +677,7 @@ while ($i < min($num, $limit)) $warning_delay = $conf->contrat->services->expires->warning_delay / 3600 / 24; $textlate = $langs->trans("Late").' = '.$langs->trans("DateReference").' > '.$langs->trans("DateToday").' '.(ceil($warning_delay) >= 0 ? '+' : '').ceil($warning_delay).' '.$langs->trans("days"); print img_warning($textlate); - } - else print '    '; + } else print '    '; print ''; if (!$i) $totalarray['nbfield']++; } @@ -721,8 +718,7 @@ while ($i < min($num, $limit)) { // If contract is draft, we say line is also draft print $contractstatic->LibStatut(0, 5); - } - else { + } else { print $staticcontratligne->LibStatut($obj->statut, 5, ($obj->date_fin_validite && $db->jdate($obj->date_fin_validite) < $now) ? 1 : 0); } print ''; diff --git a/htdocs/core/actions_addupdatedelete.inc.php b/htdocs/core/actions_addupdatedelete.inc.php index 2d6695ff6cb..f9f10f636ca 100644 --- a/htdocs/core/actions_addupdatedelete.inc.php +++ b/htdocs/core/actions_addupdatedelete.inc.php @@ -40,8 +40,7 @@ if ($cancel) { header("Location: ".$backtopageforcancel); exit; - } - elseif (!empty($backtopage)) + } elseif (!empty($backtopage)) { header("Location: ".$backtopage); exit; @@ -57,8 +56,7 @@ if ($action == 'add' && !empty($permissiontoadd)) { if ($object->fields[$key]['type'] == 'duration') { if (GETPOST($key.'hour') == '' && GETPOST($key.'min') == '') continue; // The field was not submited to be edited - } - else { + } else { if (!GETPOSTISSET($key)) continue; // The field was not submited to be edited } // Ignore special fields @@ -106,15 +104,13 @@ if ($action == 'add' && !empty($permissiontoadd)) $urltogo = preg_replace('/--IDFORBACKTOPAGE--/', $object->id, $urltogo); // New method to autoselect project after a New on another form object creation header("Location: ".$urltogo); exit; - } - else { + } else { // Creation KO if (!empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); else setEventMessages($object->error, null, 'errors'); $action = 'create'; } - } - else { + } else { $action = 'create'; } } @@ -127,15 +123,12 @@ if ($action == 'update' && !empty($permissiontoadd)) // Check if field was submited to be edited if ($object->fields[$key]['type'] == 'duration') { if (!GETPOSTISSET($key.'hour') || !GETPOSTISSET($key.'min')) continue; // The field was not submited to be edited - } - elseif ($object->fields[$key]['type'] == 'boolean') { + } elseif ($object->fields[$key]['type'] == 'boolean') { if (!GETPOSTISSET($key)) { $object->$key = 0; // use 0 instead null if the field is defined as not null continue; } - } - - else { + } else { if (!GETPOSTISSET($key)) continue; // The field was not submited to be edited } // Ignore special fields @@ -178,14 +171,12 @@ if ($action == 'update' && !empty($permissiontoadd)) if ($result > 0) { $action = 'view'; - } - else { + } else { // Creation KO setEventMessages($object->error, $object->errors, 'errors'); $action = 'edit'; } - } - else { + } else { $action = 'edit'; } } @@ -204,8 +195,7 @@ if ($action == "update_extras" && !empty($permissiontoadd)) { setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); $action = 'view'; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $action = 'edit_extras'; } @@ -227,8 +217,7 @@ if ($action == 'confirm_delete' && !empty($permissiontodelete)) setEventMessages("RecordDeleted", null, 'mesgs'); header("Location: ".$backurlforlist); exit; - } - else { + } else { if (!empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); else setEventMessages($object->error, null, 'errors'); } @@ -263,8 +252,7 @@ if ($action == 'confirm_deleteline' && $confirm == 'yes' && !empty($permissionto setEventMessages($langs->trans('RecordDeleted'), null, 'mesgs'); header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -291,8 +279,7 @@ if ($action == 'confirm_validate' && $confirm == 'yes' && $permissiontoadd) $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -319,8 +306,7 @@ if ($action == 'confirm_close' && $confirm == 'yes' && $permissiontoadd) $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -332,8 +318,7 @@ if ($action == 'confirm_setdraft' && $confirm == 'yes' && $permissiontoadd) if ($result >= 0) { // Nothing else done - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -360,8 +345,7 @@ if ($action == 'confirm_reopen' && $confirm == 'yes' && $permissiontoadd) $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -372,8 +356,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && !empty($permissiontoadd)) if (1 == 0 && !GETPOST('clone_content') && !GETPOST('clone_receivers')) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); - } - else { + } else { $objectutil = dol_clone($object, 1); // To avoid to denaturate loaded object when setting some properties for clone or if createFromClone modifies the object. We use native clone to keep this->db valid. //$objectutil->date = dol_mktime(12, 0, 0, GETPOST('newdatemonth', 'int'), GETPOST('newdateday', 'int'), GETPOST('newdateyear', 'int')); // ... @@ -385,8 +368,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && !empty($permissiontoadd)) else $newid = $result; header("Location: ".$_SERVER['PHP_SELF'].'?id='.$newid); // Open record of new object exit; - } - else { + } else { setEventMessages($objectutil->error, $objectutil->errors, 'errors'); $action = ''; } diff --git a/htdocs/core/actions_builddoc.inc.php b/htdocs/core/actions_builddoc.inc.php index f4b5f1fbb4c..eb51796eccd 100644 --- a/htdocs/core/actions_builddoc.inc.php +++ b/htdocs/core/actions_builddoc.inc.php @@ -37,8 +37,7 @@ if ($action == 'builddoc' && $permissiontoadd) if (is_numeric(GETPOST('model', 'alpha'))) { $error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Model")); - } - else { + } else { // Reload to get all modified line records and be ready for hooks $ret = $object->fetch($id); $ret = $object->fetch_thirdparty(); @@ -88,8 +87,7 @@ if ($action == 'builddoc' && $permissiontoadd) { setEventMessages($object->error, $object->errors, 'errors'); $action = ''; - } - else { + } else { if (empty($donotredirect)) // This is set when include is done by bulk action "Bill Orders" { setEventMessages($langs->trans("FileGenerated"), null); @@ -132,8 +130,7 @@ if ($action == 'remove_file' && $permissiontoadd) header('Location: '.$urltoredirect); exit; - } - else { + } else { setEventMessages('BugFoundVarUploaddirnotDefined', null, 'errors'); } } diff --git a/htdocs/core/actions_comments.inc.php b/htdocs/core/actions_comments.inc.php index 3d18c2d7c24..c352f07f9f7 100644 --- a/htdocs/core/actions_comments.inc.php +++ b/htdocs/core/actions_comments.inc.php @@ -49,8 +49,7 @@ if ($action == 'addcomment') setEventMessages($langs->trans("CommentAdded"), null, 'mesgs'); header('Location: '.$varpage.'?id='.$id.($withproject ? '&withproject=1' : '')); exit; - } - else { + } else { setEventMessages($comment->error, $comment->errors, 'errors'); $action = ''; } @@ -66,8 +65,7 @@ if ($action === 'updatecomment') setEventMessages($langs->trans("CommentAdded"), null, 'mesgs'); header('Location: '.$varpage.'?id='.$id.($withproject ? '&withproject=1#comment' : '')); exit; - } - else { + } else { setEventMessages($comment->error, $comment->errors, 'errors'); $action = ''; } @@ -82,8 +80,7 @@ if ($action == 'deletecomment') setEventMessages($langs->trans("CommentDeleted"), null, 'mesgs'); header('Location: '.$varpage.'?id='.$id.($withproject ? '&withproject=1' : '')); exit; - } - else { + } else { setEventMessages($comment->error, $comment->errors, 'errors'); $action = ''; } diff --git a/htdocs/core/actions_extrafields.inc.php b/htdocs/core/actions_extrafields.inc.php index 5a044d7a464..46a6a31c202 100644 --- a/htdocs/core/actions_extrafields.inc.php +++ b/htdocs/core/actions_extrafields.inc.php @@ -122,8 +122,7 @@ if ($action == 'add') $mesg[] = $langs->trans("ErrorBadFormatValueList", $param_ligne); $action = 'create'; } - } - else { + } else { $error++; $langs->load("errors"); $mesg[] = $langs->trans("ErrorBadFormatValueList", $param_ligne); @@ -148,8 +147,7 @@ if ($action == 'add') { $params['options'] = array($parameters=>null); } - } - else { + } else { //Esle it's separated key/value and coma list foreach ($parameters_array as $param_ligne) { @@ -189,22 +187,19 @@ if ($action == 'add') setEventMessages($langs->trans('SetupSaved'), null, 'mesgs'); header("Location: ".$_SERVER["PHP_SELF"]); exit; - } - else { + } else { $error++; $mesg = $extrafields->error; setEventMessages($mesg, null, 'errors'); } - } - else { + } else { $error++; $langs->load("errors"); $mesg = $langs->trans("ErrorFieldCanNotContainSpecialNorUpperCharacters", $langs->transnoentities("AttributeCode")); setEventMessages($mesg, null, 'errors'); $action = 'create'; } - } - else { + } else { setEventMessages($mesg, null, 'errors'); } } @@ -288,8 +283,7 @@ if ($action == 'update') $mesg[] = $langs->trans("ErrorBadFormatValueList", $param_ligne); $action = 'edit'; } - } - else { + } else { $error++; $langs->load("errors"); $mesg[] = $langs->trans("ErrorBadFormatValueList", $param_ligne); @@ -313,8 +307,7 @@ if ($action == 'update') { $params['options'] = array($parameters=>null); } - } - else { + } else { //Esle it's separated key/value and coma list foreach ($parameters_array as $param_ligne) { @@ -354,21 +347,18 @@ if ($action == 'update') setEventMessages($langs->trans('SetupSaved'), null, 'mesgs'); header("Location: ".$_SERVER["PHP_SELF"]); exit; - } - else { + } else { $error++; $mesg = $extrafields->error; setEventMessages($mesg, null, 'errors'); } - } - else { + } else { $error++; $langs->load("errors"); $mesg = $langs->trans("ErrorFieldCanNotContainSpecialCharacters", $langs->transnoentities("AttributeCode")); setEventMessages($mesg, null, 'errors'); } - } - else { + } else { setEventMessages($mesg, null, 'errors'); } } @@ -384,10 +374,8 @@ if ($action == 'delete') { header("Location: ".$_SERVER["PHP_SELF"]); exit; - } - else $mesg = $extrafields->error; - } - else { + } else $mesg = $extrafields->error; + } else { $error++; $langs->load("errors"); $mesg = $langs->trans("ErrorFieldCanNotContainSpecialCharacters", $langs->transnoentities("AttributeCode")); diff --git a/htdocs/core/actions_fetchobject.inc.php b/htdocs/core/actions_fetchobject.inc.php index 6da2b0e674e..a77fc6e5ff6 100644 --- a/htdocs/core/actions_fetchobject.inc.php +++ b/htdocs/core/actions_fetchobject.inc.php @@ -37,16 +37,14 @@ if (($id > 0 || (!empty($ref) && !in_array($action, array('create', 'createtask' { $object->fetch_thirdparty(); $id = $object->id; - } - else { + } else { if (empty($object->error) && !count($object->errors)) { if ($ret < 0) // if $ret == 0, it means not found. { setEventMessages('Fetch on object (type '.get_class($object).') return an error without filling $object->error nor $object->errors', null, 'errors'); } - } - else setEventMessages($object->error, $object->errors, 'errors'); + } else setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } } diff --git a/htdocs/core/actions_linkedfiles.inc.php b/htdocs/core/actions_linkedfiles.inc.php index aeb86f9c609..ea55052f880 100644 --- a/htdocs/core/actions_linkedfiles.inc.php +++ b/htdocs/core/actions_linkedfiles.inc.php @@ -41,8 +41,7 @@ if (GETPOST('sendit', 'alpha') && !empty($conf->global->MAIN_UPLOAD_DOC)) $error++; if ($_FILES['userfile']['error'][$key] == 1 || $_FILES['userfile']['error'][$key] == 2) { setEventMessages($langs->trans('ErrorFileSizeTooLarge'), null, 'errors'); - } - else { + } else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("File")), null, 'errors'); } } @@ -58,15 +57,13 @@ if (GETPOST('sendit', 'alpha') && !empty($conf->global->MAIN_UPLOAD_DOC)) if (!empty($upload_dirold) && !empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) { $result = dol_add_file_process($upload_dirold, $allowoverwrite, 1, 'userfile', GETPOST('savingdocmask', 'alpha'), null, '', $generatethumbs); - } - elseif (!empty($upload_dir)) + } elseif (!empty($upload_dir)) { $result = dol_add_file_process($upload_dir, $allowoverwrite, 1, 'userfile', GETPOST('savingdocmask', 'alpha'), null, '', $generatethumbs); } } } -} -elseif (GETPOST('linkit', 'none') && !empty($conf->global->MAIN_UPLOAD_DOC)) +} elseif (GETPOST('linkit', 'none') && !empty($conf->global->MAIN_UPLOAD_DOC)) { $link = GETPOST('link', 'alpha'); if ($link) @@ -86,8 +83,7 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes') if (GETPOST('section', 'alpha')) { // For a delete from the ECM module, upload_dir is ECM root dir and urlfile contains relative path from upload_dir $file = $upload_dir.(preg_match('/\/$/', $upload_dir) ? '' : '/').$urlfile; - } - else // For a delete from the file manager into another module, or from documents pages, upload_dir contains already path to file from module dir, so we clean path into urlfile. + } else // For a delete from the file manager into another module, or from documents pages, upload_dir contains already path to file from module dir, so we clean path into urlfile. { $urlfile = basename($urlfile); $file = $upload_dir.(preg_match('/\/$/', $upload_dir) ? '' : '/').$urlfile; @@ -124,8 +120,7 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes') } else { setEventMessages($langs->trans("ErrorFailToDeleteFile", $urlfile), null, 'errors'); } - } - elseif ($linkid) // delete of external link + } elseif ($linkid) // delete of external link { require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; $link = new Link($db); @@ -148,15 +143,13 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes') if ($backtopage) { header('Location: '.$backtopage); exit; - } - else { + } else { $tmpurl = $_SERVER["PHP_SELF"].'?id='.$object->id.(GETPOST('section_dir', 'alpha') ? '§ion_dir='.urlencode(GETPOST('section_dir', 'alpha')) : '').(!empty($withproject) ? '&withproject=1' : ''); header('Location: '.$tmpurl); exit; } } -} -elseif ($action == 'confirm_updateline' && GETPOST('save', 'alpha') && GETPOST('link', 'alpha')) +} elseif ($action == 'confirm_updateline' && GETPOST('save', 'alpha') && GETPOST('link', 'alpha')) { require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; $langs->load('link'); @@ -175,12 +168,10 @@ elseif ($action == 'confirm_updateline' && GETPOST('save', 'alpha') && GETPOST(' { setEventMessages($langs->trans("ErrorFailedToUpdateLink", $link->label), null, 'mesgs'); } - } - else { + } else { //error fetching } -} -elseif ($action == 'renamefile' && GETPOST('renamefilesave', 'alpha')) +} elseif ($action == 'renamefile' && GETPOST('renamefilesave', 'alpha')) { // For documents pages, upload_dir contains already path to file from module dir, so we clean path into urlfile. if (!empty($upload_dir)) @@ -233,13 +224,11 @@ elseif ($action == 'renamefile' && GETPOST('renamefilesave', 'alpha')) } setEventMessages($langs->trans("FileRenamed"), null); - } - else { + } else { $langs->load("errors"); // key must be loaded because we can't rely on loading during output, we need var substitution to be done now. setEventMessages($langs->trans("ErrorFailToRenameFile", $filenamefrom, $filenameto), null, 'errors'); } - } - else { + } else { $langs->load("errors"); // key must be loaded because we can't rely on loading during output, we need var substitution to be done now. setEventMessages($langs->trans("ErrorDestinationAlreadyExists", $filenameto), null, 'errors'); } @@ -265,8 +254,7 @@ elseif ($action == 'renamefile' && GETPOST('renamefilesave', 'alpha')) require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; $ecmfile->share = getRandomPassword(true); } - } - else { + } else { $ecmfile->share = ''; } $result = $ecmfile->update($user); diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 41660a47815..23c76ae81fb 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -180,8 +180,7 @@ if (!$error && $massaction == 'confirm_presend') if ($val == 'thirdparty') // Id of third party or user { $tmparray[] = $thirdparty->name.' <'.$thirdparty->email.'>'; - } - elseif ($val && method_exists($thirdparty, 'contact_get_property')) // Id of contact + } elseif ($val && method_exists($thirdparty, 'contact_get_property')) // Id of contact { $tmparray[] = $thirdparty->contact_get_property((int) $val, 'email'); $sendtoid[] = $val; @@ -210,8 +209,7 @@ if (!$error && $massaction == 'confirm_presend') if ($val == 'thirdparty') // Id of third party { $tmparray[] = $thirdparty->name.' <'.$thirdparty->email.'>'; - } - elseif ($val) // Id du contact + } elseif ($val) // Id du contact { $tmparray[] = $thirdparty->contact_get_property((int) $val, 'email'); //$sendtoid[] = $val; TODO Add also id of contact in CC ? @@ -256,20 +254,17 @@ if (!$error && $massaction == 'confirm_presend') if ($objectobj->element == 'societe') { $sendto = $objectobj->email; - } - elseif ($objectobj->element == 'expensereport') + } elseif ($objectobj->element == 'expensereport') { $fuser = new User($db); $fuser->fetch($objectobj->fk_user_author); $sendto = $fuser->email; - } - elseif ($objectobj->element == 'holiday') + } elseif ($objectobj->element == 'holiday') { $fuser = new User($db); $fuser->fetch($objectobj->fk_user); $sendto = $fuser->email; - } - elseif ($objectobj->element == 'facture' && !empty($listofobjectcontacts[$objectid])) + } elseif ($objectobj->element == 'facture' && !empty($listofobjectcontacts[$objectid])) { $emails_to_sends = array(); $objectobj->fetch_thirdparty(); @@ -283,8 +278,7 @@ if (!$error && $massaction == 'confirm_presend') if (count($emails_to_sends) > 0) { $sendto = implode(',', $emails_to_sends); } - } - else { + } else { $objectobj->fetch_thirdparty(); $sendto = $objectobj->thirdparty->email; } @@ -335,8 +329,7 @@ if (!$error && $massaction == 'confirm_presend') 'names'=>array($filename), 'mimes'=>array($mime) ); - } - else { + } else { $nbignored++; $langs->load("errors"); $resaction .= '
'.$langs->trans('ErrorCantReadFile', $file).'

'; @@ -362,19 +355,15 @@ if (!$error && $massaction == 'confirm_presend') $fromtype = GETPOST('fromtype'); if ($fromtype === 'user') { $from = $user->getFullName($langs).' <'.$user->email.'>'; - } - elseif ($fromtype === 'company') { + } elseif ($fromtype === 'company') { $from = $conf->global->MAIN_INFO_SOCIETE_NOM.' <'.$conf->global->MAIN_INFO_SOCIETE_MAIL.'>'; - } - elseif (preg_match('/user_aliases_(\d+)/', $fromtype, $reg)) { + } elseif (preg_match('/user_aliases_(\d+)/', $fromtype, $reg)) { $tmp = explode(',', $user->email_aliases); $from = trim($tmp[($reg[1] - 1)]); - } - elseif (preg_match('/global_aliases_(\d+)/', $fromtype, $reg)) { + } elseif (preg_match('/global_aliases_(\d+)/', $fromtype, $reg)) { $tmp = explode(',', $conf->global->MAIN_INFO_SOCIETE_MAIL_ALIASES); $from = trim($tmp[($reg[1] - 1)]); - } - elseif (preg_match('/senderprofile_(\d+)_(\d+)/', $fromtype, $reg)) { + } elseif (preg_match('/senderprofile_(\d+)_(\d+)/', $fromtype, $reg)) { $sql = 'SELECT rowid, label, email FROM '.MAIN_DB_PREFIX.'c_email_senderprofile WHERE rowid = '.(int) $reg[1]; $resql = $db->query($sql); $obj = $db->fetch_object($resql); @@ -382,8 +371,7 @@ if (!$error && $massaction == 'confirm_presend') { $from = $obj->label.' <'.$obj->email.'>'; } - } - else { + } else { $from = $_POST['fromname'].' <'.$_POST['frommail'].'>'; } @@ -410,8 +398,7 @@ if (!$error && $massaction == 'confirm_presend') { $looparray[$key]->thirdparty = $thirdparty; // Force thirdparty on object } - } - else { + } else { $objectforloop = new $objectclass($db); $objectforloop->thirdparty = $thirdparty; // Force thirdparty on object (even if object was not loaded) $looparray[0] = $objectforloop; @@ -461,8 +448,7 @@ if (!$error && $massaction == 'confirm_presend') ); } } - } - elseif (!empty($attachedfilesThirdpartyObj[$thirdparty->id][$objectid])) { + } elseif (!empty($attachedfilesThirdpartyObj[$thirdparty->id][$objectid])) { // Create form object // if "one email per recipient" isn't check we must separate $attachedfiles by object $attachedfiles = $attachedfilesThirdpartyObj[$thirdparty->id][$objectid]; @@ -478,8 +464,7 @@ if (!$error && $massaction == 'confirm_presend') $trackid = 'thi'.$thirdparty->id; if ($objecttmp->element == 'expensereport') $trackid = 'use'.$thirdparty->id; if ($objecttmp->element == 'holiday') $trackid = 'use'.$thirdparty->id; - } - else { + } else { $trackid = strtolower(get_class($objecttmp)); if (get_class($objecttmp) == 'Contrat') $trackid = 'con'; if (get_class($objecttmp) == 'Propal') $trackid = 'pro'; @@ -503,8 +488,7 @@ if (!$error && $massaction == 'confirm_presend') if ($mailfile->error) { $resaction .= '
'.$mailfile->error.'
'; - } - else { + } else { $result = $mailfile->sendfile(); if ($result) { @@ -569,15 +553,13 @@ if (!$error && $massaction == 'confirm_presend') $nbsent++; // Nb of object sent } - } - else { + } else { $langs->load("other"); if ($mailfile->error) { $resaction .= $langs->trans('ErrorFailedToSendMail', $from, $sendto); $resaction .= '
'.$mailfile->error.'
'; - } - else { + } else { $resaction .= '
No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS
'; } } @@ -598,8 +580,7 @@ if (!$error && $massaction == 'confirm_presend') //setEventMessages($langs->trans("EMailSentToNRecipients", $nbsent.'/'.count($toselect)), null, 'mesgs'); setEventMessages($langs->trans("EMailSentForNElements", $nbsent.'/'.count($toselect)), null, 'mesgs'); setEventMessages($resaction, null, 'mesgs'); - } - else { + } else { //setEventMessages($langs->trans("EMailSentToNRecipients", 0), null, 'warnings'); // May be object has no generated PDF file setEventMessages($resaction, null, 'warnings'); } @@ -714,14 +695,12 @@ if ($massaction == 'confirm_createbills') // Create bills from orders { $result = $objecttmp->insert_discount($discountid); //$result=$discount->link_to_invoice($lineid,$id); - } - else { + } else { setEventMessages($discount->error, $discount->errors, 'errors'); $error++; break; } - } - else { + } else { // Positive line $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0); // Date start @@ -779,8 +758,7 @@ if ($massaction == 'confirm_createbills') // Create bills from orders if ($result > 0) { $lineid = $result; - } - else { + } else { $lineid = 0; $error++; break; @@ -870,8 +848,7 @@ if ($massaction == 'confirm_createbills') // Create bills from orders header("Location: ".$_SERVER['PHP_SELF'].'?'.$param); exit; - } - else { + } else { $db->rollback(); $action = 'create'; $_GET["origin"] = $_POST["origin"]; @@ -901,16 +878,14 @@ if (!$error && $massaction == 'cancelorders') setEventMessages($langs->trans("ErrorObjectMustHaveStatusValidToBeCanceled", $cmd->ref), null, 'errors'); $error++; break; - } - else $result = $cmd->cancel(); + } else $result = $cmd->cancel(); if ($result < 0) { setEventMessages($cmd->error, $cmd->errors, 'errors'); $error++; break; - } - else $nbok++; + } else $nbok++; } if (!$error) { @@ -918,8 +893,7 @@ if (!$error && $massaction == 'cancelorders') setEventMessages($langs->trans("RecordsModified", $nbok), null, 'mesgs'); else setEventMessages($langs->trans("RecordsModified", $nbok), null, 'mesgs'); $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -1020,12 +994,10 @@ if (!$error && $massaction == "builddoc" && $permissiontoread && !GETPOST('butto $langs->load("exports"); setEventMessages($langs->trans('FileSuccessfullyBuilt', $filename.'_'.dol_print_date($now, 'dayhourlog')), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans('NoPDFAvailableForDocGenAmongChecked'), null, 'errors'); } - } - else { + } else { // Create empty PDF $formatarray = pdf_getFormat(); $page_largeur = $formatarray['width']; @@ -1082,8 +1054,7 @@ if (!$error && $massaction == "builddoc" && $permissiontoread && !GETPOST('butto $langs->load("exports"); setEventMessages($langs->trans('FileSuccessfullyBuilt', $filename.'_'.dol_print_date($now, 'dayhourlog')), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans('NoPDFAvailableForDocGenAmongChecked'), null, 'errors'); } } @@ -1139,16 +1110,13 @@ if (!$error && $massaction == 'validate' && $permissiontoadd) setEventMessages($langs->trans("ErrorObjectMustHaveStatusDraftToBeValidated", $objecttmp->ref), null, 'errors'); $error++; break; - } - elseif ($result < 0) + } elseif ($result < 0) { setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); $error++; break; - } - else $nbok++; - } - else { + } else $nbok++; + } else { setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); $error++; break; @@ -1160,8 +1128,7 @@ if (!$error && $massaction == 'validate' && $permissiontoadd) if ($nbok > 1) setEventMessages($langs->trans("RecordsModified", $nbok), null, 'mesgs'); else setEventMessages($langs->trans("RecordsModified", $nbok), null, 'mesgs'); $db->commit(); - } - else { + } else { $db->rollback(); } //var_dump($listofobjectthirdparties);exit; @@ -1183,8 +1150,7 @@ if (!$error && $massaction == 'closed' && $objectclass == "Propal" && $permissio $error++; break; } else $nbok++; - } - else { + } else { setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); $error++; break; @@ -1196,8 +1162,7 @@ if (!$error && $massaction == 'closed' && $objectclass == "Propal" && $permissio setEventMessages($langs->trans("RecordsModified", $nbok), null, 'mesgs'); else setEventMessages($langs->trans("RecordsModified", $nbok), null, 'mesgs'); $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -1244,10 +1209,8 @@ if (!$error && ($massaction == 'delete' || ($action == 'delete' && $confirm == ' setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); $error++; break; - } - else $nbok++; - } - else { + } else $nbok++; + } else { setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); $error++; break; @@ -1259,8 +1222,7 @@ if (!$error && ($massaction == 'delete' || ($action == 'delete' && $confirm == ' if ($nbok > 1) setEventMessages($langs->trans("RecordsDeleted", $nbok), null, 'mesgs'); else setEventMessages($langs->trans("RecordDeleted", $nbok), null, 'mesgs'); $db->commit(); - } - else { + } else { $db->rollback(); } //var_dump($listofobjectthirdparties);exit; @@ -1304,10 +1266,8 @@ if (!$error && $massaction == 'generate_doc' && $permissiontoread) setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); $error++; break; - } - else $nbok++; - } - else { + } else $nbok++; + } else { setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); $error++; break; @@ -1319,8 +1279,7 @@ if (!$error && $massaction == 'generate_doc' && $permissiontoread) if ($nbok > 1) setEventMessages($langs->trans("RecordsGenerated", $nbok), null, 'mesgs'); else setEventMessages($langs->trans("RecordGenerated", $nbok), null, 'mesgs'); $db->commit(); - } - else { + } else { $db->rollback(); } } diff --git a/htdocs/core/actions_printing.inc.php b/htdocs/core/actions_printing.inc.php index e2da8a4170c..e88fc937e38 100644 --- a/htdocs/core/actions_printing.inc.php +++ b/htdocs/core/actions_printing.inc.php @@ -75,8 +75,7 @@ if ($action == 'print_file' && $user->rights->printing->read) { setEventMessages($printer->error, $printer->errors); setEventMessages($langs->transnoentitiesnoconv("FileWasSentToPrinter", basename(GETPOST('file', 'alpha'))).' '.$langs->transnoentitiesnoconv("ViaModule").' '.$printer->name, null); } - } - catch (Exception $e) + } catch (Exception $e) { $ret = 1; setEventMessages($e->getMessage(), null, 'errors'); diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index df461e47a95..bc38d9839af 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -120,38 +120,32 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST if ($object->element == 'user' && $result == 0) $result = 1; // Even if not found, we consider ok $thirdparty = $object->thirdparty; $sendtosocid = $thirdparty->id; - } - elseif ($object->element == 'member' || $object->element == 'user') + } elseif ($object->element == 'member' || $object->element == 'user') { $thirdparty = $object; if ($object->socid > 0) $sendtosocid = $object->socid; - } - elseif ($object->element == 'expensereport') + } elseif ($object->element == 'expensereport') { $tmpuser = new User($db); $tmpuser->fetch($object->fk_user_author); $thirdparty = $tmpuser; if ($object->socid > 0) $sendtosocid = $object->socid; - } - elseif ($object->element == 'societe') + } elseif ($object->element == 'societe') { $thirdparty = $object; if ($thirdparty->id > 0) $sendtosocid = $thirdparty->id; - } - elseif ($object->element == 'contact') + } elseif ($object->element == 'contact') { $contact = $object; if ($contact->id > 0) $sendtosocid = $contact->fetch_thirdparty()->id; - } - else dol_print_error('', "Use actions_sendmails.in.php for an element/object '".$object->element."' that is not supported"); + } else dol_print_error('', "Use actions_sendmails.in.php for an element/object '".$object->element."' that is not supported"); if (is_object($hookmanager)) { $parameters = array(); $reshook = $hookmanager->executeHooks('initSendToSocid', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks } - } - else $thirdparty = $mysoc; + } else $thirdparty = $mysoc; if ($result > 0) { @@ -189,8 +183,7 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST elseif ($val == 'contact') // Key selected means current contact { $tmparray[] = dol_string_nospecial($contact->getFullName($langs), ' ', array(",")).' <'.$contact->email.'>'; - } - elseif ($val) // $val is the Id of a contact + } elseif ($val) // $val is the Id of a contact { $tmparray[] = $thirdparty->contact_get_property((int) $val, 'email'); $sendtoid[] = $val; @@ -239,8 +232,7 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST elseif ($val == 'contact') // Key selected means current contact { $tmparray[] = dol_string_nospecial($contact->name, ' ', array(",")).' <'.$contact->email.'>'; - } - elseif ($val) // $val is the Id of a contact + } elseif ($val) // $val is the Id of a contact { $tmparray[] = $thirdparty->contact_get_property((int) $val, 'email'); //$sendtoid[] = $val; TODO Add also id of contact in CC ? @@ -277,22 +269,17 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST $fromtype = GETPOST('fromtype', 'alpha'); if ($fromtype === 'robot') { $from = dol_string_nospecial($conf->global->MAIN_MAIL_EMAIL_FROM, ' ', array(",")).' <'.$conf->global->MAIN_MAIL_EMAIL_FROM.'>'; - } - elseif ($fromtype === 'user') { + } elseif ($fromtype === 'user') { $from = dol_string_nospecial($user->getFullName($langs), ' ', array(",")).' <'.$user->email.'>'; - } - elseif ($fromtype === 'company') { + } elseif ($fromtype === 'company') { $from = dol_string_nospecial($conf->global->MAIN_INFO_SOCIETE_NOM, ' ', array(",")).' <'.$conf->global->MAIN_INFO_SOCIETE_MAIL.'>'; - } - elseif (preg_match('/user_aliases_(\d+)/', $fromtype, $reg)) { + } elseif (preg_match('/user_aliases_(\d+)/', $fromtype, $reg)) { $tmp = explode(',', $user->email_aliases); $from = trim($tmp[($reg[1] - 1)]); - } - elseif (preg_match('/global_aliases_(\d+)/', $fromtype, $reg)) { + } elseif (preg_match('/global_aliases_(\d+)/', $fromtype, $reg)) { $tmp = explode(',', $conf->global->MAIN_INFO_SOCIETE_MAIL_ALIASES); $from = trim($tmp[($reg[1] - 1)]); - } - elseif (preg_match('/senderprofile_(\d+)_(\d+)/', $fromtype, $reg)) { + } elseif (preg_match('/senderprofile_(\d+)_(\d+)/', $fromtype, $reg)) { $sql = 'SELECT rowid, label, email FROM '.MAIN_DB_PREFIX.'c_email_senderprofile'; $sql .= ' WHERE rowid = '.(int) $reg[1]; $resql = $db->query($sql); @@ -301,8 +288,7 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST { $from = dol_string_nospecial($obj->label, ' ', array(",")).' <'.$obj->email.'>'; } - } - else { + } else { $from = dol_string_nospecial($_POST['fromname'], ' ', array(",")).' <'.$_POST['frommail'].'>'; } @@ -419,8 +405,7 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST { setEventMessages($mailfile->error, $mailfile->errors, 'errors'); $action = 'presend'; - } - else { + } else { $result = $mailfile->sendfile(); if ($result) { @@ -478,16 +463,14 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST if (isset($paramname2) || isset($paramval2)) $moreparam .= '&'.($paramname2 ? $paramname2 : 'mid').'='.$paramval2; header('Location: '.$_SERVER["PHP_SELF"].'?'.($paramname ? $paramname : 'id').'='.(is_object($object) ? $object->id : '').$moreparam); exit; - } - else { + } else { $langs->load("other"); $mesg = '
'; if ($mailfile->error) { $mesg .= $langs->transnoentities('ErrorFailedToSendMail', dol_escape_htmltag($from), dol_escape_htmltag($sendto)); $mesg .= '
'.$mailfile->error; - } - else { + } else { $mesg .= 'No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; } $mesg .= '
'; @@ -496,15 +479,13 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST $action = 'presend'; } } - } - else { + } else { $langs->load("errors"); setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("MailTo")), null, 'warnings'); dol_syslog('Try to send email with no recipient defined', LOG_WARNING); $action = 'presend'; } - } - else { + } else { $langs->load("other"); setEventMessages($langs->trans('ErrorFailedToReadObject', $object->element), null, 'errors'); dol_syslog('Failed to read data of object id='.$object->id.' element='.$object->element); diff --git a/htdocs/core/actions_setmoduleoptions.inc.php b/htdocs/core/actions_setmoduleoptions.inc.php index ea407375e12..05be4a31d18 100644 --- a/htdocs/core/actions_setmoduleoptions.inc.php +++ b/htdocs/core/actions_setmoduleoptions.inc.php @@ -50,8 +50,7 @@ if ($action == 'update' && is_array($arrayofparameters)) { $db->commit(); if (empty($nomessageinupdate)) setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { $db->rollback(); if (empty($nomessageinupdate)) setEventMessages($langs->trans("SetupNotSaved"), null, 'errors'); } @@ -110,8 +109,7 @@ if ($action == 'setModuleOptions') { $db->commit(); if (empty($nomessageinsetmoduleoptions)) setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { $db->rollback(); if (empty($nomessageinsetmoduleoptions)) setEventMessages($langs->trans("SetupNotSaved"), null, 'errors'); } diff --git a/htdocs/core/ajax/ajaxdirpreview.php b/htdocs/core/ajax/ajaxdirpreview.php index d5cf3ae1b48..9fb743f1208 100644 --- a/htdocs/core/ajax/ajaxdirpreview.php +++ b/htdocs/core/ajax/ajaxdirpreview.php @@ -68,8 +68,7 @@ if (!isset($mode) || $mode != 'noajax') // For ajax call //dol_print_error($db,$ecmdir->error); //exit; } -} -else // For no ajax call +} else // For no ajax call { $rootdirfordoc = $conf->ecm->dir_output; @@ -85,8 +84,7 @@ else // For no ajax call } $relativepath = $ecmdir->getRelativePath(); // Example 'mydir/' - } - elseif (GETPOST('section_dir')) + } elseif (GETPOST('section_dir')) { $relativepath = GETPOST('section_dir'); } @@ -258,8 +256,7 @@ if ($type == 'directory') if (!preg_match('/pageid=/', $param)) $param .= '&pageid='.urlencode(GETPOST('pageid', 'int')); //if (!preg_match('/backtopage=/',$param)) $param.='&backtopage='.urlencode($_SERVER["PHP_SELF"].'?file_manager=1&website='.$websitekey.'&pageid='.$pageid); } - } - else { + } else { $relativepath = $ecmdir->getRelativePath(); $upload_dir = $conf->ecm->dir_output.'/'.$relativepath; } @@ -268,8 +265,7 @@ if ($type == 'directory') if (($section === '0' || empty($section)) && ($module != 'medias')) { $filearray = array(); - } - else { + } else { $filearray = dol_dir_list($upload_dir, "files", 0, '', array('^\.', '(\.meta|_preview.*\.png)$', '^temp$', '^CVS$'), $sortfield, $sorting, 1); } @@ -279,13 +275,11 @@ if ($type == 'directory') if (isset($search_doc_ref) && $search_doc_ref != '') $param .= '&search_doc_ref='.$search_doc_ref; $textifempty = $langs->trans('NoFileFound'); - } - elseif ($section === '0') + } elseif ($section === '0') { if ($module == 'ecm') $textifempty = '
'.$langs->trans("DirNotSynchronizedSyncFirst").'

'; else $textifempty = $langs->trans('NoFileFound'); - } - else $textifempty = ($showonrightsize == 'featurenotyetavailable' ? $langs->trans("FeatureNotYetAvailable") : $langs->trans("ECMSelectASection")); + } else $textifempty = ($showonrightsize == 'featurenotyetavailable' ? $langs->trans("FeatureNotYetAvailable") : $langs->trans("ECMSelectASection")); if ($module == 'medias') { @@ -293,8 +287,7 @@ if ($type == 'directory') $modulepart = 'medias'; $perm = ($user->rights->website->write || $user->rights->emailing->creer); $title = 'none'; - } - elseif ($module == 'ecm') // DMS/ECM -> manual structure + } elseif ($module == 'ecm') // DMS/ECM -> manual structure { if ($user->rights->ecm->read) { @@ -317,8 +310,7 @@ if ($type == 'directory') $perm = $user->rights->ecm->upload; $modulepart = 'ecm'; $title = ''; // Use default - } - else { + } else { $useinecm = 5; $modulepart = 'ecm'; $perm = $user->rights->ecm->upload; diff --git a/htdocs/core/ajax/ajaxdirtree.php b/htdocs/core/ajax/ajaxdirtree.php index f5ac3e2e422..620643da8f2 100644 --- a/htdocs/core/ajax/ajaxdirtree.php +++ b/htdocs/core/ajax/ajaxdirtree.php @@ -49,8 +49,7 @@ if (!isset($mode) || $mode != 'noajax') // For ajax call $preopened = GETPOST('preopened'); if ($selecteddir != '/') $selecteddir = preg_replace('/\/$/', '', $selecteddir); // We removed last '/' except if it is '/' -} -else // For no ajax call +} else // For no ajax call { //if (GETPOST('preopened')) { $_GET['dir'] = $_POST['dir'] = GETPOST('preopened'); } @@ -73,8 +72,7 @@ if ($modulepart == 'ecm') { $fullpathselecteddir = $conf->ecm->dir_output.'/'.($selecteddir != '/' ? $selecteddir : ''); $fullpathpreopened = $conf->ecm->dir_output.'/'.($preopened != '/' ? $preopened : ''); -} -elseif ($modulepart == 'medias') +} elseif ($modulepart == 'medias') { $fullpathselecteddir = $dolibarr_main_data_root.'/medias/'.($selecteddir != '/' ? $selecteddir : ''); $fullpathpreopened = $dolibarr_main_data_root.'/medias/'.($preopened != '/' ? $preopened : ''); @@ -95,8 +93,7 @@ if (preg_match('/\.\./', $fullpathselecteddir) || preg_match('/[<>|]/', $fullpat if ($modulepart == 'ecm') { if (!$user->rights->ecm->read) accessforbidden(); -} -elseif ($modulepart == 'medias') +} elseif ($modulepart == 'medias') { // Always allowed } @@ -471,8 +468,7 @@ function treeOutputForAbsoluteDir($sqltree, $selecteddir, $fullpathselecteddir, if ($modulepart == 'ecm') { $newfullpathselecteddir = $conf->ecm->dir_output.'/'.($val['fullrelativename'] != '/' ? $val['fullrelativename'] : ''); - } - elseif ($modulepart == 'medias') + } elseif ($modulepart == 'medias') { $newfullpathselecteddir = $dolibarr_main_data_root.'/medias/'.($val['fullrelativename'] != '/' ? $val['fullrelativename'] : ''); } @@ -486,7 +482,6 @@ function treeOutputForAbsoluteDir($sqltree, $selecteddir, $fullpathselecteddir, echo "\n"; } - } - else print "PermissionDenied"; + } else print "PermissionDenied"; } } diff --git a/htdocs/core/ajax/check_notifications.php b/htdocs/core/ajax/check_notifications.php index 674dab95842..98d7d00a8dc 100644 --- a/htdocs/core/ajax/check_notifications.php +++ b/htdocs/core/ajax/check_notifications.php @@ -60,8 +60,7 @@ if ($time >= $_SESSION['auto_check_events_not_before']) dol_syslog("We ask to check browser notification on a too large period. We fix this with current date."); $starttime = $time; } - } - else { + } else { $starttime = $time; } @@ -108,8 +107,7 @@ if ($time >= $_SESSION['auto_check_events_not_before']) $eventfound[] = $event; } - } - else { + } else { dol_syslog("Error sql = ".$db->lasterror(), LOG_ERR); } } diff --git a/htdocs/core/ajax/constantonoff.php b/htdocs/core/ajax/constantonoff.php index c7e5bbd8991..1ed8ca34076 100644 --- a/htdocs/core/ajax/constantonoff.php +++ b/htdocs/core/ajax/constantonoff.php @@ -57,8 +57,7 @@ if (!empty($action) && !empty($name)) if ($action == 'set') { dolibarr_set_const($db, $name, $value, 'chaine', 0, '', $entity); - } - elseif ($action == 'del') + } elseif ($action == 'del') { dolibarr_del_const($db, $name, $entity); } diff --git a/htdocs/core/ajax/extraparams.php b/htdocs/core/ajax/extraparams.php index a3db4505f70..803155ce784 100644 --- a/htdocs/core/ajax/extraparams.php +++ b/htdocs/core/ajax/extraparams.php @@ -51,20 +51,11 @@ if (!empty($id) && !empty($element) && !empty($htmlelement) && !empty($type)) $classpath = $subelement = $element; // For compatibility - if ($element == 'order' || $element == 'commande') { $classpath = $subelement = 'commande'; } - elseif ($element == 'propal') { $classpath = 'comm/propal'; $subelement = 'propal'; } - elseif ($element == 'facture') { $classpath = 'compta/facture'; $subelement = 'facture'; } - elseif ($element == 'contract') { $classpath = $subelement = 'contrat'; } - elseif ($element == 'shipping') { $classpath = $subelement = 'expedition'; } - elseif ($element == 'deplacement') { $classpath = 'compta/deplacement'; $subelement = 'deplacement'; } - elseif ($element == 'order_supplier') { $classpath = 'fourn'; $subelement = 'fournisseur.commande'; } - elseif ($element == 'invoice_supplier') { $classpath = 'fourn'; $subelement = 'fournisseur.facture'; } + if ($element == 'order' || $element == 'commande') { $classpath = $subelement = 'commande'; } elseif ($element == 'propal') { $classpath = 'comm/propal'; $subelement = 'propal'; } elseif ($element == 'facture') { $classpath = 'compta/facture'; $subelement = 'facture'; } elseif ($element == 'contract') { $classpath = $subelement = 'contrat'; } elseif ($element == 'shipping') { $classpath = $subelement = 'expedition'; } elseif ($element == 'deplacement') { $classpath = 'compta/deplacement'; $subelement = 'deplacement'; } elseif ($element == 'order_supplier') { $classpath = 'fourn'; $subelement = 'fournisseur.commande'; } elseif ($element == 'invoice_supplier') { $classpath = 'fourn'; $subelement = 'fournisseur.facture'; } dol_include_once('/'.$classpath.'/class/'.$subelement.'.class.php'); - if ($element == 'order_supplier') { $classname = 'CommandeFournisseur'; } - elseif ($element == 'invoice_supplier') { $classname = 'FactureFournisseur'; } - else $classname = ucfirst($subelement); + if ($element == 'order_supplier') { $classname = 'CommandeFournisseur'; } elseif ($element == 'invoice_supplier') { $classname = 'FactureFournisseur'; } else $classname = ucfirst($subelement); $object = new $classname($db); $object->fetch($id); diff --git a/htdocs/core/ajax/loadinplace.php b/htdocs/core/ajax/loadinplace.php index 742e22a5a9f..b1a72868312 100644 --- a/htdocs/core/ajax/loadinplace.php +++ b/htdocs/core/ajax/loadinplace.php @@ -62,8 +62,7 @@ if (!empty($field) && !empty($element) && !empty($table_element) && !empty($fk_e elseif ($element == 'order_supplier') { $element = 'fournisseur'; $subelement = 'commande'; - } - elseif ($element == 'invoice_supplier') { + } elseif ($element == 'invoice_supplier') { $element = 'fournisseur'; $subelement = 'facture'; } @@ -83,8 +82,7 @@ if (!empty($field) && !empty($element) && !empty($table_element) && !empty($fk_e { $ret = $form->$methodname(); if ($ret > 0) echo json_encode($form->$cachename); - } - elseif (!empty($ext_element)) + } elseif (!empty($ext_element)) { $module = $subelement = $ext_element; if (preg_match('/^([^_]+)_([^_]+)/i', $ext_element, $regs)) @@ -99,14 +97,12 @@ if (!empty($field) && !empty($element) && !empty($table_element) && !empty($fk_e $ret = $object->$methodname($fk_element); if ($ret > 0) echo json_encode($object->$cachename); } - } - else { + } else { $object = new GenericObject($db); $value = $object->$loadmethod($table_element, $fk_element, $field); echo $value; } - } - else { + } else { echo $langs->transnoentities('NotEnoughPermissions'); } } diff --git a/htdocs/core/ajax/objectonoff.php b/htdocs/core/ajax/objectonoff.php index 6466df89a07..6c9f97bfbb0 100644 --- a/htdocs/core/ajax/objectonoff.php +++ b/htdocs/core/ajax/objectonoff.php @@ -58,11 +58,9 @@ print ''; $return .= ''; - } - else { + } else { $return .= ''; $return .= ''; } - } - else { + } else { $return .= ''; $return .= ''; } - } - else { + } else { if (empty($maxHeight) || $photo_vignette && $imgarray['height'] > $maxHeight) { $return .= ''; $return .= ''; - } - else { + } else { $return .= ''; $return .= ''; } @@ -7443,8 +7218,7 @@ abstract class CommonObject { $return .= ''; if (($nbphoto % $nbbyrow) == 0) $return .= ''; - } - elseif ($nbbyrow < 0) $return .= ''; + } elseif ($nbbyrow < 0) $return .= ''; } if (empty($size)) { // Format origine @@ -7533,8 +7307,7 @@ abstract class CommonObject { if (isset($info['type']) && ($info['type'] == 'duration')) return true; else return false; - } - else return false; + } else return false; } /** @@ -7549,8 +7322,7 @@ abstract class CommonObject { if (isset($info['type']) && ($info['type'] == 'int' || preg_match('/^integer/i', $info['type']))) return true; else return false; - } - else return false; + } else return false; } /** @@ -7654,12 +7426,10 @@ abstract class CommonObject if (empty($this->{$field})) { $queryarray[$field] = null; - } - else { + } else { $queryarray[$field] = $this->db->idate($this->{$field}); } - } - elseif ($this->isArray($info)) + } elseif ($this->isArray($info)) { if (!empty($this->{$field})) { if (!is_array($this->{$field})) { @@ -7669,14 +7439,12 @@ abstract class CommonObject } else { $queryarray[$field] = null; } - } - elseif ($this->isDuration($info)) + } elseif ($this->isDuration($info)) { // $this->{$field} may be null, '', 0, '0', 123, '123' if ($this->{$field} != '' || !empty($info['notnull'])) $queryarray[$field] = (int) $this->{$field}; // If '0', it may be set to null later if $info['notnull'] == -1 else $queryarray[$field] = null; - } - elseif ($this->isInt($info) || $this->isFloat($info)) + } elseif ($this->isInt($info) || $this->isFloat($info)) { if ($field == 'entity' && is_null($this->{$field})) $queryarray[$field] = $conf->entity; else { @@ -7684,11 +7452,9 @@ abstract class CommonObject if ($this->{$field} != '' || !empty($info['notnull'])) { if ($this->isInt($info)) $queryarray[$field] = (int) $this->{$field}; // If '0', it may be set to null later if $info['notnull'] == -1 if ($this->isFloat($info)) $queryarray[$field] = (double) $this->{$field}; // If '0', it may be set to null later if $info['notnull'] == -1 - } - else $queryarray[$field] = null; + } else $queryarray[$field] = null; } - } - else { + } else { $queryarray[$field] = $this->{$field}; } @@ -7713,8 +7479,7 @@ abstract class CommonObject { if (empty($obj->{$field}) || $obj->{$field} === '0000-00-00 00:00:00' || $obj->{$field} === '1000-01-01 00:00:00') $this->{$field} = 0; else $this->{$field} = strtotime($obj->{$field}); - } - elseif ($this->isArray($info)) + } elseif ($this->isArray($info)) { if (!empty($obj->{$field})) { $this->{$field} = @unserialize($obj->{$field}); @@ -7723,8 +7488,7 @@ abstract class CommonObject } else { $this->{$field} = array(); } - } - elseif ($this->isInt($info)) + } elseif ($this->isInt($info)) { if ($field == 'rowid') $this->id = (int) $obj->{$field}; else { @@ -7732,8 +7496,7 @@ abstract class CommonObject { if (empty($obj->{$field})) $this->{$field} = null; else $this->{$field} = (double) $obj->{$field}; - } - else { + } else { if (!is_null($obj->{$field}) || (isset($info['notnull']) && $info['notnull'] == 1)) { $this->{$field} = (int) $obj->{$field}; } else { @@ -7741,23 +7504,20 @@ abstract class CommonObject } } } - } - elseif ($this->isFloat($info)) + } elseif ($this->isFloat($info)) { if ($this->isForcedToNullIfZero($info)) { if (empty($obj->{$field})) $this->{$field} = null; else $this->{$field} = (double) $obj->{$field}; - } - else { + } else { if (!is_null($obj->{$field}) || (isset($info['notnull']) && $info['notnull'] == 1)) { $this->{$field} = (double) $obj->{$field}; } else { $this->{$field} = null; } } - } - else { + } else { $this->{$field} = $obj->{$field}; } } @@ -7970,12 +7730,10 @@ abstract class CommonObject { $this->setVarsFromFetchObj($obj); return $this->id; - } - else { + } else { return 0; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->errors[] = $this->error; return -1; @@ -8023,8 +7781,7 @@ abstract class CommonObject } return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->errors[] = $this->error; return -1; @@ -8151,8 +7908,7 @@ abstract class CommonObject return -1; } } - } - elseif (!empty($this->fk_element) && !empty($this->childtables)) // If object has childs linked with a foreign key field, we check all child tables. + } elseif (!empty($this->fk_element) && !empty($this->childtables)) // If object has childs linked with a foreign key field, we check all child tables. { $objectisused = $this->isObjectUsed($this->id); if (!empty($objectisused)) @@ -8318,8 +8074,7 @@ abstract class CommonObject $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; diff --git a/htdocs/core/class/commonobjectline.class.php b/htdocs/core/class/commonobjectline.class.php index 9edbe27aae0..f92004120ff 100644 --- a/htdocs/core/class/commonobjectline.class.php +++ b/htdocs/core/class/commonobjectline.class.php @@ -82,8 +82,7 @@ abstract class CommonObjectLine extends CommonObject $label = $res[$label_type]; $this->db->free($resql); return $label; - } - else { + } else { $this->error = $this->db->error().' sql='.$sql; dol_syslog(get_class($this)."::getLabelOfUnit Error ".$this->error, LOG_ERR); return -1; diff --git a/htdocs/core/class/commonstickergenerator.class.php b/htdocs/core/class/commonstickergenerator.class.php index 50330f26b17..6c832c4788d 100644 --- a/htdocs/core/class/commonstickergenerator.class.php +++ b/htdocs/core/class/commonstickergenerator.class.php @@ -175,8 +175,7 @@ abstract class CommonStickerGenerator $hauteur = abs($y1 - $y2); if ($length > $hauteur) { $Pointilles = ($length / $nbPointilles) / 2; // taille des pointilles - } - else { + } else { $Pointilles = ($hauteur / $nbPointilles) / 2; } for ($i = $x1; $i <= $x2; $i += $Pointilles + $Pointilles) { diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index e535a4f0ca4..4bcbf3e2e99 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -251,8 +251,7 @@ class Conf { try { date_default_timezone_set($this->global->MAIN_SERVER_TZ); - } - catch (Exception $e) + } catch (Exception $e) { dol_syslog("Error: Bad value for parameter MAIN_SERVER_TZ=".$this->global->MAIN_SERVER_TZ, LOG_ERR); } @@ -334,8 +333,7 @@ class Conf // For backward compatibility $this->$module->$dirname = $rootfordata."/".$name; - } - else { + } else { // For multicompany sharings $this->$module->$multidirname = array($this->entity => $rootfortemp."/".$name."/temp"); diff --git a/htdocs/core/class/coreobject.class.php b/htdocs/core/class/coreobject.class.php index 0b017022e41..caaeb706c32 100644 --- a/htdocs/core/class/coreobject.class.php +++ b/htdocs/core/class/coreobject.class.php @@ -74,8 +74,7 @@ class CoreObject extends CommonObject $this->is_clone = false; return true; - } - else { + } else { return false; } } @@ -92,8 +91,7 @@ class CoreObject extends CommonObject if (isset($this->fields[$field]) && method_exists($this, 'is_'.$type)) { return $this->{'is_'.$type}($this->fields[$field]); - } - else { + } else { return false; } } @@ -197,8 +195,7 @@ class CoreObject extends CommonObject $this->{$className}[] = $o; } - } - else { + } else { $this->errors[] = $this->db->lasterror(); } } @@ -253,8 +250,7 @@ class CoreObject extends CommonObject $result = $this->call_trigger(strtoupper($this->element).'_UPDATE', $user); if ($result < 0) $error++; else $this->saveChild($user); - } - else { + } else { $error++; $this->error = $this->db->lasterror(); $this->errors[] = $this->error; @@ -264,8 +260,7 @@ class CoreObject extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1; } @@ -292,8 +287,7 @@ class CoreObject extends CommonObject $result = $this->call_trigger(strtoupper($this->element).'_CREATE', $user); if ($result < 0) $error++; else $this->saveChild($user); - } - else { + } else { $error++; $this->error = $this->db->lasterror(); $this->errors[] = $this->error; @@ -303,8 +297,7 @@ class CoreObject extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1; } @@ -349,8 +342,7 @@ class CoreObject extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->errors[] = $this->error; $this->db->rollback(); @@ -386,8 +378,7 @@ class CoreObject extends CommonObject if (empty($date)) { $this->{$field} = 0; - } - else { + } else { require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; $this->{$field} = dol_stringtotime($date); } @@ -409,15 +400,12 @@ class CoreObject extends CommonObject if ($this->checkFieldType($key, 'date')) { $this->setDate($key, $value); - } - elseif ($this->checkFieldType($key, 'float')) + } elseif ($this->checkFieldType($key, 'float')) { $this->{$key} = (double) price2num($value); - } - elseif ($this->checkFieldType($key, 'int')) { + } elseif ($this->checkFieldType($key, 'int')) { $this->{$key} = (int) price2num($value); - } - else { + } else { $this->{$key} = dol_string_nohtmltag($value); } } diff --git a/htdocs/core/class/cstate.class.php b/htdocs/core/class/cstate.class.php index 9f49e77f35a..34ef707b674 100644 --- a/htdocs/core/class/cstate.class.php +++ b/htdocs/core/class/cstate.class.php @@ -132,8 +132,7 @@ class Cstate // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -175,8 +174,7 @@ class Cstate // extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -262,8 +260,7 @@ class Cstate // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } diff --git a/htdocs/core/class/ctypent.class.php b/htdocs/core/class/ctypent.class.php index 8e567a552b2..07d3563088e 100644 --- a/htdocs/core/class/ctypent.class.php +++ b/htdocs/core/class/ctypent.class.php @@ -136,8 +136,7 @@ class Ctypent // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -184,8 +183,7 @@ class Ctypent // extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -238,8 +236,7 @@ class Ctypent // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -277,8 +274,7 @@ class Ctypent // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } diff --git a/htdocs/core/class/cunits.class.php b/htdocs/core/class/cunits.class.php index 80ea8e2f0cc..ac7b07ea5a9 100644 --- a/htdocs/core/class/cunits.class.php +++ b/htdocs/core/class/cunits.class.php @@ -135,8 +135,7 @@ class CUnits // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -194,8 +193,7 @@ class CUnits // extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -234,14 +232,11 @@ class CUnits // extends CommonObject foreach ($filter as $key => $value) { if ($key == 't.rowid' || $key == 't.active' || $key == 't.scale') { $sqlwhere[] = $key.'='.(int) $value; - } - elseif (strpos($key, 'date') !== false) { + } elseif (strpos($key, 'date') !== false) { $sqlwhere[] = $key.' = \''.$this->db->idate($value).'\''; - } - elseif ($key == 't.unit_type' || $key == 't.code' || $key == 't.short_label') { + } elseif ($key == 't.unit_type' || $key == 't.code' || $key == 't.short_label') { $sqlwhere[] = $key.' = \''.$this->db->escape($value).'\''; - } - else { + } else { $sqlwhere[] = $key.' LIKE \'%'.$this->db->escape($value).'%\''; } } @@ -337,8 +332,7 @@ class CUnits // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -376,8 +370,7 @@ class CUnits // extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -395,8 +388,7 @@ class CUnits // extends CommonObject if ($mode == 'short_label'){ return dol_getIdFromCode($this->db, $code, 'c_units', 'short_label', 'rowid'); - } - elseif ($mode == 'code'){ + } elseif ($mode == 'code'){ return dol_getIdFromCode($this->db, $code, 'c_units', 'code', 'rowid'); } diff --git a/htdocs/core/class/discount.class.php b/htdocs/core/class/discount.class.php index 8cf13771d35..4cddc65d636 100644 --- a/htdocs/core/class/discount.class.php +++ b/htdocs/core/class/discount.class.php @@ -187,13 +187,11 @@ class DiscountAbsolute $this->db->free($resql); return 1; - } - else { + } else { $this->db->free($resql); return 0; } - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -262,8 +260,7 @@ class DiscountAbsolute { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."societe_remise_except"); return $this->id; - } - else { + } else { $this->error = $this->db->lasterror().' - sql='.$sql; return -1; } @@ -300,8 +297,7 @@ class DiscountAbsolute $this->error = 'ErrorThisPartOrAnotherIsAlreadyUsedSoDiscountSerieCantBeRemoved'; return -2; } - } - else { + } else { dol_print_error($this->db); return -1; } @@ -327,8 +323,7 @@ class DiscountAbsolute $this->error = 'ErrorThisPartOrAnotherIsAlreadyUsedSoDiscountSerieCantBeRemoved'; return -2; } - } - else { + } else { dol_print_error($this->db); return -1; } @@ -363,14 +358,12 @@ class DiscountAbsolute { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; } - } - elseif ($this->fk_invoice_supplier_source) { + } elseif ($this->fk_invoice_supplier_source) { $sql = "UPDATE ".MAIN_DB_PREFIX."facture_fourn"; $sql .= " set paye=0, fk_statut=1"; $sql .= " WHERE (type = 2 or type = 3) AND rowid=".$this->fk_invoice_supplier_source; @@ -381,19 +374,16 @@ class DiscountAbsolute { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; } - } - else { + } else { $this->db->commit(); return 1; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -449,8 +439,7 @@ class DiscountAbsolute $this->fk_facture = $rowidinvoice; } return 1; - } - else { + } else { $this->error = $this->db->error(); return -3; } @@ -480,8 +469,7 @@ class DiscountAbsolute if ($resql) { return 1; - } - else { + } else { $this->error = $this->db->error(); return -3; } @@ -557,15 +545,13 @@ class DiscountAbsolute $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture as f'; $sql .= ' WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = '.$invoice->id; $sql .= ' AND f.type = 3'; - } - elseif ($invoice->element == 'invoice_supplier') + } elseif ($invoice->element == 'invoice_supplier') { $sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount'; $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture_fourn as f'; $sql .= ' WHERE rc.fk_invoice_supplier_source=f.rowid AND rc.fk_invoice_supplier = '.$invoice->id; $sql .= ' AND f.type = 3'; - } - else { + } else { $this->error = get_class($this)."::getSumDepositsUsed was called with a bad object as a first parameter"; dol_print_error($this->error); return -1; @@ -577,8 +563,7 @@ class DiscountAbsolute $obj = $this->db->fetch_object($resql); if ($multicurrency == 1) return $obj->multicurrency_amount; else return $obj->amount; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -601,15 +586,13 @@ class DiscountAbsolute $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture as f'; $sql .= ' WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = '.$invoice->id; $sql .= ' AND f.type IN ('.$invoice::TYPE_STANDARD.', '.$invoice::TYPE_CREDIT_NOTE.', '.$invoice::TYPE_SITUATION.')'; // Find discount coming from credit note or excess received - } - elseif ($invoice->element == 'invoice_supplier') + } elseif ($invoice->element == 'invoice_supplier') { $sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount'; $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture_fourn as f'; $sql .= ' WHERE rc.fk_invoice_supplier_source=f.rowid AND rc.fk_invoice_supplier = '.$invoice->id; $sql .= ' AND f.type IN ('.$invoice::TYPE_STANDARD.', '.$invoice::TYPE_CREDIT_NOTE.')'; // Find discount coming from credit note or excess paid - } - else { + } else { $this->error = get_class($this)."::getSumCreditNotesUsed was called with a bad object as a first parameter"; dol_print_error($this->error); return -1; @@ -621,8 +604,7 @@ class DiscountAbsolute $obj = $this->db->fetch_object($resql); if ($multicurrency == 1) return $obj->multicurrency_amount; else return $obj->amount; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -643,14 +625,12 @@ class DiscountAbsolute $sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount'; $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc'; $sql .= ' WHERE rc.fk_facture IS NULL AND rc.fk_facture_source = '.$invoice->id; - } - elseif ($invoice->element == 'invoice_supplier') + } elseif ($invoice->element == 'invoice_supplier') { $sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount'; $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc'; $sql .= ' WHERE rc.fk_invoice_supplier IS NULL AND rc.fk_invoice_supplier_source = '.$invoice->id; - } - else { + } else { $this->error = get_class($this)."::getSumCreditNotesUsed was called with a bad object as a first parameter"; dol_print_error($this->error); return -1; @@ -662,8 +642,7 @@ class DiscountAbsolute $obj = $this->db->fetch_object($resql); if ($multicurrency) return $obj->multicurrency_amount; else return $obj->amount; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } diff --git a/htdocs/core/class/dolgeoip.class.php b/htdocs/core/class/dolgeoip.class.php index 743f2968289..2b148a96e8a 100644 --- a/htdocs/core/class/dolgeoip.class.php +++ b/htdocs/core/class/dolgeoip.class.php @@ -55,16 +55,14 @@ class DolGeoIP { require_once DOL_DOCUMENT_ROOT.'/includes/geoip2/geoip2.phar'; } - } - elseif ($type == 'city') + } elseif ($type == 'city') { // geoip may have been already included with PEAR if ($geoipversion == '2' || ($geoipversion != 'php' && !function_exists('geoip_country_code_by_name'))) { require_once DOL_DOCUMENT_ROOT.'/includes/geoip2/geoip2.phar'; } - } - else { print 'ErrorBadParameterInConstructor'; return 0; } + } else { print 'ErrorBadParameterInConstructor'; return 0; } // Here, function exists (embedded into PHP or exists because we made include) if (empty($type) || empty($datfile)) @@ -85,19 +83,16 @@ class DolGeoIP { try { $this->gi = new GeoIp2\Database\Reader($datfile); // '/usr/local/share/GeoIP/GeoIP2-City.mmdb' - } - catch (Exception $e) + } catch (Exception $e) { $this->error = $e->getMessage(); dol_syslog('DolGeoIP '.$this->errorlabel, LOG_ERR); return 0; } - } - elseif (function_exists('geoip_open')) + } elseif (function_exists('geoip_open')) { $this->gi = geoip_open($datfile, GEOIP_STANDARD); - } - else { + } else { $this->gi = 'NOGI'; // We are using embedded php geoip functions //print 'function_exists(geoip_country_code_by_name))='.function_exists('geoip_country_code_by_name'); //print geoip_database_info(); @@ -125,8 +120,7 @@ class DolGeoIP { // geoip_country_code_by_addr does not exists return strtolower(geoip_country_code_by_name($ip)); - } - else { + } else { if (preg_match('/^[0-9]+.[0-9]+\.[0-9]+\.[0-9]+/', $ip)) { if ($geoipversion == '2') @@ -134,30 +128,25 @@ class DolGeoIP try { $record = $this->gi->country($ip); return strtolower($record->country->isoCode); - } - catch (Exception $e) { + } catch (Exception $e) { //return $e->getMessage(); return ''; } - } - else { + } else { if (!function_exists('geoip_country_code_by_addr')) return strtolower(geoip_country_code_by_name($this->gi, $ip)); return strtolower(geoip_country_code_by_addr($this->gi, $ip)); } - } - else { + } else { if ($geoipversion == '2') { try { $record = $this->gi->country($ip); return strtolower($record->country->isoCode); - } - catch (Exception $e) { + } catch (Exception $e) { //return $e->getMessage(); return ''; } - } - else { + } else { if (!function_exists('geoip_country_code_by_addr_v6')) return strtolower(geoip_country_code_by_name_v6($this->gi, $ip)); return strtolower(geoip_country_code_by_addr_v6($this->gi, $ip)); } @@ -188,13 +177,11 @@ class DolGeoIP try { $record = $this->gi->country($name); return $record->country->isoCode; - } - catch (Exception $e) { + } catch (Exception $e) { //return $e->getMessage(); return ''; } - } - else { + } else { return geoip_country_code_by_name($this->gi, $name); } } diff --git a/htdocs/core/class/dolgraph.class.php b/htdocs/core/class/dolgraph.class.php index b840f767a97..4ca072897bb 100644 --- a/htdocs/core/class/dolgraph.class.php +++ b/htdocs/core/class/dolgraph.class.php @@ -472,12 +472,10 @@ class DolGraph { //print 'ee'.join(',',$theme_bgcoloronglet); $this->bgcolor = $theme_bgcoloronglet; - } - else { + } else { $this->bgcolor = $theme_bgcolor; } - } - else { + } else { $this->bgcolor = $bg_color; } } @@ -500,12 +498,10 @@ class DolGraph { //print 'ee'.join(',',$theme_bgcoloronglet); $this->bgcolorgrid = $theme_bgcoloronglet; - } - else { + } else { $this->bgcolorgrid = $theme_bgcolor; } - } - else { + } else { $this->bgcolorgrid = $bg_colorgrid; } } @@ -721,8 +717,7 @@ class DolGraph foreach ($values as $x => $y) { if (isset($y)) $serie[$i] .= 'd'.$i.'.push({"label":"'.dol_escape_js($legends[$x]).'", "data":'.$y.'});'."\n"; } - } - else { + } else { foreach ($values as $x => $y) { if (isset($y)) $serie[$i] .= 'd'.$i.'.push(['.$x.', '.$y.']);'."\n"; } @@ -753,8 +748,7 @@ class DolGraph if ($nblot < 0) { $this->stringtoshow .= ''."\n"; - } - else { + } else { while ($i < $nblot) { $this->stringtoshow .= ''."\n"; @@ -893,8 +887,7 @@ class DolGraph elseif ($i == $firstlot + 1) $align = 'center'; else $align = 'left'; $this->stringtoshow .= 'bars: { lineWidth: 1, show: true, align: "'.$align.'", barWidth: 0.45 }, '; - } - else $this->stringtoshow.='bars: { lineWidth: 1, show: true, align: "'.($i==$firstlot?'center':'left').'", barWidth: 0.5 }, '; + } else $this->stringtoshow.='bars: { lineWidth: 1, show: true, align: "'.($i==$firstlot?'center':'left').'", barWidth: 0.5 }, '; } if (isset($this->type[$i]) && ($this->type[$i] == 'lines' || $this->type[$i] == 'linesnopoint')) $this->stringtoshow .= 'lines: { show: true, fill: false }, points: { show: '.($this->type[$i] == 'linesnopoint' ? 'false' : 'true').' }, '; $this->stringtoshow .= 'color: "#'.$color.'", label: "'.(isset($this->Legend[$i]) ? dol_escape_js($this->Legend[$i]) : '').'", data: d'.$i.' }'; @@ -1051,8 +1044,7 @@ class DolGraph if ($nblot < 0) { $this->stringtoshow .= ''; - } - else { + } else { while ($i < $nblot) { //$this->stringtoshow .= ''."\n"; @@ -1095,8 +1087,7 @@ class DolGraph if (strpos($tmp, '-') !== false) { $foundnegativecolor++; $color = '#FFFFFF'; // If $val is '-123' - } - else $color = "#".$tmp; // If $val is '123' or '#123' + } else $color = "#".$tmp; // If $val is '123' or '#123' } $this->stringtoshow .= "'".$color."'"; $i++; diff --git a/htdocs/core/class/emailsenderprofile.class.php b/htdocs/core/class/emailsenderprofile.class.php index e390565748a..25a0d2a25c5 100644 --- a/htdocs/core/class/emailsenderprofile.class.php +++ b/htdocs/core/class/emailsenderprofile.class.php @@ -350,28 +350,23 @@ class EmailSenderProfile extends CommonObject { if ($status == 1) return $langs->trans('Enabled'); elseif ($status == 0) return $langs->trans('Disabled'); - } - elseif ($mode == 2) + } elseif ($mode == 2) { if ($status == 1) return img_picto($langs->trans('Enabled'), 'statut4').' '.$langs->trans('Enabled'); elseif ($status == 0) return img_picto($langs->trans('Disabled'), 'statut5').' '.$langs->trans('Disabled'); - } - elseif ($mode == 3) + } elseif ($mode == 3) { if ($status == 1) return img_picto($langs->trans('Enabled'), 'statut4'); elseif ($status == 0) return img_picto($langs->trans('Disabled'), 'statut5'); - } - elseif ($mode == 4) + } elseif ($mode == 4) { if ($status == 1) return img_picto($langs->trans('Enabled'), 'statut4').' '.$langs->trans('Enabled'); elseif ($status == 0) return img_picto($langs->trans('Disabled'), 'statut5').' '.$langs->trans('Disabled'); - } - elseif ($mode == 5) + } elseif ($mode == 5) { if ($status == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'), 'statut4'); elseif ($status == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'), 'statut5'); - } - elseif ($mode == 6) + } elseif ($mode == 6) { if ($status == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'), 'statut4'); elseif ($status == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'), 'statut5'); @@ -424,8 +419,7 @@ class EmailSenderProfile extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/core/class/events.class.php b/htdocs/core/class/events.class.php index cd6e3b42e0a..bffd23f05d2 100644 --- a/htdocs/core/class/events.class.php +++ b/htdocs/core/class/events.class.php @@ -173,8 +173,7 @@ class Events // extends CommonObject { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."events"); return $this->id; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -259,8 +258,7 @@ class Events // extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 4157870972d..c82e877fa80 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -253,10 +253,8 @@ class ExtraFields $this->error = ''; $this->errno = 0; return 1; - } - else return -2; - } - else { + } else return -2; + } else { return -1; } } @@ -337,14 +335,12 @@ class ExtraFields $resql = $this->db->query($sql, 1, 'dml'); } return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->errno = $this->db->lasterrno(); return -1; } - } - else { + } else { return 0; } } @@ -398,12 +394,10 @@ class ExtraFields if (is_array($param) && count($param) > 0) { $params = serialize($param); - } - elseif (strlen($param) > 0) + } elseif (strlen($param) > 0) { $params = trim($param); - } - else { + } else { $params = ''; } @@ -461,8 +455,7 @@ class ExtraFields if ($this->db->query($sql)) { return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->errno = $this->db->lasterrno(); return -1; @@ -522,8 +515,7 @@ class ExtraFields } return $result; - } - else { + } else { return 0; } } @@ -556,13 +548,11 @@ class ExtraFields if ($resql) { return 1; - } - else { + } else { dol_print_error($this->db); return -1; } - } - else { + } else { return 0; } } @@ -651,25 +641,21 @@ class ExtraFields if ($unique) { $sql = "ALTER TABLE ".MAIN_DB_PREFIX.$table." ADD UNIQUE INDEX uk_".$table."_".$attrname." (".$attrname.")"; - } - else { + } else { $sql = "ALTER TABLE ".MAIN_DB_PREFIX.$table." DROP INDEX uk_".$table."_".$attrname; } dol_syslog(get_class($this).'::update', LOG_DEBUG); $resql = $this->db->query($sql, 1, 'dml'); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } - } - else { + } else { return 0; } } @@ -727,12 +713,10 @@ class ExtraFields if (is_array($param) && count($param) > 0) { $params = serialize($param); - } - elseif (strlen($param) > 0) + } elseif (strlen($param) > 0) { $params = trim($param); - } - else { + } else { $params = ''; } @@ -743,8 +727,7 @@ class ExtraFields $sql_del .= " WHERE name = '".$attrname."'"; $sql_del .= " AND entity IN (0, ".($entity === '' ? $conf->entity : $entity).")"; $sql_del .= " AND elementtype = '".$elementtype."'"; - } - else { + } else { // We want on all entities ($entities = '0'), we delete on all only (we keep setup specific to each entity) $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."extrafields"; $sql_del .= " WHERE name = '".$attrname."'"; @@ -809,14 +792,12 @@ class ExtraFields { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); dol_print_error($this->db); return -1; } - } - else { + } else { return 0; } } @@ -916,8 +897,7 @@ class ExtraFields } } if ($elementtype) $this->attributes[$elementtype]['loaded'] = 1; // If nothing found, we also save tag 'loaded' - } - else { + } else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::fetch_name_optionals_label ".$this->error, LOG_ERR); } @@ -974,8 +954,7 @@ class ExtraFields $totalizable = $this->attributes[$extrafieldsobjectkey]['totalizable'][$key]; $help = $this->attributes[$extrafieldsobjectkey]['help'][$key]; $hidden = (empty($list) ? 1 : 0); // If empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller) - } - else // Old usage + } else // Old usage { $label = $this->attribute_label[$key]; $type = $this->attribute_type[$key]; @@ -1003,37 +982,29 @@ class ExtraFields if ($type == 'date') { $morecss = 'minwidth100imp'; - } - elseif ($type == 'datetime' || $type == 'link') + } elseif ($type == 'datetime' || $type == 'link') { $morecss = 'minwidth200imp'; - } - elseif (in_array($type, array('int', 'integer', 'double', 'price'))) + } elseif (in_array($type, array('int', 'integer', 'double', 'price'))) { $morecss = 'maxwidth75'; - } - elseif ($type == 'password') + } elseif ($type == 'password') { $morecss = 'maxwidth100'; - } - elseif ($type == 'url') + } elseif ($type == 'url') { $morecss = 'minwidth400'; - } - elseif ($type == 'boolean') + } elseif ($type == 'boolean') { $morecss = ''; - } - else { + } else { if (round($size) < 12) { $morecss = 'minwidth100'; - } - elseif (round($size) <= 48) + } elseif (round($size) <= 48) { $morecss = 'minwidth200'; - } - else { + } else { $morecss = 'minwidth400'; } } @@ -1051,46 +1022,38 @@ class ExtraFields // TODO Must also support $moreparam $out = $form->selectDate($value, $keyprefix.$key.$keysuffix, $showtime, $showtime, $required, '', 1, (($keyprefix != 'search_' && $keyprefix != 'search_options_') ? 1 : 0), 0, 1); - } - elseif (in_array($type, array('int', 'integer'))) + } elseif (in_array($type, array('int', 'integer'))) { $tmp = explode(',', $size); $newsize = $tmp[0]; $out = ''; - } - elseif (preg_match('/varchar/', $type)) + } elseif (preg_match('/varchar/', $type)) { $out = ''; - } - elseif (in_array($type, array('mail', 'phone', 'url'))) + } elseif (in_array($type, array('mail', 'phone', 'url'))) { $out = ''; - } - elseif ($type == 'text') + } elseif ($type == 'text') { if (!preg_match('/search_/', $keyprefix)) // If keyprefix is search_ or search_options_, we must just use a simple text field { require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($keyprefix.$key.$keysuffix, $value, '', 200, 'dolibarr_notes', 'In', false, false, false, ROWS_5, '90%'); $out = $doleditor->Create(1); - } - else { + } else { $out = ''; } - } - elseif ($type == 'html') + } elseif ($type == 'html') { if (!preg_match('/search_/', $keyprefix)) // If keyprefix is search_ or search_options_, we must just use a simple text field { require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($keyprefix.$key.$keysuffix, $value, '', 200, 'dolibarr_notes', 'In', false, false, !empty($conf->fckeditor->enabled) && $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_5, '90%'); $out = $doleditor->Create(1); - } - else { + } else { $out = ''; } - } - elseif ($type == 'boolean') + } elseif ($type == 'boolean') { if (empty($mode)) { @@ -1101,26 +1064,22 @@ class ExtraFields $checked = ' value="1" '; } $out = ''; - } - else { + } else { $out .= $form->selectyesno($keyprefix.$key.$keysuffix, $value, 1, false, 1); } - } - elseif ($type == 'price') + } elseif ($type == 'price') { if (!empty($value)) { // $value in memory is a php numeric, we format it into user number format. $value = price($value); } $out = ' '.$langs->getCurrencySymbol($conf->currency); - } - elseif ($type == 'double') + } elseif ($type == 'double') { if (!empty($value)) { // $value in memory is a php numeric, we format it into user number format. $value = price($value); } $out = ' '; - } - elseif ($type == 'select') + } elseif ($type == 'select') { $out = ''; if (!empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_EXTRAFIELDS_USE_SELECT2)) @@ -1144,8 +1103,7 @@ class ExtraFields $out .= ''; } $out .= ''; - } - elseif ($type == 'sellist') + } elseif ($type == 'sellist') { $out = ''; if (!empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_EXTRAFIELDS_USE_SELECT2)) @@ -1304,13 +1262,11 @@ class ExtraFields } } $out .= ''; - } - elseif ($type == 'checkbox') + } elseif ($type == 'checkbox') { $value_arr = explode(',', $value); $out = $form->multiselectarray($keyprefix.$key.$keysuffix, (empty($param['options']) ?null:$param['options']), $value_arr, '', 0, '', 0, '100%'); - } - elseif ($type == 'radio') + } elseif ($type == 'radio') { $out = ''; foreach ($param['options'] as $keyopt => $val) @@ -1321,13 +1277,11 @@ class ExtraFields $out .= ($value == $keyopt ? 'checked' : ''); $out .= '/>
'; } - } - elseif ($type == 'chkbxlst') + } elseif ($type == 'chkbxlst') { if (is_array($value)) { $value_arr = $value; - } - else { + } else { $value_arr = explode(',', $value); } @@ -1525,14 +1479,12 @@ class ExtraFields $out = $form->multiselectarray($keyprefix.$key.$keysuffix, $data, $value_arr, '', 0, '', 0, '100%'); } } - } - elseif ($type == 'link') + } elseif ($type == 'link') { $param_list = array_keys($param['options']); // $param_list='ObjectName:classPath' $showempty = (($required && $default != '') ? 0 : 1); $out = $form->selectForForms($param_list[0], $keyprefix.$key.$keysuffix, $value, $showempty, '', '', $morecss); - } - elseif ($type == 'password') + } elseif ($type == 'password') { // If prefix is 'search_', field is used as a filter, we use a common text field. $out = ''; // Hidden field to reduce impact of evil Google Chrome autopopulate bug. @@ -1580,8 +1532,7 @@ class ExtraFields $list = dol_eval($this->attributes[$extrafieldsobjectkey]['list'][$key], 1); $help = $this->attributes[$extrafieldsobjectkey]['help'][$key]; $hidden = (empty($list) ? 1 : 0); // If $list empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller) - } - else // Old usage + } else // Old usage { //dol_syslog("Warning: parameter 'extrafieldsobjectkey' is missing", LOG_WARNING); $label = $this->attribute_label[$key]; @@ -1608,17 +1559,14 @@ class ExtraFields { $showsize = 10; $value = dol_print_date($value, 'day'); - } - elseif ($type == 'datetime') + } elseif ($type == 'datetime') { $showsize = 19; $value = dol_print_date($value, 'dayhour'); - } - elseif ($type == 'int') + } elseif ($type == 'int') { $showsize = 10; - } - elseif ($type == 'double') + } elseif ($type == 'double') { if (!empty($value)) { //$value=price($value); @@ -1626,38 +1574,31 @@ class ExtraFields $number_decimals = $sizeparts[1]; $value = price($value, 0, $langs, 0, 0, $number_decimals, ''); } - } - elseif ($type == 'boolean') + } elseif ($type == 'boolean') { $checked = ''; if (!empty($value)) { $checked = ' checked '; } $value = ''; - } - elseif ($type == 'mail') + } elseif ($type == 'mail') { $value = dol_print_email($value, 0, 0, 0, 64, 1, 1); - } - elseif ($type == 'url') + } elseif ($type == 'url') { $value = dol_print_url($value, '_blank', 32, 1); - } - elseif ($type == 'phone') + } elseif ($type == 'phone') { $value = dol_print_phone($value, '', 0, 0, '', ' ', 'phone'); - } - elseif ($type == 'price') + } elseif ($type == 'price') { //$value = price($value, 0, $langs, 0, 0, -1, $conf->currency); if ($value || $value == '0') $value = price($value, 0, $langs, 0, 0, -1); - } - elseif ($type == 'select') + } elseif ($type == 'select') { if ($langfile && $param['options'][$value]) $value = $langs->trans($param['options'][$value]); else $value = $param['options'][$value]; - } - elseif ($type == 'sellist') + } elseif ($type == 'sellist') { $param_list = array_keys($param['options']); $InfoFieldList = explode(":", $param_list[0]); @@ -1718,8 +1659,7 @@ class ExtraFields $value .= $obj->$field_toshow.' '; } } - } - else { + } else { $translabel = ''; if (!empty($obj->{$InfoFieldList[1]})) { $translabel = $langs->trans($obj->{$InfoFieldList[1]}); @@ -1730,14 +1670,11 @@ class ExtraFields $value = $obj->{$InfoFieldList[1]}; } } - } - else dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING); - } - elseif ($type == 'radio') + } else dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING); + } elseif ($type == 'radio') { $value = $param['options'][$value]; - } - elseif ($type == 'checkbox') + } elseif ($type == 'checkbox') { $value_arr = explode(',', $value); $value = ''; @@ -1749,8 +1686,7 @@ class ExtraFields } } $value = '
    '.implode(' ', $toprint).'
'; - } - elseif ($type == 'chkbxlst') + } elseif ($type == 'chkbxlst') { $value_arr = explode(',', $value); @@ -1817,8 +1753,7 @@ class ExtraFields } else { dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING); } - } - elseif ($type == 'link') + } elseif ($type == 'link') { $out = ''; @@ -1839,26 +1774,21 @@ class ExtraFields $object->fetch($value); $value = $object->getNomUrl(3); } - } - else { + } else { dol_syslog('Error bad setup of extrafield', LOG_WARNING); return 'Error bad setup of extrafield'; } } - } - elseif ($type == 'text') + } elseif ($type == 'text') { $value = dol_htmlentitiesbr($value); - } - elseif ($type == 'html') + } elseif ($type == 'html') { $value = dol_htmlentitiesbr($value); - } - elseif ($type == 'password') + } elseif ($type == 'password') { $value = dol_trunc(preg_replace('/./i', '*', $value), 8, 'right', 'UTF-8', 1); - } - else { + } else { $showsize = round($size); if ($showsize > 48) $showsize = 48; } @@ -1888,36 +1818,28 @@ class ExtraFields if ($type == 'date') { $align = "center"; - } - elseif ($type == 'datetime') + } elseif ($type == 'datetime') { $align = "center"; - } - elseif ($type == 'int') + } elseif ($type == 'int') { $align = "right"; - } - elseif ($type == 'price') + } elseif ($type == 'price') { $align = "right"; - } - elseif ($type == 'double') + } elseif ($type == 'double') { $align = "right"; - } - elseif ($type == 'boolean') + } elseif ($type == 'boolean') { $align = "center"; - } - elseif ($type == 'radio') + } elseif ($type == 'radio') { $align = "center"; - } - elseif ($type == 'checkbox') + } elseif ($type == 'checkbox') { $align = "center"; - } - elseif ($type == 'price') + } elseif ($type == 'price') { $align = "right"; } @@ -2040,14 +1962,12 @@ class ExtraFields // Clean parameters // TODO GMT date in memory must be GMT so we should add gm=true in parameters $value_key = dol_mktime(0, 0, 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]); - } - elseif (in_array($key_type, array('datetime'))) + } elseif (in_array($key_type, array('datetime'))) { // Clean parameters // TODO GMT date in memory must be GMT so we should add gm=true in parameters $value_key = dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]); - } - elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) + } elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) { $value_arr = GETPOST("options_".$key, 'array'); // check if an array if (!empty($value_arr)) { @@ -2055,13 +1975,11 @@ class ExtraFields } else { $value_key = ''; } - } - elseif (in_array($key_type, array('price', 'double'))) + } elseif (in_array($key_type, array('price', 'double'))) { $value_arr = GETPOST("options_".$key, 'alpha'); $value_key = price2num($value_arr); - } - else { + } else { $value_key = GETPOST("options_".$key); if (in_array($key_type, array('link')) && $value_key == '-1') $value_key = ''; } @@ -2073,12 +1991,10 @@ class ExtraFields $langs->load('errors'); setEventMessages($langs->trans('ErrorFieldsRequired').' : '.implode(', ', $error_field_required), null, 'errors'); return -1; - } - else { + } else { return 1; } - } - else { + } else { return 0; } } @@ -2098,8 +2014,7 @@ class ExtraFields if (is_string($extrafieldsobjectkey) && is_array($this->attributes[$extrafieldsobjectkey]['label'])) { $extralabels = $this->attributes[$extrafieldsobjectkey]['label']; - } - else { + } else { $extralabels = $extrafieldsobjectkey; } @@ -2121,22 +2036,19 @@ class ExtraFields if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix."year")) continue; // Value was not provided, we should not set it. // Clean parameters $value_key = dol_mktime(GETPOST($keysuffix."options_".$key.$keyprefix."hour", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."min", 'int'), 0, GETPOST($keysuffix."options_".$key.$keyprefix."month", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."day", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."year", 'int')); - } - elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) + } elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) { if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix); // Make sure we get an array even if there's only one checkbox $value_arr = (array) $value_arr; $value_key = implode(',', $value_arr); - } - elseif (in_array($key_type, array('price', 'double', 'int'))) + } elseif (in_array($key_type, array('price', 'double', 'int'))) { if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix); $value_key = price2num($value_arr); - } - else { + } else { if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. $value_key = GETPOST($keysuffix."options_".$key.$keyprefix); } diff --git a/htdocs/core/class/fileupload.class.php b/htdocs/core/class/fileupload.class.php index f549c7520f7..c941a3a0745 100644 --- a/htdocs/core/class/fileupload.class.php +++ b/htdocs/core/class/fileupload.class.php @@ -64,46 +64,36 @@ class FileUpload if ($element == 'propal') { $pathname = 'comm/propal'; $dir_output = $conf->$element->dir_output; - } - elseif ($element == 'facture') { + } elseif ($element == 'facture') { $pathname = 'compta/facture'; $dir_output = $conf->$element->dir_output; - } - elseif ($element == 'project') { + } elseif ($element == 'project') { $element = $pathname = 'projet'; $dir_output = $conf->$element->dir_output; - } - elseif ($element == 'project_task') { + } elseif ($element == 'project_task') { $pathname = 'projet'; $filename = 'task'; $dir_output = $conf->projet->dir_output; $parentForeignKey = 'fk_project'; $parentClass = 'Project'; $parentElement = 'projet'; $parentObject = 'project'; - } - elseif ($element == 'fichinter') { + } elseif ($element == 'fichinter') { $element = 'ficheinter'; $dir_output = $conf->$element->dir_output; - } - elseif ($element == 'order_supplier') { + } elseif ($element == 'order_supplier') { $pathname = 'fourn'; $filename = 'fournisseur.commande'; $dir_output = $conf->fournisseur->commande->dir_output; - } - elseif ($element == 'invoice_supplier') { + } elseif ($element == 'invoice_supplier') { $pathname = 'fourn'; $filename = 'fournisseur.facture'; $dir_output = $conf->fournisseur->facture->dir_output; - } - elseif ($element == 'product') { + } elseif ($element == 'product') { $dir_output = $conf->product->multidir_output[$conf->entity]; - } - elseif ($element == 'productbatch') { + } elseif ($element == 'productbatch') { $dir_output = $conf->productbatch->multidir_output[$conf->entity]; - } - elseif ($element == 'action') { + } elseif ($element == 'action') { $pathname = 'comm/action'; $filename = 'actioncomm'; $dir_output = $conf->agenda->dir_output; - } - elseif ($element == 'chargesociales') { + } elseif ($element == 'chargesociales') { $pathname = 'compta/sociales'; $filename = 'chargesociales'; $dir_output = $conf->tax->dir_output; } else { @@ -298,8 +288,7 @@ class FileUpload if (preg_match('/error/i', $res)) return false; return true; - } - else { + } else { return false; } } @@ -450,8 +439,7 @@ class FileUpload } else { dol_move_uploaded_file($uploaded_file, $file_path, 1, 0, 0, 0, 'userfile'); } - } - else { + } else { // Non-multipart uploads (PUT method support) file_put_contents($file_path, fopen('php://input', 'r'), $append_file ? FILE_APPEND : 0); } @@ -467,8 +455,7 @@ class FileUpload $file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]); } } - } - elseif ($this->options['discard_aborted_uploads']) + } elseif ($this->options['discard_aborted_uploads']) { unlink($file_path); $file->error = 'abort'; @@ -491,8 +478,7 @@ class FileUpload if ($file_name) { $info = $this->getFileObject($file_name); - } - else { + } else { $info = $this->getFileObjects(); } header('Content-type: application/json'); diff --git a/htdocs/core/class/fiscalyear.class.php b/htdocs/core/class/fiscalyear.class.php index a09d0bc3e30..0686b68115a 100644 --- a/htdocs/core/class/fiscalyear.class.php +++ b/htdocs/core/class/fiscalyear.class.php @@ -157,14 +157,12 @@ class Fiscalyear extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return $result; } - } - else { + } else { $this->error = $this->db->lasterror()." sql=".$sql; $this->db->rollback(); return -1; @@ -204,8 +202,7 @@ class Fiscalyear extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); dol_syslog($this->error, LOG_ERR); $this->db->rollback(); @@ -239,8 +236,7 @@ class Fiscalyear extends CommonObject $this->statut = $obj->statut; return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -264,8 +260,7 @@ class Fiscalyear extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -299,27 +294,22 @@ class Fiscalyear extends CommonObject if ($mode == 0) { return $langs->trans($this->statuts[$status]); - } - elseif ($mode == 1) + } elseif ($mode == 1) { return $langs->trans($this->statuts_short[$status]); - } - elseif ($mode == 2) + } elseif ($mode == 2) { if ($status == 0) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts_short[$status]); elseif ($status == 1) return img_picto($langs->trans($this->statuts_short[$status]), 'statut8').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($mode == 3) + } elseif ($mode == 3) { if ($status == 0 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); elseif ($status == 1 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut8'); - } - elseif ($mode == 4) + } elseif ($mode == 4) { if ($status == 0 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts[$status]); elseif ($status == 1 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut8').' '.$langs->trans($this->statuts[$status]); - } - elseif ($mode == 5) + } elseif ($mode == 5) { if ($status == 0 && !empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); elseif ($status == 1 && !empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); @@ -364,8 +354,7 @@ class Fiscalyear extends CommonObject $this->date_modification = $this->db->jdate($obj->tms); } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -396,8 +385,7 @@ class Fiscalyear extends CommonObject { $obj = $this->db->fetch_object($resql); $nb = $obj->nb; - } - else dol_print_error($this->db); + } else dol_print_error($this->db); return $nb; } @@ -428,8 +416,7 @@ class Fiscalyear extends CommonObject { $obj = $this->db->fetch_object($resql); $nb = $obj->nb; - } - else dol_print_error($this->db); + } else dol_print_error($this->db); return $nb; } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 353102b6189..bfccd8e9b03 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -124,8 +124,7 @@ class Form } if ($fieldrequired) $ret .= ''; $ret .= ''."\n"; - } - else { + } else { if ($fieldrequired) $ret .= ''; if ($help) { $ret .= $this->textwithpicto($langs->trans($text), $help); @@ -134,8 +133,7 @@ class Form } if ($fieldrequired) $ret .= ''; } - } - else { + } else { if (empty($notabletag) && GETPOST('action', 'aZ09') != 'edit'.$htmlname && $perm) $ret .= '
'; if ($fieldrequired) $ret .= ''; if ($help) { @@ -188,8 +186,7 @@ class Form if (!empty($conf->global->MAIN_USE_JQUERY_JEDITABLE) && !preg_match('/^select;|datehourpicker/', $typeofdata)) // TODO add jquery timepicker and support select { $ret .= $this->editInPlace($object, $value, $htmlname, $perm, $typeofdata, $editvalue, $extObject, $custommsg); - } - else { + } else { if (GETPOST('action', 'aZ09') == 'edit'.$htmlname) { $ret .= "\n"; @@ -203,14 +200,12 @@ class Form { $tmp = explode(':', $typeofdata); $ret .= ''; - } - elseif (preg_match('/^(numeric|amount)/', $typeofdata)) + } elseif (preg_match('/^(numeric|amount)/', $typeofdata)) { $tmp = explode(':', $typeofdata); $valuetoshow = price2num($editvalue ? $editvalue : $value); $ret .= ''; - } - elseif (preg_match('/^text/', $typeofdata) || preg_match('/^note/', $typeofdata)) // if wysiwyg is enabled $typeofdata = 'ckeditor' + } elseif (preg_match('/^text/', $typeofdata) || preg_match('/^note/', $typeofdata)) // if wysiwyg is enabled $typeofdata = 'ckeditor' { $tmp = explode(':', $typeofdata); $cols = $tmp[2]; @@ -228,16 +223,13 @@ class Form $valuetoshow = str_replace('&', '&', $valuetoshow); $ret .= dol_string_neverthesehtmltags($valuetoshow, array('textarea')); $ret .= ''; - } - elseif ($typeofdata == 'day' || $typeofdata == 'datepicker') + } elseif ($typeofdata == 'day' || $typeofdata == 'datepicker') { $ret .= $this->selectDate($value, $htmlname, 0, 0, 1, 'form'.$htmlname, 1, 0); - } - elseif ($typeofdata == 'dayhour' || $typeofdata == 'datehourpicker') + } elseif ($typeofdata == 'dayhour' || $typeofdata == 'datehourpicker') { $ret .= $this->selectDate($value, $htmlname, 1, 1, 1, 'form'.$htmlname, 1, 0); - } - elseif (preg_match('/^select;/', $typeofdata)) + } elseif (preg_match('/^select;/', $typeofdata)) { $arraydata = explode(',', preg_replace('/^select;/', '', $typeofdata)); $arraylist = array(); @@ -248,8 +240,7 @@ class Form $arraylist[$tmpkey] = $tmp[1]; } $ret .= $this->selectarray($htmlname, $arraylist, $value); - } - elseif (preg_match('/^ckeditor/', $typeofdata)) + } elseif (preg_match('/^ckeditor/', $typeofdata)) { $tmp = explode(':', $typeofdata); // Example: ckeditor:dolibarr_zzz:width:height:savemethod:toolbarstartexpanded:rows:cols:uselocalbrowser require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; @@ -267,8 +258,7 @@ class Form if (empty($notabletag)) $ret .= '
'."\n"; $ret .= ''."\n"; - } - else { + } else { if (preg_match('/^(email)/', $typeofdata)) $ret .= dol_print_email($value, 0, 0, 0, 0, 1); elseif (preg_match('/^(amount|numeric)/', $typeofdata)) $ret .= ($value != '' ? price($value, '', $langs, 0, -1, -1, $conf->currency) : ''); elseif (preg_match('/^text/', $typeofdata) || preg_match('/^note/', $typeofdata)) $ret .= dol_htmlentitiesbr($value); @@ -285,8 +275,7 @@ class Form $arraylist[$tmp[0]] = $tmp[1]; } $ret .= $arraylist[$value]; - } - elseif (preg_match('/^ckeditor/', $typeofdata)) + } elseif (preg_match('/^ckeditor/', $typeofdata)) { $tmpcontent = dol_htmlentitiesbr($value); if (!empty($conf->global->MAIN_DISABLE_NOTES_TAB)) @@ -298,8 +287,7 @@ class Form // We dont use dol_escape_htmltag to get the html formating active, but this need we must also // clean data from some dangerous html $ret .= dol_string_onlythesehtmltags(dol_htmlentitiesbr($tmpcontent)); - } - else { + } else { $ret .= dol_escape_htmltag($value); } @@ -437,8 +425,7 @@ class Form if (!empty($tmp[1])) $inputOption = $tmp[1]; if (!empty($tmp[2])) $savemethod = $tmp[2]; $out .= ''."\n"; - } - elseif ((preg_match('/^day$/', $inputType)) || (preg_match('/^datepicker/', $inputType)) || (preg_match('/^datehourpicker/', $inputType))) + } elseif ((preg_match('/^day$/', $inputType)) || (preg_match('/^datepicker/', $inputType)) || (preg_match('/^datehourpicker/', $inputType))) { $tmp = explode(':', $inputType); $inputType = $tmp[0]; @@ -446,22 +433,19 @@ class Form if (!empty($tmp[2])) $savemethod = $tmp[2]; $out .= ''."\n"; // Use for timestamp format - } - elseif (preg_match('/^(select|autocomplete)/', $inputType)) + } elseif (preg_match('/^(select|autocomplete)/', $inputType)) { $tmp = explode(':', $inputType); $inputType = $tmp[0]; $loadmethod = $tmp[1]; if (!empty($tmp[2])) $savemethod = $tmp[2]; if (!empty($tmp[3])) $button_only = true; - } - elseif (preg_match('/^textarea/', $inputType)) + } elseif (preg_match('/^textarea/', $inputType)) { $tmp = explode(':', $inputType); $inputType = $tmp[0]; $rows = (empty($tmp[1]) ? '8' : $tmp[1]); $cols = (empty($tmp[2]) ? '80' : $tmp[2]); - } - elseif (preg_match('/^ckeditor/', $inputType)) + } elseif (preg_match('/^ckeditor/', $inputType)) { $tmp = explode(':', $inputType); $inputType = $tmp[0]; $toolbar = $tmp[1]; @@ -472,8 +456,7 @@ class Form if (!empty($conf->fckeditor->enabled)) { $out .= ''."\n"; - } - else { + } else { $inputType = 'textarea'; } } @@ -492,8 +475,7 @@ class Form $out .= ''."\n"; if (!empty($custommsg['error'])) $out .= ''."\n"; - } - else $out .= ''."\n"; + } else $out .= ''."\n"; } if ($inputType == 'textarea') { $out .= ''."\n"; @@ -501,8 +483,7 @@ class Form } $out .= ''.$value.''."\n"; $out .= ''.(!empty($editvalue) ? $editvalue : $value).''."\n"; - } - else { + } else { $out = $value; } @@ -550,8 +531,7 @@ class Form if ($tooltiptrigger == '') { $htmltext = str_replace('"', '"', $htmltext); - } - else { + } else { $classfortooltip = 'classfortooltiponclick'; $textfordialog .= ''; } @@ -560,15 +540,13 @@ class Form $paramfortooltipimg = ' class="'.$classfortooltip.($notabs != 3 ? ' inline-block' : '').($extracss ? ' '.$extracss : '').'" style="padding: 0px;'.($extrastyle ? ' '.$extrastyle : '').'"'; if ($tooltiptrigger == '') $paramfortooltipimg .= ' title="'.($noencodehtmltext ? $htmltext : dol_escape_htmltag($htmltext, 1)).'"'; // Attribut to put on img tag to store tooltip else $paramfortooltipimg .= ' dolid="'.$tooltiptrigger.'"'; - } - else $paramfortooltipimg = ($extracss ? ' class="'.$extracss.'"' : '').($extrastyle ? ' style="'.$extrastyle.'"' : ''); // Attribut to put on td text tag + } else $paramfortooltipimg = ($extracss ? ' class="'.$extracss.'"' : '').($extrastyle ? ' style="'.$extrastyle.'"' : ''); // Attribut to put on td text tag if ($tooltipon == 1 || $tooltipon == 3) { $paramfortooltiptd = ' class="'.($tooltipon == 3 ? 'cursorpointer ' : '').$classfortooltip.' inline-block'.($extracss ? ' '.$extracss : '').'" style="padding: 0px;'.($extrastyle ? ' '.$extrastyle : '').'" '; if ($tooltiptrigger == '') $paramfortooltiptd .= ' title="'.($noencodehtmltext ? $htmltext : dol_escape_htmltag($htmltext, 1)).'"'; // Attribut to put on td tag to store tooltip else $paramfortooltiptd .= ' dolid="'.$tooltiptrigger.'"'; - } - else $paramfortooltiptd = ($extracss ? ' class="'.$extracss.'"' : '').($extrastyle ? ' style="'.$extrastyle.'"' : ''); // Attribut to put on td text tag + } else $paramfortooltiptd = ($extracss ? ' class="'.$extracss.'"' : '').($extrastyle ? ' style="'.$extrastyle.'"' : ''); // Attribut to put on td text tag if (empty($notabs)) $s .= ''; elseif ($notabs == 2) $s .= '
'; // Define value if value is before @@ -849,8 +827,7 @@ class Form { $foundselected = true; $out .= ''; - } - else { + } else { $out .= ''; } - } - else { + } else { array_push($outarray, array('key'=>$obj->rowid, 'value'=>$label, 'label'=>$label)); } @@ -1357,8 +1326,7 @@ class Form } } $out .= ''."\n"; - } - else { + } else { dol_print_error($this->db); } @@ -1438,8 +1406,7 @@ class Form } print ''; return $qualifiedlines; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -1569,8 +1536,7 @@ class Form if ($showfunction && $obj->poste) $out .= ' ('.$obj->poste.')'; if (($showsoc > 0) && $obj->company) $out .= ' - ('.$obj->company.')'; $out .= ''; - } - else { + } else { $out .= ''; } - } - else { + } else { if (in_array($obj->rowid, $selected)) { $out .= $contactstatic->getFullName($langs); @@ -1591,8 +1556,7 @@ class Form } $i++; } - } - else { + } else { $out .= ''; @@ -1616,8 +1580,7 @@ class Form $this->num = $num; return $out; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -1691,8 +1654,7 @@ class Form { // Build list includeUsers to have only hierarchy $includeUsers = implode(",", $user->getAllChildIds(0)); - } - elseif ($include == 'hierarchyme') + } elseif ($include == 'hierarchyme') { // Build list includeUsers to have only hierarchy and current user $includeUsers = implode(",", $user->getAllChildIds(1)); @@ -1713,15 +1675,13 @@ class Form $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."entity as e ON e.rowid=u.entity"; if ($force_entity) $sql .= " WHERE u.entity IN (0,".$force_entity.")"; else $sql .= " WHERE u.entity IS NOT NULL"; - } - else { + } else { if (!empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ug"; $sql .= " ON ug.fk_user = u.rowid"; $sql .= " WHERE ug.entity = ".$conf->entity; - } - else { + } else { $sql .= " WHERE u.entity IN (0,".$conf->entity.")"; } } @@ -1738,8 +1698,7 @@ class Form if (empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)) // MAIN_FIRSTNAME_NAME_POSITION is 0 means firstname+lastname { $sql .= " ORDER BY u.firstname ASC"; - } - else { + } else { $sql .= " ORDER BY u.lastname ASC"; } @@ -1778,8 +1737,7 @@ class Form $out .= ''; @@ -2397,8 +2342,7 @@ class Form array_push($outarray, $optJson); } } - } - else { + } else { if (!empty($conf->dynamicprices->enabled) && !empty($objp->fk_price_expression)) { $price_product = new Product($this->db); $price_product->fetch($objp->rowid, '', '', 1); @@ -2430,8 +2374,7 @@ class Form if (empty($outputmode)) return $out; return $outarray; - } - else { + } else { dol_print_error($db); } } @@ -2581,8 +2524,7 @@ class Form { $opt .= ' - '.price($objp2->price, 1, $langs, 0, 0, -1, $conf->currency).' '.$langs->trans("HT"); $outval .= ' - '.price($objp2->price, 0, $langs, 0, 0, -1, $conf->currency).' '.$langs->transnoentities("HT"); - } - else { + } else { $opt .= ' - '.price($objp2->price_ttc, 1, $langs, 0, 0, -1, $conf->currency).' '.$langs->trans("TTC"); $outval .= ' - '.price($objp2->price_ttc, 0, $langs, 0, 0, -1, $conf->currency).' '.$langs->transnoentities("TTC"); } @@ -2591,8 +2533,7 @@ class Form $outpricebasetype = $objp2->price_base_type; $outtva_tx = $objp2->tva_tx; } - } - else { + } else { dol_print_error($this->db); } } @@ -2609,8 +2550,7 @@ class Form $outval .= ' - '.price($objp->unitprice, 0, $langs, 0, 0, -1, $conf->currency)."/"; $opt .= $langs->trans("Unit"); // Do not use strtolower because it breaks utf8 encoding $outval .= $langs->transnoentities("Unit"); - } - else { + } else { $opt .= ' - '.price($objp->price, 1, $langs, 0, 0, -1, $conf->currency)."/".$objp->quantity; $outval .= ' - '.price($objp->price, 0, $langs, 0, 0, -1, $conf->currency)."/".$objp->quantity; $opt .= $langs->trans("Units"); // Do not use strtolower because it breaks utf8 encoding @@ -2644,8 +2584,7 @@ class Form { $opt .= ' - '.price($objp->custprice, 1, $langs, 0, 0, -1, $conf->currency).' '.$langs->trans("HT"); $outval .= ' - '.price($objp->custprice, 0, $langs, 0, 0, -1, $conf->currency).' '.$langs->transnoentities("HT"); - } - else { + } else { $opt .= ' - '.price($objp->custprice_ttc, 1, $langs, 0, 0, -1, $conf->currency).' '.$langs->trans("TTC"); $outval .= ' - '.price($objp->custprice_ttc, 0, $langs, 0, 0, -1, $conf->currency).' '.$langs->transnoentities("TTC"); } @@ -2664,8 +2603,7 @@ class Form { $opt .= ' - '.price($objp->price, 1, $langs, 0, 0, -1, $conf->currency).' '.$langs->trans("HT"); $outval .= ' - '.price($objp->price, 0, $langs, 0, 0, -1, $conf->currency).' '.$langs->transnoentities("HT"); - } - else { + } else { $opt .= ' - '.price($objp->price_ttc, 1, $langs, 0, 0, -1, $conf->currency).' '.$langs->trans("TTC"); $outval .= ' - '.price($objp->price_ttc, 0, $langs, 0, 0, -1, $conf->currency).' '.$langs->transnoentities("TTC"); } @@ -2682,7 +2620,7 @@ class Form if ($objp->stock > 0) { $outval .= ' - '; - }elseif ($objp->stock <= 0) { + } elseif ($objp->stock <= 0) { $outval .= ' - '; } $outval .= $langs->transnoentities("Stock").':'.$objp->stock; @@ -2701,7 +2639,7 @@ class Form $outval .= ' - '.$langs->transnoentities("VirtualStock").':'; if ($virtualstock > 0) { $outval .= ' - '; - }elseif ($virtualstock <= 0) { + } elseif ($virtualstock <= 0) { $outval .= ' - '; } $outval .= $virtualstock; @@ -2753,8 +2691,7 @@ class Form $urloption = ($socid > 0 ? 'socid='.$socid.'&' : '').'htmlname='.$htmlname.'&outjson=1&price_level='.$price_level.'&type='.$filtertype.'&mode=2&status='.$status.'&finished='.$finished.'&alsoproductwithnosupplierprice='.$alsoproductwithnosupplierprice; print ajax_autocompleter($selected, $htmlname, DOL_URL_ROOT.'/product/ajax/products.php', $urloption, $conf->global->PRODUIT_USE_SEARCH_TO_SELECT, 0, $ajaxoptions); print ($hidelabel ? '' : $langs->trans("RefOrLabel").' : ').''; - } - else { + } else { print $this->select_produits_fournisseurs_list($socid, $selected, $htmlname, $filtertype, $filtre, '', -1, 0, 0, $alsoproductwithnosupplierprice, $morecss); } } @@ -2963,8 +2900,7 @@ class Form $outvallabel .= ' - '.price($objp->fprice * (!empty($conf->global->DISPLAY_DISCOUNTED_SUPPLIER_PRICE) ? (1 - $objp->remise_percent / 100) : 1), 0, $langs, 0, 0, -1, $conf->currency)."/"; $optlabel .= $langs->trans("Unit"); // Do not use strtolower because it breaks utf8 encoding $outvallabel .= $langs->transnoentities("Unit"); - } - else { + } else { $optlabel .= ' - '.price($objp->fprice * (!empty($conf->global->DISPLAY_DISCOUNTED_SUPPLIER_PRICE) ? (1 - $objp->remise_percent / 100) : 1), 1, $langs, 0, 0, -1, $conf->currency)."/".$objp->quantity; $outvallabel .= ' - '.price($objp->fprice * (!empty($conf->global->DISPLAY_DISCOUNTED_SUPPLIER_PRICE) ? (1 - $objp->remise_percent / 100) : 1), 0, $langs, 0, 0, -1, $conf->currency)."/".$objp->quantity; $optlabel .= ' '.$langs->trans("Units"); // Do not use strtolower because it breaks utf8 encoding @@ -2999,14 +2935,12 @@ class Form $optlabel .= " - ".$reputations[$objp->supplier_reputation]; $outvallabel .= " - ".$reputations[$objp->supplier_reputation]; } - } - else { + } else { if (empty($alsoproductwithnosupplierprice)) // No supplier price defined for couple product/supplier { $optlabel .= " - ".$langs->trans("NoPriceDefinedForThisSupplier").''; $outvallabel .= ' - '.$langs->transnoentities("NoPriceDefinedForThisSupplier"); - } - else // No supplier price defined for product, even on other suppliers + } else // No supplier price defined for product, even on other suppliers { $optlabel .= " - ".$langs->trans("NoPriceDefinedForThisSupplier").''; $outvallabel .= ' - '.$langs->transnoentities("NoPriceDefinedForThisSupplier"); @@ -3054,8 +2988,7 @@ class Form if (empty($outputmode)) return $out; return $outarray; - } - else { + } else { dol_print_error($this->db); } } @@ -3100,8 +3033,7 @@ class Form if (!$num) { $form .= ''; - } - else { + } else { require_once DOL_DOCUMENT_ROOT.'/product/dynamic_price/class/price_parser.class.php'; $form .= ''; @@ -3144,8 +3076,7 @@ class Form if ($objp->quantity == 1) { $opt .= $langs->trans("Unit"); - } - else { + } else { $opt .= $langs->trans("Units"); } if ($objp->quantity > 1) @@ -3164,8 +3095,7 @@ class Form $form .= ''; $this->db->free($result); return $form; - } - else { + } else { dol_print_error($this->db); } } @@ -3206,8 +3136,7 @@ class Form if ($selected && $selected == $obj->rowid) { print ''; - } - else { + } else { print ''; } $i++; @@ -3215,8 +3144,7 @@ class Form } print ''; return $num; - } - else { + } else { dol_print_error($this->db); } } @@ -3263,8 +3191,7 @@ class Form //$this->cache_conditions_paiements=dol_sort_array($this->cache_conditions_paiements, 'label', 'asc', 0, 0, 1); // We use the field sortorder of table return $num; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -3311,8 +3238,7 @@ class Form $this->cache_availability = dol_sort_array($this->cache_availability, 'label', 'asc', 0, 0, 1); return $num; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -3342,8 +3268,7 @@ class Form if ($selected == $id) { print ''; @@ -3770,8 +3690,7 @@ class Form } } } - } - else { + } else { dol_syslog("Error sql=".$sql.", error=".$this->error, LOG_ERR); } if ($opt == '') @@ -3816,8 +3735,7 @@ class Form if ($selected == $res->rowid) { $return .= ''; - } - else { + } else { $return .= ''; } } @@ -3875,8 +3793,7 @@ class Form if ($selected == $obj->rowid) { print ''; @@ -4187,19 +4096,16 @@ class Form if ($input['type'] == 'text') { $more .= '
'.$input['label'].'
'."\n"; - } - elseif ($input['type'] == 'password') + } elseif ($input['type'] == 'password') { $more .= '
'.$input['label'].'
'."\n"; - } - elseif ($input['type'] == 'select') + } elseif ($input['type'] == 'select') { $more .= '
'; if (!empty($input['label'])) $more .= $input['label'].'
'; $more .= $this->selectarray($input['name'], $input['values'], $input['default'], 1, 0, 0, $moreattr, 0, 0, 0, '', $morecss); $more .= '
'."\n"; - } - elseif ($input['type'] == 'checkbox') + } elseif ($input['type'] == 'checkbox') { $more .= '
'; $more .= '
'.$input['label'].'
'; @@ -4209,8 +4115,7 @@ class Form if (isset($input['disabled'])) $more .= ' disabled'; $more .= ' />
'; $more .= '
'."\n"; - } - elseif ($input['type'] == 'radio') + } elseif ($input['type'] == 'radio') { $i = 0; foreach ($input['values'] as $selkey => $selval) @@ -4225,8 +4130,7 @@ class Form $more .= '
'."\n"; $i++; } - } - elseif ($input['type'] == 'date') + } elseif ($input['type'] == 'date') { $more .= '
'.$input['label'].'
'; $more .= '
'; @@ -4237,16 +4141,13 @@ class Form $formquestion[] = array('name'=>$input['name'].'year'); $formquestion[] = array('name'=>$input['name'].'hour'); $formquestion[] = array('name'=>$input['name'].'min'); - } - elseif ($input['type'] == 'other') + } elseif ($input['type'] == 'other') { $more .= '
'; if (!empty($input['label'])) $more .= $input['label'].'
'; $more .= $input['value']; $more .= '
'."\n"; - } - - elseif ($input['type'] == 'onecolumn') + } elseif ($input['type'] == 'onecolumn') { $moreonecolumn .= '
'; $moreonecolumn .= $input['value']; @@ -4371,8 +4272,7 @@ class Form }); '; $formconfirm .= "\n"; - } - else { + } else { $formconfirm .= "\n\n"; if (empty($disableformtag)) $formconfirm .= '
'."\n"; @@ -4455,16 +4355,14 @@ class Form $out .= $formproject->select_projects($socid, $selected, $htmlname, $maxlength, 0, 1, $discard_closed, $forcefocus, 0, 0, '', 1); $out .= ''; $out .= ''; - } - else { + } else { if ($selected) { $projet = new Project($this->db); $projet->fetch($selected); //print ''.$projet->title.''; $out .= $projet->getNomUrl(0, '', 1); - } - else { + } else { $out .= " "; } } @@ -4499,8 +4397,7 @@ class Form $this->select_conditions_paiements($selected, $htmlname, -1, $addempty); print ''; print ''; - } - else { + } else { if ($selected) { $this->load_cache_conditions_paiements(); @@ -4533,8 +4430,7 @@ class Form $this->selectAvailabilityDelay($selected, $htmlname, -1, $addempty); print ''; print ''; - } - else { + } else { if ($selected) { $this->load_cache_availability(); @@ -4566,8 +4462,7 @@ class Form $this->selectInputReason($selected, $htmlname, -1, $addempty); print ''; print ''; - } - else { + } else { if ($selected) { $this->loadCacheInputReason(); @@ -4616,8 +4511,7 @@ class Form $ret .= ''; $ret .= '
'; $ret .= '
'; - } - else { + } else { if ($displayhour) $ret .= dol_print_date($selected, 'dayhour'); else $ret .= dol_print_date($selected, 'day'); } @@ -4651,8 +4545,7 @@ class Form print $this->select_dolusers($selected, $htmlname, 1, $exclude, 0, $include); print ''; print ''; - } - else { + } else { if ($selected) { require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; @@ -4690,8 +4583,7 @@ class Form $this->select_types_paiements($selected, $htmlname, $filtertype, 0, $addempty, 0, 0, $active); print ''; print ''; - } - else { + } else { if ($selected) { $this->load_cache_types_paiements(); @@ -4723,8 +4615,7 @@ class Form print $this->selectMultiCurrency($selected, $htmlname, 0); print ''; print ''; - } - else { + } else { dol_include_once('/core/lib/company.lib.php'); print !empty($selected) ? currency_name($selected, 1) : ' '; } @@ -4757,14 +4648,12 @@ class Form print ' '; print ''; print ''; - } - else { + } else { if (!empty($rate)) { print price($rate, 1, $langs, 1, 0); if ($currency && $rate != 1) print '   ('.price($rate, 1, $langs, 1, 0).' '.$currency.' = 1 '.$conf->currency.')'; - } - else { + } else { print 1; } } @@ -4802,8 +4691,7 @@ class Form { if (!$filter || $filter == "fk_invoice_supplier_source IS NULL") $translationKey = 'HasAbsoluteDiscountFromSupplier'; // If we want deposit to be substracted to payments only and not to total of final invoice else $translationKey = 'HasCreditNoteFromSupplier'; - } - else { + } else { if (!$filter || $filter == "fk_invoice_supplier_source IS NULL OR (description LIKE '(DEPOSIT)%' AND description NOT LIKE '(EXCESS PAID)%')") $translationKey = 'HasAbsoluteDiscountFromSupplier'; else $translationKey = 'HasCreditNoteFromSupplier'; } @@ -4812,8 +4700,7 @@ class Form { if (!$filter || $filter == "fk_facture_source IS NULL") $translationKey = 'CompanyHasAbsoluteDiscount'; // If we want deposit to be substracted to payments only and not to total of final invoice else $translationKey = 'CompanyHasCreditNote'; - } - else { + } else { if (!$filter || $filter == "fk_facture_source IS NULL OR (description LIKE '(DEPOSIT)%' AND description NOT LIKE '(EXCESS RECEIVED)%')") $translationKey = 'CompanyHasAbsoluteDiscount'; else $translationKey = 'CompanyHasCreditNote'; } @@ -4851,13 +4738,11 @@ class Form print ''; } print ''; - } - else { + } else { if ($selected) { print $selected; - } - else { + } else { print "0"; } } @@ -4895,8 +4780,7 @@ class Form print ''; print ''; print ''; - } - else { + } else { if ($selected) { require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; @@ -4938,16 +4822,14 @@ class Form $out .= $this->select_company($selected, $htmlname, $filter, $showempty, $showtype, $forcecombo, $events); $out .= ''; $out .= ''; - } - else { + } else { if ($selected) { require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; $soc = new Societe($this->db); $soc->fetch($selected); $out .= $soc->getNomUrl($langs); - } - else { + } else { $out .= " "; } } @@ -4995,16 +4877,14 @@ class Form if ($selected && $selected == $code_iso) { $out .= ''; @@ -5128,13 +5008,11 @@ class Form } return $num; - } - else { + } else { $this->error = ''.$langs->trans("ErrorNoVATRateDefinedForSellerCountry", $country_code).''; return -1; } - } - else { + } else { $this->error = ''.$this->db->error().''; return -2; } @@ -5189,8 +5067,7 @@ class Form if ($societe_vendeuse->id == $mysoc->id) { $return .= ''.$langs->trans("ErrorYourCountryIsNotDefined").''; - } - else { + } else { $return .= ''.$langs->trans("ErrorSupplierCountryIsNotDefined").''; } return $return; @@ -5205,8 +5082,7 @@ class Form if (is_object($societe_vendeuse)) { $code_country = "'".$societe_vendeuse->country_code."'"; - } - else { + } else { $code_country = "'".$mysoc->country_code."'"; // Pour compatibilite ascendente } if (!empty($conf->global->SERVICE_ARE_ECOMMERCE_200238EC)) // If option to have vat for end customer for services is on @@ -5221,12 +5097,10 @@ class Form { $code_country .= ",'".$societe_acheteuse->country_code."'"; } - } - elseif (!$idprod) // We don't know type of product + } elseif (!$idprod) // We don't know type of product { $code_country .= ",'".$societe_acheteuse->country_code."'"; - } - else { + } else { $prodstatic = new Product($this->db); $prodstatic->fetch($idprod); if ($prodstatic->type == Product::TYPE_SERVICE) // We know product is a service @@ -5300,8 +5174,7 @@ class Form $return .= ' selected'; $selectedfound = true; } - } - elseif ($rate['txtva'] == $defaulttx && $rate['nprtva'] == $defaultnpr) + } elseif ($rate['txtva'] == $defaulttx && $rate['nprtva'] == $defaultnpr) { $return .= ' selected'; $selectedfound = true; @@ -5312,8 +5185,7 @@ class Form if ($mysoc->country_code == 'IN' || !empty($conf->global->MAIN_VAT_LABEL_IS_POSITIVE_RATES)) { $return .= $rate['labelpositiverates']; - } - else { + } else { $return .= vatrate($rate['label']); } //$return.=($rate['code']?' '.$rate['code']:''); @@ -5323,8 +5195,7 @@ class Form } if (!$options_only) $return .= ''; - } - else { + } else { $return .= $this->error; } @@ -5425,8 +5296,7 @@ class Form $sday = (!empty($reg[3]) ? $reg[3] : ''); $shour = (!empty($reg[4]) ? $reg[4] : ''); $smin = (!empty($reg[5]) ? $reg[5] : ''); - } - elseif (strval($set_time) != '' && $set_time != -1) + } elseif (strval($set_time) != '' && $set_time != -1) { // set_time est un timestamps (0 possible) $syear = dol_print_date($set_time, "%Y"); @@ -5437,14 +5307,12 @@ class Form $shour = dol_print_date($set_time, "%H"); $smin = dol_print_date($set_time, "%M"); $ssec = dol_print_date($set_time, "%S"); - } - else { + } else { $shour = ''; $smin = ''; $ssec = ''; } - } - else { + } else { // Date est '' ou vaut -1 $syear = ''; $smonth = ''; @@ -5491,14 +5359,12 @@ class Form $base = DOL_URL_ROOT.'/core/'; $retstring .= ' onClick="showDP(\''.$base.'\',\''.$prefix.'\',\''.$langs->trans("FormatDateShortJavaInput").'\',\''.$langs->defaultlang.'\');"'; $retstring .= '>'.img_object($langs->trans("SelectDate"), 'calendarday', 'class="datecallink"').''; - } - else $retstring .= ''; + } else $retstring .= ''; $retstring .= ''."\n"; $retstring .= ''."\n"; $retstring .= ''."\n"; - } - elseif ($usecalendar == 'jquery') + } elseif ($usecalendar == 'jquery') { if (!$disabled) { @@ -5551,8 +5417,7 @@ class Form $retstring.=' });'; $retstring.='});'; $retstring.="";*/ - } - else { + } else { $retstring .= ''; } @@ -5560,8 +5425,7 @@ class Form $retstring .= ''."\n"; $retstring .= ''."\n"; $retstring .= ''."\n"; - } - else { + } else { $retstring .= "Bad value of MAIN_POPUP_CALENDAR"; } } @@ -5602,8 +5466,7 @@ class Form if ($emptydate || $set_time == -1) { $retstring .= ''; - } - else { + } else { $retstring .= ''; for ($year = $syear - 10; $year < $syear + 10; $year++) @@ -5678,8 +5541,7 @@ class Form $reset_scripts .= 'jQuery(\'#'.$prefix.'day\').val(\''.dol_print_date(dol_now(), '%d', 'tzuser').'\');'; $reset_scripts .= 'jQuery(\'#'.$prefix.'month\').val(\''.dol_print_date(dol_now(), '%m', 'tzuser').'\');'; $reset_scripts .= 'jQuery(\'#'.$prefix.'year\').val(\''.dol_print_date(dol_now(), '%Y', 'tzuser').'\');'; - } - elseif ($addnowlink == 2) + } elseif ($addnowlink == 2) { $reset_scripts .= 'jQuery(\'#'.$prefix.'\').val(d.toLocaleDateString(\''.str_replace('_', '-', $langs->defaultlang).'\'));'; $reset_scripts .= 'jQuery(\'#'.$prefix.'day\').val(d.getDate().pad());'; @@ -5705,8 +5567,7 @@ class Form if ($addnowlink == 1) { $reset_scripts .= 'jQuery(\'#'.$prefix.'hour\').val(\''.dol_print_date(dol_now(), '%H', 'tzuser').'\');'; - } - elseif ($addnowlink == 2) + } elseif ($addnowlink == 2) { $reset_scripts .= 'jQuery(\'#'.$prefix.'hour\').val(d.getHours().pad());'; } @@ -5721,8 +5582,7 @@ class Form if ($addnowlink == 1) { $reset_scripts .= 'jQuery(\'#'.$prefix.'min\').val(\''.dol_print_date(dol_now(), '%M', 'tzuser').'\');'; - } - elseif ($addnowlink == 2) + } elseif ($addnowlink == 2) { $reset_scripts .= 'jQuery(\'#'.$prefix.'min\').val(d.getMinutes().pad());'; } @@ -5827,12 +5687,10 @@ class Form $retstring .= ">".$hour.""; } $retstring .= ""; - } - elseif ($typehour == 'text' || $typehour == 'textselect') + } elseif ($typehour == 'text' || $typehour == 'textselect') { $retstring .= ''; - } - else return 'BadValueForParameterTypeHour'; + } else return 'BadValueForParameterTypeHour'; if ($typehour != 'text') $retstring .= ' '.$langs->trans('HourShort'); else $retstring .= ':'; @@ -5851,8 +5709,7 @@ class Form $retstring .= '>'.$min.''; } $retstring .= ""; - } - elseif ($typehour == 'text') + } elseif ($typehour == 'text') { $retstring .= ''; } @@ -5947,8 +5804,7 @@ class Form $out .= ''; if ($placeholder) $placeholder = ' placeholder="'.$placeholder.'"'; $out .= ''; - } - else { + } else { // Immediate load of table record. Note: filter is inside $objecttmp->filter $out .= $this->selectForFormsList($objecttmp, $htmlname, $preselectedvalue, $showempty, $searchkey, $placeholder, $morecss, $moreparams, $forcecombo, 0, $disabled); } @@ -5976,8 +5832,7 @@ class Form if (preg_match('/^\'(.*)\'$/', $tmpescaped, $regbis)) { $tmpescaped = "'".$db->escape($regbis[1])."'"; - } - else { + } else { $tmpescaped = $db->escape($tmpescaped); } return $db->escape($tmp[0]).' '.strtoupper($db->escape($tmp[1]))." ".$tmpescaped; @@ -6019,8 +5874,7 @@ class Form if ($val['showoncombobox']) $tmpfieldstoshow .= ($tmpfieldstoshow ? ',' : '').'t.'.$key; } if ($tmpfieldstoshow) $fieldstoshow = $tmpfieldstoshow; - } - else { + } else { // For backward compatibility $objecttmp->fields['ref'] = array('type'=>'varchar(30)', 'label'=>'Ref', 'showoncombobox'=>1); } @@ -6029,8 +5883,7 @@ class Form { if (isset($objecttmp->fields['ref'])) { $fieldstoshow = 't.ref'; - } - else { + } else { $langs->load("errors"); $this->error = $langs->trans("ErrorNoFieldWithAttributeShowoncombobox"); return $langs->trans('ErrorNoFieldWithAttributeShowoncombobox'); @@ -6118,12 +5971,10 @@ class Form if ($preselectedvalue > 0 && $preselectedvalue == $obj->rowid) { $out .= ''; - } - else { + } else { $out .= ''; } - } - else { + } else { array_push($outarray, array('key'=>$obj->rowid, 'value'=>$label, 'label'=>$label)); } @@ -6133,8 +5984,7 @@ class Form } $out .= ''."\n"; - } - else { + } else { dol_print_error($this->db); } @@ -6240,8 +6090,7 @@ class Form { if (empty($nohtmlescape)) $selectOptionValue = dol_escape_htmltag($key.' - '.($maxlen ?dol_trunc($value, $maxlen) : $value)); else $selectOptionValue = $key.' - '.($maxlen ?dol_trunc($value, $maxlen) : $value); - } - else { + } else { if (empty($nohtmlescape)) $selectOptionValue = dol_escape_htmltag($maxlen ?dol_trunc($value, $maxlen) : $value); else $selectOptionValue = $maxlen ?dol_trunc($value, $maxlen) : $value; if ($value == '' || $value == '-') $selectOptionValue = ' '; @@ -6369,8 +6218,7 @@ class Form if ($acceptdelayedhtml) { $delayedhtmlcontent .= $outdelayed; - } - else { + } else { $out .= $outdelayed; } return $out; @@ -6486,8 +6334,7 @@ class Form if ($acceptdelayedhtml) { $delayedhtmlcontent .= $outdelayed; - } - else { + } else { $out .= $outdelayed; } return $out; @@ -6534,8 +6381,7 @@ class Form if ($elemtype == 'category') { $out .= 'return \' \'+record.text+\'\';'; - } - else { + } else { $out .= 'return record.text;'; } $out .= '};'."\n"; @@ -6543,8 +6389,7 @@ class Form if ($elemtype == 'category') { $out .= 'return \' \'+record.text+\'\';'; - } - else { + } else { $out .= 'return record.text;'; } $out .= '};'."\n"; @@ -6559,8 +6404,7 @@ class Form templateSelection: formatSelection /* For 4.0 */ }); });'."\n"; - } - elseif ($addjscombo == 2) + } elseif ($addjscombo == 2) { // Add other js lib // TODO external lib multiselect/jquery.multi-select.js must have been loaded to use this multiselect plugin @@ -6817,41 +6661,31 @@ class Form if ($objecttype == 'facture') { $tplpath = 'compta/'.$element; if (empty($conf->facture->enabled)) continue; // Do not show if module disabled - } - elseif ($objecttype == 'facturerec') { + } elseif ($objecttype == 'facturerec') { $tplpath = 'compta/facture'; $tplname = 'linkedobjectblockForRec'; if (empty($conf->facture->enabled)) continue; // Do not show if module disabled - } - elseif ($objecttype == 'propal') { + } elseif ($objecttype == 'propal') { $tplpath = 'comm/'.$element; if (empty($conf->propal->enabled)) continue; // Do not show if module disabled - } - elseif ($objecttype == 'supplier_proposal') { + } elseif ($objecttype == 'supplier_proposal') { if (empty($conf->supplier_proposal->enabled)) continue; // Do not show if module disabled - } - elseif ($objecttype == 'shipping' || $objecttype == 'shipment') { + } elseif ($objecttype == 'shipping' || $objecttype == 'shipment') { $tplpath = 'expedition'; if (empty($conf->expedition->enabled)) continue; // Do not show if module disabled - } - elseif ($objecttype == 'reception') { + } elseif ($objecttype == 'reception') { $tplpath = 'reception'; if (empty($conf->reception->enabled)) continue; // Do not show if module disabled - } - elseif ($objecttype == 'delivery') { + } elseif ($objecttype == 'delivery') { $tplpath = 'livraison'; if (empty($conf->expedition->enabled)) continue; // Do not show if module disabled - } - elseif ($objecttype == 'invoice_supplier') { + } elseif ($objecttype == 'invoice_supplier') { $tplpath = 'fourn/facture'; - } - elseif ($objecttype == 'order_supplier') { + } elseif ($objecttype == 'order_supplier') { $tplpath = 'fourn/commande'; - } - elseif ($objecttype == 'expensereport') { + } elseif ($objecttype == 'expensereport') { $tplpath = 'expensereport'; - } - elseif ($objecttype == 'subscription') { + } elseif ($objecttype == 'subscription') { $tplpath = 'adherents'; } @@ -6959,8 +6793,7 @@ class Form { $possiblelinks = array_merge($possiblelinks, $hookmanager->resArray); } - } - elseif ($reshook > 0) + } elseif ($reshook > 0) { if (is_array($hookmanager->resArray) && count($hookmanager->resArray)) { @@ -7047,8 +6880,7 @@ class Form '; - } - else { + } else { $linktoelem = ''; } @@ -7098,8 +6930,7 @@ class Form { $resultyesno .= ''."\n"; $resultyesno .= ''."\n"; - } - else { + } else { $selected = (($useempty && $value != '0' && $value != 'no') ? '' : ' selected'); $resultyesno .= ''."\n"; $resultyesno .= ''."\n"; @@ -7142,8 +6973,7 @@ class Form if ($selected == $obj->rowid) { print ''; $i++; } - } - else { + } else { if ($show_empty) $out .= ''."\n"; $out .= ''; } $out .= ''; - } - else { + } else { dol_print_error($this->db); } @@ -7809,8 +7618,7 @@ class Form } } } - } - else { + } else { dol_print_error($db); } @@ -7844,8 +7652,7 @@ class Form $out .= ''; } $out .= ''; - } - else { + } else { dol_print_error($db); } @@ -7886,8 +7693,7 @@ class Form $out .= ''; } $out .= ''; - } - else { + } else { dol_print_error($db); } @@ -7983,8 +7789,7 @@ class Form if ($socid > 0 && (empty($obj->fk_soc) || $obj->fk_soc == $socid) && empty($usertofilter->rights->societe->lire)) { // Do nothing - } - else { + } else { if ($discard_closed == 1 && $obj->fk_statut == Project::STATUS_CLOSED) { $i++; @@ -8003,13 +7808,11 @@ class Form { $disabled = 1; $labeltoshow .= ' - '.$langs->trans("Draft"); - } - elseif ($obj->fk_statut == Project::STATUS_CLOSED) + } elseif ($obj->fk_statut == Project::STATUS_CLOSED) { if ($discard_closed == 2) $disabled = 1; $labeltoshow .= ' - '.$langs->trans("Closed"); - } - elseif ($socid > 0 && (!empty($obj->fk_soc) && $obj->fk_soc != $socid)) + } elseif ($socid > 0 && (!empty($obj->fk_soc) && $obj->fk_soc != $socid)) { $disabled = 1; $labeltoshow .= ' - '.$langs->trans("LinkedToAnotherCompany"); @@ -8021,13 +7824,11 @@ class Form $out .= ''; - } - else { + } else { $out .= ''; } } @@ -183,8 +182,7 @@ class FormAdmin if ($file == $selected) { $menuarray[$prefix.'_'.$file] = ''; - } - else { + } else { $menuarray[$prefix.'_'.$file] = ''; } } @@ -383,8 +381,7 @@ class FormAdmin $i++; } - } - else { + } else { dol_print_error($this->db); return ''; } @@ -402,8 +399,7 @@ class FormAdmin if ($selected == $key) { $out .= ''; - } - else { + } else { $out .= ''; } } diff --git a/htdocs/core/class/html.formbarcode.class.php b/htdocs/core/class/html.formbarcode.class.php index 8c27666dfc4..104daf6de0e 100644 --- a/htdocs/core/class/html.formbarcode.class.php +++ b/htdocs/core/class/html.formbarcode.class.php @@ -176,8 +176,7 @@ class FormBarCode } $out .= ""; $out .= ajax_combobox("select_".$htmlname); - } - else { + } else { dol_print_error($this->db); } return $out; diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php index a5e31916827..f4e551c6452 100644 --- a/htdocs/core/class/html.formcompany.class.php +++ b/htdocs/core/class/html.formcompany.class.php @@ -166,8 +166,7 @@ class FormCompany extends Form } print Form::selectarray($htmlname, $options, $selected); - } - else dol_print_error($this->db); + } else dol_print_error($this->db); if (!empty($htmlname) && $user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print ''; print ''; @@ -241,8 +240,7 @@ class FormCompany extends Form if ($obj->code == '0') // Le code peut etre une chaine { $out .= ''; - } - else { + } else { if (!$country || $country != $obj->country) { // Affiche la rupture si on est en mode liste multipays @@ -256,8 +254,7 @@ class FormCompany extends Form if (!empty($selected) && $selected == $obj->rowid) { $out .= ''; - } - else { + } else { if ($country == '' || $country != $obj->country) { // Show break @@ -354,8 +346,7 @@ class FormCompany extends Form if ($selected > 0 && $selected == $obj->code) { print ''; - } - else { + } else { print ''; } } @@ -363,8 +354,7 @@ class FormCompany extends Form } } print ''; - } - else { + } else { dol_print_error($this->db); } } @@ -405,8 +395,7 @@ class FormCompany extends Form if ($selected == $obj->code) { $out .= ''; $firstCompany = $obj->rowid; - } - else { + } else { print ''; @@ -695,8 +679,7 @@ class FormCompany extends Form print "\n"; print ajax_combobox($htmlname); return $firstCompany; - } - else { + } else { dol_print_error($this->db); return 0; } @@ -838,8 +821,7 @@ class FormCompany extends Form elseif ($idprof == 3) $formlength = 5; // 4 chiffres et 1 lettre depuis janvier elseif ($idprof == 4) $formlength = 32; // No maximum as we need to include a town name in this id } - } - elseif ($country_code == 'ES') + } elseif ($country_code == 'ES') { if ($idprof == 1) $formlength = 9; //CIF/NIF/NIE 9 digits if ($idprof == 2) $formlength = 12; //NASS 12 digits without / @@ -902,8 +884,7 @@ class FormCompany extends Form if ($selected == $valors[$i]) { print ''; - } - else { + } else { $disabled = 0; if ($obj->statut == 0) { @@ -128,8 +126,7 @@ class FormContract if ($hideunselectables && $disabled) { $resultat = ''; - } - else { + } else { $resultat = '
\n"; @@ -331,8 +327,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ if (preg_match('/\.sql$/i', $file)) $filesindir[] = $file; } sort($filesindir); - } - else { + } else { print '
'.$langs->trans("ErrorCanNotReadDir", $dir).'
'; } @@ -342,8 +337,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ if (preg_match('/'.$from.'/i', $file)) { $filelist[] = $file; - } - elseif (preg_match('/'.$to.'/i', $file)) // First test may be false if we migrate from x.y.* to x.y.* + } elseif (preg_match('/'.$to.'/i', $file)) // First test may be false if we migrate from x.y.* to x.y.* { $filelist[] = $file; } @@ -352,8 +346,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ if (count($filelist) == 0) { print '
'.$langs->trans("ErrorNoMigrationFilesFoundForParameters").'
'; - } - else { + } else { $listoffileprocessed = array(); // Protection to avoid to process twice the same file // Loop on each migrate files diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index b8e9ad30076..13e50732566 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -126,8 +126,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ $dolibarr_main_db_pass = preg_replace('/crypted:/i', '', $dolibarr_main_db_pass); $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_pass); $dolibarr_main_db_encrypted_pass = $dolibarr_main_db_pass; // We need to set this as it is used to know the password was initially crypted - } - else $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass); + } else $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass); } // $conf is already instancied inside inc.php @@ -157,8 +156,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ if ($db->database_selected) { dolibarr_install_syslog('upgrade2: database connection successful :'.$dolibarr_main_db_name); - } - else { + } else { $error++; } } @@ -533,15 +531,13 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ print $hookmanager->error; print ""; print ''; - } - else { + } else { print ''; print ''.$langs->trans('UpgradeExternalModule').': OK'; print ""; print ''; } - } - else { + } else { //if (! empty($conf->modules)) if (!empty($conf->modules_parts['hooks'])) // If there is at least one module with one hook, we show message to say nothing was done { @@ -580,8 +576,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ migrate_rename_directories($db, $langs, $conf, '/banque/bordereau', '/bank/checkdeposits'); print '

'.$langs->trans("MigrationFinished").'
'; -} -else { +} else { print '
'.$langs->trans('ErrorWrongParameters').'
'; $error++; } @@ -640,8 +635,7 @@ function migrate_paiements($db, $langs, $conf) $row[$i][2] = $obj->amount; $i++; } - } - else { + } else { dol_print_error($db); } @@ -671,17 +665,14 @@ function migrate_paiements($db, $langs, $conf) { $db->commit(); print $langs->trans('MigrationSuccessfullUpdate')."
"; - } - else { + } else { $db->rollback(); print $langs->trans('MigrationUpdateFailed').'
'; } - } - else { + } else { print $langs->trans('MigrationPaymentsNothingToUpdate')."
\n"; } - } - else { + } else { print $langs->trans('MigrationPaymentsNothingToUpdate')."
\n"; } @@ -743,8 +734,7 @@ function migrate_paiements_orphelins_1($db, $langs, $conf) } $i++; } - } - else { + } else { dol_print_error($db); } @@ -783,8 +773,7 @@ function migrate_paiements_orphelins_1($db, $langs, $conf) print $langs->trans('MigrationProcessPaymentUpdate', 'facid='.$facid.'-paymentid='.$row[$i]['paymentid'].'-amount='.$row[$i]['pamount'])."
\n"; } - } - else { + } else { print 'ERROR'; } } @@ -792,18 +781,15 @@ function migrate_paiements_orphelins_1($db, $langs, $conf) if ($res > 0) { print $langs->trans('MigrationSuccessfullUpdate')."
"; - } - else { + } else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } $db->commit(); - } - else { + } else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } - } - else { + } else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } @@ -864,8 +850,7 @@ function migrate_paiements_orphelins_2($db, $langs, $conf) } $i++; } - } - else { + } else { dol_print_error($db); } @@ -905,8 +890,7 @@ function migrate_paiements_orphelins_2($db, $langs, $conf) print $langs->trans('MigrationProcessPaymentUpdate', 'facid='.$facid.'-paymentid='.$row[$i]['paymentid'].'-amount='.$row[$i]['pamount'])."
\n"; } - } - else { + } else { print 'ERROR'; $nberr++; } @@ -915,14 +899,12 @@ function migrate_paiements_orphelins_2($db, $langs, $conf) if ($res > 0) { print $langs->trans('MigrationSuccessfullUpdate')."
"; - } - else { + } else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } $db->commit(); - } - else { + } else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } @@ -935,13 +917,11 @@ function migrate_paiements_orphelins_2($db, $langs, $conf) if (!$nberr) { $db->commit(); - } - else { + } else { print 'ERROR'; $db->rollback(); } - } - else { + } else { print $langs->trans('MigrationPaymentsNothingUpdatable')."
\n"; } @@ -1011,8 +991,7 @@ function migrate_contracts_det($db, $langs, $conf) if ($db->query($sql)) { print $langs->trans('MigrationContractsLineCreation', $obj->cref)."
\n"; - } - else { + } else { dol_print_error($db); $nberr++; } @@ -1025,17 +1004,14 @@ function migrate_contracts_det($db, $langs, $conf) // $db->rollback(); $db->commit(); print $langs->trans('MigrationSuccessfullUpdate')."
"; - } - else { + } else { $db->rollback(); print $langs->trans('MigrationUpdateFailed').'
'; } - } - else { + } else { print $langs->trans('MigrationContractsNothingToUpdate')."
\n"; } - } - else { + } else { print $langs->trans('MigrationContractsFieldDontExist')."
\n"; // dol_print_error($db); } @@ -1108,17 +1084,14 @@ function migrate_links_transfert($db, $langs, $conf) // $db->rollback(); $db->commit(); print $langs->trans('MigrationSuccessfullUpdate')."
"; - } - else { + } else { $db->rollback(); print $langs->trans('MigrationUpdateFailed').'
'; } - } - else { + } else { print $langs->trans('MigrationBankTransfertsNothingToUpdate')."
\n"; } - } - else { + } else { dol_print_error($db); } @@ -1218,8 +1191,7 @@ function migrate_contracts_date2($db, $langs, $conf) print $langs->trans('MigrationContractsInvalidDatesNumber', $nbcontratsmodifie)."
\n"; else print $langs->trans('MigrationContractsInvalidDatesNothingToUpdate')."
\n"; } - } - else { + } else { dol_print_error($db); } @@ -1304,8 +1276,7 @@ function migrate_contracts_open($db, $langs, $conf) print $langs->trans('MigrationReopenedContractsNumber', $nbcontratsmodifie)."
\n"; else print $langs->trans('MigrationReopeningContractsNothingToUpdate')."
\n"; } - } - else print $langs->trans('MigrationReopeningContractsNothingToUpdate')."
\n"; + } else print $langs->trans('MigrationReopeningContractsNothingToUpdate')."
\n"; print ''; } @@ -1383,21 +1354,18 @@ function migrate_paiementfourn_facturefourn($db, $langs, $conf) { $nb++; print ''.$langs->trans("OK").''; - } - else { + } else { print 'Error on insert'; $error++; } print ''; } - } - else { + } else { $error++; } $i++; } - } - else { + } else { $error++; } @@ -1411,13 +1379,11 @@ function migrate_paiementfourn_facturefourn($db, $langs, $conf) $sql = "ALTER TABLE ".MAIN_DB_PREFIX."paiementfourn DROP COLUMN fk_facture_fourn"; $db->query($sql); - } - else { + } else { print ''.$langs->trans("Error").''; $db->rollback(); } - } - else { + } else { print ''.$langs->trans("AlreadyDone").''; } } @@ -1502,13 +1468,11 @@ function migrate_price_facture($db, $langs, $conf) if ($facture->update_price() > 0) { //print $facture->id; - } - else { + } else { print "Error id=".$facture->id; $err++; } - } - else { + } else { print "Error #3"; $err++; } @@ -1517,15 +1481,13 @@ function migrate_price_facture($db, $langs, $conf) $i++; } - } - else { + } else { print $langs->trans("AlreadyDone"); } $db->free($resql); $db->commit(); - } - else { + } else { print "Error #1 ".$db->error(); $err++; @@ -1623,16 +1585,14 @@ function migrate_price_propal($db, $langs, $conf) */ $i++; } - } - else { + } else { print $langs->trans("AlreadyDone"); } $db->free($resql); $db->commit(); - } - else { + } else { print "Error #1 ".$db->error(); $db->rollback(); @@ -1710,16 +1670,14 @@ function migrate_price_contrat($db, $langs, $conf) $i++; } - } - else { + } else { print $langs->trans("AlreadyDone"); } $db->free($resql); $db->commit(); - } - else { + } else { print "Error #1 ".$db->error(); $db->rollback(); @@ -1815,8 +1773,7 @@ function migrate_price_commande($db, $langs, $conf) */ $i++; } - } - else { + } else { print $langs->trans("AlreadyDone"); } @@ -1833,8 +1790,7 @@ function migrate_price_commande($db, $langs, $conf) */ $db->commit(); - } - else { + } else { print "Error #1 ".$db->error(); $db->rollback(); @@ -1930,8 +1886,7 @@ function migrate_price_commande_fournisseur($db, $langs, $conf) */ $i++; } - } - else { + } else { print $langs->trans("AlreadyDone"); } @@ -1948,8 +1903,7 @@ function migrate_price_commande_fournisseur($db, $langs, $conf) */ $db->commit(); - } - else { + } else { print "Error #1 ".$db->error(); $db->rollback(); @@ -2076,17 +2030,14 @@ function migrate_commande_expedition($db, $langs, $conf) $sql = "ALTER TABLE ".MAIN_DB_PREFIX."expedition DROP COLUMN fk_commande"; print $langs->trans('FieldRenamed')."
\n"; $db->query($sql); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } print ''; @@ -2149,8 +2100,7 @@ function migrate_commande_livraison($db, $langs, $conf) $error++; dol_print_error($db); } - } - else { + } else { $error++; dol_print_error($db); } @@ -2165,17 +2115,14 @@ function migrate_commande_livraison($db, $langs, $conf) $sql = "ALTER TABLE ".MAIN_DB_PREFIX."livraison DROP COLUMN fk_commande"; print $langs->trans('FieldRenamed')."
\n"; $db->query($sql); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } print ''; @@ -2253,13 +2200,11 @@ function migrate_detail_livraison($db, $langs, $conf) $error++; dol_print_error($db); } - } - else { + } else { $error++; dol_print_error($db); } - } - else { + } else { $error++; dol_print_error($db); } @@ -2274,17 +2219,14 @@ function migrate_detail_livraison($db, $langs, $conf) $sql = "ALTER TABLE ".MAIN_DB_PREFIX."livraisondet CHANGE fk_commande_ligne fk_origin_line integer"; print $langs->trans('FieldRenamed')."
\n"; $db->query($sql); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { $result = $db->DDLDescTable(MAIN_DB_PREFIX."livraisondet", "fk_origin_line"); $obj = $db->fetch_object($result); if (!$obj) @@ -2340,8 +2282,7 @@ function migrate_stocks($db, $langs, $conf) $resql2 = $db->query($sql); if ($resql2) { - } - else { + } else { $error++; dol_print_error($db); } @@ -2353,12 +2294,10 @@ function migrate_stocks($db, $langs, $conf) if ($error == 0) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -2413,8 +2352,7 @@ function migrate_menus($db, $langs, $conf) $resql2 = $db->query($sql); if ($resql2) { - } - else { + } else { $error++; dol_print_error($db); } @@ -2426,17 +2364,14 @@ function migrate_menus($db, $langs, $conf) if ($error == 0) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } @@ -2498,25 +2433,21 @@ function migrate_commande_deliveryaddress($db, $langs, $conf) print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } if ($error == 0) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } @@ -2591,18 +2522,15 @@ function migrate_restore_missing_links($db, $langs, $conf) //print ". "; $i++; } - } - else print $langs->trans('AlreadyDone')."
\n"; + } else print $langs->trans('AlreadyDone')."
\n"; if ($error == 0) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -2654,20 +2582,17 @@ function migrate_restore_missing_links($db, $langs, $conf) //print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } if ($error == 0) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -2748,21 +2673,17 @@ function migrate_project_user_resp($db, $langs, $conf) if ($db->query($sqlDrop)) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } print ''; @@ -2836,21 +2757,17 @@ function migrate_project_task_actors($db, $langs, $conf) if ($db->query($sqlDrop)) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } print ''; @@ -2920,8 +2837,7 @@ function migrate_relationship_tables($db, $langs, $conf, $table, $fk_source, $so print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } @@ -2931,21 +2847,17 @@ function migrate_relationship_tables($db, $langs, $conf, $table, $fk_source, $so if ($db->query($sqlDrop)) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3013,8 +2925,7 @@ function migrate_project_task_time($db, $langs, $conf) $oldtime++; if (!empty($totaltime[$obj->fk_task])) $totaltime[$obj->fk_task] += $newtime; else $totaltime[$obj->fk_task] = $newtime; - } - else { + } else { if (!empty($totaltime[$obj->fk_task])) $totaltime[$obj->fk_task] += $obj->task_duration; else $totaltime[$obj->fk_task] = $obj->task_duration; } @@ -3039,28 +2950,23 @@ function migrate_project_task_time($db, $langs, $conf) dol_print_error($db); } } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } - } - else { + } else { dol_print_error($db); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } - } - else { + } else { dol_print_error($db); } if ($error == 0) { $db->commit(); - } - else { + } else { $db->rollback(); } @@ -3132,31 +3038,26 @@ function migrate_customerorder_shipping($db, $langs, $conf) print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } if ($error == 0) { $db->commit(); - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3229,15 +3130,13 @@ function migrate_shipping_delivery($db, $langs, $conf) dol_print_error($db); } print ". "; - } - else { + } else { $error++; dol_print_error($db); } $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3251,18 +3150,15 @@ function migrate_shipping_delivery($db, $langs, $conf) // DDL commands must not be inside a transaction $sqlDrop = "ALTER TABLE ".MAIN_DB_PREFIX."livraison DROP COLUMN fk_expedition"; $db->query($sqlDrop); - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3329,21 +3225,18 @@ function migrate_shipping_delivery2($db, $langs, $conf) print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } if ($error == 0) { $db->commit(); - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -3401,13 +3294,11 @@ function migrate_actioncomm_element($db, $langs, $conf) //$sqlDrop = "ALTER TABLE ".MAIN_DB_PREFIX."actioncomm DROP COLUMN ".$field; //$db->query($sqlDrop); //print ". "; - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } } @@ -3491,13 +3382,11 @@ function migrate_mode_reglement($db, $langs, $conf) if (!$error) { $db->commit(); - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -3580,15 +3469,13 @@ function migrate_clean_association($db, $langs, $conf) print ''.$langs->trans("MigrationCategorieAssociation").''; print ''.$langs->trans("RemoveDuplicates").' '.$langs->trans("Success").' ('.$num.'=>'.count($couples).')'; $db->commit(); - } - else { + } else { print ''.$langs->trans("MigrationCategorieAssociation").''; print ''.$langs->trans("RemoveDuplicates").' '.$langs->trans("Failed").''; $db->rollback(); } } - } - else { + } else { print ''.$langs->trans("Error").''; print '
'.$db->lasterror().'
'; } @@ -3648,8 +3535,7 @@ function migrate_categorie_association($db, $langs, $conf) print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3669,17 +3555,14 @@ function migrate_categorie_association($db, $langs, $conf) */ $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } @@ -3738,20 +3621,17 @@ function migrate_event_assignement($db, $langs, $conf) print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -3812,20 +3692,17 @@ function migrate_event_assignement_contact($db, $langs, $conf) print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -3896,8 +3773,7 @@ function migrate_reset_blocked_log($db, $langs, $conf) { $error++; dol_print_error($db); - } - else { + } else { // Add set line $object = new stdClass(); $object->id = 1; @@ -3914,31 +3790,26 @@ function migrate_reset_blocked_log($db, $langs, $conf) $error++; } } - } - else { + } else { print ' - '.$langs->trans('AlreadyInV7').'
'; } - } - else { + } else { dol_print_error($db); } $i++; } - } - else { + } else { print $langs->trans('NothingToDo')."
\n"; } if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -4000,20 +3871,17 @@ function migrate_remise_entity($db, $langs, $conf) print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -4065,15 +3933,13 @@ function migrate_remise_except_entity($db, $langs, $conf) $sqlSelect2 = "SELECT f.entity"; $sqlSelect2 .= " FROM ".MAIN_DB_PREFIX."facture as f"; $sqlSelect2 .= " WHERE f.rowid = ".$fk_facture; - } - elseif (!empty($obj->fk_facture_line)) + } elseif (!empty($obj->fk_facture_line)) { $sqlSelect2 = "SELECT f.entity"; $sqlSelect2 .= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."facturedet as fd"; $sqlSelect2 .= " WHERE fd.rowid = ".$obj->fk_facture_line; $sqlSelect2 .= " AND fd.fk_facture = f.rowid"; - } - else { + } else { $sqlSelect2 = "SELECT s.entity"; $sqlSelect2 .= " FROM ".MAIN_DB_PREFIX."societe as s"; $sqlSelect2 .= " WHERE s.rowid = ".$obj->fk_soc; @@ -4097,8 +3963,7 @@ function migrate_remise_except_entity($db, $langs, $conf) dol_print_error($db); } } - } - else { + } else { $error++; dol_print_error($db); } @@ -4106,20 +3971,17 @@ function migrate_remise_except_entity($db, $langs, $conf) print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -4179,20 +4041,17 @@ function migrate_user_rights_entity($db, $langs, $conf) print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -4252,20 +4111,17 @@ function migrate_usergroup_rights_entity($db, $langs, $conf) print ". "; $i++; } - } - else { + } else { print $langs->trans('AlreadyDone')."
\n"; } if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { dol_print_error($db); $db->rollback(); } @@ -4448,8 +4304,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_API') + } elseif ($moduletoreload == 'MAIN_MODULE_API') { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Rest API module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modApi.class.php'; @@ -4458,8 +4313,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_BARCODE') + } elseif ($moduletoreload == 'MAIN_MODULE_BARCODE') { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Barcode module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modBarcode.class.php'; @@ -4468,8 +4322,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_CRON') + } elseif ($moduletoreload == 'MAIN_MODULE_CRON') { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Cron module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modCron.class.php'; @@ -4478,8 +4331,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_SOCIETE') + } elseif ($moduletoreload == 'MAIN_MODULE_SOCIETE') { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Societe module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modSociete.class.php'; @@ -4488,8 +4340,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_PRODUIT') // Permission has changed into 2.7 + } elseif ($moduletoreload == 'MAIN_MODULE_PRODUIT') // Permission has changed into 2.7 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Produit module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modProduct.class.php'; @@ -4498,8 +4349,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_SERVICE') // Permission has changed into 2.7 + } elseif ($moduletoreload == 'MAIN_MODULE_SERVICE') // Permission has changed into 2.7 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Service module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modService.class.php'; @@ -4508,8 +4358,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_COMMANDE') // Permission has changed into 2.9 + } elseif ($moduletoreload == 'MAIN_MODULE_COMMANDE') // Permission has changed into 2.9 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Commande module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modCommande.class.php'; @@ -4518,8 +4367,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_FACTURE') // Permission has changed into 2.9 + } elseif ($moduletoreload == 'MAIN_MODULE_FACTURE') // Permission has changed into 2.9 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Facture module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modFacture.class.php'; @@ -4528,8 +4376,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_FOURNISSEUR') // Permission has changed into 2.9 + } elseif ($moduletoreload == 'MAIN_MODULE_FOURNISSEUR') // Permission has changed into 2.9 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Fournisseur module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modFournisseur.class.php'; @@ -4538,8 +4385,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_HOLIDAY') // Permission and tabs has changed into 3.8 + } elseif ($moduletoreload == 'MAIN_MODULE_HOLIDAY') // Permission and tabs has changed into 3.8 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Leave Request module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modHoliday.class.php'; @@ -4548,8 +4394,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_DEPLACEMENT') // Permission has changed into 3.0 + } elseif ($moduletoreload == 'MAIN_MODULE_DEPLACEMENT') // Permission has changed into 3.0 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Deplacement module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modDeplacement.class.php'; @@ -4558,8 +4403,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_EXPENSEREPORT') + } elseif ($moduletoreload == 'MAIN_MODULE_EXPENSEREPORT') { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Expense Report module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modExpenseReport.class.php'; @@ -4568,8 +4412,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_DON') // Permission has changed into 3.0 + } elseif ($moduletoreload == 'MAIN_MODULE_DON') // Permission has changed into 3.0 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Don module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modDon.class.php'; @@ -4578,8 +4421,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo //$mod->remove('noboxes'); $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_ECM') // Permission has changed into 3.0 and 3.1 + } elseif ($moduletoreload == 'MAIN_MODULE_ECM') // Permission has changed into 3.0 and 3.1 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate ECM module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modECM.class.php'; @@ -4588,8 +4430,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->remove('noboxes'); // We need to remove because a permission id has been removed $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_PAYBOX') // Permission has changed into 3.0 + } elseif ($moduletoreload == 'MAIN_MODULE_PAYBOX') // Permission has changed into 3.0 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Paybox module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modPaybox.class.php'; @@ -4598,8 +4439,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->remove('noboxes'); // We need to remove because id of module has changed $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_SUPPLIERPROPOSAL') // Module after 3.5 + } elseif ($moduletoreload == 'MAIN_MODULE_SUPPLIERPROPOSAL') // Module after 3.5 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Supplier Proposal module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modSupplierProposal.class.php'; @@ -4608,8 +4448,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->remove('noboxes'); // We need to remove because id of module has changed $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_OPENSURVEY') // Permission has changed into 3.0 + } elseif ($moduletoreload == 'MAIN_MODULE_OPENSURVEY') // Permission has changed into 3.0 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Opensurvey module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modOpenSurvey.class.php'; @@ -4618,8 +4457,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->remove('noboxes'); // We need to remove because menu entries has changed $mod->init($reloadmode); } - } - elseif ($moduletoreload == 'MAIN_MODULE_TAKEPOS') // Permission has changed into 10.0 + } elseif ($moduletoreload == 'MAIN_MODULE_TAKEPOS') // Permission has changed into 10.0 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Takepos module"); $res = @include_once DOL_DOCUMENT_ROOT.'/core/modules/modTakePos.class.php'; @@ -4628,8 +4466,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod->remove('noboxes'); // We need to remove because menu entries has changed $mod->init($reloadmode); } - } - else { + } else { $reg = array(); $tmp = preg_match('/MAIN_MODULE_([a-zA-Z0-9]+)/', $moduletoreload, $reg); if (!empty($reg[1])) @@ -4637,8 +4474,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo if (strtoupper($moduletoreload) == $moduletoreload) // If key is un uppercase { $moduletoreloadshort = ucfirst(strtolower($reg[1])); - } - else // If key is a mix of up and low case + } else // If key is a mix of up and low case { $moduletoreloadshort = $reg[1]; } @@ -4649,8 +4485,7 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod = new $classname($db); //$mod->remove('noboxes'); $mod->init($reloadmode); - } - else { + } else { dolibarr_install_syslog('Failed to include '.DOL_DOCUMENT_ROOT.'/core/modules/mod'.$moduletoreloadshort.'.class.php'); $res = @dol_include_once(strtolower($moduletoreloadshort).'/core/modules/mod'.$moduletoreloadshort.'.class.php'); @@ -4659,13 +4494,11 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo $mod = new $classname($db); //$mod->remove('noboxes'); $mod->init($reloadmode); - } - else { + } else { dolibarr_install_syslog('Failed to include '.strtolower($moduletoreloadshort).'/core/modules/mod'.$moduletoreloadshort.'.class.php'); } } - } - else { + } else { dolibarr_install_syslog("Error, can't find module with name ".$moduletoreload, LOG_WARNING); print "Error, can't find module with name ".$moduletoreload; } @@ -4799,8 +4632,7 @@ function migrate_user_photospath() } // dol_delete_dir($origin.'/'.$file); } - } - else // it is a file + } else // it is a file { if (!dol_is_file($destin.'/'.$file)) { diff --git a/htdocs/livraison/card.php b/htdocs/livraison/card.php index 80f30552473..544593dc16c 100644 --- a/htdocs/livraison/card.php +++ b/htdocs/livraison/card.php @@ -118,17 +118,14 @@ if ($action == 'add') $db->commit(); header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); $_GET["commande_id"] = $_POST["commande_id"]; $action = 'create'; } -} - -elseif ($action == 'confirm_valid' && $confirm == 'yes' && +} elseif ($action == 'confirm_valid' && $confirm == 'yes' && ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->expedition->livraison->creer)) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->expedition->livraison_advance->validate))) ) @@ -165,8 +162,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->expeditio if (!empty($backtopage)) header("Location: ".$backtopage); else header("Location: ".DOL_URL_ROOT.'/expedition/list.php?restore_lastsearch_values=1'); exit; - } - else { + } else { $db->rollback(); } } @@ -259,8 +255,7 @@ $formfile = new FormFile($db); if ($action == 'create') // Create. Seems to no be used { -} -else // View +} else // View { if ($object->id > 0) { @@ -450,8 +445,7 @@ else // View print $form->selectDate($object->date_delivery ? $object->date_delivery : -1, 'liv_', 1, 1, '', "setdate_livraison", 1, 1); print ''; print ''; - } - else { + } else { print $object->date_delivery ? dol_print_date($object->date_delivery, 'dayhour') : ' '; } print ''; @@ -472,8 +466,7 @@ else // View if ($action != 'editincoterm') { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); - } - else { + } else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?id='.$object->id); } print ''; @@ -570,8 +563,7 @@ else // View } $label = (!empty($product->multilangs[$outputlangs->defaultlang]["label"])) ? $product->multilangs[$outputlangs->defaultlang]["label"] : $object->lines[$i]->product_label; - } - else { + } else { $label = (!empty($object->lines[$i]->label) ? $object->lines[$i]->label : $object->lines[$i]->product_label); } @@ -591,8 +583,7 @@ else // View { print (!empty($object->lines[$i]->description) && $object->lines[$i]->description != $object->lines[$i]->product_label) ? '
'.dol_htmlentitiesbr($object->lines[$i]->description) : ''; } - } - else { + } else { print ""; if ($object->lines[$i]->fk_product_type == 1) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); @@ -668,8 +659,7 @@ else // View if ($conf->expedition_bon->enabled) { print ''.$langs->trans("Delete").''; - } - else { + } else { print ''.$langs->trans("Delete").''; } } @@ -712,13 +702,11 @@ else // View // Rien a droite print ''; - } - else { + } else { /* Expedition non trouvee */ print "Expedition inexistante ou acces refuse"; } - } - else { + } else { /* Expedition non trouvee */ print "Expedition inexistante ou acces refuse"; } diff --git a/htdocs/livraison/class/livraison.class.php b/htdocs/livraison/class/livraison.class.php index 4d00c414cb1..6199bc4ec88 100644 --- a/htdocs/livraison/class/livraison.class.php +++ b/htdocs/livraison/class/livraison.class.php @@ -215,22 +215,19 @@ class Livraison extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $error++; $this->error = $this->db->lasterror()." - sql=".$this->db->lastqueryerror; $this->db->rollback(); return -3; } - } - else { + } else { $error++; $this->error = $this->db->lasterror()." - sql=".$this->db->lastqueryerror; $this->db->rollback(); return -2; } - } - else { + } else { $error++; $this->error = $this->db->lasterror()." - sql=".$this->db->lastqueryerror; $this->db->rollback(); @@ -341,14 +338,12 @@ class Livraison extends CommonObject } return 1; - } - else { + } else { $this->error = 'Delivery with id '.$id.' not found sql='.$sql; dol_syslog(get_class($this).'::fetch Error '.$this->error, LOG_ERR); return -2; } - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -394,8 +389,7 @@ class Livraison extends CommonObject if (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref)) // empty should not happened, but when it occurs, the test save life { $numref = $objMod->livraison_get_num($soc, $this); - } - else { + } else { $numref = $this->ref; } $this->newref = dol_sanitizeFileName($numref); @@ -494,15 +488,13 @@ class Livraison extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } } } - } - else { + } else { $this->error = "Non autorise"; dol_syslog(get_class($this)."::valid ".$this->error, LOG_ERR); return -1; @@ -625,8 +617,7 @@ class Livraison extends CommonObject $this->update_price(); return 1; - } - else { + } else { return 0; } } @@ -695,20 +686,17 @@ class Livraison extends CommonObject // End call triggers return 1; - } - else { + } else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -3; } - } - else { + } else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -2; } - } - else { + } else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -1; @@ -978,15 +966,13 @@ class Livraison extends CommonObject if ($row[0] == $objSourceLine->rowid) { $array[$i]['qty'] = $objSourceLine->qty - $row[1]; - } - else { + } else { $array[$i]['qty'] = $objSourceLine->qty; } $array[$i]['ref'] = $objSourceLine->ref; $array[$i]['label'] = $objSourceLine->label ? $objSourceLine->label : $objSourceLine->description; - } - elseif ($objSourceLine->qty - $row[1] < 0) + } elseif ($objSourceLine->qty - $row[1] < 0) { $array[$i]['qty'] = $objSourceLine->qty - $row[1]." Erreur livraison !"; $array[$i]['ref'] = $objSourceLine->ref; @@ -996,8 +982,7 @@ class Livraison extends CommonObject $i++; } return $array; - } - else { + } else { $this->error = $this->db->error()." - sql=$sqlSourceLine"; return -1; } @@ -1026,13 +1011,11 @@ class Livraison extends CommonObject { $this->date_delivery = $date_livraison; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } - } - else { + } else { return -2; } } diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 266b7d2bc09..8f82e94b8f9 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -68,8 +68,7 @@ if (empty($reshook)) if ($result > 0) { setEventMessages($langs->trans('LoanPaid'), null, 'mesgs'); - } - else { + } else { setEventMessages($loan->error, null, 'errors'); } } @@ -84,8 +83,7 @@ if (empty($reshook)) setEventMessages($langs->trans('LoanDeleted'), null, 'mesgs'); header("Location: index.php"); exit; - } - else { + } else { setEventMessages($loan->error, null, 'errors'); } } @@ -151,8 +149,7 @@ if (empty($reshook)) $action = 'create'; } } - } - else { + } else { header("Location: index.php"); exit(); } @@ -173,8 +170,7 @@ if (empty($reshook)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("LoanCapital")), null, 'errors'); $action = 'edit'; - } - else { + } else { $object->datestart = $datestart; $object->dateend = $dateend; $object->capital = $capital; @@ -197,13 +193,11 @@ if (empty($reshook)) { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; - } - else { + } else { $error++; setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } @@ -268,8 +262,7 @@ if ($action == 'create') print ''.$langs->trans("Account").''; $form->select_comptes(GETPOST("accountid"), "accountid", 0, "courant=1", 1); // Show list of bank account with courant print ''; - } - else { + } else { print ''.$langs->trans("Account").''; print $langs->trans("NoBankAccountDefined"); print ''; @@ -352,8 +345,7 @@ if ($action == 'create') print ''; print $formaccounting->select_account(GETPOST('accountancy_account_interest') ?GETPOST('accountancy_account_interest') : $conf->global->LOAN_ACCOUNTING_ACCOUNT_INTEREST, 'accountancy_account_interest', 1, '', 1, 1); print ''; - } - else // For external software + } else // For external software { // Accountancy_account_capital print ''.$langs->trans("LoanAccountancyCapitalCode").''; @@ -476,8 +468,7 @@ if ($id > 0) print ''.$langs->trans("LoanCapital").''; print ''; print ''; - } - else { + } else { print ''.$langs->trans("LoanCapital").''.price($object->capital, 0, $outputlangs, 1, -1, -1, $conf->currency).''; } @@ -487,8 +478,7 @@ if ($id > 0) print ''.$langs->trans("Insurance").''; print ''; print ''; - } - else { + } else { print ''.$langs->trans("Insurance").''.price($object->insurance_amount, 0, $outputlangs, 1, -1, -1, $conf->currency).''; } @@ -498,8 +488,7 @@ if ($id > 0) if ($action == 'edit') { print $form->selectDate($object->datestart, 'start', 0, 0, 0, 'update', 1, 0); - } - else { + } else { print dol_print_date($object->datestart, "day"); } print ""; @@ -510,8 +499,7 @@ if ($id > 0) if ($action == 'edit') { print $form->selectDate($object->dateend, 'end', 0, 0, 0, 'update', 1, 0); - } - else { + } else { print dol_print_date($object->dateend, "day"); } print ""; @@ -522,8 +510,7 @@ if ($id > 0) if ($action == 'edit') { print ''; - } - else { + } else { print $object->nbterm; } print ''; @@ -534,8 +521,7 @@ if ($id > 0) if ($action == 'edit') { print '%'; - } - else { + } else { print price($object->rate).'%'; } print ''; @@ -551,13 +537,11 @@ if ($id > 0) if (!empty($conf->accounting->enabled)) { print $formaccounting->select_account($object->account_capital, 'accountancy_account_capital', 1, '', 1, 1); - } - else { + } else { print ''; } print ''; - } - else { + } else { print ''; print $langs->trans("LoanAccountancyCapitalCode"); print ''; @@ -587,13 +571,11 @@ if ($id > 0) if (!empty($conf->accounting->enabled)) { print $formaccounting->select_account($object->account_insurance, 'accountancy_account_insurance', 1, '', 1, 1); - } - else { + } else { print ''; } print ''; - } - else { + } else { print ''; print $langs->trans("LoanAccountancyInsuranceCode"); print ''; @@ -623,13 +605,11 @@ if ($id > 0) if (!empty($conf->accounting->enabled)) { print $formaccounting->select_account($object->account_interest, 'accountancy_account_interest', 1, '', 1, 1); - } - else { + } else { print ''; } print ''; - } - else { + } else { print ''; print $langs->trans("LoanAccountancyInterestCode"); print ''; @@ -723,8 +703,7 @@ if ($id > 0) print ''; $db->free($resql); - } - else { + } else { dol_print_error($db); } @@ -784,8 +763,7 @@ if ($id > 0) print ""; } } - } - else { + } else { // Loan not found dol_print_error('', $object->error); } diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index d38593c9710..a072199dc01 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -160,13 +160,11 @@ class Loan extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->db->free($resql); return 0; } - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -256,8 +254,7 @@ class Loan extends CommonObject //dol_syslog("Loans::create this->id=".$this->id); $this->db->commit(); return $this->id; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -326,8 +323,7 @@ class Loan extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -371,8 +367,7 @@ class Loan extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -496,8 +491,7 @@ class Loan extends CommonObject } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; @@ -566,8 +560,7 @@ class Loan extends CommonObject $this->db->free($resql); return $amount; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -612,13 +605,11 @@ class Loan extends CommonObject $this->db->free($result); return 1; - } - else { + } else { $this->db->free($result); return 0; } - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } diff --git a/htdocs/loan/class/loanschedule.class.php b/htdocs/loan/class/loanschedule.class.php index 8089dc3e176..7405a63e3b9 100644 --- a/htdocs/loan/class/loanschedule.class.php +++ b/htdocs/loan/class/loanschedule.class.php @@ -170,8 +170,7 @@ class LoanSchedule extends CommonObject if ($resql) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."payment_loan"); - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } @@ -182,8 +181,7 @@ class LoanSchedule extends CommonObject $this->amount_capital = $totalamount; $this->db->commit(); return $this->id; - } - else { + } else { $this->errors[] = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -255,8 +253,7 @@ class LoanSchedule extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -318,8 +315,7 @@ class LoanSchedule extends CommonObject { $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -359,8 +355,7 @@ class LoanSchedule extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -445,8 +440,7 @@ class LoanSchedule extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index 5c50a1fea89..40479677fd0 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -165,8 +165,7 @@ class PaymentLoan extends CommonObject if ($resql) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."payment_loan"); - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } @@ -177,8 +176,7 @@ class PaymentLoan extends CommonObject $this->amount_capital = $totalamount; $this->db->commit(); return $this->id; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -252,8 +250,7 @@ class PaymentLoan extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -323,8 +320,7 @@ class PaymentLoan extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -375,8 +371,7 @@ class PaymentLoan extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -454,8 +449,7 @@ class PaymentLoan extends CommonObject $result = $acc->add_url_line($bank_line_id, $fk_loan, DOL_URL_ROOT.'/loan/card.php?id=', ($this->label ? $this->label : ''), 'loan'); if ($result <= 0) dol_print_error($this->db); } - } - else { + } else { $this->error = $acc->error; $error++; } @@ -464,8 +458,7 @@ class PaymentLoan extends CommonObject if (!$error) { return 1; - } - else { + } else { return -1; } } @@ -489,8 +482,7 @@ class PaymentLoan extends CommonObject { $this->fk_bank = $id_bank; return 1; - } - else { + } else { $this->error = $this->db->error(); return 0; } diff --git a/htdocs/loan/document.php b/htdocs/loan/document.php index 93eca8cb7b4..442f8768390 100644 --- a/htdocs/loan/document.php +++ b/htdocs/loan/document.php @@ -158,8 +158,7 @@ if ($object->id) $permtoedit = $user->rights->loan->write; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/loan/list.php b/htdocs/loan/list.php index 5a4b9364555..fc0e766ed9b 100644 --- a/htdocs/loan/list.php +++ b/htdocs/loan/list.php @@ -120,8 +120,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) if (is_numeric($nbtotalofrecords) && ($limit > $nbtotalofrecords || empty($limit))) { $num = $nbtotalofrecords; -} -else { +} else { if ($limit) $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); @@ -260,8 +259,7 @@ if ($resql) print ''."\n"; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php index 6d912cc7149..31619be511b 100644 --- a/htdocs/loan/payment/card.php +++ b/htdocs/loan/payment/card.php @@ -63,8 +63,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->loan->del $db->commit(); header("Location: ".DOL_URL_ROOT."/loan/list.php"); exit; - } - else { + } else { setEventMessages($payment->error, $payment->errors, 'errors'); $db->rollback(); } @@ -100,8 +99,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->loan->wri header('Location: card.php?id='.$payment->id); exit; - } - else { + } else { setEventMessages($payment->error, $payment->errors, 'errors'); $db->rollback(); } @@ -252,8 +250,7 @@ if ($resql) print "\n"; $db->free($resql); -} -else { +} else { dol_print_error($db); } @@ -283,8 +280,7 @@ if (empty($action) && !empty($user->rights->loan->delete)) if (!$disable_delete) { print ''.$langs->trans('Delete').''; - } - else { + } else { print ''.$langs->trans('Delete').''; } } diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 3ccc6a77b3f..de5a43220ef 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -155,8 +155,7 @@ if ($action == 'add_payment') { setEventMessages($payment->error, $payment->errors, 'errors'); $error++; - } - elseif (isset($line)) + } elseif (isset($line)) { $line->fk_bank = $payment->fk_bank; $line->update($user); @@ -169,8 +168,7 @@ if ($action == 'add_payment') $loc = DOL_URL_ROOT.'/loan/card.php?id='.$chid; header('Location: '.$loc); exit; - } - else { + } else { $db->rollback(); } } @@ -289,8 +287,7 @@ if ($action == 'create') if ($loan->datestart > 0) { print ''.dol_print_date($loan->datestart, 'day').''; - } - else { + } else { print '!!!'; } @@ -304,24 +301,21 @@ if ($action == 'create') if ($sumpaid < $loan->capital) { print $langs->trans("LoanCapital").': '; - } - else { + } else { print '-'; } print '
'; if ($sumpaid < $loan->capital) { print $langs->trans("Insurance").': '; - } - else { + } else { print '-'; } print '
'; if ($sumpaid < $loan->capital) { print $langs->trans("Interest").': '; - } - else { + } else { print '-'; } print ""; diff --git a/htdocs/loan/schedule.php b/htdocs/loan/schedule.php index fb3cd86ebe3..adcdf4ca049 100644 --- a/htdocs/loan/schedule.php +++ b/htdocs/loan/schedule.php @@ -237,8 +237,7 @@ if ($object->nbterm > 0 && count($echeance->lines) == 0) $i++; $capital = $cap_rest; } -} -elseif (count($echeance->lines) > 0) +} elseif (count($echeance->lines) > 0) { $i = 1; $capital = $object->capital; diff --git a/htdocs/mailmanspip/class/mailmanspip.class.php b/htdocs/mailmanspip/class/mailmanspip.class.php index dec81411a33..46e8d017eca 100644 --- a/htdocs/mailmanspip/class/mailmanspip.class.php +++ b/htdocs/mailmanspip/class/mailmanspip.class.php @@ -208,14 +208,10 @@ class MailmanSpip if ($result) { return 1; - } - else $this->error = $mydb->lasterror(); - } - else $this->error = 'Failed to connect to SPIP'; - } - else $this->error = 'BadSPIPConfiguration'; - } - else $this->error = 'SPIPNotEnabled'; + } else $this->error = $mydb->lasterror(); + } else $this->error = 'Failed to connect to SPIP'; + } else $this->error = 'BadSPIPConfiguration'; + } else $this->error = 'SPIPNotEnabled'; return 0; } @@ -249,14 +245,10 @@ class MailmanSpip if ($result) { return 1; - } - else $this->error = $mydb->lasterror(); - } - else $this->error = 'Failed to connect to SPIP'; - } - else $this->error = 'BadSPIPConfiguration'; - } - else $this->error = 'SPIPNotEnabled'; + } else $this->error = $mydb->lasterror(); + } else $this->error = 'Failed to connect to SPIP'; + } else $this->error = 'BadSPIPConfiguration'; + } else $this->error = 'SPIPNotEnabled'; return 0; } @@ -290,23 +282,18 @@ class MailmanSpip // nous avons au moins une reponse $mydb->close($result); return 1; - } - else { + } else { // nous n'avons pas de reponse => n'existe pas $mydb->close($result); return 0; } - } - else { + } else { $this->error = $mydb->lasterror(); $mydb->close(); } - } - else $this->error = 'Failed to connect to SPIP'; - } - else $this->error = 'BadSPIPConfiguration'; - } - else $this->error = 'SPIPNotEnabled'; + } else $this->error = 'Failed to connect to SPIP'; + } else $this->error = 'BadSPIPConfiguration'; + } else $this->error = 'SPIPNotEnabled'; return -1; } @@ -371,12 +358,10 @@ class MailmanSpip { $this->mladded_ko[$list] = $object->email; return -2; - } - else $this->mladded_ok[$list] = $object->email; + } else $this->mladded_ok[$list] = $object->email; } return count($lists); - } - else { + } else { $this->error = "ADHERENT_MAILMAN_URL not defined"; return -1; } @@ -444,12 +429,10 @@ class MailmanSpip { $this->mlremoved_ko[$list] = $object->email; return -2; - } - else $this->mlremoved_ok[$list] = $object->email; + } else $this->mlremoved_ok[$list] = $object->email; } return count($lists); - } - else { + } else { $this->error = "ADHERENT_MAILMAN_UNSUB_URL not defined"; return -1; } diff --git a/htdocs/margin/admin/margin.php b/htdocs/margin/admin/margin.php index e174e383993..9efea04e415 100644 --- a/htdocs/margin/admin/margin.php +++ b/htdocs/margin/admin/margin.php @@ -47,8 +47,7 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) { header("Location: ".$_SERVER["PHP_SELF"]); exit; - } - else { + } else { dol_print_error($db); } } @@ -60,8 +59,7 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) { header("Location: ".$_SERVER["PHP_SELF"]); exit; - } - else { + } else { dol_print_error($db); } } @@ -71,8 +69,7 @@ if ($action == 'remises') if (dolibarr_set_const($db, 'MARGIN_METHODE_FOR_DISCOUNT', $_POST['MARGIN_METHODE_FOR_DISCOUNT'], 'chaine', 0, '', $conf->entity) > 0) { setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); - } - else { + } else { dol_print_error($db); } } @@ -82,8 +79,7 @@ if ($action == 'typemarges') if (dolibarr_set_const($db, 'MARGIN_TYPE', $_POST['MARGIN_TYPE'], 'chaine', 0, '', $conf->entity) > 0) { setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); - } - else { + } else { dol_print_error($db); } } @@ -93,8 +89,7 @@ if ($action == 'contact') if (dolibarr_set_const($db, 'AGENT_CONTACT_TYPE', $_POST['AGENT_CONTACT_TYPE'], 'chaine', 0, '', $conf->entity) > 0) { setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); - } - else { + } else { dol_print_error($db); } } @@ -161,13 +156,11 @@ print ''; if (!empty($conf->use_javascript_ajax)) { print ajax_constantonoff('DISPLAY_MARGIN_RATES'); -} -else { +} else { if (empty($conf->global->DISPLAY_MARGIN_RATES)) { print ''.img_picto($langs->trans("Disabled"), 'off').''; - } - else { + } else { print ''.img_picto($langs->trans("Enabled"), 'on').''; } } @@ -182,13 +175,11 @@ print ''; if (!empty($conf->use_javascript_ajax)) { print ajax_constantonoff('DISPLAY_MARK_RATES'); -} -else { +} else { if (empty($conf->global->DISPLAY_MARK_RATES)) { print ''.img_picto($langs->trans("Disabled"), 'off').''; - } - else { + } else { print ''.img_picto($langs->trans("Enabled"), 'on').''; } } @@ -203,13 +194,11 @@ print ''; if (!empty($conf->use_javascript_ajax)) { print ajax_constantonoff('ForceBuyingPriceIfNull'); -} -else { +} else { if (empty($conf->global->ForceBuyingPriceIfNull)) { print ''.img_picto($langs->trans("Disabled"), 'off').''; - } - else { + } else { print ''.img_picto($langs->trans("Enabled"), 'on').''; } } diff --git a/htdocs/margin/agentMargins.php b/htdocs/margin/agentMargins.php index 8dfaecc7d41..6ff9cdc7274 100644 --- a/htdocs/margin/agentMargins.php +++ b/htdocs/margin/agentMargins.php @@ -303,8 +303,7 @@ if ($result) } print ""; print ''; -} -else { +} else { dol_print_error($db); } $db->free($result); diff --git a/htdocs/margin/customerMargins.php b/htdocs/margin/customerMargins.php index 20d2b2a1b52..e1fd6876e0f 100644 --- a/htdocs/margin/customerMargins.php +++ b/htdocs/margin/customerMargins.php @@ -108,8 +108,7 @@ if ($socid > 0) { if (!$sortorder) $sortorder = "DESC"; if (!$sortfield) $sortfield = "f.datef"; } -} -else { +} else { print ''.$langs->trans('ThirdPartyName').''; print ''; print $form->select_company(null, 'socid', '(client=1 OR client=3)', 1, 0, 0); @@ -125,8 +124,7 @@ if (!$sortfield) { $sortfield = "f.datef"; $sortorder = "DESC"; - } - else { + } else { $sortfield = "s.nom"; $sortorder = "ASC"; } @@ -267,8 +265,7 @@ if ($result) if (!empty($client)) { print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", "&socid=".$socid, '', $sortfield, $sortorder); print_liste_field_titre("DateInvoice", $_SERVER["PHP_SELF"], "f.datef", "", "&socid=".$socid, 'align="center"', $sortfield, $sortorder); - } - else print_liste_field_titre("Customer", $_SERVER["PHP_SELF"], "s.nom", "", "&socid=".$socid, '', $sortfield, $sortorder); + } else print_liste_field_titre("Customer", $_SERVER["PHP_SELF"], "s.nom", "", "&socid=".$socid, '', $sortfield, $sortorder); print_liste_field_titre("SellingPrice", $_SERVER["PHP_SELF"], "selling_price", "", "&socid=".$socid, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($labelcostprice, $_SERVER["PHP_SELF"], "buying_price", "", "&socid=".$socid, 'align="right"', $sortfield, $sortorder); print_liste_field_titre("Margin", $_SERVER["PHP_SELF"], "marge", "", "&socid=".$socid, 'align="right"', $sortfield, $sortorder); @@ -295,8 +292,7 @@ if ($result) { $marginRate = ($pa != 0) ?-1 * (100 * $marge / $pa) : ''; $markRate = ($pv != 0) ?-1 * (100 * $marge / $pv) : ''; - } - else { + } else { $marginRate = ($pa != 0) ? (100 * $marge / $pa) : ''; $markRate = ($pv != 0) ? (100 * $marge / $pv) : ''; } @@ -310,8 +306,7 @@ if ($result) print "\n"; print ""; print dol_print_date($db->jdate($objp->datef), 'day').""; - } - else { + } else { $companystatic->id = $objp->socid; $companystatic->name = $objp->name; $companystatic->client = $objp->client; @@ -363,8 +358,7 @@ if ($result) print ""; print ''; -} -else { +} else { dol_print_error($db); } $db->free($result); diff --git a/htdocs/margin/lib/margins.lib.php b/htdocs/margin/lib/margins.lib.php index 41618b174fa..fdfea1610bf 100644 --- a/htdocs/margin/lib/margins.lib.php +++ b/htdocs/margin/lib/margins.lib.php @@ -127,12 +127,10 @@ function getMarginInfos($pvht, $remise_percent, $tva_tx, $localtax1_tx, $localta if ($product->fetch_product_fournisseur_price($fk_pa)) { $paht_ret = $product->fourn_unitprice * (1 - $product->fourn_remise_percent / 100); - } - else { + } else { $paht_ret = $paht; } - } - else { + } else { $paht_ret = $paht; } diff --git a/htdocs/margin/productMargins.php b/htdocs/margin/productMargins.php index 3e2fd804ff6..cb67cb0d58f 100644 --- a/htdocs/margin/productMargins.php +++ b/htdocs/margin/productMargins.php @@ -61,8 +61,7 @@ if (!$sortfield) { $sortfield = "f.datef"; $sortorder = "DESC"; - } - else { + } else { $sortfield = "p.ref"; $sortorder = "ASC"; } @@ -112,8 +111,7 @@ if ($id > 0) { if (!$sortorder) $sortorder = "DESC"; if (!$sortfield) $sortfield = "f.datef"; -} -else { +} else { print ''.$langs->trans('ChooseProduct/Service').''; print ''; $form->select_produits('', 'id', '', 20, 0, 1, 2, '', 1, array(), 0, 'All'); @@ -238,8 +236,7 @@ if ($result) if ($id > 0) { print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", "&id=".$id, '', $sortfield, $sortorder); print_liste_field_titre("DateInvoice", $_SERVER["PHP_SELF"], "f.datef", "", "&id=".$id, 'align="center"', $sortfield, $sortorder); - } - else { + } else { print_liste_field_titre("ProductService", $_SERVER["PHP_SELF"], "p.ref", "", "&id=".$id, '', $sortfield, $sortorder); } print_liste_field_titre("SellingPrice", $_SERVER["PHP_SELF"], "selling_price", "", "&id=".$id, 'align="right"', $sortfield, $sortorder); @@ -267,8 +264,7 @@ if ($result) { $marginRate = ($pa != 0) ?-1 * (100 * $marge / $pa) : ''; $markRate = ($pv != 0) ?-1 * (100 * $marge / $pv) : ''; - } - else { + } else { $marginRate = ($pa != 0) ? (100 * $marge / $pa) : ''; $markRate = ($pv != 0) ? (100 * $marge / $pv) : ''; } @@ -282,8 +278,7 @@ if ($result) print "\n"; print ""; print dol_print_date($db->jdate($objp->datef), 'day').""; - } - else { + } else { print ''; if ($objp->rowid > 0) { @@ -294,8 +289,7 @@ if ($result) $product_static->entity = $objp->pentity; $text = $product_static->getNomUrl(1); print $text .= ' - '.$objp->label; - } - else { + } else { print img_object('', 'product').' '.$langs->trans("NotPredefinedProducts"); } print "\n"; @@ -339,8 +333,7 @@ if ($result) print ""; print ''; -} -else { +} else { dol_print_error($db); } $db->free($result); diff --git a/htdocs/margin/tabs/productMargins.php b/htdocs/margin/tabs/productMargins.php index 489946e43fe..70cbf6a9e42 100644 --- a/htdocs/margin/tabs/productMargins.php +++ b/htdocs/margin/tabs/productMargins.php @@ -229,8 +229,7 @@ if ($id > 0 || !empty($ref)) { $marginRate = ($cumul_achat != 0) ?-1 * (100 * $totalMargin / $cumul_achat) : ''; $markRate = ($cumul_vente != 0) ?-1 * (100 * $totalMargin / $cumul_vente) : ''; - } - else { + } else { $marginRate = ($cumul_achat != 0) ? (100 * $totalMargin / $cumul_achat) : ''; $markRate = ($cumul_vente != 0) ? (100 * $totalMargin / $cumul_vente) : ''; } diff --git a/htdocs/margin/tabs/thirdpartyMargins.php b/htdocs/margin/tabs/thirdpartyMargins.php index c04537fa99e..c9711bd99ef 100644 --- a/htdocs/margin/tabs/thirdpartyMargins.php +++ b/htdocs/margin/tabs/thirdpartyMargins.php @@ -235,8 +235,7 @@ if ($socid > 0) { $marginRate = ($cumul_achat != 0) ?-1 * (100 * $totalMargin / $cumul_achat) : ''; $markRate = ($cumul_vente != 0) ?-1 * (100 * $totalMargin / $cumul_vente) : ''; - } - else { + } else { $marginRate = ($cumul_achat != 0) ? (100 * $totalMargin / $cumul_achat) : ''; $markRate = ($cumul_vente != 0) ? (100 * $totalMargin / $cumul_vente) : ''; } @@ -253,8 +252,7 @@ if ($socid > 0) print "".(($markRate === '') ? 'n/a' : price(price2num($markRate, 'MT'))."%")."\n"; print ' '; print "\n"; - } - else { + } else { dol_print_error($db); } print ""; @@ -262,8 +260,7 @@ if ($socid > 0) print '
'; $db->free($result); -} -else { +} else { dol_print_error('', 'Parameter socid not defined'); } diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index 1ef1f9c1f50..e50539fd05b 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -160,20 +160,17 @@ if (!defined('NOREQUIREUSER')) { */ // By default conf->entity is 1, but we change this if we ask another value. -if (session_id() && !empty($_SESSION["dol_entity"])) // Entity inside an opened session -{ +if (session_id() && !empty($_SESSION["dol_entity"])) { + // Entity inside an opened session $conf->entity = $_SESSION["dol_entity"]; -} -elseif (!empty($_ENV["dol_entity"])) // Entity inside a CLI script -{ +} elseif (!empty($_ENV["dol_entity"])) { + // Entity inside a CLI script $conf->entity = $_ENV["dol_entity"]; -} -elseif (GETPOSTISSET("loginfunction") && GETPOST("entity", 'int')) // Just after a login page -{ +} elseif (GETPOSTISSET("loginfunction") && GETPOST("entity", 'int')) { + // Just after a login page $conf->entity = GETPOST("entity", 'int'); -} -elseif (defined('DOLENTITY') && is_numeric(DOLENTITY)) // For public page with MultiCompany module -{ +} elseif (defined('DOLENTITY') && is_numeric(DOLENTITY)) { + // For public page with MultiCompany module $conf->entity = DOLENTITY; } diff --git a/htdocs/mrp/ajax/ajax_bom.php b/htdocs/mrp/ajax/ajax_bom.php index d5c1355d361..57f1089c2e2 100644 --- a/htdocs/mrp/ajax/ajax_bom.php +++ b/htdocs/mrp/ajax/ajax_bom.php @@ -49,7 +49,6 @@ if ($result > 0) unset($object->fields); unset($object->db); echo json_encode($object); -} -else { +} else { echo 'Failed to load category with id='.$idbom; } diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 5cf3d5798f8..404a3329133 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -421,14 +421,11 @@ class Mo extends CommonObject foreach ($filter as $key => $value) { if ($key == 't.rowid') { $sqlwhere[] = $key.'='.$value; - } - elseif (strpos($key, 'date') !== false) { + } elseif (strpos($key, 'date') !== false) { $sqlwhere[] = $key.' = \''.$this->db->idate($value).'\''; - } - elseif ($key == 'customsql') { + } elseif ($key == 'customsql') { $sqlwhere[] = $value; - } - else { + } else { $sqlwhere[] = $key.' LIKE \'%'.$this->db->escape($value).'%\''; } } @@ -582,8 +579,7 @@ class Mo extends CommonObject setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); $this->db->commit(); return 1; - } - else { + } else { setEventMessages($this->error, $this->errors, 'errors'); $this->db->rollback(); return -1; @@ -655,8 +651,7 @@ class Mo extends CommonObject $error++; $this->error = "BadValueForquantityToConsume"; break; - } - else { + } else { $moline->fk_product = $line->fk_product; $moline->role = 'toconsume'; $moline->position = $line->position; @@ -762,14 +757,12 @@ class Mo extends CommonObject if ($numref != "") { return $numref; - } - else { + } else { $this->error = $obj->error; //dol_print_error($this->db,get_class($this)."::getNextNumRef ".$obj->error); return ""; } - } - else { + } else { print $langs->trans("Error")." ".$langs->trans("Error_MRP_MO_ADDON_NotDefined"); return ""; } @@ -814,8 +807,7 @@ class Mo extends CommonObject { $this->fetch_product(); $num = $this->getNextNumRef($this->product); - } - else { + } else { $num = $this->ref; } $this->newref = $num; @@ -896,8 +888,7 @@ class Mo extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -1024,8 +1015,7 @@ class Mo extends CommonObject } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; @@ -1141,8 +1131,7 @@ class Mo extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -1175,8 +1164,7 @@ class Mo extends CommonObject $this->error = $this->error; $this->errors = $this->errors; return $result; - } - else { + } else { $this->lines = $result; return $this->lines; } @@ -1322,8 +1310,7 @@ class Mo extends CommonObject $productstatic->fetch($line->fk_product); $this->tpl['label'] .= $productstatic->getNomUrl(1); //$this->tpl['label'].= ' - '.$productstatic->label; - } - else { + } else { // If origin MRP line is not a product, but another MRP // TODO } @@ -1506,14 +1493,11 @@ class MoLine extends CommonObjectLine foreach ($filter as $key => $value) { if ($key == 't.rowid') { $sqlwhere[] = $key.'='.$value; - } - elseif (strpos($key, 'date') !== false) { + } elseif (strpos($key, 'date') !== false) { $sqlwhere[] = $key.' = \''.$this->db->idate($value).'\''; - } - elseif ($key == 'customsql') { + } elseif ($key == 'customsql') { $sqlwhere[] = $value; - } - else { + } else { $sqlwhere[] = $key.' LIKE \'%'.$this->db->escape($value).'%\''; } } diff --git a/htdocs/mrp/index.php b/htdocs/mrp/index.php index e05a93494f3..d4359dcae90 100644 --- a/htdocs/mrp/index.php +++ b/htdocs/mrp/index.php @@ -136,8 +136,7 @@ if ($conf->use_javascript_ajax) print ""; print "
"; - } - else { + } else { dol_print_error($db); } } @@ -194,8 +193,7 @@ if ($resql) } print ""; print "
"; -} -else { +} else { dol_print_error($db); } @@ -246,8 +244,7 @@ if ($resql) } print ""; print "
"; -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/mrp/mo_agenda.php b/htdocs/mrp/mo_agenda.php index 5b18f18d1ca..6630688b64a 100644 --- a/htdocs/mrp/mo_agenda.php +++ b/htdocs/mrp/mo_agenda.php @@ -48,8 +48,7 @@ if (GETPOST('actioncode', 'array')) { $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; -} -else { +} else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); @@ -215,8 +214,7 @@ if ($object->id > 0) if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) { print '
'.$langs->trans("AddAction").''; - } - else { + } else { print ''.$langs->trans("AddAction").''; } } diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php index eda7d0c30ca..a4ab216156c 100644 --- a/htdocs/mrp/mo_card.php +++ b/htdocs/mrp/mo_card.php @@ -192,8 +192,7 @@ if (empty($reshook)) $object->generateDocument($model, $outputlangs, 0, 0, 0); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -623,8 +622,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($permissiontoadd) { print ''.$langs->trans("Modify").''."\n"; - } - else { + } else { print ''.$langs->trans('Modify').''."\n"; } } @@ -637,8 +635,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if (empty($object->table_element_line) || (is_array($object->lines) && count($object->lines) > 0)) { print ''.$langs->trans("Validate").''; - } - else { + } else { $langs->load("errors"); print ''.$langs->trans("Validate").''; } @@ -672,8 +669,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($permissiontodelete || ($object->status == $object::STATUS_DRAFT && $permissiontoadd)) { print ''.$langs->trans('Delete').''."\n"; - } - else { + } else { print ''.$langs->trans('Delete').''."\n"; } } diff --git a/htdocs/mrp/mo_document.php b/htdocs/mrp/mo_document.php index 9ed658ab1c1..86aefd8a5d5 100644 --- a/htdocs/mrp/mo_document.php +++ b/htdocs/mrp/mo_document.php @@ -183,8 +183,7 @@ if ($object->id) $relativepathwithnofile = 'mo/'.dol_sanitizeFileName($object->ref).'/'; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { accessforbidden('', 0, 1); } diff --git a/htdocs/mrp/mo_list.php b/htdocs/mrp/mo_list.php index 9866dabf8e0..64441a4fec9 100644 --- a/htdocs/mrp/mo_list.php +++ b/htdocs/mrp/mo_list.php @@ -279,8 +279,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) if (is_numeric($nbtotalofrecords) && ($limit > $nbtotalofrecords || empty($limit))) { $num = $nbtotalofrecords; -} -else { +} else { if ($limit) $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); @@ -415,8 +414,7 @@ foreach ($object->fields as $key => $val) if (is_array($val['arrayofkeyval'])) print $form->selectarray('search_'.$key, $val['arrayofkeyval'], $search[$key], $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth75'); elseif (strpos($val['type'], 'integer:') === 0) { print $object->showInputField($val, $key, $search[$key], '', '', 'search_', 'maxwidth150', 1); - } - elseif (!preg_match('/^(date|timestamp)/', $val['type'])) print ''; + } elseif (!preg_match('/^(date|timestamp)/', $val['type'])) print ''; print ''; } } diff --git a/htdocs/mrp/mo_production.php b/htdocs/mrp/mo_production.php index 6c800446595..b168371c0ea 100644 --- a/htdocs/mrp/mo_production.php +++ b/htdocs/mrp/mo_production.php @@ -352,8 +352,7 @@ if (empty($reshook)) } } } - } - else { + } else { $consumptioncomplete = false; $productioncomplete = false; } @@ -406,8 +405,7 @@ if (empty($reshook)) $object->generateDocument($model, $outputlangs, 0, 0, 0); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -591,8 +589,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if (empty($object->table_element_line) || (is_array($object->lines) && count($object->lines) > 0)) { print ''.$langs->trans("Validate").''; - } - else { + } else { $langs->load("errors"); print ''.$langs->trans("Validate").''; } diff --git a/htdocs/multicurrency/class/multicurrency.class.php b/htdocs/multicurrency/class/multicurrency.class.php index 50bd5d6cdcf..27bf6dc1c8f 100644 --- a/htdocs/multicurrency/class/multicurrency.class.php +++ b/htdocs/multicurrency/class/multicurrency.class.php @@ -409,8 +409,7 @@ class MultiCurrency extends CommonObject { $this->rate = $currencyRate; return 1; - } - else { + } else { $this->rate = null; $this->errors = $currencyRate->errors; return -1; @@ -562,8 +561,7 @@ class MultiCurrency extends CommonObject { if ($way == 'dolibarr') return $amount * $multicurrency_tx; else return $amount / $multicurrency_tx; - } - else return $amount; + } else return $amount; } /** @@ -657,8 +655,7 @@ class MultiCurrency extends CommonObject if ($obj->fetch(null, $code) > 0) { $obj->updateRate($rate); - } - elseif ($addifnotfound) + } elseif ($addifnotfound) { self::addRateFromDolibarr($code, $rate); } @@ -666,8 +663,7 @@ class MultiCurrency extends CommonObject } return 1; - } - else { + } else { dol_syslog("Failed to call endpoint ".$response->error->info, LOG_WARNING); setEventMessages($langs->trans('multicurrency_syncronize_error', $response->error->info), null, 'errors'); diff --git a/htdocs/opensurvey/card.php b/htdocs/opensurvey/card.php index 1a794ac76d9..7322c70780c 100644 --- a/htdocs/opensurvey/card.php +++ b/htdocs/opensurvey/card.php @@ -241,8 +241,7 @@ print $langs->trans("Title").''; if ($action == 'edit') { print ''; -} -else print dol_htmlentities($object->titre); +} else print dol_htmlentities($object->titre); print ''; // Description @@ -251,8 +250,7 @@ if ($action == 'edit') { $doleditor = new DolEditor('nouveauxcommentaires', $object->description, '', 120, 'dolibarr_notes', 'In', 1, 1, 1, ROWS_7, '90%'); $doleditor->Create(0, ''); -} -else { +} else { print (dol_textishtml($object->description) ? $object->description : dol_nl2br($object->description, 1, true)); } print ''; @@ -264,8 +262,7 @@ if (!$object->fk_user_creat) { if ($action == 'edit') { print ''; - } - else print dol_print_email($object->mail_admin, 0, 0, 1); + } else print dol_print_email($object->mail_admin, 0, 0, 1); print ''; } @@ -274,8 +271,7 @@ print ''.$langs->trans('ToReceiveEMailForEachVote').'mailsonde ? 'checked="checked"' : '').'">'; -} -else { +} else { print yn($object->mailsonde); //If option is active and linked user does not have an email, we show a warning @@ -292,8 +288,7 @@ print ''.$langs->trans('CanComment').''; if ($action == 'edit') { print 'allow_comments ? 'checked="checked"' : '').'">'; -} -else print yn($object->allow_comments); +} else print yn($object->allow_comments); print ''; // Users can see others vote @@ -301,8 +296,7 @@ print ''.$langs->trans('CanSeeOthersVote').''; if ($action == 'edit') { print 'allow_spy ? 'checked="checked"' : '').'">'; -} -else print yn($object->allow_spy); +} else print yn($object->allow_spy); print ''; // Expire date @@ -407,8 +401,7 @@ if ($comments) { print dol_htmlentities($comment->usercomment).': '.dol_nl2br(dol_htmlentities($comment->comment))."
"; } -} -else { +} else { print $langs->trans("NoCommentYet").'
'; } diff --git a/htdocs/opensurvey/class/opensurveysondage.class.php b/htdocs/opensurvey/class/opensurveysondage.class.php index f7541f2ebe0..19a29f5fa71 100644 --- a/htdocs/opensurvey/class/opensurveysondage.class.php +++ b/htdocs/opensurvey/class/opensurveysondage.class.php @@ -199,8 +199,7 @@ class Opensurveysondage extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -261,8 +260,7 @@ class Opensurveysondage extends CommonObject $this->date_m = $this->db->jdate($obj->tls); $ret = 1; - } - else { + } else { $sondage = ($id ? 'id='.$id : 'sondageid='.$numsurvey); $this->error = 'Fetch no poll found for '.$sondage; dol_syslog($this->error, LOG_ERR); @@ -270,8 +268,7 @@ class Opensurveysondage extends CommonObject } $this->db->free($resql); - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); $ret = -1; } @@ -339,8 +336,7 @@ class Opensurveysondage extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -404,8 +400,7 @@ class Opensurveysondage extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -453,8 +448,7 @@ class Opensurveysondage extends CommonObject } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; @@ -495,8 +489,7 @@ class Opensurveysondage extends CommonObject $ret[] = $tmp; $i++; } - } - else dol_print_error($this->db); + } else dol_print_error($this->db); $this->lines = $ret; diff --git a/htdocs/opensurvey/exportcsv.php b/htdocs/opensurvey/exportcsv.php index 2125ac76774..6f9a699273b 100644 --- a/htdocs/opensurvey/exportcsv.php +++ b/htdocs/opensurvey/exportcsv.php @@ -108,13 +108,11 @@ if ($resql) { $input .= 'OK;'; $somme[$k]++; - } - elseif ($car == "2") + } elseif ($car == "2") { $input .= 'KO;'; $somme[$k]++; - } - else { + } else { $input .= ';'; } } @@ -122,8 +120,7 @@ if ($resql) $input .= "\r\n"; $i++; } -} -else dol_print_error($db); +} else dol_print_error($db); $filesize = strlen($input); diff --git a/htdocs/opensurvey/fonctions.php b/htdocs/opensurvey/fonctions.php index 2fa067ba9a3..635fc3ceb5c 100644 --- a/htdocs/opensurvey/fonctions.php +++ b/htdocs/opensurvey/fonctions.php @@ -103,8 +103,7 @@ function llxHeaderSurvey($title, $head = "", $disablejs = 0, $disablehead = 0, $ $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); $width = 150; - } - elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) + } elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) { $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); diff --git a/htdocs/opensurvey/index.php b/htdocs/opensurvey/index.php index 20609602ad2..50198e5202f 100644 --- a/htdocs/opensurvey/index.php +++ b/htdocs/opensurvey/index.php @@ -52,8 +52,7 @@ if ($resql) { $obj = $db->fetch_object($resql); $nbsondages = $obj->nb; -} -else dol_print_error($db, ''); +} else dol_print_error($db, ''); $title = $langs->trans("OpenSurveyArea"); diff --git a/htdocs/opensurvey/list.php b/htdocs/opensurvey/list.php index 918c8e20ef9..4fcbb93a18c 100644 --- a/htdocs/opensurvey/list.php +++ b/htdocs/opensurvey/list.php @@ -190,8 +190,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) { $num = $nbtotalofrecords; -} -else { +} else { $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); @@ -356,8 +355,7 @@ while ($i < min($num, $limit)) { $obj2 = $db->fetch_object($resql2); $nbuser = $obj2->nb; - } - else dol_print_error($db); + } else dol_print_error($db); $opensurvey_static->id = $obj->rowid; $opensurvey_static->ref = $obj->rowid; diff --git a/htdocs/opensurvey/results.php b/htdocs/opensurvey/results.php index c86c6919f00..59f605daf31 100644 --- a/htdocs/opensurvey/results.php +++ b/htdocs/opensurvey/results.php @@ -70,12 +70,10 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout if (isset($_POST["choix$i"]) && $_POST["choix$i"] == '1') { $nouveauchoix .= "1"; - } - elseif (isset($_POST["choix$i"]) && $_POST["choix$i"] == '2') + } elseif (isset($_POST["choix$i"]) && $_POST["choix$i"] == '2') { $nouveauchoix .= "2"; - } - else { // sinon c'est 0 + } else { // sinon c'est 0 $nouveauchoix .= "0"; } } @@ -93,8 +91,7 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout { setEventMessages($langs->trans("VoteNameAlreadyExists"), null, 'errors'); $error++; - } - else { + } else { $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'opensurvey_user_studs (nom, id_sondage, reponses)'; $sql .= " VALUES ('".$db->escape($nom)."', '".$db->escape($numsondage)."','".$db->escape($nouveauchoix)."')"; $resql = $db->query($sql); @@ -134,12 +131,10 @@ if ($testmodifier) if (isset($_POST["choix$i"]) && $_POST["choix$i"] == '1') { $nouveauchoix .= "1"; - } - elseif (isset($_POST["choix$i"]) && $_POST["choix$i"] == '2') + } elseif (isset($_POST["choix$i"]) && $_POST["choix$i"] == '2') { $nouveauchoix .= "2"; - } - else { // sinon c'est 0 + } else { // sinon c'est 0 $nouveauchoix .= "0"; } } @@ -260,8 +255,7 @@ if (isset($_POST["ajoutercolonne"]) && $object->format == "D") } $adresseadmin = $object->mail_admin; - } - else { + } else { $erreur_ajout_date = "yes"; } } @@ -449,8 +443,7 @@ print $langs->trans("Title").''; if ($action == 'edit') { print ''; -} -else print dol_htmlentities($object->titre); +} else print dol_htmlentities($object->titre); print ''; // Expire date @@ -533,8 +526,7 @@ if (GETPOST('ajoutsujet')) print '     '; print ''; print '

'."\n"; - } - else { + } else { require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; $formother = new FormOther($db); @@ -749,8 +741,7 @@ if ($object->format == "D") print ''."\n"; } -} -else { +} else { // Show titles print ''."\n"; print ''."\n"; @@ -836,8 +827,7 @@ while ($compteur < $num) if (((string) $car) == "0") $sumagainst[$i]++; } } - } - else { + } else { //sinon on remplace les choix de l'utilisateur par une ligne de checkbox pour recuperer de nouvelles valeurs if ($compteur == $ligneamodifier) { @@ -863,8 +853,7 @@ while ($compteur < $num) } print ''."\n"; } - } - else { + } else { for ($i = 0; $i < $nbcolonnes; $i++) { $car = substr($ensemblereponses, $i, 1); @@ -1058,8 +1047,7 @@ for ($i = 0; $i < $nbcolonnes; $i++) } else { $meilleursujet .= dol_print_date($toutsujet[$i], 'daytext').($toutsujet[$i] ? ' ('.dol_print_date($toutsujet[$i], '%A').')' : ''); } - } - else { + } else { $tmps = explode('@', $toutsujet[$i]); $meilleursujet .= dol_htmlentities($tmps[0]); } diff --git a/htdocs/opensurvey/wizard/choix_date.php b/htdocs/opensurvey/wizard/choix_date.php index 4254199ec96..17d60d4a406 100644 --- a/htdocs/opensurvey/wizard/choix_date.php +++ b/htdocs/opensurvey/wizard/choix_date.php @@ -209,8 +209,7 @@ llxHeader('', $langs->trans("OpenSurvey"), "", '', 0, 0, $arrayofjs, $arrayofcss if (!isset($_SESSION["nbrecaseshoraires"])) { $_SESSION["nbrecaseshoraires"] = 5; -} -elseif (GETPOST('ajoutcases') && $_SESSION["nbrecaseshoraires"] == 5) +} elseif (GETPOST('ajoutcases') && $_SESSION["nbrecaseshoraires"] == 5) { $_SESSION["nbrecaseshoraires"] = 10; } @@ -319,8 +318,7 @@ $premierjourmois = date("N", mktime(0, 0, 0, $_SESSION["mois"], 1, $_SESSION["an if (is_integer($_SESSION["mois"]) && $_SESSION["mois"] > 0 && $_SESSION["mois"] < 13) { $motmois = dol_print_date(mktime(0, 0, 0, $_SESSION["mois"], 10), '%B'); -} -else { +} else { $motmois = dol_print_date(dol_now(), '%B'); } diff --git a/htdocs/opensurvey/wizard/create_survey.php b/htdocs/opensurvey/wizard/create_survey.php index 9752a4c43c4..5d7363b4c9f 100644 --- a/htdocs/opensurvey/wizard/create_survey.php +++ b/htdocs/opensurvey/wizard/create_survey.php @@ -88,8 +88,7 @@ if (GETPOST("creation_sondage_date") || GETPOST("creation_sondage_autre")) { $testdate = true; $_SESSION['champdatefin'] = dol_print_date($champdatefin, 'dayrfc'); - } - else { + } else { $testdate = true; $_SESSION['champdatefin'] = dol_print_date($champdatefin, 'dayrfc'); //$testdate = false; @@ -191,8 +190,7 @@ if (GETPOST('choix_sondage')) else print ''; print ''; print '
trans("TypeDate") : $langs->trans("TypeClassic")).')">'; -} -else { +} else { // Show image to selecte between date survey or other survey print '
'."\n"; print ' '."\n"; diff --git a/htdocs/paybox/admin/paybox.php b/htdocs/paybox/admin/paybox.php index 5e21326062c..cb1ad560158 100644 --- a/htdocs/paybox/admin/paybox.php +++ b/htdocs/paybox/admin/paybox.php @@ -79,8 +79,7 @@ if ($action == 'setvalue' && $user->admin) { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { $db->rollback(); dol_print_error($db); } diff --git a/htdocs/paypal/admin/paypal.php b/htdocs/paypal/admin/paypal.php index 94dff45e543..71f4b25829b 100644 --- a/htdocs/paypal/admin/paypal.php +++ b/htdocs/paypal/admin/paypal.php @@ -79,8 +79,7 @@ if ($action == 'setvalue' && $user->admin) { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { $db->rollback(); dol_print_error($db); } @@ -94,8 +93,7 @@ if ($action == "setlive") if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -149,8 +147,7 @@ if (empty($conf->global->PAYPAL_API_SANDBOX)) { print ''; print img_picto($langs->trans("Activated"), 'switch_on'); -} -else { +} else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php index 6da045aaf4f..18ebce49479 100644 --- a/htdocs/paypal/lib/paypal.lib.php +++ b/htdocs/paypal/lib/paypal.lib.php @@ -259,8 +259,7 @@ function print_paypal_redirect($paymentAmount, $currencyCodeType, $paymentType, $payPalURL = $API_Url.$token; header("Location: ".$payPalURL); exit; - } - else { + } else { //Display a user friendly Error on the page using any of the following error information returned by PayPal $ErrorCode = urldecode($resArray["L_ERRORCODE0"]); $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]); @@ -270,8 +269,7 @@ function print_paypal_redirect($paymentAmount, $currencyCodeType, $paymentType, if ($ErrorCode == 10729) { $mesg .= "PayPal can't accept payments for this thirdparty. An address is defined but is not complete (missing State).
Ask system administrator to fix address or to setup Paypal module to accept payments even on not complete addresses (remove option PAYPAL_REQUIRE_VALID_SHIPPING_ADDRESS).
\n"; - } - else { + } else { $mesg = $langs->trans('SetExpressCheckoutAPICallFailed')."
\n"; $mesg .= $langs->trans('DetailedErrorMessage').": ".$ErrorLongMsg."
\n"; $mesg .= $langs->trans('ShortErrorMessage').": ".$ErrorShortMsg."
\n"; @@ -345,8 +343,7 @@ function callSetExpressCheckout($paymentAmount, $currencyCodeType, $paymentType, if (empty($conf->global->PAYPAL_REQUIRE_VALID_SHIPPING_ADDRESS)) { $nvpstr = $nvpstr."&NOSHIPPING=1"; // An empty or not complete shipping address will be accepted - } - else { + } else { $nvpstr = $nvpstr."&NOSHIPPING=0"; // A valid shipping address is required (full required fields mandatory) } $nvpstr = $nvpstr."&SOLUTIONTYPE=".urlencode($solutionType); @@ -589,8 +586,7 @@ function hash_call($methodName, $nvpStr) { $API_Endpoint = "https://api-3t.sandbox.paypal.com/nvp"; $API_Url = "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token="; - } - else { + } else { $API_Endpoint = "https://api-3t.paypal.com/nvp"; $API_Url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token="; } @@ -668,8 +664,7 @@ function hash_call($methodName, $nvpStr) $_SESSION['curl_error_msg'] = curl_error($ch); //Execute the Error handling module to display errors. - } - else { + } else { //closing the curl curl_close($ch); } diff --git a/htdocs/paypal/lib/paypalfunctions.lib.php b/htdocs/paypal/lib/paypalfunctions.lib.php index 1c495bdb5ae..5fbe0f6e9cd 100644 --- a/htdocs/paypal/lib/paypalfunctions.lib.php +++ b/htdocs/paypal/lib/paypalfunctions.lib.php @@ -52,8 +52,7 @@ if (!empty($conf->global->PAYPAL_API_SANDBOX) || GETPOST('forcesandbox', 'alpha' { $API_Endpoint = "https://api-3t.sandbox.paypal.com/nvp"; $API_Url = "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token="; -} -else { +} else { $API_Endpoint = "https://api-3t.paypal.com/nvp"; $API_Url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token="; } diff --git a/htdocs/printing/admin/printing.php b/htdocs/printing/admin/printing.php index 5282684f81f..02fd4545c84 100644 --- a/htdocs/printing/admin/printing.php +++ b/htdocs/printing/admin/printing.php @@ -73,8 +73,7 @@ if ($action == 'setconst' && $user->admin) { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null); - } - else { + } else { $db->rollback(); dol_print_error($db); } @@ -92,8 +91,7 @@ if ($action == 'setvalue' && $user->admin) { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null); - } - else { + } else { $db->rollback(); dol_print_error($db); } @@ -159,8 +157,7 @@ if ($mode == 'setup' && $user->admin) if ($key['varname'] == 'PRINTGCP_TOKEN_ACCESS') { print $langs->trans("IsTokenGenerated"); - } - else { + } else { print $langs->trans($key['varname']); } print ''; @@ -196,8 +193,7 @@ if ($mode == 'setup' && $user->admin) $storage = new DoliStorage($db, $conf); try { $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME_GOOGLE); - } - catch (Exception $e) + } catch (Exception $e) { // Return an error if token not found } @@ -263,13 +259,11 @@ if ($mode == 'config' && $user->admin) if (!empty($conf->use_javascript_ajax)) { print ajax_constantonoff($printer->active); - } - else { + } else { if (empty($conf->global->{$printer->conf})) { print '
'.img_picto($langs->trans("Disabled"), 'off').''; - } - else { + } else { print ''.img_picto($langs->trans("Enabled"), 'on').''; } } @@ -303,8 +297,7 @@ if ($mode == 'test' && $user->admin) } else { setEventMessages($printer->error, $printer->errors, 'errors'); } - } - else { + } else { print $langs->trans('PleaseConfigureDriverfromList'); } } else { diff --git a/htdocs/product/admin/dynamic_prices.php b/htdocs/product/admin/dynamic_prices.php index a1077a4f845..752ddecbea8 100644 --- a/htdocs/product/admin/dynamic_prices.php +++ b/htdocs/product/admin/dynamic_prices.php @@ -182,8 +182,7 @@ if ($action != 'create_updater' && $action != 'edit_updater') print 'id.'">'.img_delete().''; print ''; } - } - else { + } else { print ''; @@ -274,8 +273,7 @@ if ($action != 'create_variable' && $action != 'edit_variable') print 'id.'">'.img_delete().''; print ''; } - } - else { + } else { print ''; diff --git a/htdocs/product/admin/product.php b/htdocs/product/admin/product.php index 8ac181e64c9..23b1cb43f56 100644 --- a/htdocs/product/admin/product.php +++ b/htdocs/product/admin/product.php @@ -81,8 +81,7 @@ if ($action == 'setcodeproduct') { header("Location: ".$_SERVER["PHP_SELF"]); exit; - } - else { + } else { dol_print_error($db); } } @@ -110,16 +109,14 @@ if ($action == 'other') $res = dolibarr_set_const($db, 'PRODUIT_CUSTOMER_PRICES_BY_QTY', 0, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'PRODUIT_CUSTOMER_PRICES', 0, 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, 'PRODUCT_PRICE_UNIQ', 1, 'chaine', 0, '', $conf->entity); - } - else { + } else { $multirule = explode('&', $princingrules); foreach ($multirule as $rulesselected) { $res = dolibarr_set_const($db, $rulesselected, 1, 'chaine', 0, '', $conf->entity); } } - } - else // We clear this mode + } else // We clear this mode { if (strpos($rule, '&') === false) { $res = dolibarr_set_const($db, $rule, 0, 'chaine', 0, '', $conf->entity); @@ -199,13 +196,11 @@ if ($action == 'specimen') // For products { header("Location: ".DOL_URL_ROOT."/document.php?modulepart=product&file=SPECIMEN.pdf"); return; - } - else { + } else { setEventMessages($obj->error, $obj->errors, 'errors'); dol_syslog($obj->error, LOG_ERR); } - } - else { + } else { setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } @@ -266,8 +261,7 @@ if ($action) if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("SetupNotError"), null, 'errors'); } } @@ -284,8 +278,7 @@ if (empty($conf->product->enabled)) { $title = $langs->trans('ServiceSetup'); $tab = $langs->trans('Services'); -} -elseif (empty($conf->service->enabled)) +} elseif (empty($conf->service->enabled)) { $title = $langs->trans('ProductSetup'); $tab = $langs->trans('Products'); @@ -333,8 +326,7 @@ foreach ($dirproduct as $dirroot) try { dol_include_once($dirroot.$file.'.php'); - } - catch (Exception $e) + } catch (Exception $e) { dol_syslog($e->getMessage(), LOG_ERR); } @@ -356,8 +348,7 @@ foreach ($dirproduct as $dirroot) print '\n"; - } - else { + } else { $disabled = false; if (!empty($conf->multicompany->enabled) && (is_object($mc) && !empty($mc->sharings['referent']) && $mc->sharings['referent'] == $conf->entity) ? false : true); print ''; - } - else { + } else { print '"; @@ -480,8 +469,7 @@ foreach ($dirmodels as $reldir) if ($conf->global->PRODUCT_ADDON_PDF == $name) { print img_picto($langs->trans("Default"), 'on'); - } - else { + } else { print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -507,8 +495,7 @@ foreach ($dirmodels as $reldir) if ($module->type == 'pdf') { print ''.img_object($langs->trans("Preview"), 'contract').''; - } - else { + } else { print img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print ''; @@ -561,8 +548,7 @@ print ''; if (empty($conf->multicompany->enabled)) { print ''; -} -else { +} else { print ''; } print ''; -} -else { +} else { print ''; - } - else { + } else { print ''; print ''; } @@ -1193,8 +1170,7 @@ else { print '
'.$langs->trans("CreateSurveyDate").'
'; print $langs->trans("None"); print '
'; print $langs->trans("None"); print '
'."\n"; print img_picto($langs->trans("Activated"), 'switch_on'); print "'; @@ -397,8 +388,7 @@ if ($resql) array_push($def, $array[0]); $i++; } -} -else { +} else { dol_print_error($db); } @@ -468,8 +458,7 @@ foreach ($dirmodels as $reldir) print img_picto($langs->trans("Enabled"), 'switch_on'); print ''; print ''."\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "
'.$langs->trans("PricingRule").''.$form->textwithpicto($langs->trans("PricingRule"), $langs->trans("SamePriceAlsoForSharedCompanies"), 1).''; @@ -605,8 +591,7 @@ if (empty($conf->use_javascript_ajax)) print ''; print $langs->trans("NotAvailableWhenAjaxDisabled"); print ''; $arrval = array( '0'=>$langs->trans("No"), @@ -730,8 +715,7 @@ if (!empty($conf->global->PRODUCT_CANVAS_ABILITY)) print img_picto($langs->trans("Active"), 'tick'); print ''; print ''.$langs->trans("Disable").''; - } - else { + } else { print ' '; print ''.$langs->trans("Activate").''; } @@ -742,8 +726,7 @@ if (!empty($conf->global->PRODUCT_CANVAS_ABILITY)) } closedir($handle); } - } - else { + } else { setEventMessages($dir.' '.$langs->trans("IsNotADir"), null, 'errors'); } } diff --git a/htdocs/product/admin/product_extrafields.php b/htdocs/product/admin/product_extrafields.php index 7814c3bcda8..1e67a1d469a 100644 --- a/htdocs/product/admin/product_extrafields.php +++ b/htdocs/product/admin/product_extrafields.php @@ -65,8 +65,7 @@ if (empty($conf->product->enabled)) { $title = $langs->trans('ServiceSetup'); $textobject = $langs->trans('Services'); -} -elseif (empty($conf->service->enabled)) +} elseif (empty($conf->service->enabled)) { $title = $langs->trans('ProductSetup'); $textobject = $langs->trans('Products'); diff --git a/htdocs/product/admin/product_supplier_extrafields.php b/htdocs/product/admin/product_supplier_extrafields.php index d35e6012e1f..b400843ab5c 100644 --- a/htdocs/product/admin/product_supplier_extrafields.php +++ b/htdocs/product/admin/product_supplier_extrafields.php @@ -66,8 +66,7 @@ if (empty($conf->product->enabled)) { $title = $langs->trans('ServiceSetup'); $textobject = $langs->trans('Services'); -} -elseif (empty($conf->service->enabled)) +} elseif (empty($conf->service->enabled)) { $title = $langs->trans('ProductSetup'); $textobject = $langs->trans('Products'); diff --git a/htdocs/product/admin/product_tools.php b/htdocs/product/admin/product_tools.php index 898d23ae8fb..ce7bcf733a5 100644 --- a/htdocs/product/admin/product_tools.php +++ b/htdocs/product/admin/product_tools.php @@ -120,8 +120,7 @@ if ($action == 'convert') { $newprice = price2num($objectstatic->multiprices_ttc[$level], 'MU'); // Second param must be MU (we want a unit price so 'MU'. If unit price was on 4 decimal, we must keep 4 decimals) $newminprice = $objectstatic->multiprices_min_ttc[$level]; - } - else { + } else { $newprice = price2num($objectstatic->multiprices[$level], 'MU'); // Second param must be MU (we want a unit price so 'MU'. If unit price was on 4 decimal, we must keep 4 decimals) $newminprice = $objectstatic->multiprices_min[$level]; } @@ -150,8 +149,7 @@ if ($action == 'convert') { $newprice = price2num($objectstatic->price_ttc, 'MU'); // Second param must be MU (we want a unit price so 'MU'. If unit price was on 4 decimal, we must keep 4 decimals) $newminprice = $objectstatic->price_min_ttc; - } - else { + } else { $newprice = price2num($objectstatic->price, 'MU'); // Second param must be MU (we want a unit price so 'MU'. If unit price was on 4 decimal, we must keep 4 decimals) $newminprice = $objectstatic->price_min; } @@ -174,8 +172,7 @@ if ($action == 'convert') $i++; } - } - else dol_print_error($db); + } else dol_print_error($db); } $fourn = new Fournisseur($db); @@ -243,14 +240,12 @@ if ($action == 'convert') $i++; } - } - else dol_print_error($db); + } else dol_print_error($db); if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } @@ -259,8 +254,7 @@ if ($action == 'convert') { if ($nbrecordsmodified > 0) setEventMessages($langs->trans("RecordsModified", $nbrecordsmodified), null, 'mesgs'); else setEventMessages($langs->trans("NoRecordFound"), null, 'warnings'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -285,8 +279,7 @@ if (empty($mysoc->country_code)) $langs->load("errors"); $warnpicto = img_error($langs->trans("WarningMandatorySetupNotComplete")); print '
'.$warnpicto.' '.$langs->trans("WarningMandatorySetupNotComplete").''; -} -else { +} else { print '
'; print ''; print ''; diff --git a/htdocs/product/agenda.php b/htdocs/product/agenda.php index 3d0dc302283..acd698d9f37 100644 --- a/htdocs/product/agenda.php +++ b/htdocs/product/agenda.php @@ -40,8 +40,7 @@ if (GETPOST('actioncode', 'array')) { $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; -} -else { +} else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/product/ajax/products.php b/htdocs/product/ajax/products.php index 219e68171d2..f206d868347 100644 --- a/htdocs/product/ajax/products.php +++ b/htdocs/product/ajax/products.php @@ -162,8 +162,7 @@ if (!empty($action) && $action == 'fetch' && !empty($id)) } echo json_encode($outjson); -} -else { +} else { require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; $langs->loadLangs(array("main", "products")); diff --git a/htdocs/product/canvas/product/actions_card_product.class.php b/htdocs/product/canvas/product/actions_card_product.class.php index da99efc337d..c14bfaf5e74 100644 --- a/htdocs/product/canvas/product/actions_card_product.class.php +++ b/htdocs/product/canvas/product/actions_card_product.class.php @@ -287,8 +287,7 @@ class ActionsCardProduct $i++; } $this->db->free($resql); - } - else { + } else { dol_print_error($this->db, $sql); } } @@ -406,14 +405,12 @@ class ActionsCardProduct $this->type = $obj->fk_product_type; $this->entity = $obj->entity; $datas[$alias] = $this->getNomUrl(1, '', 24); - } - elseif ($alias == 'stock') + } elseif ($alias == 'stock') { $this->load_stock(); if ($this->stock_reel < $obj->seuil_stock_alerte) $datas[$alias] = $this->stock_reel.' '.img_warning($langs->trans("StockTooLow")); else $datas[$alias] = $this->stock_reel; - } - elseif ($alias == 'label') $datas[$alias] = dol_trunc($obj->$alias, 40); + } elseif ($alias == 'label') $datas[$alias] = dol_trunc($obj->$alias, 40); elseif (preg_match('/price/i', $alias)) $datas[$alias] = price($obj->$alias); elseif ($alias == 'datem') $datas[$alias] = dol_print_date($this->db->jdate($obj->$alias), 'day'); elseif ($alias == 'status') $datas[$alias] = $this->LibStatut($obj->$alias, 5); @@ -426,8 +423,7 @@ class ActionsCardProduct $i++; } $this->db->free($resql); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/product/canvas/service/actions_card_service.class.php b/htdocs/product/canvas/service/actions_card_service.class.php index aaf9b584068..0518cfed475 100644 --- a/htdocs/product/canvas/service/actions_card_service.class.php +++ b/htdocs/product/canvas/service/actions_card_service.class.php @@ -205,8 +205,7 @@ class ActionsCardService if ($this->object->duration_value > 1) { $dur = array("h"=>$langs->trans("Hours"), "d"=>$langs->trans("Days"), "w"=>$langs->trans("Weeks"), "m"=>$langs->trans("Months"), "y"=>$langs->trans("Years")); - } - elseif ($this->object->duration_value > 0) + } elseif ($this->object->duration_value > 0) { $dur = array("h"=>$langs->trans("Hour"), "d"=>$langs->trans("Day"), "w"=>$langs->trans("Week"), "m"=>$langs->trans("Month"), "y"=>$langs->trans("Year")); } @@ -267,8 +266,7 @@ class ActionsCardService $i++; } $this->db->free($resql); - } - else { + } else { dol_print_error($this->db, $sql); } } @@ -359,8 +357,7 @@ class ActionsCardService $i++; } $this->db->free($resql); - } - else { + } else { print $sql; } } diff --git a/htdocs/product/card.php b/htdocs/product/card.php index bd18737bd6b..657add84bd1 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -174,8 +174,7 @@ if (empty($reshook)) $result = $object->setValueFrom('barcode', GETPOST('barcode'), '', null, 'text', '', $user, 'PRODUCT_MODIFY'); header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { $langs->load("errors"); if ($result == -1) $errors[] = 'ErrorBadBarCodeSyntax'; elseif ($result == -2) $errors[] = 'ErrorBarCodeRequired'; @@ -336,8 +335,7 @@ if (empty($reshook)) { $object->multiprices["$i"] = price2num($_POST["price_".$i], 'MU'); $object->multiprices_base_type["$i"] = $_POST["multiprices_base_type_".$i]; - } - else { + } else { $object->multiprices["$i"] = ""; } } @@ -364,13 +362,11 @@ if (empty($reshook)) if (preg_match('/\?/', $backtopage)) $backtopage .= '&socid='.$object->id; // Old method header("Location: ".$backtopage); exit; - } - else { + } else { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; } - } - else { + } else { if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); else setEventMessages($langs->trans($object->error), null, 'errors'); $action = "create"; @@ -384,8 +380,7 @@ if (empty($reshook)) if (GETPOST('cancel', 'alpha')) { $action = ''; - } - else { + } else { if ($object->id > 0) { $object->oldcopy = clone $object; @@ -481,14 +476,12 @@ if (empty($reshook)) $object->setCategories($categories); $action = 'view'; - } - else { + } else { if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); else setEventMessages($langs->trans($object->error), null, 'errors'); $action = 'edit'; } - } - else { + } else { if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); else setEventMessages($langs->trans("ErrorProductBadRefOrLabel"), null, 'errors'); $action = 'edit'; @@ -504,8 +497,7 @@ if (empty($reshook)) if (!GETPOST('clone_content') && !GETPOST('clone_prices')) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); - } - else { + } else { $db->begin(); $originalId = $id; @@ -567,8 +559,7 @@ if (empty($reshook)) header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; - } - else { + } else { $id = $originalId; if ($object->error == 'ErrorProductAlreadyExists') @@ -582,15 +573,13 @@ if (empty($reshook)) $mesg .= ' '.$langs->trans("ShowCardHere").'.'; setEventMessages($mesg, null, 'errors'); $object->fetch($id); - } - else { + } else { $db->rollback(); if (count($object->errors)) { setEventMessages($object->error, $object->errors, 'errors'); dol_print_error($db, $object->errors); - } - else { + } else { setEventMessages($langs->trans($object->error), null, 'errors'); dol_print_error($db, $object->error); } @@ -599,8 +588,7 @@ if (empty($reshook)) unset($object->context['createfromclone']); } - } - else { + } else { $db->rollback(); dol_print_error($db, $object->error); } @@ -617,8 +605,7 @@ if (empty($reshook)) { header('Location: '.DOL_URL_ROOT.'/product/list.php?type='.$object->type.'&delprod='.urlencode($object->ref)); exit; - } - else { + } else { setEventMessages($langs->trans($object->error), null, 'errors'); $reload = 0; $action = ''; @@ -640,8 +627,7 @@ if (empty($reshook)) exit; } $thirpdartyid = $propal->socid; - } - elseif (GETPOST('commandeid') > 0) + } elseif (GETPOST('commandeid') > 0) { $commande = new Commande($db); $result = $commande->fetch(GETPOST('commandeid')); @@ -651,8 +637,7 @@ if (empty($reshook)) exit; } $thirpdartyid = $commande->socid; - } - elseif (GETPOST('factureid') > 0) + } elseif (GETPOST('factureid') > 0) { $facture = new Facture($db); $result = $facture->fetch(GETPOST('factureid')); @@ -727,8 +712,7 @@ if (empty($reshook)) { dol_syslog($langs->trans('FailedToGetCostPrice')); setEventMessages($langs->trans('FailedToGetCostPrice'), null, 'errors'); - } - else { + } else { $buyprice = $result; } @@ -769,8 +753,7 @@ if (empty($reshook)) { dol_syslog($langs->trans('FailedToGetCostPrice')); setEventMessages($langs->trans('FailedToGetCostPrice'), null, 'errors'); - } - else { + } else { $buyprice = $result; } @@ -811,8 +794,7 @@ if (empty($reshook)) { dol_syslog($langs->trans('FailedToGetCostPrice')); setEventMessages($langs->trans('FailedToGetCostPrice'), null, 'errors'); - } - else { + } else { $buyprice = $result; } @@ -852,8 +834,7 @@ if (empty($reshook)) exit; } } - } - else { + } else { $action = ""; setEventMessages($langs->trans("WarningSelectOneDocument"), null, 'warnings'); } @@ -918,8 +899,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) } $objcanvas->assign_values($action, $object->id, $object->ref); // Set value for templates $objcanvas->display_canvas($action); // Show template -} -else { +} else { // ----------------------------------------- // When used in standard mode // ----------------------------------------- @@ -955,8 +935,7 @@ else { if ($type == 1) { $picto = 'service'; $title = $langs->trans("NewService"); - } - else { + } else { $picto = 'product'; $title = $langs->trans("NewProduct"); } @@ -1010,8 +989,7 @@ else { if (isset($_POST['fk_barcode_type'])) { $fk_barcode_type = GETPOST('fk_barcode_type'); - } - else { + } else { if (empty($fk_barcode_type) && !empty($conf->global->PRODUIT_DEFAULT_BARCODE_TYPE)) $fk_barcode_type = $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE; } require_once DOL_DOCUMENT_ROOT.'/core/class/html.formbarcode.class.php'; @@ -1059,8 +1037,7 @@ else { print '
'.$form->textwithpicto($langs->trans("DesiredStock"), $langs->trans("DesiredStockDesc"), 1).''; print ''; print '
'; print '
'; - } - else { + } else { print ''; // Price @@ -1298,8 +1274,7 @@ else { } print $formaccounting->select_account($accountancy_code_buy_export, 'accountancy_code_buy_export', 1, null, 1, 1, ''); print ''; - } - else // For external software + } else // For external software { // Accountancy_code_sell print ''; @@ -1348,14 +1323,10 @@ else { print ''; print ''; - } - - /* - * Product card - */ - - elseif ($object->id > 0) - { + } elseif ($object->id > 0) { + /* + * Product card + */ // Fiche en mode edition if ($action == 'edit' && $usercancreate) { @@ -1393,8 +1364,7 @@ else { { print ''; print ''; - } - else { + } else { print ''; print ''; } @@ -1408,8 +1378,7 @@ else { { print ''; print ''; - } - else { + } else { print ''; print ''; } @@ -1438,8 +1407,7 @@ else { if (isset($_POST['fk_barcode_type'])) { $fk_barcode_type = GETPOST('fk_barcode_type'); - } - else { + } else { $fk_barcode_type = $object->barcode_type; if (empty($fk_barcode_type) && !empty($conf->global->PRODUIT_DEFAULT_BARCODE_TYPE)) $fk_barcode_type = $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE; } @@ -1500,8 +1468,7 @@ else { print ' '; print $formproduct->selectMeasuringUnits("duration_unit", "time", $object->duration_unit, 0, 1); print ''; - } - else { + } else { // Nature print ''; - } - else // For external software - { + } else { + // For external software // Accountancy_code_sell print ''; print ''."\n"; @@ -1974,16 +1938,14 @@ else { if ($object->duration_value > 1) { $dur = array("i"=>$langs->trans("Minute"), "h"=>$langs->trans("Hours"), "d"=>$langs->trans("Days"), "w"=>$langs->trans("Weeks"), "m"=>$langs->trans("Months"), "y"=>$langs->trans("Years")); - } - elseif ($object->duration_value > 0) + } elseif ($object->duration_value > 0) { $dur = array("i"=>$langs->trans("Minute"), "h"=>$langs->trans("Hour"), "d"=>$langs->trans("Day"), "w"=>$langs->trans("Week"), "m"=>$langs->trans("Month"), "y"=>$langs->trans("Year")); } print (!empty($object->duration_unit) && isset($dur[$object->duration_unit]) ? $langs->trans($dur[$object->duration_unit]) : '')." "; print ''; - } - else { + } else { // Nature print '\n"; @@ -2010,8 +1971,7 @@ else { if ($object->width) print " x ".$object->width; if ($object->height) print " x ".$object->height; print ' '.measuringUnitString(0, "size", $object->length_units); - } - else { + } else { print ' '; } print "\n"; @@ -2023,8 +1983,7 @@ else { if ($object->surface != '') { print $object->surface." ".measuringUnitString(0, "surface", $object->surface_units); - } - else { + } else { print ' '; } print "\n"; @@ -2036,8 +1995,7 @@ else { if ($object->volume != '') { print $object->volume." ".measuringUnitString(0, "volume", $object->volume_units); - } - else { + } else { print ' '; } print "\n"; @@ -2050,8 +2008,7 @@ else { if ($object->net_measure != '') { print $object->net_measure." ".measuringUnitString($object->net_measure_units); - } - else { + } else { print ' '; } } @@ -2105,8 +2062,7 @@ else { dol_fiche_end(); } - } - elseif ($action != 'create') + } elseif ($action != 'create') { exit; } @@ -2179,8 +2135,7 @@ if ($action != 'create' && $action != 'edit') if (!empty($conf->use_javascript_ajax) && empty($conf->dol_use_jmobile)) { print ''.$langs->trans('ToClone').''."\n"; - } - else { + } else { print 'id.'">'.$langs->trans("ToClone").''; } } @@ -2194,16 +2149,13 @@ if ($action != 'create' && $action != 'edit') if (!empty($conf->use_javascript_ajax) && empty($conf->dol_use_jmobile)) { print ''.$langs->trans('Delete').''."\n"; - } - else { + } else { print 'id.'">'.$langs->trans("Delete").''; } - } - else { + } else { print ''.$langs->trans("Delete").''; } - } - else { + } else { print ''.$langs->trans("Delete").''; } } @@ -2236,8 +2188,7 @@ if (!empty($conf->global->PRODUCT_ADD_FORM_ADD_TO) && $object->id && ($action == $html .= $langs->trans("AddToDraftProposals").''; - } - else { + } else { $html .= ''; - } - else { + } else { $html .= ''; - } - else { + } else { $html .= ''; @@ -241,8 +235,7 @@ if ($id > 0 || !empty($ref)) if ($object->price_base_type == 'TTC') { print price($object->price_min_ttc).' '.$langs->trans($object->price_base_type); - } - else { + } else { print price($object->price_min).' '.$langs->trans($object->price_base_type ? $object->price_base_type : 'HT'); } print ''; @@ -292,8 +285,7 @@ if ($id > 0 || !empty($ref)) print ''; print ''; } - } - else { + } else { print ''; print ''; print ''; @@ -370,8 +362,7 @@ if ($id > 0 || !empty($ref)) if (!empty($conf->global->PRODUIT_MULTIPRICES)) { $pricesell = 'Variable'; - } - else { + } else { $totallinesell = price2num($value['nb'] * ($pricesell), 'MT'); $totalsell += $totallinesell; } @@ -389,15 +380,13 @@ if ($id > 0 || !empty($ref)) { print ''; print ''; - } - else { + } else { print ''; print ''; } print ''."\n"; - } - else { + } else { $hide = ''; if (empty($conf->global->PRODUCT_SHOW_SUB_SUB_PRODUCTS)) $hide = ' hideobject'; // By default, we do not show this. It makes screen very difficult to understand @@ -459,8 +448,7 @@ if ($id > 0 || !empty($ref)) } print ''; print ''."\n"; - } - else { + } else { $colspan = 8; if (!empty($conf->stock->enabled)) $colspan++; @@ -589,8 +577,7 @@ if ($id > 0 || !empty($ref)) //$addchecked = ' checked'; $qty = $object->is_sousproduit_qty; $incdec = $object->is_sousproduit_incdec; - } - else { + } else { //$addchecked = ''; $qty = 0; $incdec = 0; @@ -623,8 +610,7 @@ if ($id > 0 || !empty($ref)) print ''; print ''; } - } - else { + } else { dol_print_error($db); } print '
'.$langs->trans("ProductAccountancySellCode").'
'.$langs->trans("Nature").''; $statutarray = array('-1'=>' ', '1' => $langs->trans("Finished"), '0' => $langs->trans("RowMaterial")); @@ -1656,9 +1623,8 @@ else { print ''; print $formaccounting->select_account($object->accountancy_code_buy_export, 'accountancy_code_buy_export', 1, '', 1, 1); print '
'.$langs->trans("ProductAccountancySellCode").''; @@ -1763,8 +1729,7 @@ else { if ($action == 'editbarcodetype') { print $formbarcode->formBarcodeType($_SERVER['PHP_SELF'].'?id='.$object->id, $object->barcode_type, 'fk_barcode_type'); - } - else { + } else { $object->fetch_barcode(); print $object->barcode_type_label ? $object->barcode_type_label : ($object->barcode ? '
'.$langs->trans("SetDefaultBarcodeType").'
' : ''); } @@ -1790,8 +1755,7 @@ else { print ''; print ' '; print ''; - } - else { + } else { print $object->barcode; } print '
'.$langs->trans("Nature").''; print $object->getLibFinished(); @@ -1994,8 +1956,7 @@ else { if ($object->weight != '') { print $object->weight." ".measuringUnitString(0, "weight", $object->weight_units); - } - else { + } else { print ' '; } print "
'; $html .= $form->selectarray("propalid", $otherprop, 0, 1); $html .= '
'; $html .= $langs->trans("AddToDraftProposals").''; $html .= $langs->trans("NoDraftProposals"); @@ -2259,8 +2210,7 @@ if (!empty($conf->global->PRODUCT_ADD_FORM_ADD_TO) && $object->id && ($action == $html .= $langs->trans("AddToDraftOrders").''; $html .= $form->selectarray("commandeid", $othercom, 0, 1); $html .= '
'; $html .= $langs->trans("AddToDraftOrders").''; $html .= $langs->trans("NoDraftOrders"); @@ -2282,8 +2232,7 @@ if (!empty($conf->global->PRODUCT_ADD_FORM_ADD_TO) && $object->id && ($action == $html .= $langs->trans("AddToDraftInvoices").''; $html .= $form->selectarray("factureid", $otherinvoice, 0, 1); $html .= '
'; $html .= $langs->trans("AddToDraftInvoices").''; $html .= $langs->trans("NoDraftInvoices"); diff --git a/htdocs/product/class/api_products.class.php b/htdocs/product/class/api_products.class.php index 66cef158439..e7fce1b480f 100644 --- a/htdocs/product/class/api_products.class.php +++ b/htdocs/product/class/api_products.class.php @@ -221,8 +221,7 @@ class Products extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieve product list : '.$db->lasterror()); } if (!count($obj_ret)) { @@ -316,8 +315,7 @@ class Products extends DolibarrApi } if ($this->product->price_min_ttc != $oldproduct->price_min_ttc) { $pricemodified = true; } - } - else { + } else { if ($this->product->price != $oldproduct->price) { $pricemodified = true; } if ($this->product->price_min != $oldproduct->price_min) { $pricemodified = true; @@ -811,8 +809,7 @@ class Products extends DolibarrApi $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieve product list : '.$db->lasterror()); } if (!count($obj_ret)) { diff --git a/htdocs/product/class/html.formproduct.class.php b/htdocs/product/class/html.formproduct.class.php index b38501cb788..30445615413 100644 --- a/htdocs/product/class/html.formproduct.class.php +++ b/htdocs/product/class/html.formproduct.class.php @@ -101,12 +101,10 @@ class FormProduct if (!empty($batch)) { $sql .= ", pb.qty as stock"; - } - else { + } else { $sql .= ", ps.reel as stock"; } - } - elseif ($sumStock) + } elseif ($sumStock) { $sql .= ", sum(ps.reel) as stock"; } @@ -124,8 +122,7 @@ class FormProduct if (count($warehouseStatus)) { $sql .= " AND e.statut IN (".$this->db->escape(implode(',', $warehouseStatus)).")"; - } - else { + } else { $sql .= " AND e.statut = 1"; } @@ -176,8 +173,7 @@ class FormProduct } return $num; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -267,8 +263,7 @@ class FormProduct { if ($arraytypes['stock'] <= 0) { $label .= ' ('.$langs->trans("Stock").':'.$arraytypes['stock'].')'; - } - else { + } else { $label .= ' ('.$langs->trans("Stock").':'.$arraytypes['stock'].')'; } } @@ -432,8 +427,7 @@ class FormProduct if (!is_array($objectLines) || !count($objectLines)) { if (!empty($fk_product)) $productIdArray[] = $fk_product; - } - else { + } else { foreach ($objectLines as $line) { if ($line->fk_product) $productIdArray[] = $line->fk_product; } @@ -453,8 +447,7 @@ class FormProduct if (!empty($fk_product)) { $productIdArray = array($fk_product); // only show lot stock for product - } - else { + } else { foreach ($this->cache_lot as $key => $value) { $productIdArray[] = $key; @@ -471,8 +464,7 @@ class FormProduct $label .= $arraytypes['batch']; if ($arraytypes['qty'] <= 0) { $label .= ' ('.$langs->trans("Stock").' '.$arraytypes['qty'].')'; - } - else { + } else { $label .= ' ('.$langs->trans("Stock").' '.$arraytypes['qty'].')'; } @@ -520,8 +512,7 @@ class FormProduct if ($cacheLoaded) { return count($this->cache_lot); - } - else { + } else { // clear cache $this->cache_lot = array(); $productIdList = implode(',', $productIdArray); @@ -553,8 +544,7 @@ class FormProduct } return $num; - } - else { + } else { dol_print_error($this->db); return -1; } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index f072d04916e..6e559c3e7fb 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -456,8 +456,7 @@ class Product extends CommonObject if ($err > 0) { return 0; - } - else { + } else { return 1; } } @@ -681,30 +680,25 @@ class Product extends CommonObject if ($this->update($id, $user, true, 'add') <= 0) { $error++; } - } - else { + } else { $error++; $this->error = $this->db->lasterror(); } - } - else { + } else { $error++; $this->error = 'ErrorFailedToGetInsertedId'; } - } - else { + } else { $error++; $this->error = $this->db->lasterror(); } - } - else { + } else { // Product already exists with this ref $langs->load("products"); $error++; $this->error = "ErrorProductAlreadyExists"; } - } - else { + } else { $error++; $this->error = $this->db->lasterror(); } @@ -720,13 +714,11 @@ class Product extends CommonObject if (!$error) { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -$error; } - } - else { + } else { $this->db->rollback(); dol_syslog(get_class($this)."::Create fails verify ".join(',', $this->errors), LOG_WARNING); return -3; @@ -756,11 +748,9 @@ class Product extends CommonObject if ($rescode) { if ($rescode == -1) { $this->errors[] = 'ErrorBadBarCodeSyntax'; - } - elseif ($rescode == -2) { + } elseif ($rescode == -2) { $this->errors[] = 'ErrorBarCodeRequired'; - } - elseif ($rescode == -3) { + } elseif ($rescode == -3) { // Note: Common usage is to have barcode unique. For variants, we should have a different barcode. $this->errors[] = 'ErrorBarCodeAlreadyUsed'; } @@ -802,8 +792,7 @@ class Product extends CommonObject dol_syslog(get_class($this)."::check_barcode value=".$valuetotest." type=".$typefortest." module=".$module); $result = $mod->verif($this->db, $valuetotest, $this, 0, $typefortest); return $result; - } - else { + } else { return 0; } } @@ -1094,13 +1083,11 @@ class Product extends CommonObject $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -$error; } - } - else { + } else { if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); if (empty($conf->barcode->enabled) || empty($this->barcode)) { @@ -1111,16 +1098,14 @@ class Product extends CommonObject $this->errors[] = $this->error; $this->db->rollback(); return -1; - } - else { + } else { $this->error = $langs->trans("Error")." : ".$this->db->error()." - ".$sql; $this->errors[] = $this->error; $this->db->rollback(); return -2; } } - } - else { + } else { $this->db->rollback(); dol_syslog(get_class($this)."::Update fails verify ".join(',', $this->errors), LOG_WARNING); return -3; @@ -1267,8 +1252,7 @@ class Product extends CommonObject if (!$error) { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); @@ -1277,8 +1261,7 @@ class Product extends CommonObject $this->db->rollback(); return -$error; } - } - else { + } else { $this->error = "ErrorRecordIsUsedCantDelete"; return 0; } @@ -1316,8 +1299,7 @@ class Product extends CommonObject if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", note='".$this->db->escape($this->other)."'"; } $sql2 .= " WHERE fk_product=".$this->id." AND lang='".$this->db->escape($key)."'"; - } - else { + } else { $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_lang (fk_product, lang, label, description"; if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", note"; } @@ -1334,8 +1316,7 @@ class Product extends CommonObject $this->error = $this->db->lasterror(); return -1; } - } - elseif (isset($this->multilangs[$key])) { + } elseif (isset($this->multilangs[$key])) { $sql = "SELECT rowid"; $sql .= " FROM ".MAIN_DB_PREFIX."product_lang"; $sql .= " WHERE fk_product=".$this->id; @@ -1353,8 +1334,7 @@ class Product extends CommonObject $sql2 .= ", note='".$this->db->escape($this->multilangs["$key"]["other"])."'"; } $sql2 .= " WHERE fk_product=".$this->id." AND lang='".$this->db->escape($key)."'"; - } - else { + } else { $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_lang (fk_product, lang, label, description"; if (!empty($conf->global->PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION)) { $sql2 .= ", note"; } @@ -1374,8 +1354,7 @@ class Product extends CommonObject return -1; } } - } - else { + } else { // language is not current language and we didn't provide a multilang description for this language } } @@ -1416,8 +1395,7 @@ class Product extends CommonObject } // End call triggers return 1; - } - else { + } else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this).'::delMultiLangs error='.$this->error, LOG_ERR); return -1; @@ -1478,8 +1456,7 @@ class Product extends CommonObject $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -1517,8 +1494,7 @@ class Product extends CommonObject $this->multilangs["$obj->lang"]["other"] = $obj->other; } return 1; - } - else { + } else { $this->error = "Error: ".$this->db->lasterror()." - ".$sql; return -1; } @@ -1559,8 +1535,7 @@ class Product extends CommonObject $this->error = $this->db->lasterror(); dol_print_error($this->db); return -1; - } - else { + } else { return 1; } } @@ -1586,8 +1561,7 @@ class Product extends CommonObject $resql = $this->db->query($sql); if ($resql) { return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -1663,8 +1637,7 @@ class Product extends CommonObject if ($priceforthequantityarray['price_base_type'] == 'HT') { $pu_ht = $priceforthequantityarray['unitprice']; - } - else { + } else { $pu_ttc = $priceforthequantityarray['unitprice']; } break; @@ -1683,8 +1656,7 @@ class Product extends CommonObject if ($priceforthequantityarray['price_base_type'] == 'HT') { $pu_ht = $priceforthequantityarray['unitprice']; - } - else { + } else { $pu_ttc = $priceforthequantityarray['unitprice']; } break; @@ -1766,8 +1738,7 @@ class Product extends CommonObject if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $this->packaging = $obj->packaging; $result = $obj->fk_product; return $result; - } - else // If not found + } else // If not found { // We do a second search by doing a select again but searching with less reliable criteria: couple qty/id product, and if set fourn_ref or fk_soc. $sql = "SELECT pfp.rowid, pfp.price as price, pfp.quantity as quantity, pfp.fk_soc,"; @@ -1826,18 +1797,15 @@ class Product extends CommonObject if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $this->packaging = $obj->packaging; $result = $obj->fk_product; return $result; - } - else { + } else { return -1; // Ce produit n'existe pas avec cet id tarif fournisseur ou existe mais qte insuffisante, ni pour le couple produit/ref fournisseur dans la quantité. } - } - else { + } else { $this->error = $this->db->lasterror(); return -3; } } - } - else { + } else { $this->error = $this->db->lasterror(); return -2; } @@ -1908,13 +1876,11 @@ class Product extends CommonObject $price_min_ttc = price2num($newminprice, 'MU'); $price_min = price2num($newminprice) / (1 + ($newvat / 100)); $price_min = price2num($price_min, 'MU'); - } - else { + } else { $price_min = 0; $price_min_ttc = 0; } - } - else { + } else { $price = price2num($newprice, 'MU'); $price_ttc = ($newnpr != 1) ? price2num($newprice) * (1 + ($newvat / 100)) : $price; $price_ttc = price2num($price_ttc, 'MU'); @@ -1924,8 +1890,7 @@ class Product extends CommonObject $price_min_ttc = price2num($newminprice) * (1 + ($newvat / 100)); $price_min_ttc = price2num($price_min_ttc, 'MU'); //print 'X'.$newminprice.'-'.$price_min; - } - else { + } else { $price_min = 0; $price_min_ttc = 0; } @@ -1937,8 +1902,7 @@ class Product extends CommonObject $localtax1 = $localtaxes_array['1']; $localtaxtype2 = $localtaxes_array['2']; $localtax2 = $localtaxes_array['3']; - } - else // old method. deprecated because ot can't retreive type + } else // old method. deprecated because ot can't retreive type { $localtaxtype1 = '0'; $localtax1 = get_localtax($newvat, 1); @@ -2013,8 +1977,7 @@ class Product extends CommonObject // End call triggers $this->db->commit(); - } - else { + } else { $this->db->rollback(); dol_print_error($this->db); } @@ -2248,18 +2211,15 @@ class Product extends CommonObject return -1; } }*/ - } - else { + } else { dol_print_error($this->db); return -1; } } - } - elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES) && empty($ignore_price_load)) // prices per customers + } elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES) && empty($ignore_price_load)) // prices per customers { // Nothing loaded by default. List may be very long. - } - elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY) && empty($ignore_price_load)) // prices per quantity + } elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY) && empty($ignore_price_load)) // prices per quantity { $sql = "SELECT price, price_ttc, price_min, price_min_ttc,"; $sql .= " price_base_type, tva_tx, default_vat_code, tosell, price_by_qty, rowid"; @@ -2296,19 +2256,16 @@ class Product extends CommonObject $ii++; } $this->prices_by_qty_list[0] = $resultat; - } - else { + } else { dol_print_error($this->db); return -1; } } - } - else { + } else { dol_print_error($this->db); return -1; } - } - elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES) && empty($ignore_price_load)) // prices per customer and quantity + } elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES) && empty($ignore_price_load)) // prices per customer and quantity { for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) { @@ -2358,14 +2315,12 @@ class Product extends CommonObject $ii++; } $this->prices_by_qty_list[$i] = $resultat; - } - else { + } else { dol_print_error($this->db); return -1; } } - } - else { + } else { dol_print_error($this->db); return -1; } @@ -2389,12 +2344,10 @@ class Product extends CommonObject $this->stock_warehouse = array(); return 1; - } - else { + } else { return 0; } - } - else { + } else { dol_print_error($this->db); return -1; } @@ -2467,8 +2420,7 @@ class Product extends CommonObject if ($reshook > 0) $this->stats_propale = $hookmanager->resArray['stats_propale']; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -2517,8 +2469,7 @@ class Product extends CommonObject if ($reshook > 0) $this->stats_proposal_supplier = $hookmanager->resArray['stats_proposal_supplier']; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -2619,8 +2570,7 @@ class Product extends CommonObject $reshook = $hookmanager->executeHooks('loadStatsCustomerOrder', $parameters, $this, $action); if ($reshook > 0) $this->stats_commande = $hookmanager->resArray['stats_commande']; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -2675,8 +2625,7 @@ class Product extends CommonObject if ($reshook > 0) $this->stats_commande_fournisseur = $hookmanager->resArray['stats_commande_fournisseur']; return 1; - } - else { + } else { $this->error = $this->db->error().' sql='.$sql; return -1; } @@ -2758,8 +2707,7 @@ class Product extends CommonObject if ($reshook > 0) $this->stats_expedition = $hookmanager->resArray['stats_expedition']; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -2810,8 +2758,7 @@ class Product extends CommonObject if ($reshook > 0) $this->stats_reception = $hookmanager->resArray['stats_reception']; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -2900,8 +2847,7 @@ class Product extends CommonObject if ($reshook > 0) $this->stats_mrptoproduce = $hookmanager->resArray['stats_mrptoproduce']; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -2973,8 +2919,7 @@ class Product extends CommonObject if ($reshook > 0) $this->stats_contrat = $hookmanager->resArray['stats_contrat']; return 1; - } - else { + } else { $this->error = $this->db->error().' sql='.$sql; return -1; } @@ -3046,8 +2991,7 @@ class Product extends CommonObject if ($reshook > 0) $this->stats_facture = $hookmanager->resArray['stats_facture']; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -3098,8 +3042,7 @@ class Product extends CommonObject if ($reshook > 0) $this->stats_facture_fournisseur = $hookmanager->resArray['stats_facture_fournisseur']; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -3132,8 +3075,7 @@ class Product extends CommonObject } $i++; } - } - else { + } else { $this->error = $this->db->error().' sql='.$sql; return -1; } @@ -3141,8 +3083,7 @@ class Product extends CommonObject if (empty($year)) { $year = strftime('%Y', time()); $month = strftime('%m', time()); - } - else { + } else { $month = 12; // We imagine we are at end of year, so we get last 12 month before, so all correct year. } $result = array(); @@ -3622,23 +3563,20 @@ class Product extends CommonObject if (!$this->db->query($sql)) { dol_print_error($this->db); return -1; - } - else { + } else { $result = $this->db->query($sql); if ($result) { $num = $this->db->num_rows($result); if ($num > 0) { $this->error = "isFatherOfThis"; return -1; - } - else { + } else { $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'product_association(fk_product_pere,fk_product_fils,qty,incdec)'; $sql .= ' VALUES ('.$id_pere.', '.$id_fils.', '.$qty.', '.$incdec.')'; if (!$this->db->query($sql)) { dol_print_error($this->db); return -1; - } - else { + } else { return 1; } } @@ -3681,8 +3619,7 @@ class Product extends CommonObject if (!$this->db->query($sql)) { dol_print_error($this->db); return -1; - } - else { + } else { return 1; } } @@ -3744,12 +3681,10 @@ class Product extends CommonObject $this->is_sousproduit_incdec = $obj->incdec; return true; - } - else { + } else { return false; } - } - else { + } else { dol_print_error($this->db); return -1; } @@ -3838,8 +3773,7 @@ class Product extends CommonObject if ($this->db->query($sql)) { $this->product_fourn_price_id = $this->db->last_insert_id(MAIN_DB_PREFIX."product_fournisseur_price"); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -3849,8 +3783,7 @@ class Product extends CommonObject $this->product_fourn_price_id = $obj->rowid; return 0; } - } - else { + } else { $this->error = $this->db->lasterror(); return -2; } @@ -4045,8 +3978,7 @@ class Product extends CommonObject if (!$resql) { $this->db->rollback(); return -1; - } - else { + } else { $this->db->commit(); return 1; } @@ -4156,8 +4088,7 @@ class Product extends CommonObject $obj = $this->db->fetch_object($resql); if ($obj) { $nb = $obj->nb; } - } - else { + } else { return -1; } @@ -4241,8 +4172,7 @@ class Product extends CommonObject $prods[$record['id']]['entity'] = $record['entity']; } return $prods; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -4305,8 +4235,7 @@ class Product extends CommonObject } return $prods; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -4433,8 +4362,7 @@ class Product extends CommonObject $linkclose .= ' title="'.dol_escape_htmltag($label, 1, 1).'"'; $linkclose .= ' class="nowraponall classfortooltip"'; - } - else { + } else { $linkclose = ' class="nowraponall"'; } @@ -4508,8 +4436,7 @@ class Product extends CommonObject if (!dol_strlen($modele)) { if (!empty($conf->global->PRODUCT_ADDON_PDF)) { $modele = $conf->global->PRODUCT_ADDON_PDF; - } - else { + } else { $modele = 'strato'; } } @@ -4591,27 +4518,22 @@ class Product extends CommonObject if ($type == 0) { $labelStatus = $langs->trans('ProductStatusNotOnSellShort'); $labelStatusShort = $langs->trans('ProductStatusNotOnSell'); - } - elseif ($type == 1) { + } elseif ($type == 1) { $labelStatus = $langs->trans('ProductStatusNotOnBuyShort'); $labelStatusShort = $langs->trans('ProductStatusNotOnBuy'); - } - elseif ($type == 2) { + } elseif ($type == 2) { $labelStatus = $langs->trans('ProductStatusNotOnBatch'); $labelStatusShort = $langs->trans('ProductStatusNotOnBatchShort'); } - } - elseif ($status == 1) { + } elseif ($status == 1) { // $type 0=Status "to sell", 1=Status "to buy", 2=Status "to Batch" if ($type == 0) { $labelStatus = $langs->trans('ProductStatusOnSellShort'); $labelStatusShort = $langs->trans('ProductStatusOnSell'); - } - elseif ($type == 1) { + } elseif ($type == 1) { $labelStatus = $langs->trans('ProductStatusOnBuyShort'); $labelStatusShort = $langs->trans('ProductStatusOnBuy'); - } - elseif ($type == 2) { + } elseif ($type == 2) { $labelStatus = $langs->trans('ProductStatusOnBatch'); $labelStatusShort = $langs->trans('ProductStatusOnBatchShort'); } @@ -4677,8 +4599,7 @@ class Product extends CommonObject if ($result >= 0) { $this->db->commit(); return 1; - } - else { + } else { $this->error = $movementstock->error; $this->errors = $movementstock->errors; @@ -4724,8 +4645,7 @@ class Product extends CommonObject if ($result >= 0) { $this->db->commit(); return 1; - } - else { + } else { $this->error = $movementstock->error; $this->errors = $movementstock->errors; @@ -4803,8 +4723,7 @@ class Product extends CommonObject } return 1; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -4888,24 +4807,19 @@ class Product extends CommonObject // Stock decrease mode if (!empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || !empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT_CLOSE)) { $this->stock_theorique -= ($stock_commande_client - $stock_sending_client); - } - elseif (!empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER)) { + } elseif (!empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER)) { $this->stock_theorique += 0; - } - elseif (!empty($conf->global->STOCK_CALCULATE_ON_BILL)) { + } elseif (!empty($conf->global->STOCK_CALCULATE_ON_BILL)) { $this->stock_theorique -= $stock_commande_client; } // Stock Increase mode if (!empty($conf->global->STOCK_CALCULATE_ON_RECEPTION) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE)) { $this->stock_theorique += ($stock_commande_fournisseur - $stock_reception_fournisseur); - } - elseif (!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)) { + } elseif (!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)) { $this->stock_theorique += ($stock_commande_fournisseur - $stock_reception_fournisseur); - } - elseif (!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER)) { + } elseif (!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER)) { $this->stock_theorique -= $stock_reception_fournisseur; - } - elseif (!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL)) { + } elseif (!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL)) { $this->stock_theorique += ($stock_commande_fournisseur - $stock_reception_fournisseur); } @@ -4949,8 +4863,7 @@ class Product extends CommonObject $i++; } return $result; - } - else { + } else { dol_print_error($this->db); $this->db->rollback(); return array(); @@ -5187,8 +5100,7 @@ class Product extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -5323,8 +5235,7 @@ class Product extends CommonObject $label = ($label_type == 'short' ? $res[$label_type] : 'unit'.$res['code']); $this->db->free($resql); return $label; - } - else { + } else { $this->error = $this->db->error().' sql='.$sql; dol_syslog(get_class($this)."::getLabelOfUnit Error ".$this->error, LOG_ERR); return -1; @@ -5556,8 +5467,7 @@ class Product extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/product/class/productbatch.class.php b/htdocs/product/class/productbatch.class.php index 3c56221863c..db59efcdfb7 100644 --- a/htdocs/product/class/productbatch.class.php +++ b/htdocs/product/class/productbatch.class.php @@ -119,8 +119,7 @@ class Productbatch extends CommonObject { $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -177,8 +176,7 @@ class Productbatch extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -230,8 +228,7 @@ class Productbatch extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -271,8 +268,7 @@ class Productbatch extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -326,8 +322,7 @@ class Productbatch extends CommonObject { $this->db->commit(); return $object->id; - } - else { + } else { $this->db->rollback(); return -1; } @@ -419,8 +414,7 @@ class Productbatch extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -488,8 +482,7 @@ class Productbatch extends CommonObject $db->free($resql); return $ret; - } - else { + } else { $error = "Error ".$db->lasterror(); return -1; } diff --git a/htdocs/product/class/propalmergepdfproduct.class.php b/htdocs/product/class/propalmergepdfproduct.class.php index 26c627ee0e4..331708ff096 100644 --- a/htdocs/product/class/propalmergepdfproduct.class.php +++ b/htdocs/product/class/propalmergepdfproduct.class.php @@ -139,8 +139,7 @@ class Propalmergepdfproduct extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -197,8 +196,7 @@ class Propalmergepdfproduct extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); return -1; @@ -270,8 +268,7 @@ class Propalmergepdfproduct extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch_by_product ".$this->error, LOG_ERR); return -1; @@ -330,8 +327,7 @@ class Propalmergepdfproduct extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -372,8 +368,7 @@ class Propalmergepdfproduct extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -421,8 +416,7 @@ class Propalmergepdfproduct extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -463,8 +457,7 @@ class Propalmergepdfproduct extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -518,8 +511,7 @@ class Propalmergepdfproduct extends CommonObject { $this->db->commit(); return $object->id; - } - else { + } else { $this->db->rollback(); return -1; } diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index 194a342d391..975dcfda831 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -80,24 +80,20 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se { //var_dump($i.' '.GETPOST("prod_id_".$i, 'int'), $qty, GETPOST("prod_incdec_".$i, 'int')); $action = 'edit'; - } - else { + } else { $error++; $action = 're-edit'; if ($object->error == "isFatherOfThis") { setEventMessages($langs->trans("ErrorAssociationIsFatherOfThis"), null, 'errors'); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } - } - else { + } else { if ($object->del_sousproduit($id, GETPOST("prod_id_".$i, 'int')) > 0) { $action = 'edit'; - } - else { + } else { $error++; $action = 're-edit'; setEventMessages($object->error, $object->errors, 'errors'); @@ -110,8 +106,7 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se header("Location: ".$_SERVER["PHP_SELF"].'?id='.$object->id); exit; } -} -elseif ($action === 'save_composed_product') +} elseif ($action === 'save_composed_product') { $TProduct = GETPOST('TProduct', 'array'); if (!empty($TProduct)) @@ -230,8 +225,7 @@ if ($id > 0 || !empty($ref)) if ($object->price_base_type == 'TTC') { print price($object->price_ttc).' '.$langs->trans($object->price_base_type); - } - else { + } else { print price($object->price).' '.$langs->trans($object->price_base_type ? $object->price_base_type : 'HT'); } print '
'.$value['qty'].'
'.$langs->trans("None").'
'.$nb_of_subproduct.''.($value['incdec'] == 1 ? 'x' : '').'
'; diff --git a/htdocs/product/document.php b/htdocs/product/document.php index db233fbe84c..4f505bff187 100644 --- a/htdocs/product/document.php +++ b/htdocs/product/document.php @@ -313,8 +313,7 @@ if ($object->id) $filename = $filetoadd['name'].' - '.$langs->trans('Language_'.$default_lang); $checked = ' checked '; } - } - else { + } else { if (array_key_exists($filetoadd['name'], $filetomerge->lines)) { $checked = ' checked '; @@ -336,8 +335,7 @@ if ($object->id) print ''; } } -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/product/dynamic_price/class/price_expression.class.php b/htdocs/product/dynamic_price/class/price_expression.class.php index 4f40e2b6c6f..cf498d6f998 100644 --- a/htdocs/product/dynamic_price/class/price_expression.class.php +++ b/htdocs/product/dynamic_price/class/price_expression.class.php @@ -123,8 +123,7 @@ class PriceExpression } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -161,12 +160,10 @@ class PriceExpression $this->title = $obj->title; $this->expression = $obj->expression; return 1; - } - else { + } else { return 0; } - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -202,8 +199,7 @@ class PriceExpression $this->db->free($resql); return $retarray; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -232,12 +228,10 @@ class PriceExpression if ($obj) { return (int) $obj->rowid; - } - else { + } else { return 0; } - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -295,8 +289,7 @@ class PriceExpression } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -352,8 +345,7 @@ class PriceExpression } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } diff --git a/htdocs/product/dynamic_price/class/price_global_variable.class.php b/htdocs/product/dynamic_price/class/price_global_variable.class.php index 7f241518e4c..f2ab8006b02 100644 --- a/htdocs/product/dynamic_price/class/price_global_variable.class.php +++ b/htdocs/product/dynamic_price/class/price_global_variable.class.php @@ -128,8 +128,7 @@ class PriceGlobalVariable } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -161,12 +160,10 @@ class PriceGlobalVariable $this->value = $obj->value; $this->checkParameters(); return 1; - } - else { + } else { return 0; } - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -222,8 +219,7 @@ class PriceGlobalVariable } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -278,8 +274,7 @@ class PriceGlobalVariable } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -344,8 +339,7 @@ class PriceGlobalVariable $this->db->free($resql); return $retarray; - } - else { + } else { $this->error = $this->db->error(); return -1; } diff --git a/htdocs/product/dynamic_price/class/price_global_variable_updater.class.php b/htdocs/product/dynamic_price/class/price_global_variable_updater.class.php index 12e497c0f2c..6706dded094 100644 --- a/htdocs/product/dynamic_price/class/price_global_variable_updater.class.php +++ b/htdocs/product/dynamic_price/class/price_global_variable_updater.class.php @@ -144,8 +144,7 @@ class PriceGlobalVariableUpdater } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -181,12 +180,10 @@ class PriceGlobalVariableUpdater $this->last_status = $obj->last_status; $this->checkParameters(); return 1; - } - else { + } else { return 0; } - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -246,8 +243,7 @@ class PriceGlobalVariableUpdater } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -301,8 +297,7 @@ class PriceGlobalVariableUpdater } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -394,8 +389,7 @@ class PriceGlobalVariableUpdater $this->db->free($resql); return $retarray; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -435,8 +429,7 @@ class PriceGlobalVariableUpdater $this->db->free($resql); return $retarray; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -591,8 +584,7 @@ class PriceGlobalVariableUpdater } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -636,8 +628,7 @@ class PriceGlobalVariableUpdater } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } diff --git a/htdocs/product/dynamic_price/class/price_parser.class.php b/htdocs/product/dynamic_price/class/price_parser.class.php index 6659dc56054..7a7dd5aac56 100644 --- a/htdocs/product/dynamic_price/class/price_parser.class.php +++ b/htdocs/product/dynamic_price/class/price_parser.class.php @@ -103,20 +103,16 @@ class PriceParser if (in_array($code, array(9, 14, 19, 20))) //Errors which have 0 arg { return $langs->trans("ErrorPriceExpression".$code); - } - elseif (in_array($code, array(1, 2, 3, 4, 5, 8, 10, 11, 17, 21, 22))) //Errors which have 1 arg + } elseif (in_array($code, array(1, 2, 3, 4, 5, 8, 10, 11, 17, 21, 22))) //Errors which have 1 arg { return $langs->trans("ErrorPriceExpression".$code, $info); - } - elseif (in_array($code, array(6, 23))) //Errors which have 2 args + } elseif (in_array($code, array(6, 23))) //Errors which have 2 args { return $langs->trans("ErrorPriceExpression".$code, $info[0], $info[1]); - } - elseif (in_array($code, array(7, 12, 13, 15, 16, 18))) //Internal errors + } elseif (in_array($code, array(7, 12, 13, 15, 16, 18))) //Internal errors { return $langs->trans("ErrorPriceExpressionInternal", $code); - } - else //Unknown errors + } else //Unknown errors { return $langs->trans("ErrorPriceExpressionUnknown", $code); } @@ -276,7 +272,7 @@ class PriceParser if ($res < 0) { $this->error_parser = array(25, null); return -1; - } elseif ($res == 0) { + } elseif ($res == 0) { $supplier_min_price = 0; } else { $supplier_min_price = $productFournisseur->fourn_unitprice; diff --git a/htdocs/product/dynamic_price/editor.php b/htdocs/product/dynamic_price/editor.php index 778f749f983..c8855b0665e 100644 --- a/htdocs/product/dynamic_price/editor.php +++ b/htdocs/product/dynamic_price/editor.php @@ -54,8 +54,7 @@ $price_globals = new PriceGlobalVariable($db); if (empty($eid)) //This also disables fetch when eid == 0 { $eid = 0; -} -elseif ($action != 'delete') +} elseif ($action != 'delete') { $price_expression->fetch($eid); } @@ -77,8 +76,7 @@ if ($action == 'add') $price_result = $priceparser->testExpression($id, $expression); if ($price_result < 0) { //Expression is not valid setEventMessages($priceparser->translatedError(), null, 'errors'); - } - else { + } else { $price_expression->title = $title; $price_expression->expression = $expression; $result = $price_expression->create($user); @@ -86,17 +84,14 @@ if ($action == 'add') { $eid = $price_expression->id; setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages("add: ".$price_expression->error, $price_expression->errors, 'errors'); } } - } - elseif ($result < 0) + } elseif ($result < 0) { setEventMessages("add find: ".$price_expression->error, $price_expression->errors, 'errors'); - } - else { + } else { setEventMessages($langs->trans("ErrorRecordAlreadyExists"), null, 'errors'); } } @@ -114,8 +109,7 @@ if ($action == 'update') $price_result = $priceparser->testExpression($id, $expression); if ($price_result < 0) { //Expression is not valid setEventMessages($priceparser->translatedError(), null, 'errors'); - } - else { + } else { $price_expression->id = $eid; $price_expression->title = $title; $price_expression->expression = $expression; @@ -123,17 +117,14 @@ if ($action == 'update') if ($result < 0) { setEventMessages("update: ".$price_expression->error, $price_expression->errors, 'errors'); - } - else { + } else { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } } - } - elseif ($result < 0) + } elseif ($result < 0) { setEventMessages("update find: ".$price_expression->error, $price_expression->errors, 'errors'); - } - else { + } else { setEventMessages($langs->trans("ErrorRecordAlreadyExists"), null, 'errors'); } } @@ -214,8 +205,7 @@ print ''.$langs->trans("Back").''; if ($eid == 0) { print '
'.$langs->trans('Delete').'
'."\n"; -} -else { +} else { print ''; } print ''; diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 3c4ebfc6acb..efcf0b33553 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -127,8 +127,7 @@ if (empty($reshook)) { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); $action = ''; - } - else { + } else { $error++; setEventMessages($object->error, $object->errors, 'errors'); } @@ -209,8 +208,7 @@ if (empty($reshook)) $error++; $langs->load("errors"); setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Price")), null, 'errors'); - } - else { + } else { $_POST["price"] = 0; } } @@ -253,8 +251,7 @@ if (empty($reshook)) $productLink = $object->getNomUrl(1, 'supplier'); setEventMessages($langs->trans("ReferenceSupplierIsAlreadyAssociatedWithAProduct", $productLink), null, 'errors'); - } - elseif ($ret < 0) + } elseif ($ret < 0) { $error++; setEventMessages($object->error, $object->errors, 'errors'); @@ -284,8 +281,8 @@ if (empty($reshook)) $sql .= '"'.$value.'", '; } $sql = substr($sql, 0, strlen($sql) - 2).')'; - } // else update the existing one - else { + } else { + // update the existing one $sql = "UPDATE ".MAIN_DB_PREFIX."product_fournisseur_price_extrafields SET "; foreach ($extrafield_values as $key => $value) { $sql .= str_replace('options_', '', $key).' = "'.$value.'", '; @@ -313,8 +310,7 @@ if (empty($reshook)) { $error++; setEventMessages($object->error, $object->errors, 'errors'); - } - else { + } else { if (!empty($conf->dynamicprices->enabled) && $price_expression !== '') { //Check the expression validity by parsing it @@ -343,12 +339,10 @@ if (empty($reshook)) { $db->commit(); $action = ''; - } - else { + } else { $db->rollback(); } - } - else { + } else { $action = 'add_price'; } } @@ -447,8 +441,7 @@ if ($id > 0 || $ref) { $object->fetch_product_fournisseur_price($rowid, 1); //Ignore the math expression when getting the price print load_fiche_titre($langs->trans("ChangeSupplierPrice")); - } - else { + } else { print load_fiche_titre($langs->trans("AddSupplierPrice")); } @@ -471,8 +464,7 @@ if ($id > 0 || $ref) print ''; print ''; print ''; - } - else { + } else { $events = array(); $events[] = array('method' => 'getVatRates', 'url' => dol_buildpath('/core/ajax/vatrates.php', 1), 'htmlname' => 'tva_tx', 'params' => array()); print $form->select_company(GETPOST("id_fourn", 'alpha'), 'id_fourn', 'fournisseur=1', 'SelectThirdParty', 0, 0, $events); @@ -495,8 +487,7 @@ if ($id > 0 || $ref) { print ''; print ''; - } - else { + } else { print ''; } print ''; @@ -520,8 +511,7 @@ if ($id > 0 || $ref) { print ''; print $object->fourn_qty; - } - else { + } else { print ''; } // Units @@ -554,8 +544,7 @@ if ($id > 0 || $ref) $tmpproductsupplier->fetch_product_fournisseur_price($rowid, 1); $default_vat = $tmpproductsupplier->fourn_tva_tx; $default_npr = $tmpproductsupplier->fourn_tva_npr; - } - else { + } else { if (empty($default_vat)) { $default_vat = $object->tva_tx; @@ -934,8 +923,7 @@ SCRIPT; if ($usercancreate) // change required right here { print ''.$productfourn->getNomUrl().''; - } - else { + } else { print ''.$productfourn->fourn_ref.''; } @@ -1087,8 +1075,7 @@ SCRIPT; print ''; } - } - else { + } else { dol_print_error($db); } @@ -1097,8 +1084,7 @@ SCRIPT; } } } -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/product/index.php b/htdocs/product/index.php index ebe55716bae..f2a9ea98b79 100644 --- a/htdocs/product/index.php +++ b/htdocs/product/index.php @@ -225,8 +225,7 @@ if (!empty($conf->categorie->enabled) && !empty($conf->global->CATEGORY_GRAPHSTA if ($i < $nbmax) { $dataseries[] = array($obj->label, round($obj->nb)); - } - else { + } else { $rest += $obj->nb; } $total += $obj->nb; @@ -246,8 +245,7 @@ if (!empty($conf->categorie->enabled) && !empty($conf->global->CATEGORY_GRAPHSTA $dolgraph->setHeight('200'); $dolgraph->draw('idstatscategproduct'); print $dolgraph->show($total ? 0 : 1); - } - else { + } else { while ($i < $num) { $obj = $db->fetch_object($result); @@ -383,8 +381,7 @@ if ((!empty($conf->product->enabled) || !empty($conf->service->enabled)) && ($us print ''; print '
'; } - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/product/inventory/ajax/ajax.inventory.php b/htdocs/product/inventory/ajax/ajax.inventory.php index c258b63de2b..85dd488df6f 100644 --- a/htdocs/product/inventory/ajax/ajax.inventory.php +++ b/htdocs/product/inventory/ajax/ajax.inventory.php @@ -20,8 +20,7 @@ switch ($put) $res = $det->update($user); echo $det->qty_view; - } - else { + } else { echo -2; } @@ -39,8 +38,7 @@ switch ($put) $det->update($user); echo $det->new_pmp; - } - else { + } else { echo -2; } diff --git a/htdocs/product/inventory/card.php b/htdocs/product/inventory/card.php index a5084c296a1..9f3afa55738 100644 --- a/htdocs/product/inventory/card.php +++ b/htdocs/product/inventory/card.php @@ -41,8 +41,7 @@ $backtopage = GETPOST('backtopage', 'alpha'); if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { $result = restrictedArea($user, 'stock', $id); -} -else { +} else { $result = restrictedArea($user, 'stock', $id, '', 'inventory_advance'); } @@ -79,8 +78,7 @@ if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { $permissiontoadd = $user->rights->stock->creer; $permissiontodelete = $user->rights->stock->supprimer; -} -else { +} else { $permissiontoadd = $user->rights->stock->inventory_advance->write; $permissiontodelete = $user->rights->stock->inventory_advance->write; } @@ -334,24 +332,21 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($permissiontoadd) { print ''.$langs->trans("Modify").''."\n"; - } - else { + } else { print ''.$langs->trans('Modify').''."\n"; } if ($permissiontoadd) { print ''.$langs->trans("Validate").''."\n"; - } - else { + } else { print ''.$langs->trans('Validate').''."\n"; } if ($permissiontodelete) { print ''.$langs->trans('Delete').''."\n"; - } - else { + } else { print ''.$langs->trans('Delete').''."\n"; } } diff --git a/htdocs/product/inventory/class/inventory.class.php b/htdocs/product/inventory/class/inventory.class.php index 381c40d0aa4..983a7a4acb9 100644 --- a/htdocs/product/inventory/class/inventory.class.php +++ b/htdocs/product/inventory/class/inventory.class.php @@ -371,8 +371,7 @@ class Inventory extends CommonObject } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; @@ -465,8 +464,7 @@ class Inventory extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/product/inventory/inventory.php b/htdocs/product/inventory/inventory.php index 373164eeae4..5261b0432b8 100644 --- a/htdocs/product/inventory/inventory.php +++ b/htdocs/product/inventory/inventory.php @@ -41,8 +41,7 @@ $backtopage = GETPOST('backtopage', 'alpha'); if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { $result = restrictedArea($user, 'stock', $id); -} -else { +} else { $result = restrictedArea($user, 'stock', $id, '', 'inventory_advance'); } @@ -79,8 +78,7 @@ if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { $permissiontoadd = $user->rights->stock->creer; $permissiontodelete = $user->rights->stock->supprimer; -} -else { +} else { $permissiontoadd = $user->rights->stock->inventory_advance->write; $permissiontodelete = $user->rights->stock->inventory_advance->write; } @@ -266,8 +264,7 @@ if ($object->id > 0) print ''; print ''; print '
'; - } - else { + } else { print '
'."\n"; $parameters = array(); $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook @@ -280,8 +277,7 @@ if ($object->id > 0) if ($permissiontoadd) { print ''.$langs->trans("Edit").''."\n"; - } - else { + } else { print ''.$langs->trans('Edit').''."\n"; } } @@ -291,8 +287,7 @@ if ($object->id > 0) if ($permissiontoadd) { print ''.$langs->trans("Validate").''."\n"; - } - else { + } else { print ''.$langs->trans('Validate').''."\n"; } } diff --git a/htdocs/product/inventory/list.php b/htdocs/product/inventory/list.php index c799ab7da87..4d451fcbeec 100644 --- a/htdocs/product/inventory/list.php +++ b/htdocs/product/inventory/list.php @@ -76,8 +76,7 @@ if ($user->socid > 0) // Protection if external user if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { $result = restrictedArea($user, 'stock', $objectid); -} -else { +} else { $result = restrictedArea($user, 'stock', $objectid, '', 'inventory_advance'); } @@ -254,8 +253,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) if (is_numeric($nbtotalofrecords) && ($limit > $nbtotalofrecords || empty($limit))) { $num = $nbtotalofrecords; -} -else { +} else { if ($limit) $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); @@ -376,8 +374,7 @@ foreach ($object->fields as $key => $val) if (is_array($val['arrayofkeyval'])) print $form->selectarray('search_'.$key, $val['arrayofkeyval'], $search[$key], $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth75'); elseif (strpos($val['type'], 'integer:') === 0) { print $object->showInputField($val, $key, $search[$key], '', '', 'search_', 'maxwidth150', 1); - } - elseif (!preg_match('/^(date|timestamp)/', $val['type'])) print ''; + } elseif (!preg_match('/^(date|timestamp)/', $val['type'])) print ''; print ''; } } diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 347281f0c75..e3889258df7 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -291,12 +291,10 @@ if ($search_type != '' && $search_type != '-1') if ($search_type == 1) { $texte = $langs->trans("Services"); - } - else { + } else { $texte = $langs->trans("Products"); } -} -else { +} else { $texte = $langs->trans("ProductsAndServices"); } @@ -450,8 +448,7 @@ if ($resql) if ($search_type == 0) { $helpurl = 'EN:Module_Products|FR:Module_Produits|ES:Módulo_Productos'; - } - elseif ($search_type == 1) + } elseif ($search_type == 1) { $helpurl = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; } @@ -1058,15 +1055,13 @@ if ($resql) if ((float) $duration_value > 1) { $dur = array("i"=>$langs->trans("Minutes"), "h"=>$langs->trans("Hours"), "d"=>$langs->trans("Days"), "w"=>$langs->trans("Weeks"), "m"=>$langs->trans("Months"), "y"=>$langs->trans("Years")); - } - elseif ((float) $duration_value > 0) + } elseif ((float) $duration_value > 0) { $dur = array("i"=>$langs->trans("Minute"), "h"=>$langs->trans("Hour"), "d"=>$langs->trans("Day"), "w"=>$langs->trans("Week"), "m"=>$langs->trans("Month"), "y"=>$langs->trans("Year")); } print $duration_value; print ((!empty($duration_unit) && isset($dur[$duration_unit]) && $duration_value != '') ? ' '.$langs->trans($dur[$duration_unit]) : ''); - } - elseif (!preg_match('/^[a-z]$/i', $obj->duration)) // If duration is a simple char (like 's' of 'm'), we do not show value + } elseif (!preg_match('/^[a-z]$/i', $obj->duration)) // If duration is a simple char (like 's' of 'm'), we do not show value { print $obj->duration; } @@ -1213,8 +1208,7 @@ if ($resql) { $htmltext = $product_fourn->display_price_product_fournisseur(1, 1, 0, 1); print $form->textwithpicto(price($product_fourn->fourn_unitprice * (1 - $product_fourn->fourn_remise_percent / 100) - $product_fourn->fourn_remise).' '.$langs->trans("HT"), $htmltext); - } - else print price($product_fourn->fourn_unitprice).' '.$langs->trans("HT"); + } else print price($product_fourn->fourn_unitprice).' '.$langs->trans("HT"); } } } @@ -1408,8 +1402,7 @@ if ($resql) print ""; print "
"; print ''; -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/product/popucom.php b/htdocs/product/popucom.php index c21afa711e7..a0ee53a5758 100644 --- a/htdocs/product/popucom.php +++ b/htdocs/product/popucom.php @@ -62,12 +62,10 @@ $helpurl = ''; if ($type == '0') { $helpurl = 'EN:Module_Products|FR:Module_Produits|ES:Módulo_Productos'; -} -elseif ($type == '1') +} elseif ($type == '1') { $helpurl = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; -} -else { +} else { $helpurl = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; } $title = $langs->trans("Statistics"); @@ -151,8 +149,7 @@ if ($resql) $i++; } $db->free($resql); -} -else { +} else { dol_print_error($db); } //var_dump($infoprod); diff --git a/htdocs/product/popuprop.php b/htdocs/product/popuprop.php index 92de8b33546..b48afc6d162 100644 --- a/htdocs/product/popuprop.php +++ b/htdocs/product/popuprop.php @@ -62,12 +62,10 @@ $helpurl = ''; if ($type == '0') { $helpurl = 'EN:Module_Products|FR:Module_Produits|ES:Módulo_Productos'; -} -elseif ($type == '1') +} elseif ($type == '1') { $helpurl = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; -} -else { +} else { $helpurl = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; } $title = $langs->trans("Statistics"); @@ -151,8 +149,7 @@ if ($resql) $i++; } $db->free($resql); -} -else { +} else { dol_print_error($db); } //var_dump($infoprod); diff --git a/htdocs/product/price.php b/htdocs/product/price.php index 1db2219bf63..2c1bc26d092 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -169,8 +169,7 @@ if (empty($reshook)) if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } @@ -274,8 +273,7 @@ if (empty($reshook)) break; } } - } - elseif (!$error) + } elseif (!$error) { $tva_tx_txt = GETPOST('tva_tx', 'alpha'); // tva_tx can be '8.5' or '8.5*' or '8.5 (XXX)' or '8.5* (XXX)' @@ -765,8 +763,7 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ echo vatrate($positiverates.($object->default_vat_code ? ' ('.$object->default_vat_code.')' : ''), '%', $object->tva_npr); //print vatrate($object->multiprices_tva_tx[$soc->price_level], true); print ''; - } - else { + } else { // TVA print ''.$langs->trans("DefaultTaxRate").''; @@ -784,16 +781,14 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ else print vatrate($object->tva_tx . ($object->tva_npr ? '*' : ''), true);*/ print ''; } - } - else { + } else { if (!empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) // using this option is a bug. kept for backward compatibility { // We show only vat for level 1 print ''.$langs->trans("DefaultTaxRate").''; print ''.vatrate($object->multiprices_tva_tx[1], true).''; print ''; - } - else { + } else { // TVA print ''.$langs->trans("DefaultTaxRate").''; @@ -841,8 +836,7 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ print ''; print ' '; print ''; - } - else { + } else { print $langs->trans("SellingPrice").' '.$i; if (!empty($conf->global->$keyforlabel)) print ' - '.$langs->trans($conf->global->$keyforlabel); } @@ -866,8 +860,7 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ if ($object->multiprices_base_type[$i] == 'TTC') { print price($object->multiprices_min_ttc[$i]).' '.$langs->trans($object->multiprices_base_type[$i]); - } - else { + } else { print price($object->multiprices_min[$i]).' '.$langs->trans($object->multiprices_base_type[$i]); } print ''; @@ -947,8 +940,7 @@ if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_ } } } -} -else { +} else { // TVA print ''.$langs->trans("DefaultTaxRate").''; @@ -990,8 +982,7 @@ else { print ''.$langs->trans("PriceByQuantity"); if ($object->prices_by_qty[0] == 0) { print '  ('.$langs->trans("Activate").')'; - } - else { + } else { print '  ('.$langs->trans("DisablePriceByQty").')'; } print ''; @@ -1280,8 +1271,7 @@ if ($action == 'edit_price' && $object->getRights()->creer) print ''; print '
'; - } - else { + } else { print ''."\n"; ?> '; -} -elseif ($object->id > 0) +} elseif ($object->id > 0) { /* * Show or edit @@ -885,8 +874,7 @@ elseif ($object->id > 0) { $texthelp = $langs->trans("IfNeedToUseOtherObjectKeepEmpty"); print $form->textwithtooltip($text.' '.img_help(), $texthelp, 1, 0, '', '', 2); - } - else print $text; + } else print $text; print ''; } @@ -974,8 +962,7 @@ elseif ($object->id > 0) } print ''; - } - else { + } else { dol_fiche_head($head, 'project', $langs->trans("Project"), -1, ($object->public ? 'projectpub' : 'project')); // Project card @@ -1228,8 +1215,7 @@ elseif ($object->id > 0) if ($userWrite > 0) { print '
'.$langs->trans("Modify").''; - } - else { + } else { print ''.$langs->trans('Modify').''; } } @@ -1240,8 +1226,7 @@ elseif ($object->id > 0) if ($userWrite > 0) { print ''.$langs->trans("Validate").''; - } - else { + } else { print ''.$langs->trans('Validate').''; } } @@ -1252,8 +1237,7 @@ elseif ($object->id > 0) if ($userWrite > 0) { print ''.$langs->trans("Close").''; - } - else { + } else { print ''.$langs->trans('Close').''; } } @@ -1264,8 +1248,7 @@ elseif ($object->id > 0) if ($userWrite > 0) { print ''.$langs->trans("ReOpen").''; - } - else { + } else { print ''.$langs->trans('ReOpen').''; } } @@ -1331,8 +1314,7 @@ elseif ($object->id > 0) if ($userWrite > 0) { print ''.$langs->trans('ToClone').''; - } - else { + } else { print ''.$langs->trans('ToClone').''; } } @@ -1343,8 +1325,7 @@ elseif ($object->id > 0) if ($userDelete > 0 || ($object->statut == 0 && $user->rights->projet->creer)) { print ''.$langs->trans("Delete").''; - } - else { + } else { print ''.$langs->trans('Delete').''; } } @@ -1401,8 +1382,7 @@ elseif ($object->id > 0) // Hook to add more things on page $parameters = array(); $reshook = $hookmanager->executeHooks('mainCardTabAddMore', $parameters, $object, $action); // Note that $action and $object may have been modified by hook -} -else { +} else { print $langs->trans("RecordNotFound"); } diff --git a/htdocs/projet/class/api_projects.class.php b/htdocs/projet/class/api_projects.class.php index 77feddb91bd..5ef21879c7f 100644 --- a/htdocs/projet/class/api_projects.class.php +++ b/htdocs/projet/class/api_projects.class.php @@ -171,8 +171,7 @@ class Projects extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieve project list : '.$db->lasterror()); } if (!count($obj_ret)) { @@ -452,8 +451,7 @@ class Projects extends DolibarrApi if ($this->project->update(DolibarrApiAccess::$user) >= 0) { return $this->get($id); - } - else { + } else { throw new RestException(500, $this->project->error); } } diff --git a/htdocs/projet/class/api_tasks.class.php b/htdocs/projet/class/api_tasks.class.php index 1a16d9ce199..084292d0727 100644 --- a/htdocs/projet/class/api_tasks.class.php +++ b/htdocs/projet/class/api_tasks.class.php @@ -173,8 +173,7 @@ class Tasks extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieve task list : '.$db->lasterror()); } if (!count($obj_ret)) { @@ -450,8 +449,7 @@ class Tasks extends DolibarrApi if ($this->task->update(DolibarrApiAccess::$user) > 0) { return $this->get($id); - } - else { + } else { throw new RestException(500, $this->task->error); } } diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 8337a625415..7389af9083c 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -306,8 +306,7 @@ class Project extends CommonObject if ($result < 0) { $error++; } // End call triggers } - } - else { + } else { $this->error = $this->db->lasterror(); $this->errno = $this->db->lasterrno(); $error++; @@ -332,8 +331,7 @@ class Project extends CommonObject { $this->db->commit(); return $ret; - } - else { + } else { $this->db->rollback(); return -1; } @@ -439,27 +437,23 @@ class Project extends CommonObject { $this->db->commit(); $result = 1; - } - else { + } else { $this->db->rollback(); $result = -1; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->errors[] = $this->error; $this->db->rollback(); if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $result = -4; - } - else { + } else { $result = -2; } dol_syslog(get_class($this)."::update error ".$result." ".$this->error, LOG_ERR); } - } - else { + } else { dol_syslog(get_class($this)."::update ref null"); $result = -1; } @@ -487,8 +481,7 @@ class Project extends CommonObject if (!empty($id)) { $sql .= " WHERE rowid=".$id; - } - elseif (!empty($ref)) + } elseif (!empty($ref)) { $sql .= " WHERE ref='".$this->db->escape($ref)."'"; $sql .= " AND entity IN (".getEntity('project').")"; @@ -547,8 +540,7 @@ class Project extends CommonObject $this->db->free($resql); return 0; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -578,35 +570,28 @@ class Project extends CommonObject if ($type == 'agenda') { $sql = "SELECT id as rowid FROM ".MAIN_DB_PREFIX."actioncomm WHERE fk_project IN (".$ids.") AND entity IN (".getEntity('agenda').")"; - } - elseif ($type == 'expensereport') + } elseif ($type == 'expensereport') { $sql = "SELECT ed.rowid FROM ".MAIN_DB_PREFIX."expensereport as e, ".MAIN_DB_PREFIX."expensereport_det as ed WHERE e.rowid = ed.fk_expensereport AND e.entity IN (".getEntity('expensereport').") AND ed.fk_projet IN (".$ids.")"; - } - elseif ($type == 'project_task') + } elseif ($type == 'project_task') { $sql = "SELECT DISTINCT pt.rowid FROM ".MAIN_DB_PREFIX."projet_task as pt WHERE pt.fk_projet IN (".$ids.")"; - } - elseif ($type == 'project_task_time') // Case we want to duplicate line foreach user + } elseif ($type == 'project_task_time') // Case we want to duplicate line foreach user { $sql = "SELECT DISTINCT pt.rowid, ptt.fk_user FROM ".MAIN_DB_PREFIX."projet_task as pt, ".MAIN_DB_PREFIX."projet_task_time as ptt WHERE pt.rowid = ptt.fk_task AND pt.fk_projet IN (".$ids.")"; - } - elseif ($type == 'stock_mouvement') + } elseif ($type == 'stock_mouvement') { $sql = 'SELECT ms.rowid, ms.fk_user_author as fk_user FROM '.MAIN_DB_PREFIX."stock_mouvement as ms, ".MAIN_DB_PREFIX."entrepot as e WHERE e.rowid = ms.fk_entrepot AND e.entity IN (".getEntity('stock').") AND ms.origintype = 'project' AND ms.fk_origin IN (".$ids.") AND ms.type_mouvement = 1"; - } - elseif ($type == 'loan') + } elseif ($type == 'loan') { $sql = 'SELECT l.rowid, l.fk_user_author as fk_user FROM '.MAIN_DB_PREFIX."loan as l WHERE l.entity IN (".getEntity('loan').") AND l.fk_projet IN (".$ids.")"; - } - else { + } else { $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX.$tablename." WHERE ".$projectkey." IN (".$ids.") AND entity IN (".getEntity($type).")"; } if ($dates > 0 && $type == 'loan'){ $sql .= " AND (dateend > '".$this->db->idate($dates)."' OR dateend IS NULL)"; - } - elseif ($dates > 0 && ($type != 'project_task')) // For table project_taks, we want the filter on date apply on project_time_spent table + } elseif ($dates > 0 && ($type != 'project_task')) // For table project_taks, we want the filter on date apply on project_time_spent table { if (empty($datefieldname) && !empty($this->table_element_date)) $datefieldname = $this->table_element_date; if (empty($datefieldname)) return 'Error this object has no date field defined'; @@ -615,8 +600,7 @@ class Project extends CommonObject if ($datee > 0 && $type == 'loan'){ $sql .= " AND (datestart < '".$this->db->idate($datee)."' OR datestart IS NULL)"; - } - elseif ($datee > 0 && ($type != 'project_task')) // For table project_taks, we want the filter on date apply on project_time_spent table + } elseif ($datee > 0 && ($type != 'project_task')) // For table project_taks, we want the filter on date apply on project_time_spent table { if (empty($datefieldname) && !empty($this->table_element_date)) $datefieldname = $this->table_element_date; if (empty($datefieldname)) return 'Error this object has no date field defined'; @@ -646,8 +630,7 @@ class Project extends CommonObject /* Return array even if empty*/ return $elements; - } - else { + } else { dol_print_error($this->db); } } @@ -797,8 +780,7 @@ class Project extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); @@ -890,15 +872,13 @@ class Project extends CommonObject $this->statut = 1; $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); $this->error = join(',', $this->errors); dol_syslog(get_class($this)."::setValid ".$this->error, LOG_ERR); return -1; } - } - else { + } else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; @@ -948,15 +928,13 @@ class Project extends CommonObject $this->statut = 2; $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); $this->error = join(',', $this->errors); dol_syslog(get_class($this)."::setClose ".$this->error, LOG_ERR); return -1; } - } - else { + } else { $this->db->rollback(); $this->error = $this->db->lasterror(); return -1; @@ -1054,16 +1032,13 @@ class Project extends CommonObject { if (preg_match('/\.php$/', $option)) { $url = dol_buildpath($option, 1).'?id='.$this->id; - } - elseif ($option == 'task') + } elseif ($option == 'task') { $url = DOL_URL_ROOT.'/projet/tasks.php?id='.$this->id; - } - elseif ($option == 'preview') + } elseif ($option == 'preview') { $url = DOL_URL_ROOT.'/projet/element.php?id='.$this->id; - } - else { + } else { $url = DOL_URL_ROOT.'/projet/card.php?id='.$this->id; } // Add param to save lastsearch_values or not @@ -1179,12 +1154,10 @@ class Project extends CommonObject if (($mode == 'read' && !empty($user->rights->projet->all->lire)) || ($mode == 'write' && !empty($user->rights->projet->all->creer)) || ($mode == 'delete' && !empty($user->rights->projet->all->supprimer))) { $userAccess = 1; - } - elseif ($this->public && (($mode == 'read' && !empty($user->rights->projet->lire)) || ($mode == 'write' && !empty($user->rights->projet->creer)) || ($mode == 'delete' && !empty($user->rights->projet->supprimer)))) + } elseif ($this->public && (($mode == 'read' && !empty($user->rights->projet->lire)) || ($mode == 'write' && !empty($user->rights->projet->creer)) || ($mode == 'delete' && !empty($user->rights->projet->supprimer)))) { $userAccess = 1; - } - else { + } else { foreach (array('internal', 'external') as $source) { $userRole = $this->liste_contact(4, $source); @@ -1234,12 +1207,10 @@ class Project extends CommonObject if ($mode == 0) { $sql.= " LEFT JOIN " . MAIN_DB_PREFIX . "element_contact as ec ON ec.element_id = p.rowid"; - } - elseif ($mode == 1) + } elseif ($mode == 1) { $sql.= ", " . MAIN_DB_PREFIX . "element_contact as ec"; - } - elseif ($mode == 2) + } elseif ($mode == 2) { // No filter. Use this if user has permission to see all project } @@ -1260,8 +1231,7 @@ class Project extends CommonObject { $listofprojectcontacttype[$obj->rowid]=$obj->code; } - } - else dol_print_error($this->db); + } else dol_print_error($this->db); if (count($listofprojectcontacttype) == 0) $listofprojectcontacttype[0]='0'; // To avoid syntax error if not found if ($mode == 0) @@ -1270,16 +1240,14 @@ class Project extends CommonObject $sql.= " OR ( ec.fk_c_type_contact IN (".join(',', array_keys($listofprojectcontacttype)).")"; $sql.= " AND ec.fk_socpeople = ".$user->id.")"; $sql.= " )"; - } - elseif ($mode == 1) + } elseif ($mode == 1) { $sql.= " AND ec.element_id = p.rowid"; $sql.= " AND ("; $sql.= " ( ec.fk_c_type_contact IN (".join(',', array_keys($listofprojectcontacttype)).")"; $sql.= " AND ec.fk_socpeople = ".$user->id.")"; $sql.= " )"; - } - elseif ($mode == 2) + } elseif ($mode == 2) { // No filter. Use this if user has permission to see all project } @@ -1308,8 +1276,7 @@ class Project extends CommonObject $result = implode(',', $temp); return $result; } - } - else { + } else { dol_print_error($this->db); } @@ -1416,8 +1383,7 @@ class Project extends CommonObject { $clone_project->note_private = ''; $clone_project->note_public = ''; - } - else { + } else { $this->db->begin(); $res = $clone_project->update_note(dol_html_entity_decode($clone_project->note_public, ENT_QUOTES), '_public'); if ($res < 0) @@ -1425,8 +1391,7 @@ class Project extends CommonObject $this->error .= $clone_project->error; $error++; $this->db->rollback(); - } - else { + } else { $this->db->commit(); } @@ -1437,8 +1402,7 @@ class Project extends CommonObject $this->error .= $clone_project->error; $error++; $this->db->rollback(); - } - else { + } else { $this->db->commit(); } } @@ -1461,8 +1425,7 @@ class Project extends CommonObject $langs->load("errors"); $this->error .= $langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"); $error++; - } - else { + } else { if ($clone_project->error != '') { $this->error .= $clone_project->error; @@ -1493,8 +1456,7 @@ class Project extends CommonObject $error++; } } - } - else { + } else { $this->error .= $langs->trans('ErrorInternalErrorDetected').':dol_mkdir'; $error++; } @@ -1523,8 +1485,7 @@ class Project extends CommonObject { $this->error .= $result_clone->error; $error++; - } - else { + } else { $new_task_id = $result_clone; $taskstatic->fetch($tasktoclone->id); @@ -1562,8 +1523,7 @@ class Project extends CommonObject { $this->db->commit(); return $clone_project_id; - } - else { + } else { $this->db->rollback(); dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : ".$this->error, LOG_ERR); return -1; @@ -1656,8 +1616,7 @@ class Project extends CommonObject { $sql .= " SET fk_project=".$this->id; $sql .= " WHERE id=".$elementSelectId; - } - else { + } else { $sql .= " SET fk_projet=".$this->id; $sql .= " WHERE rowid=".$elementSelectId; } @@ -1782,8 +1741,7 @@ class Project extends CommonObject { $this->weekWorkLoad[$day] = $obj->task_duration; $this->weekWorkLoadPerTask[$day][$obj->fk_task] = $obj->task_duration; - } - else { + } else { $this->weekWorkLoad[$day] += $obj->task_duration; $this->weekWorkLoadPerTask[$day][$obj->fk_task] += $obj->task_duration; } @@ -1792,8 +1750,7 @@ class Project extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); return -1; @@ -1847,8 +1804,7 @@ class Project extends CommonObject { $this->monthWorkLoad[$week_number] = $obj->task_duration; $this->monthWorkLoadPerTask[$week_number][$obj->fk_task] = $obj->task_duration; - } - else { + } else { $this->monthWorkLoad[$week_number] += $obj->task_duration; $this->monthWorkLoadPerTask[$week_number][$obj->fk_task] += $obj->task_duration; } @@ -1857,8 +1813,7 @@ class Project extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); return -1; @@ -1927,8 +1882,7 @@ class Project extends CommonObject } return $response; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -1985,8 +1939,7 @@ class Project extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; @@ -2052,8 +2005,7 @@ class Project extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/projet/class/projectstats.class.php b/htdocs/projet/class/projectstats.class.php index 1452b0e919f..cb6150b6dc7 100644 --- a/htdocs/projet/class/projectstats.class.php +++ b/htdocs/projet/class/projectstats.class.php @@ -92,8 +92,7 @@ class ProjectStats extends Stats $label.' ('.price(price2num($row[0], 'MT'), 1, $langs, 1, -1, -1, $conf->currency).')', $row[0] ); - } - else $other += $row[1]; + } else $other += $row[1]; $i++; } if ($num > $limit) @@ -280,8 +279,7 @@ class ProjectStats extends Stats $foundintocache = 1; $this->lastfetchdate[get_class($this).'_'.__FUNCTION__] = $filedate; - } - else { + } else { dol_syslog(get_class($this).'::'.__FUNCTION__." cache file ".$newpathofdestfile." is not found or older than now - cachedelay (".$nowgmt." - ".$cachedelay.") so we can't use it."); } } @@ -291,8 +289,7 @@ class ProjectStats extends Stats { dol_syslog(get_class($this).'::'.__FUNCTION__." read data from cache file ".$newpathofdestfile." ".$filedate."."); $data = json_decode(file_get_contents($newpathofdestfile), true); - } - else { + } else { $year = $startyear; while ($year <= $endyear) { @@ -326,8 +323,7 @@ class ProjectStats extends Stats fclose($fp); if (!empty($conf->global->MAIN_UMASK)) $newmask = $conf->global->MAIN_UMASK; @chmod($newpathofdestfile, octdec($newmask)); - } - else dol_syslog("Failed to write cache file", LOG_ERR); + } else dol_syslog("Failed to write cache file", LOG_ERR); $this->lastfetchdate[get_class($this).'_'.__FUNCTION__] = $nowgmt; } diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index cc74e565385..10f5a36d67f 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -225,8 +225,7 @@ class Task extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -327,8 +326,7 @@ class Task extends CommonObject } else { return 0; } - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -437,8 +435,7 @@ class Task extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -540,8 +537,7 @@ class Task extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { //Delete associated link file if ($conf->projet->dir_output) { @@ -585,8 +581,7 @@ class Task extends CommonObject dol_syslog(get_class($this)."::hasChildren", LOG_DEBUG); $resql = $this->db->query($sql); - if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - else { + if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } else { $obj = $this->db->fetch_object($resql); if ($obj) $ret = $obj->nb; $this->db->free($resql); @@ -595,8 +590,7 @@ class Task extends CommonObject if (!$error) { return $ret; - } - else { + } else { return -1; } } @@ -617,8 +611,7 @@ class Task extends CommonObject dol_syslog(get_class($this)."::hasTimeSpent", LOG_DEBUG); $resql = $this->db->query($sql); - if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - else { + if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } else { $obj = $this->db->fetch_object($resql); if ($obj) $ret = $obj->nb; $this->db->free($resql); @@ -627,8 +620,7 @@ class Task extends CommonObject if (!$error) { return $ret; - } - else { + } else { return -1; } } @@ -791,8 +783,7 @@ class Task extends CommonObject $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task_extrafields as efpt ON (t.rowid = efpt.fk_object)"; $sql .= " WHERE p.entity IN (".getEntity('project').")"; $sql .= " AND t.fk_projet = p.rowid"; - } - elseif ($mode == 1) + } elseif ($mode == 1) { if ($filteronprojuser > 0) { @@ -808,8 +799,7 @@ class Task extends CommonObject } $sql .= ", ".MAIN_DB_PREFIX."element_contact as ec2"; $sql .= ", ".MAIN_DB_PREFIX."c_type_contact as ctc2"; - } - else { + } else { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t on t.fk_projet = p.rowid"; if ($includebilltime) { @@ -818,8 +808,7 @@ class Task extends CommonObject } $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task_extrafields as efpt ON (t.rowid = efpt.fk_object)"; $sql .= " WHERE p.entity IN (".getEntity('project').")"; - } - else return 'BadValueForParameterMode'; + } else return 'BadValueForParameterMode'; if ($filteronprojuser > 0) { @@ -965,8 +954,7 @@ class Task extends CommonObject $i++; } $this->db->free($resql); - } - else { + } else { dol_print_error($this->db); } @@ -1044,8 +1032,7 @@ class Task extends CommonObject $i++; } $this->db->free($resql); - } - else { + } else { dol_print_error($this->db); } @@ -1136,8 +1123,7 @@ class Task extends CommonObject if ($result < 0) { $ret = -1; } // End call triggers } - } - else { + } else { $this->error = $this->db->lasterror(); $ret = -1; } @@ -1172,8 +1158,7 @@ class Task extends CommonObject if ($ret > 0) { $this->db->commit(); - } - else { + } else { $this->db->rollback(); } return $ret; @@ -1233,8 +1218,7 @@ class Task extends CommonObject $this->timespent_nblines = ($obj->nblines ? $obj->nblines : 0); $this->db->free($resql); - } - else { + } else { dol_print_error($this->db); } return $result; @@ -1289,8 +1273,7 @@ class Task extends CommonObject $this->db->free($resql); return $result; - } - else { + } else { dol_print_error($this->db); return $result; } @@ -1341,8 +1324,7 @@ class Task extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -1427,8 +1409,7 @@ class Task extends CommonObject } $this->db->free($resql); - } - else { + } else { dol_print_error($this->db); $this->error = "Error ".$this->db->lasterror(); return -1; @@ -1488,13 +1469,10 @@ class Task extends CommonObject { $this->db->rollback(); $ret = -1; - } - else $ret = 1; + } else $ret = 1; // End call triggers - } - else $ret = 1; - } - else { + } else $ret = 1; + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); $ret = -1; @@ -1564,8 +1542,7 @@ class Task extends CommonObject if ($this->db->query($sql)) { $result = 0; - } - else { + } else { $this->error = $this->db->lasterror(); $result = -2; } @@ -1581,8 +1558,7 @@ class Task extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -1694,8 +1670,7 @@ class Task extends CommonObject { $clone_task->note_private = ''; $clone_task->note_public = ''; - } - else { + } else { $this->db->begin(); $res = $clone_task->update_note(dol_html_entity_decode($clone_task->note_public, ENT_QUOTES), '_public'); if ($res < 0) @@ -1703,8 +1678,7 @@ class Task extends CommonObject $this->error .= $clone_task->error; $error++; $this->db->rollback(); - } - else { + } else { $this->db->commit(); } @@ -1715,8 +1689,7 @@ class Task extends CommonObject $this->error .= $clone_task->error; $error++; $this->db->rollback(); - } - else { + } else { $this->db->commit(); } } @@ -1735,8 +1708,7 @@ class Task extends CommonObject { $projectstatic->fetch($project_id); $clone_project_ref = $projectstatic->ref; - } - else { + } else { $clone_project_ref = $ori_project_ref; } @@ -1783,8 +1755,7 @@ class Task extends CommonObject $langs->load("errors"); $this->error .= $langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"); $error++; - } - else { + } else { if ($clone_task->error != '') { $this->error .= $clone_task->error; @@ -1808,8 +1779,7 @@ class Task extends CommonObject { $this->db->commit(); return $clone_task_id; - } - else { + } else { $this->db->rollback(); dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : ".$this->error, LOG_ERR); return -1; @@ -1856,12 +1826,10 @@ class Task extends CommonObject if ($mode == 0) { return $langs->trans($this->statuts[$status]); - } - elseif ($mode == 1) + } elseif ($mode == 1) { return $langs->trans($this->statuts_short[$status]); - } - elseif ($mode == 2) + } elseif ($mode == 2) { if ($status == 0) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts_short[$status]); elseif ($status == 1) return img_picto($langs->trans($this->statuts_short[$status]), 'statut1').' '.$langs->trans($this->statuts_short[$status]); @@ -1869,8 +1837,7 @@ class Task extends CommonObject elseif ($status == 3) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts_short[$status]); elseif ($status == 4) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts_short[$status]); elseif ($status == 5) return img_picto($langs->trans($this->statuts_short[$status]), 'statut5').' '.$langs->trans($this->statuts_short[$status]); - } - elseif ($mode == 3) + } elseif ($mode == 3) { if ($status == 0) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); elseif ($status == 1) return img_picto($langs->trans($this->statuts_short[$status]), 'statut1'); @@ -1878,8 +1845,7 @@ class Task extends CommonObject elseif ($status == 3) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); elseif ($status == 4) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); elseif ($status == 5) return img_picto($langs->trans($this->statuts_short[$status]), 'statut5'); - } - elseif ($mode == 4) + } elseif ($mode == 4) { if ($status == 0) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts[$status]); elseif ($status == 1) return img_picto($langs->trans($this->statuts_short[$status]), 'statut1').' '.$langs->trans($this->statuts[$status]); @@ -1887,8 +1853,7 @@ class Task extends CommonObject elseif ($status == 3) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts[$status]); elseif ($status == 4) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts[$status]); elseif ($status == 5) return img_picto($langs->trans($this->statuts_short[$status]), 'statut5').' '.$langs->trans($this->statuts[$status]); - } - elseif ($mode == 5) + } elseif ($mode == 5) { /*if ($status==0) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]),'statut0'); elseif ($status==1) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]),'statut1'); @@ -1899,8 +1864,7 @@ class Task extends CommonObject */ //else return $this->progress.' %'; return ' '; - } - elseif ($mode == 6) + } elseif ($mode == 6) { /*if ($status==0) return $langs->trans($this->statuts[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]),'statut0'); elseif ($status==1) return $langs->trans($this->statuts[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]),'statut1'); @@ -2012,8 +1976,7 @@ class Task extends CommonObject } return $response; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -2060,8 +2023,7 @@ class Task extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->error(); return -1; diff --git a/htdocs/projet/class/taskstats.class.php b/htdocs/projet/class/taskstats.class.php index 1ab6189674a..722736fe9b8 100644 --- a/htdocs/projet/class/taskstats.class.php +++ b/htdocs/projet/class/taskstats.class.php @@ -82,8 +82,7 @@ class TaskStats extends Stats $row[1], $row[0] ); - } - else $other += $row[1]; + } else $other += $row[1]; $i++; } if ($num > $limit) diff --git a/htdocs/projet/contact.php b/htdocs/projet/contact.php index fde1563eac2..b8f1a24013d 100644 --- a/htdocs/projet/contact.php +++ b/htdocs/projet/contact.php @@ -73,14 +73,12 @@ if ($action == 'addcontact' && $user->rights->projet->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -92,8 +90,7 @@ if ($action == 'swapstatut' && $user->rights->projet->creer) if ($object->fetch($id)) { $result = $object->swapContactStatus(GETPOST('ligne', 'int')); - } - else { + } else { dol_print_error($db); } } @@ -108,8 +105,7 @@ if (($action == 'deleteline' || $action == 'deletecontact') && $user->rights->pr { header("Location: contact.php?id=".$object->id); exit; - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/projet/document.php b/htdocs/projet/document.php index 5b0409d7246..9015ef0d4d4 100644 --- a/htdocs/projet/document.php +++ b/htdocs/projet/document.php @@ -157,8 +157,7 @@ if ($object->id > 0) $permission = ($userWrite > 0); $permtoedit = ($userWrite > 0); include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { dol_print_error('', 'NoRecordFound'); } diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 3907259e230..84612ef76ce 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -568,8 +568,7 @@ if ($action == "addelement") { setEventMessages($object->error, $object->errors, 'errors'); } -} -elseif ($action == "unlink") +} elseif ($action == "unlink") { $tablename = GETPOST("tablename", "aZ09"); $projectField = GETPOSTISSET('projectfield') ? GETPOST('projectfield', 'aZ09') : 'fk_projet'; @@ -685,18 +684,15 @@ foreach ($listofreferent as $key => $value) { $tmp = $element->getSumOfAmount($elementuser, $dates, $datee); $total_ht_by_line = price2num($tmp['amount'], 'MT'); - } - else { + } else { $tmp = $element->getSumOfAmount('', $dates, $datee); $total_ht_by_line = price2num($tmp['amount'], 'MT'); } - } - elseif ($key == 'loan') { + } elseif ($key == 'loan') { if ((empty($dates) && empty($datee)) || (intval($dates) <= $element->datestart && intval($datee) >= $element->dateend)) { // Get total loan $total_ht_by_line = -$element->capital; - } - else { + } else { // Get loan schedule according to date filter $total_ht_by_line = 0; $loanScheduleStatic = new LoanSchedule($element->db); @@ -715,8 +711,7 @@ foreach ($listofreferent as $key => $value) } } } - } - else $total_ht_by_line = $element->total_ht; + } else $total_ht_by_line = $element->total_ht; // Define $total_ttc_by_line if ($tablename == 'don' || $tablename == 'chargesociales' || $tablename == 'payment_various' || $tablename == 'payment_salary') $total_ttc_by_line = $element->amount; @@ -726,11 +721,9 @@ foreach ($listofreferent as $key => $value) { $defaultvat = get_default_tva($mysoc, $mysoc); $total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)), 'MT'); - } - elseif ($key == 'loan') { + } elseif ($key == 'loan') { $total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr - } - else $total_ttc_by_line = $element->total_ttc; + } else $total_ttc_by_line = $element->total_ttc; // Change sign of $total_ht_by_line and $total_ttc_by_line for some cases if ($tablename == 'payment_various') @@ -844,8 +837,7 @@ foreach ($listofreferent as $key => $value) if ($selectList < 0) { setEventMessages($formproject->error, $formproject->errors, 'errors'); - } - elseif ($selectList) + } elseif ($selectList) { // Define form with the combo list of elements to link $addform .= '
'; @@ -951,8 +943,7 @@ foreach ($listofreferent as $key => $value) if ($tablename != 'expensereport_det') { if (method_exists($element, 'fetch_thirdparty')) $element->fetch_thirdparty(); - } - else { + } else { $expensereport = new ExpenseReport($db); $expensereport->fetch($element->fk_expensereport); } @@ -997,19 +988,16 @@ foreach ($listofreferent as $key => $value) if ($tablename == 'expensereport_det') { print $expensereport->getNomUrl(1); - } - else { + } else { // Show ref with link if ($element instanceof Task) { print $element->getNomUrl(1, 'withproject', 'time'); print ' - '.dol_trunc($element->label, 48); - } - elseif ($key == 'loan') { + } elseif ($key == 'loan') { print $element->getNomUrl(1); print ' - '.dol_trunc($element->label, 48); - } - else print $element->getNomUrl(1); + } else print $element->getNomUrl(1); $element_doc = $element->element; $filename = dol_sanitizeFileName($element->ref); @@ -1018,8 +1006,7 @@ foreach ($listofreferent as $key => $value) if ($element_doc === 'order_supplier') { $element_doc = 'commande_fournisseur'; $filedir = $conf->fournisseur->commande->multidir_output[$element->entity].'/'.dol_sanitizeFileName($element->ref); - } - elseif ($element_doc === 'invoice_supplier') { + } elseif ($element_doc === 'invoice_supplier') { $element_doc = 'facture_fournisseur'; $filename = get_exdir($element->id, 2, 0, 0, $element, 'product').dol_sanitizeFileName($element->ref); $filedir = $conf->fournisseur->facture->multidir_output[$element->entity].'/'.get_exdir($element->id, 2, 0, 0, $element, 'invoice_supplier').dol_sanitizeFileName($element->ref); @@ -1047,8 +1034,7 @@ foreach ($listofreferent as $key => $value) if ($tablename == 'commande_fournisseur' || $tablename == 'supplier_order') { $date = ($element->date_commande ? $element->date_commande : $element->date_valid); - } - elseif ($tablename == 'supplier_proposal') $date = $element->date_validation; // There is no other date for this + } elseif ($tablename == 'supplier_proposal') $date = $element->date_validation; // There is no other date for this elseif ($tablename == 'fichinter') $date = $element->datev; // There is no other date for this elseif ($tablename == 'projet_task') $date = ''; // We show no date. Showing date of beginning of task make user think it is date of time consumed else { @@ -1059,8 +1045,7 @@ foreach ($listofreferent as $key => $value) $date = $element->$datefieldname; } } - } - elseif ($key == 'loan') { + } elseif ($key == 'loan') { $date = $element->datestart; } @@ -1069,16 +1054,14 @@ foreach ($listofreferent as $key => $value) { print dol_print_date($element->datep, 'dayhour'); if ($element->datef && $element->datef > $element->datep) print " - ".dol_print_date($element->datef, 'dayhour'); - } - elseif (in_array($tablename, array('projet_task'))) + } elseif (in_array($tablename, array('projet_task'))) { $tmpprojtime = $element->getSumOfAmount($elementuser, $dates, $datee); // $element is a task. $elementuser may be empty print ''; print convertSecondToTime($tmpprojtime['nbseconds'], 'allhourmin'); print ''; $total_time_by_line = $tmpprojtime['nbseconds']; - } - else print dol_print_date($date, 'day'); + } else print dol_print_date($date, 'day'); print ''; // Third party or user @@ -1089,14 +1072,12 @@ foreach ($listofreferent as $key => $value) $tmpuser = new User($db); $tmpuser->fetch($expensereport->fk_user_author); print $tmpuser->getNomUrl(1, '', 48); - } - elseif ($tablename == 'payment_salary') + } elseif ($tablename == 'payment_salary') { $tmpuser = new User($db); $tmpuser->fetch($element->fk_user); print $tmpuser->getNomUrl(1, '', 48); - } - elseif ($tablename == 'don' || $tablename == 'stock_mouvement') + } elseif ($tablename == 'don' || $tablename == 'stock_mouvement') { if ($element->fk_user_author > 0) { @@ -1104,8 +1085,7 @@ foreach ($listofreferent as $key => $value) $tmpuser2->fetch($element->fk_user_author); print $tmpuser2->getNomUrl(1, '', 48); } - } - elseif ($tablename == 'projet_task' && $key == 'project_task_time') // if $key == 'project_task', we don't want details per user + } elseif ($tablename == 'projet_task' && $key == 'project_task_time') // if $key == 'project_task', we don't want details per user { print $elementuser->getNomUrl(1); } @@ -1140,12 +1120,10 @@ foreach ($listofreferent as $key => $value) $langs->load("errors"); $warning = $langs->trans("WarningSomeLinesWithNullHourlyRate", $conf->currency); } - } - else { + } else { $othermessage = $form->textwithpicto($langs->trans("NotAvailable"), $langs->trans("ModuleSalaryToDefineHourlyRateMustBeEnabled")); } - } - elseif ($key == 'loan') $total_ht_by_line = $element->capital; + } elseif ($key == 'loan') $total_ht_by_line = $element->capital; else { $total_ht_by_line = $element->total_ht; } @@ -1169,8 +1147,7 @@ foreach ($listofreferent as $key => $value) } if ($warning) print ' '.img_warning($warning); print ''; - } - else print ''; + } else print ''; // Amount inc tax if (empty($value['disableamount'])) @@ -1186,12 +1163,10 @@ foreach ($listofreferent as $key => $value) // TODO Permission to read daily rate $defaultvat = get_default_tva($mysoc, $mysoc); $total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)), 'MT'); - } - else { + } else { $othermessage = $form->textwithpicto($langs->trans("NotAvailable"), $langs->trans("ModuleSalaryToDefineHourlyRateMustBeEnabled")); } - } - elseif ($key == 'loan') $total_ttc_by_line = $element->capital - $element->getSumPayment(); + } elseif ($key == 'loan') $total_ttc_by_line = $element->capital - $element->getSumPayment(); else { $total_ttc_by_line = $element->total_ttc; } @@ -1215,32 +1190,27 @@ foreach ($listofreferent as $key => $value) } if ($warning) print ' '.img_warning($warning); print ''; - } - else print ''; + } else print ''; // Status print ''; if ($tablename == 'expensereport_det') { print $expensereport->getLibStatut(5); - } - elseif ($element instanceof CommonInvoice) + } elseif ($element instanceof CommonInvoice) { //This applies for Facture and FactureFournisseur print $element->getLibStatut(5, $element->getSommePaiement()); - } - elseif ($element instanceof Task) + } elseif ($element instanceof Task) { if ($element->progress != '') { print $element->progress.' %'; } - } - elseif ($tablename == 'stock_mouvement') + } elseif ($tablename == 'stock_mouvement') { print $element->getLibStatut(3); - } - else { + } else { print $element->getLibStatut(5); } print ''; @@ -1314,8 +1284,7 @@ foreach ($listofreferent as $key => $value) print ''; print ' '; print ''; - } - else { + } else { if (!is_array($elementarray)) // error { print $elementarray; diff --git a/htdocs/projet/ganttchart.inc.php b/htdocs/projet/ganttchart.inc.php index 5f88db6344d..457345d2fe3 100644 --- a/htdocs/projet/ganttchart.inc.php +++ b/htdocs/projet/ganttchart.inc.php @@ -195,8 +195,7 @@ function constructGanttLine($tarr, $task, $task_dependencies, $level = 0, $proje if ($project_id && $level < 0) { $parent = '-'.$project_id; - } - else { + } else { $parent = $task["task_parent_alternate_id"]; //$parent = $task["task_parent"]; } @@ -207,8 +206,7 @@ function constructGanttLine($tarr, $task, $task_dependencies, $level = 0, $proje { //$link=DOL_URL_ROOT.'/projet/tasks.php?withproject=1&id='.abs($task["task_id"]); $link = ''; - } - else { + } else { $link = DOL_URL_ROOT.'/projet/tasks/contact.php?withproject=1&id='.$task["task_id"]; } diff --git a/htdocs/projet/ganttview.php b/htdocs/projet/ganttview.php index 2cecf9c85ba..d578f372777 100644 --- a/htdocs/projet/ganttview.php +++ b/htdocs/projet/ganttview.php @@ -281,8 +281,7 @@ if (count($tasksarray) > 0) $tasks[$taskcursor]['task_is_group'] = 1; $tasks[$taskcursor]['task_css'] = 'ggroupblack'; //$tasks[$taskcursor]['task_css'] = 'gtaskblue'; - } - elseif ($task->hasChildren() > 0) { + } elseif ($task->hasChildren() > 0) { $tasks[$taskcursor]['task_is_group'] = 1; //$tasks[$taskcursor]['task_is_group'] = 0; $tasks[$taskcursor]['task_css'] = 'ggroupblack'; @@ -379,13 +378,11 @@ if (count($tasksarray) > 0) print '
'."\n"; print ''; - } - else { + } else { $langs->load("admin"); print $langs->trans("AvailableOnlyIfJavascriptAndAjaxNotDisabled"); } -} -else { +} else { print '
'.$langs->trans("NoTasks").'
'; } diff --git a/htdocs/projet/graph_opportunities.inc.php b/htdocs/projet/graph_opportunities.inc.php index 90f172f2fe2..a18b2dc54a5 100644 --- a/htdocs/projet/graph_opportunities.inc.php +++ b/htdocs/projet/graph_opportunities.inc.php @@ -98,8 +98,7 @@ if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) print ""; print "
"; - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index 261b7529907..f4edfdea548 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -140,8 +140,7 @@ if ($resql) } $i++; } -} -else dol_print_error($db); +} else dol_print_error($db); //var_dump($listofoppcode); @@ -272,8 +271,7 @@ if ($resql) } } print "
"; -} -else dol_print_error($db); +} else dol_print_error($db); $companystatic = new Societe($db); // We need a clean new object for next loop because current one has some properties set. @@ -326,8 +324,7 @@ if ($resql) $companystatic->status = $obj->status; print $companystatic->getNomUrl(1); - } - else { + } else { print $langs->trans("OthersNotLinkedToThirdParty"); } print ''; @@ -351,8 +348,7 @@ if ($resql) } $db->free($resql); -} -else { +} else { dol_print_error($db); } print ""; diff --git a/htdocs/projet/info.php b/htdocs/projet/info.php index 772188ec261..6c73d2cfc8b 100644 --- a/htdocs/projet/info.php +++ b/htdocs/projet/info.php @@ -52,8 +52,7 @@ if (GETPOST('actioncode', 'array')) { $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; -} -else { +} else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 98d9d49fd8e..70ad0f61e96 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -233,8 +233,7 @@ if (empty($reshook)) } else { setEventMessages($langs->trans("DontHaveTheValidateStatus", $objecttmp->ref), null, 'warnings'); } - } - else { + } else { setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); $error++; break; @@ -246,8 +245,7 @@ if (empty($reshook)) if ($nbok > 1) setEventMessages($langs->trans("RecordsClosed", $nbok), null, 'mesgs'); else setEventMessages($langs->trans("RecordsClosed", $nbok), null, 'mesgs'); $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -282,8 +280,7 @@ if ($resql) { $listofprojectcontacttype[$obj->rowid] = $obj->code; } -} -else dol_print_error($db); +} else dol_print_error($db); if (count($listofprojectcontacttype) == 0) $listofprojectcontacttype[0] = '0'; // To avoid sql syntax error if not found $distinct = 'DISTINCT'; // We add distinct until we are added a protection to be sure a contact of a project and task is only once. @@ -749,8 +746,7 @@ while ($i < min($num, $limit)) if ($obj->socid) { print $socstatic->getNomUrl(1); - } - else { + } else { print ' '; } print ''; @@ -769,8 +765,7 @@ while ($i < min($num, $limit)) if ($nbofsalesrepresentative > 3) // We print only number { print $nbofsalesrepresentative; - } - elseif ($nbofsalesrepresentative > 0) + } elseif ($nbofsalesrepresentative > 0) { $userstatic = new User($db); $j = 0; @@ -790,8 +785,7 @@ while ($i < min($num, $limit)) } } //else print $langs->trans("NoSalesRepresentativeAffected"); - } - else { + } else { print ' '; } print ''; diff --git a/htdocs/projet/stats/index.php b/htdocs/projet/stats/index.php index 38d12081b4f..6d56b2088e9 100644 --- a/htdocs/projet/stats/index.php +++ b/htdocs/projet/stats/index.php @@ -350,8 +350,7 @@ print ''; print '
'; $stringtoshow .= ''; @@ -607,8 +598,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third print ''; } -} -elseif ($id > 0 || !empty($ref)) +} elseif ($id > 0 || !empty($ref)) { $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields @@ -805,8 +795,7 @@ elseif ($id > 0 || !empty($ref)) // Show all lines in taskarray (recursive function to go down on tree) $j = 0; $level = 0; $nboftaskshown = projectLinesa($j, 0, $tasksarray, $level, true, 0, $tasksrole, $object->id, 1, $object->id, $filterprogresscalc, ($object->usage_bill_time ? 1 : 0), $arrayfields); - } - else { + } else { $colspan = 10; if ($object->usage_bill_time) $colspan += 2; print ''; @@ -829,8 +818,7 @@ elseif ($id > 0 || !empty($ref)) include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; cleanCorruptedTree($db, 'projet_task', 'fk_task_parent'); } - } - else { + } else { if ($nboftaskshown < count($tasksarray) && !GETPOST('search_user_id', 'int')) { include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/projet/tasks/comment.php b/htdocs/projet/tasks/comment.php index 905a6adedbf..e8a4ae93168 100644 --- a/htdocs/projet/tasks/comment.php +++ b/htdocs/projet/tasks/comment.php @@ -74,8 +74,7 @@ if (!empty($project_ref) && !empty($withproject)) if (count($objectsarray) > 0) { $id = $objectsarray[0]->id; - } - else { + } else { header("Location: ".DOL_URL_ROOT.'/projet/tasks.php?id='.$projectstatic->id.(empty($mode) ? '' : '&mode='.$mode)); } } @@ -279,8 +278,7 @@ if ($id > 0 || !empty($ref)) { $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1); $object->next_prev_filter = " fk_projet in (".$projectsListId.")"; - } - else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; + } else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; $morehtmlref = ''; diff --git a/htdocs/projet/tasks/contact.php b/htdocs/projet/tasks/contact.php index 303ee19425a..2c3737c6788 100644 --- a/htdocs/projet/tasks/contact.php +++ b/htdocs/projet/tasks/contact.php @@ -68,16 +68,14 @@ if ($action == 'addcontact' && $user->rights->projet->creer) if ($result <= 0) { dol_print_error($db, $projectstatic->error, $projectstatic->errors); - } - else { + } else { $contactsofproject = $projectstatic->getListContactId('internal'); foreach ($contactsofproject as $key => $val) { $result = $object->add_contact($val, GETPOST("type"), GETPOST("source")); } } - } - else { + } else { $result = $object->add_contact($idfortaskuser, GETPOST("type"), GETPOST("source")); } } @@ -86,14 +84,12 @@ if ($action == 'addcontact' && $user->rights->projet->creer) { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id.($withproject ? '&withproject=1' : '')); exit; - } - else { + } else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -105,8 +101,7 @@ if ($action == 'swapstatut' && $user->rights->projet->creer) if ($object->fetch($id, $ref)) { $result = $object->swapContactStatus(GETPOST('ligne')); - } - else { + } else { dol_print_error($db); } } @@ -121,8 +116,7 @@ if ($action == 'deleteline' && $user->rights->projet->creer) { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id.($withproject ? '&withproject=1' : '')); exit; - } - else { + } else { dol_print_error($db); } } @@ -136,8 +130,7 @@ if (!empty($project_ref) && !empty($withproject)) if (count($tasksarray) > 0) { $id = $tasksarray[0]->id; - } - else { + } else { header("Location: ".DOL_URL_ROOT.'/projet/tasks.php?id='.$projectstatic->id.($withproject ? '&withproject=1' : '').(empty($mode) ? '' : '&mode='.$mode)); exit; } @@ -318,8 +311,7 @@ if ($id > 0 || !empty($ref)) { $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1); $object->next_prev_filter = " fk_projet in (".$projectsListId.")"; - } - else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; + } else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; $morehtmlref = ''; @@ -538,8 +530,7 @@ if ($id > 0 || !empty($ref)) } } print "
'; -if ($mesg) { print $mesg; } -else { +if ($mesg) { print $mesg; } else { $stringtoshow .= $px1->show(); $stringtoshow .= "
\n"; if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index c70a9b042d5..f395a4ee27a 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -236,8 +236,7 @@ if ($action == 'createtask' && $user->rights->projet->creer) setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")), null, 'errors'); $action = 'create'; $error++; - } - elseif (empty($_POST['task_parent'])) + } elseif (empty($_POST['task_parent'])) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("ChildOfProjectTask")), null, 'errors'); $action = 'create'; @@ -273,15 +272,13 @@ if ($action == 'createtask' && $user->rights->projet->creer) if ($taskid > 0) { $result = $task->add_contact($_POST["userid"], 'TASKEXECUTIVE', 'internal'); - } - else { + } else { if ($db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("projects"); setEventMessages($langs->trans('NewTaskRefSuggested'), '', 'warnings'); $duplicate_code_error = true; - } - else { + } else { setEventMessages($task->error, $task->errors, 'errors'); } $action = 'create'; @@ -295,22 +292,19 @@ if ($action == 'createtask' && $user->rights->projet->creer) { header("Location: ".$backtopage); exit; - } - elseif (empty($projectid)) + } elseif (empty($projectid)) { header("Location: ".DOL_URL_ROOT.'/projet/tasks/list.php'.(empty($mode) ? '' : '?mode='.$mode)); exit; } $id = $projectid; } - } - else { + } else { if (!empty($backtopage)) { header("Location: ".$backtopage); exit; - } - elseif (empty($id)) + } elseif (empty($id)) { // We go back on task list header("Location: ".DOL_URL_ROOT.'/projet/tasks/list.php'.(empty($mode) ? '' : '?mode='.$mode)); @@ -504,8 +498,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third $langs->load("errors"); print $langs->trans("WarningProjectClosed"); print ''; - } - else { + } else { print '
'; print ''; print ''; @@ -532,8 +525,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third if (empty($duplicate_code_error)) { print (GETPOSTISSET("ref") ?GETPOST("ref", 'alpha') : $defaultref); - } - else { + } else { print $defaultref; } print ''; @@ -553,8 +545,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third if (is_array($contactsofproject) && count($contactsofproject)) { print $form->select_dolusers($user->id, 'userid', 0, '', 0, '', $contactsofproject, 0, 0, 0, '', 0, '', 'maxwidth300'); - } - else { + } else { print $langs->trans("NoUserAssignedToTheProject"); } print '
'.$langs->trans("NoTasks").'
"; - } - else { + } else { print "ErrorRecordNotFound"; } } diff --git a/htdocs/projet/tasks/document.php b/htdocs/projet/tasks/document.php index 80183db3d60..1493542c5ed 100644 --- a/htdocs/projet/tasks/document.php +++ b/htdocs/projet/tasks/document.php @@ -79,8 +79,7 @@ if (!empty($project_ref) && !empty($withproject)) { $id = $tasksarray[0]->id; $object->fetch($id); - } - else { + } else { header("Location: ".DOL_URL_ROOT.'/projet/tasks.php?id='.$projectstatic->id.($withproject ? '&withproject=1' : '').(empty($mode) ? '' : '&mode='.$mode)); exit; } @@ -102,8 +101,7 @@ if ($id > 0 || !empty($ref)) $object->project = clone $projectstatic; $upload_dir = $conf->projet->dir_output.'/'.dol_sanitizeFileName($projectstatic->ref).'/'.dol_sanitizeFileName($object->ref); - } - else { + } else { dol_print_error($db); } } @@ -269,8 +267,7 @@ if ($object->id > 0) { $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1); $object->next_prev_filter = " fk_projet in (".$projectsListId.")"; - } - else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; + } else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; $morehtmlref = ''; @@ -316,8 +313,7 @@ if ($object->id > 0) $permtoedit = $user->rights->projet->creer; $relativepathwithnofile = dol_sanitizeFileName($projectstatic->ref).'/'.dol_sanitizeFileName($object->ref).'/'; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { header('Location: index.php'); exit; } diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index c25546bccbf..8930220f6ec 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -245,8 +245,7 @@ if ($resql) { $listofprojectcontacttype[$obj->rowid] = $obj->code; } -} -else dol_print_error($db); +} else dol_print_error($db); if (count($listofprojectcontacttype) == 0) $listofprojectcontacttype[0] = '0'; // To avoid sql syntax error if not found // Get id of types of contacts for tasks (This list never contains a lot of elements) $listoftaskcontacttype = array(); @@ -260,8 +259,7 @@ if ($resql) { $listoftaskcontacttype[$obj->rowid] = $obj->code; } -} -else dol_print_error($db); +} else dol_print_error($db); if (count($listoftaskcontacttype) == 0) $listoftaskcontacttype[0] = '0'; // To avoid sql syntax error if not found $distinct = 'DISTINCT'; // We add distinct until we are added a protection to be sure a contact of a project and task is assigned only once. @@ -752,8 +750,7 @@ while ($i < min($num, $limit)) $socstatic->id = $obj->socid; $socstatic->name = $obj->name; print $socstatic->getNomUrl(1); - } - else { + } else { print ' '; } print ''; @@ -854,8 +851,7 @@ while ($i < min($num, $limit)) print convertSecondToTime($obj->tobill, 'allhourmin'); $totalarray['val']['t.tobill'] += $obj->tobill; $totalarray['totaltobill'] += $obj->tobill; - } - else { + } else { print ''.$langs->trans("NA").''; } print ''; @@ -872,8 +868,7 @@ while ($i < min($num, $limit)) print convertSecondToTime($obj->billed, 'allhourmin'); $totalarray['val']['t.billed'] += $obj->billed; $totalarray['totalbilled'] += $obj->billed; - } - else { + } else { print ''.$langs->trans("NA").''; } print ''; @@ -938,8 +933,7 @@ if (isset($totalarray['totaldurationeffectivefield']) || isset($totalarray['tota { if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").''; else print ''.$langs->trans("Totalforthispage").''; - } - elseif ($totalarray['totalplannedworkloadfield'] == $i) print ''.convertSecondToTime($totalarray['totalplannedworkload'], $plannedworkloadoutputformat).''; + } elseif ($totalarray['totalplannedworkloadfield'] == $i) print ''.convertSecondToTime($totalarray['totalplannedworkload'], $plannedworkloadoutputformat).''; elseif ($totalarray['totaldurationeffectivefield'] == $i) print ''.convertSecondToTime($totalarray['totaldurationeffective'], $timespentoutputformat).''; elseif ($totalarray['totalprogress_calculatedfield'] == $i) print ''.($totalarray['totalplannedworkload'] > 0 ? round(100 * $totalarray['totaldurationeffective'] / $totalarray['totalplannedworkload'], 2).' %' : '').''; elseif ($totalarray['totalprogress_declaredfield'] == $i) print ''.($totalarray['totalplannedworkload'] > 0 ? round(100 * $totalarray['totaldurationdeclared'] / $totalarray['totalplannedworkload'], 2).' %' : '').''; diff --git a/htdocs/projet/tasks/note.php b/htdocs/projet/tasks/note.php index 737346570f4..7af9bbbacef 100644 --- a/htdocs/projet/tasks/note.php +++ b/htdocs/projet/tasks/note.php @@ -57,8 +57,7 @@ if ($id > 0 || !empty($ref)) if (!empty($projectstatic->socid)) $projectstatic->fetch_thirdparty(); $object->project = clone $projectstatic; - } - else { + } else { dol_print_error($db); } } @@ -74,8 +73,7 @@ if (!empty($project_ref) && !empty($withproject)) { $id = $tasksarray[0]->id; $object->fetch($id); - } - else { + } else { header("Location: ".DOL_URL_ROOT.'/projet/tasks.php?id='.$projectstatic->id.(empty($mode) ? '' : '&mode='.$mode)); } } @@ -241,8 +239,7 @@ if ($object->id > 0) { $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1); $object->next_prev_filter = " fk_projet in (".$projectsListId.")"; - } - else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; + } else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; $morehtmlref = ''; diff --git a/htdocs/projet/tasks/stats/index.php b/htdocs/projet/tasks/stats/index.php index bbb275ef5df..a0bf33b34ba 100644 --- a/htdocs/projet/tasks/stats/index.php +++ b/htdocs/projet/tasks/stats/index.php @@ -199,8 +199,7 @@ print '
'; print '
'; $stringtoshow .= ''; // Other attributes @@ -601,8 +595,7 @@ if ($id > 0 || !empty($ref)) if ($user->rights->projet->creer) { print ''.$langs->trans('Modify').''; - } - else { + } else { print ''.$langs->trans('Modify').''; } @@ -612,12 +605,10 @@ if ($id > 0 || !empty($ref)) if (!$object->hasChildren() && !$object->hasTimeSpent()) { print ''.$langs->trans('Delete').''; - } - else { + } else { print ''.$langs->trans('Delete').''; } - } - else { + } else { print ''.$langs->trans('Delete').''; } diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index 95c50b9b62d..6c482264bbf 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -154,15 +154,13 @@ if ($action == 'addtimespent' && $user->rights->projet->lire) if ($id || $ref) { $object->fetch($id, $ref); - } - else { + } else { if (!GETPOST('taskid', 'int') || GETPOST('taskid', 'int') < 0) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Task")), null, 'errors'); $action = 'createtime'; $error++; - } - else { + } else { $object->fetch(GETPOST('taskid', 'int')); } } @@ -176,8 +174,7 @@ if ($action == 'addtimespent' && $user->rights->projet->lire) setEventMessages($langs->trans("ProjectMustBeValidatedFirst"), null, 'errors'); $action = 'createtime'; $error++; - } - else { + } else { $object->timespent_note = $_POST["timespent_note"]; if (GETPOST('progress', 'int') > 0) $object->progress = GETPOST('progress', 'int'); // If progress is -1 (not defined), we do not change value $object->timespent_duration = $_POST["timespent_durationhour"] * 60 * 60; // We store duration in seconds @@ -186,8 +183,7 @@ if ($action == 'addtimespent' && $user->rights->projet->lire) { $object->timespent_date = dol_mktime(GETPOST("timehour"), GETPOST("timemin"), 0, GETPOST("timemonth"), GETPOST("timeday"), GETPOST("timeyear")); $object->timespent_withhour = 1; - } - else { + } else { $object->timespent_date = dol_mktime(12, 0, 0, GETPOST("timemonth"), GETPOST("timeday"), GETPOST("timeyear")); } $object->timespent_fk_user = $_POST["userid"]; @@ -195,15 +191,13 @@ if ($action == 'addtimespent' && $user->rights->projet->lire) if ($result >= 0) { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans($object->error), null, 'errors'); $error++; } } } - } - else { + } else { if (empty($id)) $action = 'createtime'; else $action = 'createtime'; } @@ -238,8 +232,7 @@ if (($action == 'updateline' || $action == 'updatesplitline') && !$_POST["cancel { $object->timespent_date = dol_mktime(GETPOST("timelinehour"), GETPOST("timelinemin"), 0, GETPOST("timelinemonth"), GETPOST("timelineday"), GETPOST("timelineyear")); $object->timespent_withhour = 1; - } - else { + } else { $object->timespent_date = dol_mktime(12, 0, 0, GETPOST("timelinemonth"), GETPOST("timelineday"), GETPOST("timelineyear")); } $object->timespent_fk_user = $_POST["userid_line"]; @@ -247,13 +240,11 @@ if (($action == 'updateline' || $action == 'updatesplitline') && !$_POST["cancel if ($result >= 0) { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans($object->error), null, 'errors'); $error++; } - } - else { + } else { $object->fetch($id, $ref); // TODO Check that ($task_time->fk_user == $user->id || in_array($task_time->fk_user, $childids)) @@ -266,8 +257,7 @@ if (($action == 'updateline' || $action == 'updatesplitline') && !$_POST["cancel { $object->timespent_date = dol_mktime(GETPOST("timelinehour"), GETPOST("timelinemin"), 0, GETPOST("timelinemonth"), GETPOST("timelineday"), GETPOST("timelineyear")); $object->timespent_withhour = 1; - } - else { + } else { $object->timespent_date = dol_mktime(12, 0, 0, GETPOST("timelinemonth"), GETPOST("timelineday"), GETPOST("timelineyear")); } $object->timespent_fk_user = $_POST["userid_line"]; @@ -276,14 +266,12 @@ if (($action == 'updateline' || $action == 'updatesplitline') && !$_POST["cancel if ($result >= 0) { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans($object->error), null, 'errors'); $error++; } } - } - else { + } else { $action = ''; } } @@ -300,8 +288,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->projet->l setEventMessages($langs->trans($object->error), null, 'errors'); $error++; $action = ''; - } - else { + } else { setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs'); } } @@ -315,8 +302,7 @@ if (!empty($project_ref) && !empty($withproject)) if (count($tasksarray) > 0) { $id = $tasksarray[0]->id; - } - else { + } else { header("Location: ".DOL_URL_ROOT.'/projet/tasks.php?id='.$projectstatic->id.($withproject ? '&withproject=1' : '').(empty($mode) ? '' : '&mode='.$mode)); exit; } @@ -332,14 +318,12 @@ if (GETPOST('projectid', 'int') > 0) $result = $projectstatic->fetch($projectidforalltimes); if (!empty($projectstatic->socid)) $projectstatic->fetch_thirdparty(); $res = $projectstatic->fetch_optionals(); -} -elseif (GETPOST('project_ref', 'alpha')) +} elseif (GETPOST('project_ref', 'alpha')) { $projectstatic->fetch(0, GETPOST('project_ref', 'alpha')); $projectidforalltimes = $projectstatic->id; $withproject = 1; -} -elseif ($id > 0) +} elseif ($id > 0) { $object->fetch($id); $result = $projectstatic->fetch($object->fk_project); @@ -353,8 +337,7 @@ if ($action == 'confirm_generateinvoice') if (!($projectstatic->thirdparty->id > 0)) { setEventMessages($langs->trans("ThirdPartyRequiredToGenerateInvoice"), null, 'errors'); - } - else { + } else { include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; include_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; @@ -392,8 +375,7 @@ if ($action == 'confirm_generateinvoice') $txtva = $dataforprice['tva_tx']; $localtax1 = $dataforprice['localtax1']; $localtax2 = $dataforprice['localtax2']; - } - else { + } else { $pu_ht = 0; $txtva = get_default_tva($mysoc, $projectstatic->thirdparty); $localtax1 = get_default_localtax($mysoc, $projectstatic->thirdparty, 1); @@ -406,8 +388,7 @@ if ($action == 'confirm_generateinvoice') if ($invoiceToUse) { $tmpinvoice->fetch($invoiceToUse); - } - else { + } else { $result = $tmpinvoice->create($user); if ($result <= 0) { @@ -458,8 +439,7 @@ if ($action == 'confirm_generateinvoice') break; } } - } - elseif ($generateinvoicemode == 'onelineperperiod') { + } elseif ($generateinvoicemode == 'onelineperperiod') { $arrayoftasks = array(); foreach ($toselect as $key => $value) { @@ -502,8 +482,7 @@ if ($action == 'confirm_generateinvoice') break; } } - } - elseif ($generateinvoicemode == 'onelinepertask') { + } elseif ($generateinvoicemode == 'onelinepertask') { $arrayoftasks = array(); foreach ($toselect as $key => $value) { @@ -553,8 +532,7 @@ if ($action == 'confirm_generateinvoice') //var_dump($tmpinvoice); $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -584,8 +562,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) $result = $projectstatic->fetch($projectidforalltimes); if (!empty($projectstatic->socid)) $projectstatic->fetch_thirdparty(); $res = $projectstatic->fetch_optionals(); - } - elseif ($object->fetch($id, $ref) >= 0) + } elseif ($object->fetch($id, $ref) >= 0) { if (!empty($conf->global->PROJECT_ALLOW_COMMENT_ON_TASK) && method_exists($object, 'fetchComments') && empty($object->comments)) $object->fetchComments(); $result = $projectstatic->fetch($object->fk_project); @@ -742,14 +719,12 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) { $backtourl = $_SERVER['PHP_SELF'].'?projectid='.$projectstatic->id.($withproject ? '&withproject=1' : ''); $linktocreatetimeUrl = $_SERVER['PHP_SELF'].'?'.($withproject ? 'withproject=1' : '').'&projectid='.$projectstatic->id.'&action=createtime'.$param.'&backtopage='.urlencode($backtourl); - } - else // We are on tab 'Time Spent' of task + } else // We are on tab 'Time Spent' of task { $backtourl = $_SERVER['PHP_SELF'].'?id='.$object->id.($withproject ? '&withproject=1' : ''); $linktocreatetimeUrl = $_SERVER['PHP_SELF'].'?'.($withproject ? 'withproject=1' : '').($object->id > 0 ? '&id='.$object->id : '&projectid='.$projectstatic->id).'&action=createtime'.$param.'&backtopage='.urlencode($backtourl); } - } - else { + } else { $linktocreatetimeBtnStatus = -2; $linktocreatetimeHelpText = $langs->trans("NotOwnerOfProject"); } @@ -788,8 +763,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) { $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1); $object->next_prev_filter = " fk_projet in (".$projectsListId.")"; - } - else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; + } else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; $morehtmlref = ''; @@ -855,8 +829,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) $tmparray = $object->getSummaryOfTimeSpent(); if ($tmparray['total_duration'] > 0) print round($tmparray['total_duration'] / $object->planned_workload * 100, 2).' %'; else print '0 %'; - } - else print ''.$langs->trans("WorkloadNotDefined").''; + } else print ''.$langs->trans("WorkloadNotDefined").''; print ''; print ''; @@ -1051,8 +1024,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) { $num = $nbtotalofrecords; - } - else { + } else { $sql .= $db->plimit($limit + 1, $offset); $resql = $db->query($sql); @@ -1074,8 +1046,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) $title = $langs->trans("ListTaskTimeUserProject"); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'generic', 0, $linktocreatetime, '', $limit); - } - else { + } else { print ''."\n"; $title = $langs->trans("ListTaskTimeForTask"); @@ -1091,8 +1062,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) $i++; } $db->free($resql); - } - else { + } else { dol_print_error($db); } @@ -1150,8 +1120,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) if ($projectstatic->public) $contactsofproject = array(); print $form->select_dolusers((GETPOST('userid', 'int') ? GETPOST('userid', 'int') : $userid), 'userid', 0, '', 0, '', $contactsofproject, 0, 0, 0, '', 0, $langs->trans("ResourceNotAssignedToProject"), 'maxwidth200'); - } - else { + } else { if ($nboftasks) { print img_error($langs->trans('FirstAddRessourceToAllocateTime')).' '.$langs->trans('FirstAddRessourceToAllocateTime'); } @@ -1310,10 +1279,8 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) if (empty($task_time->task_date_withhour)) { print $form->selectDate(($date2 ? $date2 : $date1), 'timeline', 3, 3, 2, "timespent_date", 1, 0); - } - else print $form->selectDate(($date2 ? $date2 : $date1), 'timeline', 1, 1, 2, "timespent_date", 1, 0); - } - else { + } else print $form->selectDate(($date2 ? $date2 : $date1), 'timeline', 1, 1, 2, "timespent_date", 1, 0); + } else { print dol_print_date(($date2 ? $date2 : $date1), ($task_time->task_date_withhour ? 'dayhour' : 'day')); } print ''; @@ -1329,8 +1296,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) if ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { $formproject->selectTasks(-1, GETPOST('taskid', 'int') ?GETPOST('taskid', 'int') : $task_time->fk_task, 'taskid', 0, 0, 1, 1, 0, 0, 'maxwidth300', $projectstatic->id, ''); - } - else { + } else { $tasktmp->id = $task_time->fk_task; $tasktmp->ref = $task_time->ref; $tasktmp->label = $task_time->label; @@ -1370,8 +1336,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) } else { print img_error($langs->trans('FirstAddRessourceToAllocateTime')).$langs->trans('FirstAddRessourceToAllocateTime'); } - } - else { + } else { $userstatic->id = $task_time->fk_user; $userstatic->lastname = $task_time->lastname; $userstatic->firstname = $task_time->firstname; @@ -1390,14 +1355,12 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) if ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { print ''; - } - else { + } else { print dol_nl2br($task_time->note); } print ''; if (!$i) $totalarray['nbfield']++; - } - elseif ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) + } elseif ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { print ''; } @@ -1410,8 +1373,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) { print ''; print $form->select_duration('new_duration', $task_time->task_duration, 0, 'text'); - } - else { + } else { print convertSecondToTime($task_time->task_duration, 'allhourmin'); } print ''; @@ -1451,12 +1413,10 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) { print $tmpinvoice->getNomUrl(1); } - } - else { + } else { print $langs->trans("No"); } - } - else { + } else { print ''.$langs->trans("NA").''; } } @@ -1484,8 +1444,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) print ''; print '
'; print ''; - } - elseif ($user->rights->projet->lire || $user->rights->projet->all->creer) // Read project and enter time consumed on assigned tasks + } elseif ($user->rights->projet->lire || $user->rights->projet->all->creer) // Read project and enter time consumed on assigned tasks { if ($task_time->fk_user == $user->id || in_array($task_time->fk_user, $childids) || $user->rights->projet->all->creer) { @@ -1537,10 +1496,8 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) if (empty($task_time->task_date_withhour)) { print $form->selectDate(($date2 ? $date2 : $date1), 'timeline', 3, 3, 2, "timespent_date", 1, 0); - } - else print $form->selectDate(($date2 ? $date2 : $date1), 'timeline', 1, 1, 2, "timespent_date", 1, 0); - } - else { + } else print $form->selectDate(($date2 ? $date2 : $date1), 'timeline', 1, 1, 2, "timespent_date", 1, 0); + } else { print dol_print_date(($date2 ? $date2 : $date1), ($task_time->task_date_withhour ? 'dayhour' : 'day')); } print ''; @@ -1588,8 +1545,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) } else { print img_error($langs->trans('FirstAddRessourceToAllocateTime')).$langs->trans('FirstAddRessourceToAllocateTime'); } - } - else { + } else { $userstatic->id = $task_time->fk_user; $userstatic->lastname = $task_time->lastname; $userstatic->firstname = $task_time->firstname; @@ -1607,13 +1563,11 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { print ''; - } - else { + } else { print dol_nl2br($task_time->note); } print ''; - } - elseif ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) + } elseif ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { print ''; } @@ -1626,8 +1580,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) { print ''; print $form->select_duration('new_duration', $task_time->task_duration, 0, 'text'); - } - else { + } else { print convertSecondToTime($task_time->task_duration, 'allhourmin'); } print ''; @@ -1681,10 +1634,8 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) if (empty($task_time->task_date_withhour)) { print $form->selectDate(($date2 ? $date2 : $date1), 'timeline_2', 3, 3, 2, "timespent_date", 1, 0); - } - else print $form->selectDate(($date2 ? $date2 : $date1), 'timeline_2', 1, 1, 2, "timespent_date", 1, 0); - } - else { + } else print $form->selectDate(($date2 ? $date2 : $date1), 'timeline_2', 1, 1, 2, "timespent_date", 1, 0); + } else { print dol_print_date(($date2 ? $date2 : $date1), ($task_time->task_date_withhour ? 'dayhour' : 'day')); } print ''; @@ -1732,8 +1683,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) } else { print img_error($langs->trans('FirstAddRessourceToAllocateTime')).$langs->trans('FirstAddRessourceToAllocateTime'); } - } - else { + } else { $userstatic->id = $task_time->fk_user; $userstatic->lastname = $task_time->lastname; $userstatic->firstname = $task_time->firstname; @@ -1751,13 +1701,11 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { print ''; - } - else { + } else { print dol_nl2br($task_time->note); } print ''; - } - elseif ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) + } elseif ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { print ''; } @@ -1770,8 +1718,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) { print ''; print $form->select_duration('new_duration_2', 0, 0, 'text'); - } - else { + } else { print convertSecondToTime($task_time->task_duration, 'allhourmin'); } print ''; @@ -1828,8 +1775,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) { if ($num < $limit && empty($offset)) print ''; else print ''; - } - elseif ($totalarray['totaldurationfield'] == $i) print ''; + } elseif ($totalarray['totaldurationfield'] == $i) print ''; elseif ($totalarray['totalvaluefield'] == $i) print ''; //elseif ($totalarray['totalvaluebilledfield'] == $i) print ''; else print ''; diff --git a/htdocs/public/agenda/agendaexport.php b/htdocs/public/agenda/agendaexport.php index ff8611ee0a4..9530757b283 100644 --- a/htdocs/public/agenda/agendaexport.php +++ b/htdocs/public/agenda/agendaexport.php @@ -109,8 +109,7 @@ if ($reshook < 0) { print '
'.$hookmanager->error.'
'; } llxFooterVierge(); -} -elseif (empty($reshook)) { +} elseif (empty($reshook)) { // Check exportkey if (empty($_GET["exportkey"]) || $conf->global->MAIN_AGENDA_XCAL_EXPORTKEY != $_GET["exportkey"]) { $user->getrights(); @@ -188,8 +187,7 @@ if ($format == 'ical' || $format == 'vcal') //header("Location: ".DOL_URL_ROOT.'/document.php?modulepart=agenda&file='.urlencode($filename)); exit; - } - else { + } else { print 'Error '.$agenda->error; exit; @@ -225,8 +223,7 @@ if ($format == 'rss') // header("Location: ".DOL_URL_ROOT.'/document.php?modulepart=agenda&file='.urlencode($filename)); exit; - } - else { + } else { print 'Error '.$agenda->error; exit; diff --git a/htdocs/public/cron/cron_run_jobs.php b/htdocs/public/cron/cron_run_jobs.php index 13419207e07..9eb0579680a 100644 --- a/htdocs/public/cron/cron_run_jobs.php +++ b/htdocs/public/cron/cron_run_jobs.php @@ -90,8 +90,7 @@ if ($result < 0) echo "User Error:".$user->error; dol_syslog("cron_run_jobs.php:: User Error:".$user->error, LOG_ERR); exit; -} -else { +} else { if (empty($user->id)) { echo " User login:".$userlogin." do not exists"; @@ -166,8 +165,7 @@ if (is_array($qualifiedjobs) && (count($qualifiedjobs) > 0)) echo "\nUser Error: ".$user->error."\n"; dol_syslog("cron_run_jobs.php:: User Error:".$user->error, LOG_ERR); exit(-1); - } - else { + } else { if ($result == 0) { echo "\nUser login: ".$userlogin." does not exists for entity ".$conf->entity."\n"; @@ -204,8 +202,7 @@ if (is_array($qualifiedjobs) && (count($qualifiedjobs) > 0)) echo "You can also enable module Log if not yet enabled, run again and take a look into dolibarr.log file\n"; dol_syslog("cron_run_jobs.php::run_jobs Error".$cronjob->error, LOG_ERR); $nbofjobslaunchedko++; - } - else { + } else { $nbofjobslaunchedok++; } @@ -222,8 +219,7 @@ if (is_array($qualifiedjobs) && (count($qualifiedjobs) > 0)) } echo " - reprogrammed\n"; - } - else { + } else { echo " - not qualified\n"; dol_syslog("cron_run_jobs.php job not qualified line->datenextrun:".dol_print_date($line->datenextrun, 'dayhourrfc')." line->datestart:".dol_print_date($line->datestart, 'dayhourrfc')." line->dateend:".dol_print_date($line->dateend, 'dayhourrfc')." now:".dol_print_date($now, 'dayhourrfc')); @@ -233,8 +229,7 @@ if (is_array($qualifiedjobs) && (count($qualifiedjobs) > 0)) $conf = $savconf; echo "Result: ".($nbofjobs)." jobs - ".($nbofjobslaunchedok + $nbofjobslaunchedko)." launched = ".$nbofjobslaunchedok." OK + ".$nbofjobslaunchedko." KO"; -} -else { +} else { echo "Result: No active jobs found."; } diff --git a/htdocs/public/demo/index.php b/htdocs/public/demo/index.php index 7e4f1b1b0d7..768b7d42392 100644 --- a/htdocs/public/demo/index.php +++ b/htdocs/public/demo/index.php @@ -151,8 +151,7 @@ foreach ($modulesdir as $dir) if ($objMod->numero > 0) { $j = $objMod->numero; - } - else { + } else { $j = 1000 + $i; } @@ -173,8 +172,7 @@ foreach ($modulesdir as $dir) $j++; $i++; } - } - catch (Exception $e) + } catch (Exception $e) { dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR); } @@ -378,8 +376,7 @@ foreach ($demoprofiles as $profilearray) { print "\n".''; print ''; - } - else { + } else { $modulo = ($j % $nbcolsmod); //if ($modulo == 0) print ''; print ''; @@ -431,8 +428,7 @@ if (!empty($conf->google->enabled) && !empty($conf->global->MAIN_GOOGLE_AD_CLIEN print 'src="http://pagead2.googlesyndication.com/pagead/show_ads.js">'."\n"; print ''."\n"; print ''."\n"; - } - else { + } else { print ''."\n"; } } diff --git a/htdocs/public/donations/donateurs_code.php b/htdocs/public/donations/donateurs_code.php index 045f726fe1d..49114b89f46 100644 --- a/htdocs/public/donations/donateurs_code.php +++ b/htdocs/public/donations/donateurs_code.php @@ -87,8 +87,7 @@ if ($resql) if ($objp->public) { print "\n"; - } - else { + } else { print "\n"; } print "\n"; @@ -97,12 +96,10 @@ if ($resql) $i++; } print "
'; -if ($mesg) { print $mesg; } -else { +if ($mesg) { print $mesg; } else { $stringtoshow .= $px1->show(); $stringtoshow .= "
\n"; } diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index 93f3ca3b01e..7a109eb1f50 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -113,8 +113,7 @@ if ($action == 'update' && !$_POST["cancel"] && $user->rights->projet->creer) setEventMessages($object->error, $object->errors, 'errors'); } } - } - else { + } else { $action = 'edit'; } } @@ -130,8 +129,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->projet->s { header('Location: '.DOL_URL_ROOT.'/projet/tasks.php?restore_lastsearch_values=1&id='.$projectstatic->id.($withproject ? '&withproject=1' : '')); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } @@ -147,8 +145,7 @@ if (!empty($project_ref) && !empty($withproject)) if (count($tasksarray) > 0) { $id = $tasksarray[0]->id; - } - else { + } else { header("Location: ".DOL_URL_ROOT.'/projet/tasks.php?id='.$projectstatic->id.(empty($mode) ? '' : '&mode='.$mode)); } } @@ -459,8 +456,7 @@ if ($id > 0 || !empty($ref)) print ''; print ''; - } - else { + } else { /* * Fiche tache en mode visu */ @@ -478,8 +474,7 @@ if ($id > 0 || !empty($ref)) { $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1); $object->next_prev_filter = " fk_projet in (".$projectsListId.")"; - } - else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; + } else $object->next_prev_filter = " fk_projet = ".$projectstatic->id; $morehtmlref = ''; @@ -563,8 +558,7 @@ if ($id > 0 || !empty($ref)) $tmparray = $object->getSummaryOfTimeSpent(); if ($tmparray['total_duration'] > 0 && !empty($object->planned_workload)) print round($tmparray['total_duration'] / $object->planned_workload * 100, 2).' %'; else print '0 %'; - } - else print ''.$langs->trans("WorkloadNotDefined").''; + } else print ''.$langs->trans("WorkloadNotDefined").''; print '
'.$langs->trans("Total").''.$langs->trans("Totalforthispage").''.convertSecondToTime($totalarray['totalduration'], 'allhourmin').''.convertSecondToTime($totalarray['totalduration'], 'allhourmin').''.price($totalarray['totalvalue']).''.price($totalarray['totalvaluebilled']).'
".dolGetFirstLastname($objp->firstname, $objp->lastname)." ".$objp->societe."Anonyme Anonyme".dol_print_date($db->jdate($objp->datedon))."
"; - } - else { + } else { print "Aucun don publique"; } -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index 71e28c94da8..7eb45f008e6 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -107,13 +107,11 @@ function llxHeaderVierge($title, $head = "", $disablejs = 0, $disablehead = 0, $ { $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_small); $width = 150; - } - elseif (!empty($mysoc->logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$mysoc->logo)) + } 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('logos/'.$mysoc->logo); $width = 150; - } - elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.svg')) + } elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.svg')) { $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.svg'; $width = 150; @@ -343,10 +341,8 @@ if ($action == 'add') if (preg_match('/\d\.\d/', $appli)) { if (!preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli .= " (".DOL_VERSION.")"; // If new title contains a version that is different than core - } - else $appli .= " ".DOL_VERSION; - } - else $appli .= " ".DOL_VERSION; + } else $appli .= " ".DOL_VERSION; + } else $appli .= " ".DOL_VERSION; $to = $adh->makeSubstitution($conf->global->MAIN_INFO_SOCIETE_MAIL); $from = $conf->global->ADHERENT_MAIL_FROM; @@ -375,8 +371,7 @@ if ($action == 'add') { $urlback = $conf->global->MEMBER_URL_REDIRECT_SUBSCRIPTION; // TODO Make replacement of __AMOUNT__, etc... - } - else $urlback = $_SERVER["PHP_SELF"]."?action=added"; + } else $urlback = $_SERVER["PHP_SELF"]."?action=added"; if (!empty($conf->global->MEMBER_NEWFORM_PAYONLINE) && $conf->global->MEMBER_NEWFORM_PAYONLINE != '-1') { @@ -390,13 +385,11 @@ if ($action == 'add') if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2)); - } - else { + } else { $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); } } - } - elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'paybox') + } elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'paybox') { $urlback = DOL_MAIN_URL_ROOT.'/public/paybox/newpayment.php?from=membernewform&source=membersubscription&ref='.urlencode($adh->ref); if (price2num(GETPOST('amount', 'alpha'))) $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); @@ -406,13 +399,11 @@ if ($action == 'add') if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2)); - } - else { + } else { $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); } } - } - elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'paypal') + } elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'paypal') { $urlback = DOL_MAIN_URL_ROOT.'/public/paypal/newpayment.php?from=membernewform&source=membersubscription&ref='.urlencode($adh->ref); if (price2num(GETPOST('amount', 'alpha'))) $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); @@ -422,13 +413,11 @@ if ($action == 'add') if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2)); - } - else { + } else { $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); } } - } - elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'stripe') + } elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'stripe') { $urlback = DOL_MAIN_URL_ROOT.'/public/stripe/newpayment.php?from=membernewform&source=membersubscription&ref='.$adh->ref; if (price2num(GETPOST('amount', 'alpha'))) $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); @@ -438,13 +427,11 @@ if ($action == 'add') if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2)); - } - else { + } else { $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); } } - } - else { + } else { dol_print_error('', "Autosubscribe form is setup to ask an online payment for a not managed online payment"); exit; } @@ -452,8 +439,7 @@ if ($action == 'add') if (!empty($entity)) $urlback .= '&entity='.$entity; dol_syslog("member ".$adh->ref." was created, we redirect to ".$urlback); - } - else { + } else { $error++; $errmsg .= join('
', $adh->errors); } @@ -465,8 +451,7 @@ if ($action == 'add') Header("Location: ".$urlback); exit; - } - else { + } else { $db->rollback(); } } @@ -567,8 +552,7 @@ if (empty($conf->global->MEMBER_NEWFORM_FORCETYPE)) print ''.$langs->trans("Type").' *'; print $form->selectarray("type", $adht->liste_array(), GETPOST('type') ?GETPOST('type') : $defaulttype, $isempty); print ''."\n"; -} -else { +} else { $adht->fetch($conf->global->MEMBER_NEWFORM_FORCETYPE); print ''; } @@ -580,8 +564,7 @@ if (empty($conf->global->MEMBER_NEWFORM_FORCEMORPHY)) print ''.$langs->trans('MemberNature').' *'."\n"; print $form->selectarray("morphy", $morphys, GETPOST('morphy'), 1); print ''."\n"; -} -else { +} else { print $morphys[$conf->global->MEMBER_NEWFORM_FORCEMORPHY]; print ''; } @@ -723,8 +706,7 @@ if (!empty($conf->global->MEMBER_NEWFORM_AMOUNT) if (!empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT)) { print ''; - } - else { + } else { print ''; print ''; } diff --git a/htdocs/public/members/public_card.php b/htdocs/public/members/public_card.php index a955c9605f2..c1677b2902b 100644 --- a/htdocs/public/members/public_card.php +++ b/htdocs/public/members/public_card.php @@ -84,8 +84,7 @@ if ($id > 0) if (empty($object->public)) { print $langs->trans("ErrorThisMemberIsNotPublic"); - } - else { + } else { print ''; print '\n"; diff --git a/htdocs/public/members/public_list.php b/htdocs/public/members/public_list.php index 1a885ed3596..cb5b9308ed4 100644 --- a/htdocs/public/members/public_list.php +++ b/htdocs/public/members/public_list.php @@ -152,16 +152,14 @@ if ($result) print ''."\n"; - } - else { + } else { print "\n"; } print ""; $i++; } print "
'.$langs->trans("Type").''.$object->type."
'; print $form->showphoto('memberphoto', $objp, 64); print ' 
"; -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/public/notice.php b/htdocs/public/notice.php index b3b362fa6b2..a86b8c68e42 100644 --- a/htdocs/public/notice.php +++ b/htdocs/public/notice.php @@ -38,8 +38,7 @@ 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.
'; -} -else { +} else { $langs->load("error"); $langs->load("other"); diff --git a/htdocs/public/onlinesign/newonlinesign.php b/htdocs/public/onlinesign/newonlinesign.php index 20b029f960d..2031c11a3ad 100644 --- a/htdocs/public/onlinesign/newonlinesign.php +++ b/htdocs/public/onlinesign/newonlinesign.php @@ -174,8 +174,7 @@ if (!empty($logosmall) && is_readable($conf->mycompany->dir_output.'/logos/thumb $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); $width = 150; -} -elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) +} elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) { $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); @@ -235,8 +234,7 @@ if ($source == 'proposal') { $mesg = $proposal->error; $error++; - } - else { + } else { $result = $proposal->fetch_thirdparty($proposal->socid); } @@ -275,12 +273,10 @@ if ($action != 'dosign') { if ($found && !$error) // We are in a management option and no error { - } - else { + } else { dol_print_error_email('ERRORNEWONLINESIGN'); } -} -else { +} else { // Print } diff --git a/htdocs/public/opensurvey/studs.php b/htdocs/public/opensurvey/studs.php index f26d31c483d..4f437c07740 100644 --- a/htdocs/public/opensurvey/studs.php +++ b/htdocs/public/opensurvey/studs.php @@ -108,12 +108,10 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout if (isset($_POST["choix$i"]) && $_POST["choix$i"] == '1') { $nouveauchoix .= "1"; - } - elseif (isset($_POST["choix$i"]) && $_POST["choix$i"] == '2') + } elseif (isset($_POST["choix$i"]) && $_POST["choix$i"] == '2') { $nouveauchoix .= "2"; - } - else { // sinon c'est 0 + } else { // sinon c'est 0 $nouveauchoix .= "0"; } } @@ -132,8 +130,7 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout { setEventMessages($langs->trans("VoteNameAlreadyExists"), null, 'errors'); $error++; - } - else { + } else { $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'opensurvey_user_studs (nom, id_sondage, reponses)'; $sql .= " VALUES ('".$db->escape($nom)."', '".$db->escape($numsondage)."','".$db->escape($nouveauchoix)."')"; $resql = $db->query($sql); @@ -168,11 +165,9 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout $result = $cmailfile->sendfile(); } } - } - else dol_print_error($db); + } else dol_print_error($db); } - } - else { + } else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Name")), null, 'errors'); } } @@ -208,12 +203,10 @@ if ($testmodifier) if (isset($_POST["choix".$i]) && $_POST["choix".$i] == '1') { $nouveauchoix .= "1"; - } - elseif (isset($_POST["choix".$i]) && $_POST["choix".$i] == '2') + } elseif (isset($_POST["choix".$i]) && $_POST["choix".$i] == '2') { $nouveauchoix .= "2"; - } - else { // sinon c'est 0 + } else { // sinon c'est 0 $nouveauchoix .= "0"; } } @@ -389,8 +382,7 @@ if ($object->format == "D") print ''."\n"; } -} -else { +} else { //display of survey topics print ''."\n"; print ''."\n"; @@ -477,8 +469,7 @@ while ($compteur < $num) if (((string) $car) == "0") $sumagainst[$i]++; } } - } - else { + } else { //sinon on remplace les choix de l'utilisateur par une ligne de checkbox pour recuperer de nouvelles valeurs if ($compteur == $ligneamodifier) { @@ -504,8 +495,7 @@ while ($compteur < $num) } print ''."\n"; } - } - else { + } else { for ($i = 0; $i < $nbcolonnes; $i++) { $car = substr($ensemblereponses, $i, 1); @@ -689,8 +679,7 @@ if ($object->allow_spy) { } else { $meilleursujet .= dol_print_date($toutsujet[$i], 'daytext').' ('.dol_print_date($toutsujet[$i], '%A').')'; } - } - else { + } else { $tmps = explode('@', $toutsujet[$i]); $meilleursujet .= dol_htmlentities($tmps[0]); } diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index b82dcc3360b..746fcffcfa4 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -210,8 +210,7 @@ if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { if ($source && $REF) $token = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$source.$REF, 2); // Use the source in the hash to avoid duplicates if the references are identical else $token = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); - } - else { + } else { $token = $conf->global->PAYMENT_SECURITY_TOKEN; } if ($SECUREKEY != $token) @@ -466,8 +465,7 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) dol_syslog('Failed to create card record', LOG_WARNING, 0, '_stripe'); setEventMessages('Failed to create card record', null, 'errors'); $action = ''; - } - else { + } else { if (!empty($FULLTAG)) $metadata["FULLTAG"] = $FULLTAG; if (!empty($dol_id)) $metadata["dol_id"] = $dol_id; if (!empty($dol_type)) $metadata["dol_type"] = $dol_type; @@ -493,8 +491,7 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) } } } - } - else { + } else { $vatcleaned = $vatnumber ? $vatnumber : null; /*$taxinfo = array('type'=>'vat'); @@ -648,8 +645,7 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) } else { $paymentintent = \Stripe\PaymentIntent::retrieve($paymentintent_id, array("stripe_account" => $stripeacc)); } - } - catch (Exception $e) + } catch (Exception $e) { $error++; $errormessage = "CantRetreivePaymentIntent ".$e->getMessage(); @@ -665,8 +661,7 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) dol_syslog($errormessage, LOG_WARNING, 0, '_stripe'); setEventMessages($paymentintent->status, null, 'errors'); $action = ''; - } - else { + } else { // TODO We can alse record the payment mode into llx_societe_rib with stripe $paymentintent->payment_method // Note that with other old Stripe architecture (using Charge API), the payment mode was not recorded, so it is not mandatory to do it here. //dol_syslog("Create payment_method for ".$paymentintent->payment_method, LOG_DEBUG, 0, '_stripe'); @@ -695,8 +690,7 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) { header("Location: ".$urlko); exit; - } - else { + } else { header("Location: ".$urlok); exit; } @@ -769,8 +763,7 @@ if (!empty($logosmall) && is_readable($conf->mycompany->dir_output.'/logos/thumb $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); $width = 150; -} -elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) +} elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) { $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); @@ -870,8 +863,7 @@ if (!$source) { print ''; print ''; - } - else { + } else { print ''.price($amount).''; print ''; print ''; @@ -907,8 +899,7 @@ if ($source == 'order') { $mesg = $order->error; $error++; - } - else { + } else { $result = $order->fetch_thirdparty($order->socid); } $object = $order; @@ -964,8 +955,7 @@ if ($source == 'order') { print ''; print ''; - } - else { + } else { print ''.price($amount).''; print ''; print ''; @@ -1001,8 +991,7 @@ if ($source == 'order') print ''."\n"; print ''."\n"; print ''."\n"; - } - else { + } else { print ''."\n"; } if (is_object($order->thirdparty)) print ''."\n"; @@ -1028,8 +1017,7 @@ if ($source == 'invoice') { $mesg = $invoice->error; $error++; - } - else { + } else { $result = $invoice->fetch_thirdparty($invoice->socid); } $object = $invoice; @@ -1087,14 +1075,12 @@ if ($source == 'invoice') { print ''; print ''; - } - else { + } else { print ''.price($amount).''; print ''; print ''; } - } - else { + } else { print ''.price($object->total_ttc, 1, $langs).''; } // Currency @@ -1128,8 +1114,7 @@ if ($source == 'invoice') print ''."\n"; print ''."\n"; print ''."\n"; - } - else { + } else { print ''."\n"; } if (is_object($invoice->thirdparty)) print ''."\n"; @@ -1156,21 +1141,18 @@ if ($source == 'contractline') { $mesg = $contractline->error; $error++; - } - else { + } else { if ($contractline->fk_contrat > 0) { $result = $contract->fetch($contractline->fk_contrat); if ($result > 0) { $result = $contract->fetch_thirdparty($contract->socid); - } - else { + } else { $mesg = $contract->error; $error++; } - } - else { + } else { $mesg = 'ErrorRecordNotFound'; $error++; } @@ -1192,8 +1174,7 @@ if ($source == 'contractline') $pu_ht = $product->multiprices[$contract->thirdparty->price_level]; $pu_ttc = $product->multiprices_ttc[$contract->thirdparty->price_level]; $price_base_type = $product->multiprices_base_type[$contract->thirdparty->price_level]; - } - else { + } else { $pu_ht = $product->price; $pu_ttc = $product->price_ttc; $price_base_type = $product->price_base_type; @@ -1278,8 +1259,7 @@ if ($source == 'contractline') if ($contractline->product->duration_value > 1) { $dur = array("h"=>$langs->trans("Hours"), "d"=>$langs->trans("DurationDays"), "w"=>$langs->trans("DurationWeeks"), "m"=>$langs->trans("DurationMonths"), "y"=>$langs->trans("DurationYears")); - } - else { + } else { $dur = array("h"=>$langs->trans("Hour"), "d"=>$langs->trans("DurationDay"), "w"=>$langs->trans("DurationWeek"), "m"=>$langs->trans("DurationMonth"), "y"=>$langs->trans("DurationYear")); } $duration = $contractline->product->duration_value.' '.$dur[$contractline->product->duration_unit]; @@ -1298,8 +1278,7 @@ if ($source == 'contractline') { print ''; print ''; - } - else { + } else { print ''.price($amount).''; print ''; print ''; @@ -1335,8 +1314,7 @@ if ($source == 'contractline') print ''."\n"; print ''."\n"; print ''."\n"; - } - else { + } else { print ''."\n"; } if (is_object($contract->thirdparty)) print ''."\n"; @@ -1362,8 +1340,7 @@ if ($source == 'membersubscription') { $mesg = $member->error; $error++; - } - else { + } else { $member->fetch_thirdparty(); $subscription = new Subscription($db); } @@ -1450,8 +1427,7 @@ if ($source == 'membersubscription') if (!empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { $valtoshow = $conf->global->MEMBER_NEWFORM_AMOUNT; } - } - else { + } else { if (!empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { $amount = $conf->global->MEMBER_NEWFORM_AMOUNT; } @@ -1464,8 +1440,7 @@ if ($source == 'membersubscription') if (!empty($conf->global->MEMBER_MIN_AMOUNT) && $valtoshow) $valtoshow = max($conf->global->MEMBER_MIN_AMOUNT, $valtoshow); print ''; print ''; - } - else { + } else { $valtoshow = $amount; if (!empty($conf->global->MEMBER_MIN_AMOUNT) && $valtoshow) $valtoshow = max($conf->global->MEMBER_MIN_AMOUNT, $valtoshow); print ''.price($valtoshow).''; @@ -1504,8 +1479,7 @@ if ($source == 'membersubscription') print ''."\n"; print ''."\n"; print ''."\n"; - } - else { + } else { print ''."\n"; } if (is_object($member->thirdparty)) print ''."\n"; @@ -1529,8 +1503,7 @@ if ($source == 'donation') { $mesg = $don->error; $error++; - } - else { + } else { $don->fetch_thirdparty(); } $object = $don; @@ -1593,8 +1566,7 @@ if ($source == 'donation') if (!empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { $valtoshow = $conf->global->MEMBER_NEWFORM_AMOUNT; } - } - else { + } else { if (!empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { $amount = $conf->global->MEMBER_NEWFORM_AMOUNT; } @@ -1607,8 +1579,7 @@ if ($source == 'donation') if (!empty($conf->global->MEMBER_MIN_AMOUNT) && $valtoshow) $valtoshow = max($conf->global->MEMBER_MIN_AMOUNT, $valtoshow); print ''; print ''; - } - else { + } else { $valtoshow = $amount; if (!empty($conf->global->MEMBER_MIN_AMOUNT) && $valtoshow) $valtoshow = max($conf->global->MEMBER_MIN_AMOUNT, $valtoshow); print ''.price($valtoshow).''; @@ -1647,8 +1618,7 @@ if ($source == 'donation') print ''."\n"; print ''."\n"; print ''."\n"; - } - else { + } else { print ''."\n"; } if (is_object($don->thirdparty)) print ''."\n"; @@ -1675,16 +1645,13 @@ if ($action != 'dopayment') if ($source == 'order' && $object->billed) { print '

'.$langs->trans("OrderBilled").''; - } - elseif ($source == 'invoice' && $object->paye) + } elseif ($source == 'invoice' && $object->paye) { print '

'.$langs->trans("InvoicePaid").''; - } - elseif ($source == 'donation' && $object->paid) + } elseif ($source == 'donation' && $object->paid) { print '

'.$langs->trans("DonationPaid").''; - } - else { + } else { // Membership can be paid and we still allow to make renewal if ($source == 'membersubscription' && $object->datefin > dol_now()) { @@ -1773,12 +1740,10 @@ if ($action != 'dopayment') '; } } - } - else { + } else { dol_print_error_email('ERRORNEWPAYMENT'); } -} -else { +} else { // Print } @@ -1915,8 +1880,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment if (empty($paymentintent)) { print '
'.$langs->trans("Error").'
'; - } - else { + } else { print ''; //$_SESSION["paymentintent_id"] = $paymentintent->id; } @@ -1930,8 +1894,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment { $langs->load("errors"); print info_admin($langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Stripe")), 0, 0, 'error'); - } - else { + } else { print ''; print ''."\n"; print ''."\n"; @@ -1993,8 +1956,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment $_SESSION['ipaddress'] = ($remoteip ? $remoteip : 'unknown'); // Payer ip $_SESSION['payerID'] = is_object($stripecu) ? $stripecu->id : ''; $_SESSION['TRANSACTIONID'] = $sessionstripe->id; - } - catch (Exception $e) + } catch (Exception $e) { print $e->getMessage(); } @@ -2042,8 +2004,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment global->STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION)) + } elseif (!empty($conf->global->STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION)) { ?> // Code for payment with option STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION set @@ -2146,8 +2107,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment }); // Old code for payment with option STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION off and STRIPE_USE_NEW_CHECKOUT off @@ -2214,8 +2174,7 @@ if (preg_match('/^dopayment/', $action)) // If we choosed/click on the payment } }); /* Use 3DS source */ diff --git a/htdocs/public/payment/paymentko.php b/htdocs/public/payment/paymentko.php index a261c6101a0..c42677d8b21 100644 --- a/htdocs/public/payment/paymentko.php +++ b/htdocs/public/payment/paymentko.php @@ -77,8 +77,7 @@ if (empty($paymentmethod)) { dol_print_error(null, 'The back url does not contains a parameter fulltag that should help us to find the payment method used'); exit; -} -else { +} else { dol_syslog("paymentmethod=".$paymentmethod); } @@ -158,10 +157,8 @@ if (!empty($_SESSION['ipaddress'])) // To avoid to make action twice if (preg_match('/\d\.\d/', $appli)) { if (!preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli .= " (".DOL_VERSION.")"; // If new title contains a version that is different than core - } - else $appli .= " ".DOL_VERSION; - } - else $appli .= " ".DOL_VERSION; + } else $appli .= " ".DOL_VERSION; + } else $appli .= " ".DOL_VERSION; $urlback = $_SERVER["REQUEST_URI"]; $topic = '['.$appli.'] '.$companylangs->transnoentitiesnoconv("NewOnlinePaymentFailed"); @@ -185,8 +182,7 @@ if (!empty($_SESSION['ipaddress'])) // To avoid to make action twice if ($result) { dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment'); - } - else { + } else { dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment'); } } @@ -225,8 +221,7 @@ if (!empty($logosmall) && is_readable($conf->mycompany->dir_output.'/logos/thumb $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); $width = 150; -} -elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) +} elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) { $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); diff --git a/htdocs/public/payment/paymentok.php b/htdocs/public/payment/paymentok.php index a1d562b8690..4bb899b930e 100644 --- a/htdocs/public/payment/paymentok.php +++ b/htdocs/public/payment/paymentok.php @@ -163,8 +163,7 @@ if (!empty($logosmall) && is_readable($conf->mycompany->dir_output.'/logos/thumb $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); $width = 150; -} -elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) +} elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) { $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); @@ -221,8 +220,7 @@ if (!empty($conf->paypal->enabled)) { // Nothing to do dol_syslog("Call to GetExpressCheckoutDetails return ".$ack, LOG_DEBUG, 0, '_payment'); - } - else { + } else { dol_syslog("Call to GetExpressCheckoutDetails return error: ".json_encode($resArray), LOG_WARNING, '_payment'); } @@ -249,8 +247,7 @@ if (!empty($conf->paypal->enabled)) $NOTE = urldecode($resArray2["NOTE"]); $ispaymentok = true; - } - else { + } else { dol_syslog("Call to DoExpressCheckoutPayment return error: ".json_encode($resArray2), LOG_WARNING, 0, '_payment'); //Display a user friendly Error on the page using any of the following error information returned by PayPal @@ -259,12 +256,10 @@ if (!empty($conf->paypal->enabled)) $ErrorLongMsg = urldecode($resArray2["L_LONGMESSAGE0"]); $ErrorSeverityCode = urldecode($resArray2["L_SEVERITYCODE0"]); } - } - else { + } else { dol_print_error('', 'Session expired'); } - } - else { + } else { dol_print_error('', '$PAYPALTOKEN not defined'); } } @@ -415,8 +410,7 @@ if ($ispaymentok) $errmsg = $object->error; $postactionmessages[] = $errmsg; $ispostactionok = -1; - } - else { + } else { $postactionmessages[] = 'Subscription created'; $ispostactionok = 1; } @@ -437,8 +431,7 @@ if ($ispaymentok) $postactionmessages[] = $object->error; $postactionmessages = array_merge($postactionmessages, $object->errors); $ispostactionok = -1; - } - else { + } else { if ($option == 'bankviainvoice') { $postactionmessages[] = 'Invoice, payment and bank record created'; @@ -502,8 +495,7 @@ if ($ispaymentok) $postactionmessages[] = $errmsg; $ispostactionok = -1; } - } - catch (Exception $e) { + } catch (Exception $e) { $error++; $errmsg = 'Failed to save customer stripe id in database ; '.$e->getMessage(); $postactionmessages[] = $errmsg; @@ -516,8 +508,7 @@ if ($ispaymentok) if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } @@ -582,8 +573,7 @@ if ($ispaymentok) $errmsg = $object->error; $postactionmessages[] = $errmsg; $ispostactionok = -1; - } - else { + } else { if ($file) $postactionmessages[] = 'Email sent to member (with invoice document attached)'; else $postactionmessages[] = 'Email sent to member (without any attached document)'; @@ -591,18 +581,15 @@ if ($ispaymentok) } } } - } - else { + } else { $postactionmessages[] = 'Failed to get a valid value for "amount paid" or "payment type" to record the payment of subscription for member '.$tmptag['MEM'].'. May be payment was already recorded.'; $ispostactionok = -1; } - } - else { + } else { $postactionmessages[] = 'Member '.$tmptag['MEM'].' for subscription payed was not found'; $ispostactionok = -1; } - } - elseif (array_key_exists('INV', $tmptag) && $tmptag['INV'] > 0) + } elseif (array_key_exists('INV', $tmptag) && $tmptag['INV'] > 0) { // Record payment include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; @@ -637,8 +624,7 @@ if ($ispaymentok) if ($currencyCodeType == $conf->currency) { $paiement->amounts = array($invoice->id => $FinalPaymentAmt); // Array with all payments dispatching with invoice id - } - else { + } else { $paiement->multicurrency_amounts = array($invoice->id => $FinalPaymentAmt); // Array with all payments dispatching $postactionmessages[] = 'Payment was done in a different currency that currency expected of company'; @@ -660,8 +646,7 @@ if ($ispaymentok) $postactionmessages[] = $paiement->error.' '.join("
\n", $paiement->errors); $ispostactionok = -1; $error++; - } - else { + } else { $postactionmessages[] = 'Payment created'; $ispostactionok = 1; } @@ -684,13 +669,11 @@ if ($ispaymentok) $postactionmessages[] = $paiement->error.' '.join("
\n", $paiement->errors); $ispostactionok = -1; $error++; - } - else { + } else { $postactionmessages[] = 'Bank transaction of payment created'; $ispostactionok = 1; } - } - else { + } else { $postactionmessages[] = 'Setup of bank account to use in module '.$paymentmethod.' was not set. No way to record the payment.'; $ispostactionok = -1; $error++; @@ -700,22 +683,18 @@ if ($ispaymentok) if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } - } - else { + } else { $postactionmessages[] = 'Failed to get a valid value for "amount paid" ('.$FinalPaymentAmt.') or "payment type" ('.$paymentType.') to record the payment of invoice '.$tmptag['INV'].'. May be payment was already recorded.'; $ispostactionok = -1; } - } - else { + } else { $postactionmessages[] = 'Invoice payed '.$tmptag['INV'].' was not found'; $ispostactionok = -1; } - } - else { + } else { // Nothing done } } @@ -770,10 +749,8 @@ if ($ispaymentok) if (preg_match('/\d\.\d/', $appli)) { if (!preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli .= " (".DOL_VERSION.")"; // If new title contains a version that is different than core - } - else $appli .= " ".DOL_VERSION; - } - else $appli .= " ".DOL_VERSION; + } else $appli .= " ".DOL_VERSION; + } else $appli .= " ".DOL_VERSION; $urlback = $_SERVER["REQUEST_URI"]; $topic = '['.$appli.'] '.$companylangs->transnoentitiesnoconv("NewOnlinePaymentReceived"); @@ -784,16 +761,14 @@ if ($ispaymentok) $content .= ''.$companylangs->trans("PaymentSubscription")."

\n"; $content .= $companylangs->trans("MemberId").': '.$tmptag['MEM']."
\n"; $content .= $companylangs->trans("Link").': '.$url.''."
\n"; - } - elseif (array_key_exists('INV', $tmptag)) + } elseif (array_key_exists('INV', $tmptag)) { $url = $urlwithroot."/compta/facture/card.php?id=".$tmptag['INV']; $content .= ''.$companylangs->trans("Payment")."

\n"; $content .= $companylangs->trans("InvoiceId").': '.$tmptag['INV']."
\n"; //$content.=$companylangs->trans("ThirdPartyId").': '.$tmptag['CUS']."
\n"; $content .= $companylangs->trans("Link").': '.$url.''."
\n"; - } - else { + } else { $content .= $companylangs->transnoentitiesnoconv("NewOnlinePaymentReceived")."
\n"; } $content .= $companylangs->transnoentities("PostActionAfterPayment").' : '; @@ -801,12 +776,10 @@ if ($ispaymentok) { //$topic.=' ('.$companylangs->transnoentitiesnoconv("Status").' '.$companylangs->transnoentitiesnoconv("OK").')'; $content .= ''.$companylangs->transnoentitiesnoconv("OK").''; - } - elseif ($ispostactionok == 0) + } elseif ($ispostactionok == 0) { $content .= $companylangs->transnoentitiesnoconv("None"); - } - else { + } else { $topic .= ($ispostactionok ? '' : ' ('.$companylangs->trans("WarningPostActionErrorAfterPayment").')'); $content .= ''.$companylangs->transnoentitiesnoconv("Error").''; } @@ -844,14 +817,12 @@ if ($ispaymentok) { dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment'); //dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0); - } - else { + } else { dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment'); //dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0); } } -} -else { +} else { // Get on url call $onlinetoken = empty($PAYPALTOKEN) ? $_SESSION['onlinetoken'] : $PAYPALTOKEN; $payerID = empty($PAYPALPAYERID) ? $_SESSION['payerID'] : $PAYPALPAYERID; @@ -902,10 +873,8 @@ else { if (preg_match('/\d\.\d/', $appli)) { if (!preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli .= " (".DOL_VERSION.")"; // If new title contains a version that is different than core - } - else $appli .= " ".DOL_VERSION; - } - else $appli .= " ".DOL_VERSION; + } else $appli .= " ".DOL_VERSION; + } else $appli .= " ".DOL_VERSION; $urlback = $_SERVER["REQUEST_URI"]; $topic = '['.$appli.'] '.$companylangs->transnoentitiesnoconv("ValidationOfPaymentFailed"); @@ -929,8 +898,7 @@ else { if ($result) { dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment'); - } - else { + } else { dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment'); } } diff --git a/htdocs/public/stripe/confirm_payment.php b/htdocs/public/stripe/confirm_payment.php index 9c6346842c8..683a537fe69 100644 --- a/htdocs/public/stripe/confirm_payment.php +++ b/htdocs/public/stripe/confirm_payment.php @@ -48,21 +48,18 @@ if (isset($_GET['connect'])) $endpoint_secret = $conf->global->STRIPE_TEST_WEBHOOK_CONNECT_KEY; $service = 'StripeTest'; $servicestatus = 0; - } - else { + } else { $endpoint_secret = $conf->global->STRIPE_LIVE_WEBHOOK_CONNECT_KEY; $service = 'StripeLive'; $servicestatus = 1; } -} -else { +} else { if (isset($_GET['test'])) { $endpoint_secret = $conf->global->STRIPE_TEST_WEBHOOK_KEY; $service = 'StripeTest'; $servicestatus = 0; - } - else { + } else { $endpoint_secret = $conf->global->STRIPE_LIVE_WEBHOOK_KEY; $service = 'StripeLive'; $servicestatus = 1; diff --git a/htdocs/public/stripe/ipn.php b/htdocs/public/stripe/ipn.php index e3cc21b327b..d3a9521bf25 100644 --- a/htdocs/public/stripe/ipn.php +++ b/htdocs/public/stripe/ipn.php @@ -48,21 +48,18 @@ if (isset($_GET['connect'])) $endpoint_secret = $conf->global->STRIPE_TEST_WEBHOOK_CONNECT_KEY; $service = 'StripeTest'; $servicestatus = 0; - } - else { + } else { $endpoint_secret = $conf->global->STRIPE_LIVE_WEBHOOK_CONNECT_KEY; $service = 'StripeLive'; $servicestatus = 1; } -} -else { +} else { if (isset($_GET['test'])) { $endpoint_secret = $conf->global->STRIPE_TEST_WEBHOOK_KEY; $service = 'StripeTest'; $servicestatus = 0; - } - else { + } else { $endpoint_secret = $conf->global->STRIPE_LIVE_WEBHOOK_KEY; $service = 'StripeLive'; $servicestatus = 1; @@ -89,8 +86,7 @@ $error = 0; try { $event = \Stripe\Webhook::constructEvent($payload, $sig_header, $endpoint_secret); -} -catch (\UnexpectedValueException $e) { +} catch (\UnexpectedValueException $e) { // Invalid payload http_response_code(400); // PHP 5.4 or greater exit(); @@ -123,12 +119,10 @@ if (!empty($conf->multicompany->enabled) && !empty($conf->stripeconnect->enabled { $obj = $db->fetch_object($result); $key = $obj->entity; - } - else { + } else { $key = 1; } - } - else { + } else { $key = 1; } $ret = $mc->switchEntity($key); @@ -186,14 +180,12 @@ if ($event->type == 'payout.created') { http_response_code(200); // PHP 5.4 or greater return 1; - } - else { + } else { $error++; http_response_code(500); // PHP 5.4 or greater return -1; } -} -elseif ($event->type == 'payout.paid') { +} elseif ($event->type == 'payout.paid') { global $conf; $error = 0; $result = dolibarr_set_const($db, $service."_NEXTPAYOUT", null, 'chaine', 0, '', $conf->entity); @@ -266,41 +258,32 @@ elseif ($event->type == 'payout.paid') { http_response_code(200); // PHP 5.4 or greater return 1; - } - else { + } else { $error++; http_response_code(500); // PHP 5.4 or greater return -1; } -} -elseif ($event->type == 'customer.source.created') { +} elseif ($event->type == 'customer.source.created') { //TODO: save customer's source -} -elseif ($event->type == 'customer.source.updated') { +} elseif ($event->type == 'customer.source.updated') { //TODO: update customer's source -} -elseif ($event->type == 'customer.source.delete') { +} elseif ($event->type == 'customer.source.delete') { //TODO: delete customer's source -} -elseif ($event->type == 'customer.deleted') { +} elseif ($event->type == 'customer.deleted') { $db->begin(); $sql = "DELETE FROM ".MAIN_DB_PREFIX."societe_account WHERE key_account = '".$db->escape($event->data->object->id)."' and site='stripe'"; $db->query($sql); $db->commit(); -} -elseif ($event->type == 'payment_intent.succeeded') { // Called when making payment with PaymentIntent method ($conf->global->STRIPE_USE_NEW_CHECKOUT is on). +} elseif ($event->type == 'payment_intent.succeeded') { // Called when making payment with PaymentIntent method ($conf->global->STRIPE_USE_NEW_CHECKOUT is on). // TODO: create fees // TODO: Redirect to paymentok.php -} -elseif ($event->type == 'payment_intent.payment_failed') { +} elseif ($event->type == 'payment_intent.payment_failed') { // TODO: Redirect to paymentko.php -} -elseif ($event->type == 'checkout.session.completed') // Called when making payment with new Checkout method ($conf->global->STRIPE_USE_NEW_CHECKOUT is on). +} elseif ($event->type == 'checkout.session.completed') // Called when making payment with new Checkout method ($conf->global->STRIPE_USE_NEW_CHECKOUT is on). { // TODO: create fees // TODO: Redirect to paymentok.php -} -elseif ($event->type == 'payment_method.attached') { +} elseif ($event->type == 'payment_method.attached') { require_once DOL_DOCUMENT_ROOT.'/societe/class/companypaymentmode.class.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/societeaccount.class.php'; $societeaccount = new SocieteAccount($db); @@ -339,13 +322,11 @@ elseif ($event->type == 'payment_method.attached') { if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } } -} -elseif ($event->type == 'payment_method.updated') { +} elseif ($event->type == 'payment_method.updated') { require_once DOL_DOCUMENT_ROOT.'/societe/class/companypaymentmode.class.php'; $companypaymentmode = new CompanyPaymentMode($db); $companypaymentmode->fetch(0, '', 0, '', " AND stripe_card_ref = '".$db->escape($event->data->object->id)."'"); @@ -375,25 +356,20 @@ elseif ($event->type == 'payment_method.updated') { if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } -} -elseif ($event->type == 'payment_method.detached') { +} elseif ($event->type == 'payment_method.detached') { $db->begin(); $sql = "DELETE FROM ".MAIN_DB_PREFIX."societe_rib WHERE ref = '".$db->escape($event->data->object->id)."' and status = ".$servicestatus; $db->query($sql); $db->commit(); -} -elseif ($event->type == 'charge.succeeded') { +} elseif ($event->type == 'charge.succeeded') { // TODO: create fees // TODO: Redirect to paymentok.php -} -elseif ($event->type == 'charge.failed') { +} elseif ($event->type == 'charge.failed') { // TODO: Redirect to paymentko.php -} -elseif (($event->type == 'source.chargeable') && ($event->data->object->type == 'three_d_secure') && ($event->data->object->three_d_secure->authenticated == true)) { +} elseif (($event->type == 'source.chargeable') && ($event->data->object->type == 'three_d_secure') && ($event->data->object->three_d_secure->authenticated == true)) { // This event is deprecated. } diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index cbe88b006d4..ffa4b24fc59 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -45,8 +45,7 @@ if (empty($usedolheader)) trans("ErrorFieldRequired", $langs->transnoentities("TicketEmailNotificationFrom")).'
'; print $langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentities("Ticket")); print '
'; - } - else { + } else { print '
'.$langs->trans('TicketPublicInfoCreateTicket').'
'; $formticket->showForm(); } diff --git a/htdocs/public/ticket/view.php b/htdocs/public/ticket/view.php index 51e120cdbd5..2b9ab94c5b1 100644 --- a/htdocs/public/ticket/view.php +++ b/htdocs/public/ticket/view.php @@ -187,8 +187,7 @@ if ($action == "view_ticket" || $action == "presend" || $action == "close" || $a if ($action == "add_message") { $action = 'presend'; - } - else { + } else { $action = ''; } } @@ -371,8 +370,7 @@ if ($action == "view_ticket" || $action == "presend" || $action == "close" || $a // Message list print load_fiche_titre($langs->trans('TicketMessagesList'), '', 'object_conversation'); $object->viewTicketMessages(false, true, $object->dao); - } - else { + } else { print ''; } } else { diff --git a/htdocs/public/website/index.php b/htdocs/public/website/index.php index 2f18de010a0..d09b8e10012 100644 --- a/htdocs/public/website/index.php +++ b/htdocs/public/website/index.php @@ -95,8 +95,7 @@ if (empty($pageid)) if ($result > 0) { $pageid = $objectpage->id; - } - elseif ($result == 0) + } elseif ($result == 0) { // Page not found from ref=pageurl, we try using alternative alias $result = $objectpage->fetch(0, $object->id, null, $pageref); @@ -105,8 +104,7 @@ if (empty($pageid)) $pageid = $objectpage->id; } } - } - else { + } else { if ($object->fk_default_home > 0) { $result = $objectpage->fetch($object->fk_default_home); @@ -163,8 +161,7 @@ if ($pageid == 'css') // No more used ? //else header('Cache-Control: no-cache'); $original_file = $dolibarr_main_data_root.'/website/'.$websitekey.'/styles.css.php'; -} -else { +} else { $original_file = $dolibarr_main_data_root.'/website/'.$websitekey.'/page'.$pageid.'.tpl.php'; } diff --git a/htdocs/public/website/styles.css.php b/htdocs/public/website/styles.css.php index 24125178f5d..8854c13ea52 100644 --- a/htdocs/public/website/styles.css.php +++ b/htdocs/public/website/styles.css.php @@ -77,8 +77,7 @@ if (empty($pageid)) { $object->fetch($websiteid); $website = $object->ref; - } - else { + } else { $object->fetch(0, $website); } diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index 2ada4b1c447..7bc99977943 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -79,7 +79,7 @@ else { $result = restrictedArea($user, 'reception'); if ($origin == 'supplierorder') { if (empty($user->rights->fournisseur->commande->lire) && empty($user->rights->fournisseur->commande->read)) accessforbidden(); - }elseif (empty($user->rights->{$origin}->lire) && empty($user->rights->{$origin}->read)) accessforbidden(); + } elseif (empty($user->rights->{$origin}->lire) && empty($user->rights->{$origin}->read)) accessforbidden(); } $action = GETPOST('action', 'alpha'); @@ -352,8 +352,7 @@ if (empty($reshook)) $error++; } } - } - else { + } else { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("QtyToReceive").'/'.$langs->transnoentitiesnoconv("Warehouse")), null, 'errors'); $error++; } @@ -363,15 +362,12 @@ if (empty($reshook)) $db->commit(); header("Location: card.php?id=".$object->id); exit; - } - else { + } else { $db->rollback(); $_GET["commande_id"] = GETPOST('commande_id', 'int'); $action = 'create'; } - } - - elseif ($action == 'confirm_valid' && $confirm == 'yes' && + } elseif ($action == 'confirm_valid' && $confirm == 'yes' && ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->reception->creer)) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->reception->reception_advance->validate))) ) @@ -384,8 +380,7 @@ if (empty($reshook)) { $langs->load("errors"); setEventMessages($langs->trans($object->error), null, 'errors'); - } - else { + } else { // Define output language if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { @@ -404,17 +399,14 @@ if (empty($reshook)) if ($result < 0) dol_print_error($db, $result); } } - } - - elseif ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->reception->supprimer) + } elseif ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->reception->supprimer) { $result = $object->delete($user); if ($result > 0) { header("Location: ".DOL_URL_ROOT.'/reception/index.php'); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -512,9 +504,7 @@ if (empty($reshook)) $ret = dol_delete_file($file, 0, 0, 0, $object); if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); - } - - elseif ($action == 'classifybilled') + } elseif ($action == 'classifybilled') { $object->fetch($id); $result = $object->set_billed(); @@ -522,9 +512,7 @@ if (empty($reshook)) header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id); exit(); } - } - - elseif ($action == 'classifyclosed') + } elseif ($action == 'classifyclosed') { $object->fetch($id); $result = $object->setClosed(); @@ -561,8 +549,7 @@ if (empty($reshook)) if (!$error) { header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id); exit(); - } - else { + } else { setEventMessages($line->error, $line->errors, 'errors'); } } @@ -624,8 +611,7 @@ if (empty($reshook)) setEventMessages($line->error, $line->errors, 'errors'); $error++; } - } - else // Product no predefined + } else // Product no predefined { $qty = "qtyl".$line_id; $line->id = $line_id; @@ -660,8 +646,7 @@ if (empty($reshook)) $ret = $object->fetch($object->id); // Reload to get new records $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); } - } - else { + } else { header('Location: '.$_SERVER['PHP_SELF'].'?id='.$object->id); // Pour reaffichage de la fiche en cours d'edition exit(); } @@ -1041,8 +1026,7 @@ if ($action == 'create') } print ''; - } - else { + } else { print ""; if ($type == 1) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); @@ -1080,8 +1064,7 @@ if ($action == 'create') if ($line->product_type == 1 && empty($conf->global->STOCK_SUPPORTS_SERVICES)) { $quantityToBeDelivered = 0; - } - else { + } else { $quantityToBeDelivered = $dispatchLines[$indiceAsked]['qty']; } $warehouse_id = $dispatchLines[$indiceAsked]['ent']; @@ -1102,8 +1085,7 @@ if ($action == 'create') if (GETPOST('qtyl'.$indiceAsked, 'int')) $defaultqty = GETPOST('qtyl'.$indiceAsked, 'int'); print ''; print ''; - } - else print $langs->trans("NA"); + } else print $langs->trans("NA"); print ''; // Stock @@ -1121,8 +1103,7 @@ if ($action == 'create') print ''; print $formproduct->selectWarehouses($tmpentrepot_id, 'entl'.$indiceAsked, '', 0, 0, $line->fk_product, '', 1); } - } - else { + } else { print $langs->trans("Service"); } print ''; @@ -1139,8 +1120,7 @@ if ($action == 'create') print ''; print $form->selectDate($dispatchLines[$indiceAsked]['DLUO'], 'dluo'.$indiceAsked, '', '', 1, ""); print ''; - } - else { + } else { print ''; } } @@ -1184,13 +1164,11 @@ if ($action == 'create') print ''; print '
'; - } - else { + } else { dol_print_error($db); } } -} -elseif ($id || $ref) +} elseif ($id || $ref) /* *************************************************************************** */ /* */ /* Edit and view mode */ @@ -1235,8 +1213,7 @@ elseif ($id || $ref) if ($objectref == 'PROV') { $numref = $object->getNextNumRef($soc); - } - else { + } else { $numref = $object->ref; } @@ -1400,8 +1377,7 @@ elseif ($id || $ref) print $form->selectDate($object->date_delivery ? $object->date_delivery : -1, 'liv_', 1, 1, '', "setdate_livraison", 1, 0); print ''; print ''; - } - else { + } else { print $object->date_delivery ? dol_print_date($object->date_delivery, 'dayhour') : ' '; } print ''; @@ -1423,8 +1399,7 @@ elseif ($id || $ref) print ' '; print ' '; print ''; - } - else { + } else { print $object->trueWeight; print ($object->trueWeight && $object->weight_units != '') ? ' '.measuringUnitString(0, "weight", $object->weight_units) : ''; } @@ -1457,8 +1432,7 @@ elseif ($id || $ref) print ' '; print ' '; print ''; - } - else { + } else { print $object->trueHeight; print ($object->trueHeight && $object->height_units != '') ? ' '.measuringUnitString(0, "size", $object->height_units) : ''; } @@ -1489,8 +1463,7 @@ elseif ($id || $ref) if ($volumeUnit < 50) { print showDimensionInBestUnit($calculatedVolume, $volumeUnit, "volume", $langs, isset($conf->global->MAIN_VOLUME_DEFAULT_ROUND) ? $conf->global->MAIN_VOLUME_DEFAULT_ROUND : -1, isset($conf->global->MAIN_VOLUME_DEFAULT_UNIT) ? $conf->global->MAIN_VOLUME_DEFAULT_UNIT : 'no'); - } - else print $calculatedVolume.' '.measuringUnitString(0, "volume", $volumeUnit); + } else print $calculatedVolume.' '.measuringUnitString(0, "volume", $volumeUnit); } if ($totalVolume > 0) { @@ -1535,8 +1508,7 @@ elseif ($id || $ref) if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print ''; print ''; - } - else { + } else { if ($object->shipping_method_id > 0) { // Get code using getLabelFromKey @@ -1568,8 +1540,7 @@ elseif ($id || $ref) if ($action != 'editincoterm') { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); - } - else { + } else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?id='.$object->id); } print ''; @@ -1622,8 +1593,7 @@ elseif ($id || $ref) if ($object->statut <= 1) { print $langs->trans("QtyToReceive").' - '; - } - else { + } else { print $langs->trans("QtyReceived").' - '; } if (!empty($conf->stock->enabled)) @@ -1635,13 +1605,11 @@ elseif ($id || $ref) print $langs->trans("Batch"); } print ''; - } - else { + } else { if ($object->statut <= 1) { print ''.$langs->trans("QtyToReceive").''; - } - else { + } else { print ''.$langs->trans("QtyReceived").''; } if (!empty($conf->stock->enabled)) @@ -1748,8 +1716,7 @@ elseif ($id || $ref) $prod = new Product($db); $prod->fetch($lines[$i]->fk_product); $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $lines[$i]->product->label; - } - else $label = (!empty($lines[$i]->product->label) ? $lines[$i]->product->label : $lines[$i]->product->product_label); + } else $label = (!empty($lines[$i]->product->label) ? $lines[$i]->product->label : $lines[$i]->product->product_label); print ''; @@ -1763,8 +1730,7 @@ elseif ($id || $ref) print (!empty($lines[$i]->product->description) && $lines[$i]->description != $lines[$i]->product->description) ? '
'.dol_htmlentitiesbr($lines[$i]->description) : ''; } print "\n"; - } - else { + } else { print ""; if ($lines[$i]->product_type == Product::TYPE_SERVICE) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); @@ -1783,8 +1749,7 @@ elseif ($id || $ref) if ($action == 'editline' && $lines[$i]->id == $line_id) { print ''; - } - else { + } else { print ''.$lines[$i]->comment.''; } @@ -1849,8 +1814,7 @@ elseif ($id || $ref) print ''; } print ''; - } - else { + } else { print ''; print ''; // Qty to receive or received @@ -1863,8 +1827,7 @@ elseif ($id || $ref) } } print ''; - } - else { + } else { // Qty to receive or received print ''.$lines[$i]->qty.''; @@ -1900,8 +1863,7 @@ elseif ($id || $ref) $detail .= '
'; print $form->textwithtooltip(img_picto('', 'object_barcode').' '.$langs->trans("DetailBatchNumber"), $detail); - } - else { + } else { print $langs->trans("NA"); } print ''; @@ -1929,8 +1891,7 @@ elseif ($id || $ref) print ''; print '
'; print '
'; - } - elseif ($object->statut == Reception::STATUS_DRAFT) + } elseif ($object->statut == Reception::STATUS_DRAFT) { // edit-delete buttons print ''; @@ -1961,8 +1922,7 @@ elseif ($id || $ref) if ($action == 'editline' && $lines[$i]->id == $line_id) { print $line->showOptionals($extrafields, 'edit', array('colspan'=>$colspan), $indiceAsked); - } - else { + } else { print $line->showOptionals($extrafields, 'view', array('colspan'=>$colspan), $indiceAsked); } } @@ -1999,8 +1959,7 @@ elseif ($id || $ref) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->reception->reception_advance->validate))) { print ''.$langs->trans("Validate").''; - } - else { + } else { print ''.$langs->trans("Validate").''; } } @@ -2016,8 +1975,7 @@ elseif ($id || $ref) if (!empty($conf->facture->enabled) && !empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)) // Quand l'option est on, il faut avoir le bouton en plus et non en remplacement du Close ? { print ''.$langs->trans("ClassifyUnbilled").''; - } - else { + } else { print ''.$langs->trans("ReOpen").''; } } @@ -2029,8 +1987,7 @@ elseif ($id || $ref) if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->reception->reception_advance->send) { print ''.$langs->trans('SendByMail').''; - } - else print ''.$langs->trans('SendByMail').''; + } else print ''.$langs->trans('SendByMail').''; } } diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 111846347be..f4cbb08ee9e 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -178,13 +178,11 @@ class Reception extends CommonObject if ($numref != "") { return $numref; - } - else { + } else { dol_print_error($this->db, get_class($this)."::getNextNumRef ".$obj->error); return ""; } - } - else { + } else { print $langs->trans("Error")." ".$langs->trans("Error_RECEPTION_ADDON_NUMBER_NotDefined"); return ""; } @@ -322,8 +320,7 @@ class Reception extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR); @@ -332,15 +329,13 @@ class Reception extends CommonObject $this->db->rollback(); return -1 * $error; } - } - else { + } else { $error++; $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -2; } - } - else { + } else { $error++; $this->error = $this->db->error()." - sql=$sql"; $this->db->rollback(); @@ -467,14 +462,12 @@ class Reception extends CommonObject } return 1; - } - else { + } else { dol_syslog(get_class($this).'::Fetch no reception found', LOG_ERR); $this->error = 'Delivery with id '.$id.' not found'; return 0; } - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -523,8 +516,7 @@ class Reception extends CommonObject if (!$error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life { $numref = $this->getNextNumRef($soc); - } - else { + } else { $numref = $this->ref; } @@ -594,8 +586,7 @@ class Reception extends CommonObject $this->errors = array_merge($this->errors, $mouvS->errors); break; } - } - else { + } else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record. @@ -609,8 +600,7 @@ class Reception extends CommonObject } } } - } - else { + } else { $this->db->rollback(); $this->error = $this->db->error(); return -2; @@ -684,8 +674,7 @@ class Reception extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::valid ".$errmsg, LOG_ERR); @@ -856,8 +845,7 @@ class Reception extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -910,8 +898,7 @@ class Reception extends CommonObject $result = $mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $obj->qty, 0, $langs->trans("ReceptionDeletedInDolibarr", $this->ref), '', $obj->eatby, $obj->sellby, $obj->batch); // Price is set to 0, because we don't want to see WAP changed } - } - else { + } else { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } } @@ -987,31 +974,26 @@ class Reception extends CommonObject } return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -3; } - } - else { + } else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -2; } - } - else { + } else { $this->error = $this->db->lasterror()." - sql=$sql"; $this->db->rollback(); return -1; } - } - else { + } else { $this->db->rollback(); return -1; } @@ -1069,8 +1051,7 @@ class Reception extends CommonObject } return 1; - } - else { + } else { return -1; } } @@ -1256,13 +1237,11 @@ class Reception extends CommonObject { $this->date_delivery = $date_livraison; return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } - } - else { + } else { return -2; } } @@ -1345,8 +1324,7 @@ class Reception extends CommonObject $sql = "INSERT INTO ".MAIN_DB_PREFIX."c_shipment_mode (code, libelle, description, tracking)"; $sql .= " VALUES ('".$this->db->escape($this->update['code'])."','".$this->db->escape($this->update['libelle'])."','".$this->db->escape($this->update['description'])."','".$this->db->escape($this->update['tracking'])."')"; $resql = $this->db->query($sql); - } - else { + } else { $sql = "UPDATE ".MAIN_DB_PREFIX."c_shipment_mode SET"; $sql .= " code='".$this->db->escape($this->update['code'])."'"; $sql .= ",libelle='".$this->db->escape($this->update['libelle'])."'"; @@ -1421,8 +1399,7 @@ class Reception extends CommonObject { $url = str_replace('{TRACKID}', $value, $tracking); $this->tracking_url = sprintf(''.($value ? $value : 'url').'', $url, $url); - } - else { + } else { $this->tracking_url = $value; } } @@ -1523,8 +1500,7 @@ class Reception extends CommonObject $this->errors = $mouvS->errors; $error++; break; } - } - else { + } else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record @@ -1537,8 +1513,7 @@ class Reception extends CommonObject } } } - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } @@ -1552,8 +1527,7 @@ class Reception extends CommonObject $error++; } } - } - else { + } else { dol_print_error($this->db); $error++; } @@ -1562,8 +1536,7 @@ class Reception extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -1607,8 +1580,7 @@ class Reception extends CommonObject if (empty($error)) { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -1683,8 +1655,7 @@ class Reception extends CommonObject $this->errors = $mouvS->errors; $error++; break; } - } - else { + } else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record @@ -1696,8 +1667,7 @@ class Reception extends CommonObject } } } - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } @@ -1726,8 +1696,7 @@ class Reception extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -1816,8 +1785,7 @@ class Reception extends CommonObject $error++; break; } - } - else { + } else { // line with batch detail // We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record @@ -1829,8 +1797,7 @@ class Reception extends CommonObject } } } - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } @@ -1880,8 +1847,7 @@ class Reception extends CommonObject $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; diff --git a/htdocs/reception/contact.php b/htdocs/reception/contact.php index b5e526bb1b3..4e8605ac74a 100644 --- a/htdocs/reception/contact.php +++ b/htdocs/reception/contact.php @@ -90,8 +90,7 @@ if ($action == 'addcontact' && $user->rights->reception->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { if ($objectsrc->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); @@ -119,8 +118,7 @@ elseif ($action == 'deletecontact' && $user->rights->reception->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/reception/index.php b/htdocs/reception/index.php index b9786229468..e3951458e40 100644 --- a/htdocs/reception/index.php +++ b/htdocs/reception/index.php @@ -120,8 +120,7 @@ if ($resql) print ''; $i++; } - } - else { + } else { print ''.$langs->trans("None").''; } @@ -182,16 +181,14 @@ if ($resql) $orderstatic->id = $obj->commande_fournisseur_id; $orderstatic->ref = $obj->commande_fournisseur_ref; print $orderstatic->getNomUrl(1); - } - else print ' '; + } else print ' '; print ''; $i++; } print "

"; } $db->free($resql); -} -else dol_print_error($db); +} else dol_print_error($db); diff --git a/htdocs/reception/list.php b/htdocs/reception/list.php index c753cf3e873..93aba12eb00 100644 --- a/htdocs/reception/list.php +++ b/htdocs/reception/list.php @@ -192,8 +192,7 @@ if (empty($reshook)) $object->add_object_linked('reception', $value); // add supplier order linked object } } - } - else { + } else { $object->socid = $rcp->socid; $object->type = FactureFournisseur::TYPE_STANDARD; $object->cond_reglement_id = $rcp->thirdparty->cond_reglement_supplier_id; @@ -278,14 +277,12 @@ if (empty($reshook)) { $result = $object->insert_discount($discountid); //$result=$discount->link_to_invoice($lineid,$id); - } - else { + } else { setEventMessages($discount->error, $discount->errors, 'errors'); $error++; break; } - } - else { + } else { // Positive line $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0); // Date start @@ -332,8 +329,7 @@ if (empty($reshook)) if ($result > 0) { $lineid = $result; - } - else { + } else { $lineid = 0; $error++; break; @@ -387,8 +383,7 @@ if (empty($reshook)) { $db->commit(); setEventMessage($langs->trans('BillCreated', $nb_bills_created)); - } - else { + } else { $db->rollback(); $action = 'create'; $_GET["origin"] = $_POST["origin"]; @@ -580,8 +575,7 @@ if ($resql) { print $form->selectyesno('validate_invoices', 0, 1, 1); print ' ('.$langs->trans("AutoValidationNotPossibleWhenStockIsDecreasedOnInvoiceValidation").')'; - } - else { + } else { print $form->selectyesno('validate_invoices', 0, 1); } print ''; @@ -931,8 +925,7 @@ if ($resql) print "
"; print ''; $db->free($resql); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/reception/stats/index.php b/htdocs/reception/stats/index.php index 4a0bcb4fd04..5079671dafd 100644 --- a/htdocs/reception/stats/index.php +++ b/htdocs/reception/stats/index.php @@ -77,8 +77,7 @@ $data = $stats->getNbByMonthWithPrevYear($endyear, $startyear); if (!$user->rights->societe->client->voir || $user->socid) { $filenamenb = $dir.'/receptionsnbinyear-'.$user->id.'-'.$year.'.png'; -} -else { +} else { $filenamenb = $dir.'/receptionsnbinyear-'.$year.'.png'; } @@ -289,8 +288,7 @@ print '
'; // Show graphs print ''; } -} -else { +} else { $colspan = 1; foreach ($arrayfields as $key => $val) { if (!empty($val['checked'])) $colspan++; } print ''; diff --git a/htdocs/salaries/admin/salaries.php b/htdocs/salaries/admin/salaries.php index b1f1f627a99..a824a7d8eee 100644 --- a/htdocs/salaries/admin/salaries.php +++ b/htdocs/salaries/admin/salaries.php @@ -62,8 +62,7 @@ if ($action == 'update') if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -113,8 +112,7 @@ foreach ($list as $key) if (!empty($conf->accounting->enabled)) { print $formaccounting->select_account($conf->global->$key, $key, 1, '', 1, 1); - } - else { + } else { print ''; } print ''; diff --git a/htdocs/salaries/card.php b/htdocs/salaries/card.php index d7b71edbf0b..94add08291c 100644 --- a/htdocs/salaries/card.php +++ b/htdocs/salaries/card.php @@ -158,8 +158,7 @@ if ($action == 'add' && empty($cancel)) header("Location: list.php"); exit; } - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); $action = "create"; @@ -192,19 +191,16 @@ if ($action == 'delete') $db->commit(); header("Location: ".DOL_URL_ROOT.'/salaries/list.php'); exit; - } - else { + } else { $object->error = $accountline->error; $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { setEventMessages('Error try do delete a line linked to a conciliated bank transaction', null, 'errors'); } } @@ -489,12 +485,10 @@ if ($id) if (!empty($user->rights->salaries->delete)) { print ''; - } - else { + } else { print ''; } - } - else { + } else { print ''; } print ""; diff --git a/htdocs/salaries/class/paymentsalary.class.php b/htdocs/salaries/class/paymentsalary.class.php index 9fddd59ce51..34b58a5c0e4 100644 --- a/htdocs/salaries/class/paymentsalary.class.php +++ b/htdocs/salaries/class/paymentsalary.class.php @@ -182,8 +182,7 @@ class PaymentSalary extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -262,8 +261,7 @@ class PaymentSalary extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -478,8 +476,7 @@ class PaymentSalary extends CommonObject if ($bank_line_id > 0) { $this->update_fk_bank($bank_line_id); - } - else { + } else { $this->error = $acc->error; $error++; } @@ -521,20 +518,17 @@ class PaymentSalary extends CommonObject $result = $this->call_trigger('PAYMENT_SALARY_CREATE', $user); if ($result < 0) $error++; // End call triggers - } - else $error++; + } else $error++; if (!$error) { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -2; } - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; @@ -557,8 +551,7 @@ class PaymentSalary extends CommonObject if ($result) { return 1; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -616,8 +609,7 @@ class PaymentSalary extends CommonObject $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; */ - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; @@ -669,8 +661,7 @@ class PaymentSalary extends CommonObject $this->date_creation = $this->db->jdate($obj->datec); } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/salaries/document.php b/htdocs/salaries/document.php index 0e6a1bccba0..69680df6a2a 100644 --- a/htdocs/salaries/document.php +++ b/htdocs/salaries/document.php @@ -128,8 +128,7 @@ if ($object->id) $permission = $user->rights->salaries->write; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/salaries/list.php b/htdocs/salaries/list.php index b06ad2348e4..6c4ee37a979 100644 --- a/htdocs/salaries/list.php +++ b/htdocs/salaries/list.php @@ -67,8 +67,7 @@ if (!GETPOST('typeid', 'int')) $part = explode(':', $val); if ($part[0] == 's.fk_typepayment') $typeid = $part[1]; } -} -else { +} else { $typeid = GETPOST('typeid', 'int'); } @@ -287,8 +286,7 @@ if ($result) } $accountstatic->label = $obj->blabel; print $accountstatic->getNomUrl(1); - } - else print ' '; + } else print ' '; print ''; if (!$i) $totalarray['nbfield']++; } @@ -316,8 +314,7 @@ if ($result) print ''; $db->free($result); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/salaries/stats/index.php b/htdocs/salaries/stats/index.php index b0023de8b64..06beda8ce41 100644 --- a/htdocs/salaries/stats/index.php +++ b/htdocs/salaries/stats/index.php @@ -256,8 +256,7 @@ print '
'; // Show graphs print '
'; -if ($mesg) { print $mesg; } -else { +if ($mesg) { print $mesg; } else { print $px1->show(); print "
\n"; /*print $px2->show(); diff --git a/htdocs/resource/agenda.php b/htdocs/resource/agenda.php index fa99e4610d5..72d055da41d 100644 --- a/htdocs/resource/agenda.php +++ b/htdocs/resource/agenda.php @@ -48,8 +48,7 @@ if (GETPOST('actioncode', 'array')) { $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; -} -else { +} else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/resource/card.php b/htdocs/resource/card.php index 9f2a044525d..8d965c69c2c 100644 --- a/htdocs/resource/card.php +++ b/htdocs/resource/card.php @@ -99,8 +99,7 @@ if (empty($reshook)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Ref")), null, 'errors'); $action = 'create'; - } - else { + } else { $object->ref = $ref; $object->description = $description; $object->fk_code_type_resource = $fk_code_type_resource; @@ -117,15 +116,13 @@ if (empty($reshook)) setEventMessages($langs->trans('ResourceCreatedWithSuccess'), null, 'mesgs'); Header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { // Creation KO setEventMessages($object->error, $object->errors, 'errors'); $action = 'create'; } } - } - else { + } else { Header("Location: list.php"); exit; } @@ -162,13 +159,11 @@ if (empty($reshook)) { Header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $error++; } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $error++; } @@ -192,12 +187,10 @@ if (empty($reshook)) setEventMessages($langs->trans('RessourceSuccessfullyDeleted'), null, 'mesgs'); Header('Location: '.DOL_URL_ROOT.'/resource/list.php'); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -220,8 +213,7 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) { print load_fiche_titre($title, '', 'object_resource'); dol_fiche_head(''); - } - else { + } else { $head = resource_prepare_head($object); dol_fiche_head($head, 'resource', $title, -1, 'resource'); } @@ -283,8 +275,7 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) print ''; print ''; - } - else { + } else { $formconfirm = ''; // Confirm deleting resource line @@ -384,8 +375,7 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) } } print ''; -} -else { +} else { dol_print_error(); } diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index 41c0db7ec15..294f36e5589 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -164,8 +164,7 @@ class Dolresource extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return $this->id; } @@ -222,8 +221,7 @@ class Dolresource extends CommonObject $this->db->free($resql); return $this->id; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); return -1; @@ -327,8 +325,7 @@ class Dolresource extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -385,8 +382,7 @@ class Dolresource extends CommonObject $this->db->free($resql); return $this->id; - } - else { + } else { $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -423,8 +419,7 @@ class Dolresource extends CommonObject $this->error = $this->db->lasterror(); $error++; } - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } @@ -470,8 +465,7 @@ class Dolresource extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -516,11 +510,9 @@ class Dolresource extends CommonObject foreach ($filter as $key => $value) { if (strpos($key, 'date')) { $sql .= ' AND '.$key.' = \''.$this->db->idate($value).'\''; - } - elseif (strpos($key, 'ef.') !== false) { + } elseif (strpos($key, 'ef.') !== false) { $sql .= $value; - } - else { + } else { $sql .= ' AND '.$key.' LIKE \'%'.$this->db->escape($value).'%\''; } } @@ -561,8 +553,7 @@ class Dolresource extends CommonObject $this->db->free($resql); } return $num; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -601,8 +592,7 @@ class Dolresource extends CommonObject foreach ($filter as $key => $value) { if (strpos($key, 'date')) { $sql .= ' AND '.$key.' = \''.$this->db->idate($value).'\''; - } - else { + } else { $sql .= ' AND '.$key.' LIKE \'%'.$this->db->escape($value).'%\''; } } @@ -638,8 +628,7 @@ class Dolresource extends CommonObject $this->db->free($resql); } return $num; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -682,8 +671,7 @@ class Dolresource extends CommonObject foreach ($filter as $key => $value) { if (strpos($key, 'date')) { $sql .= ' AND '.$key.' = \''.$this->db->idate($value).'\''; - } - else { + } else { $sql .= ' AND '.$key.' LIKE \'%'.$this->db->escape($value).'%\''; } } @@ -716,8 +704,7 @@ class Dolresource extends CommonObject $this->db->free($resql); } return $num; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -807,8 +794,7 @@ class Dolresource extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -914,8 +900,7 @@ class Dolresource extends CommonObject $i++; } return $num; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -967,8 +952,7 @@ class Dolresource extends CommonObject } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php index 3eeebeaee45..451ca9922b1 100644 --- a/htdocs/resource/class/html.formresource.class.php +++ b/htdocs/resource/class/html.formresource.class.php @@ -126,8 +126,7 @@ class FormResource if ($selected > 0 && $selected == $resourcestat->lines[$i]->id) { $out .= ''; - } - else { + } else { $out .= ''; } @@ -145,8 +144,7 @@ class FormResource $out .= ''; } - } - else { + } else { dol_print_error($this->db); } diff --git a/htdocs/resource/contact.php b/htdocs/resource/contact.php index dc916aa5f77..ee20d918648 100644 --- a/htdocs/resource/contact.php +++ b/htdocs/resource/contact.php @@ -62,8 +62,7 @@ if ($action == 'addcontact' && $user->rights->resource->write) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); $mesg = $langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"); @@ -90,8 +89,7 @@ elseif ($action == 'deletecontact' && $user->rights->resource->write) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/resource/document.php b/htdocs/resource/document.php index 0e6b20923b5..077430cf4bb 100644 --- a/htdocs/resource/document.php +++ b/htdocs/resource/document.php @@ -136,8 +136,7 @@ if ($object->id > 0) $permission = $user->rights->resource->write; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index 8e353b59788..dd3a02e18e3 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -97,8 +97,7 @@ if (empty($reshook)) $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Resource")), null, 'errors'); $action = ''; - } - else { + } else { $objstat = fetchObjectByElement($element_id, $element, $element_ref); $objstat->element = $element; // For externals module, we need to keep @xx @@ -168,8 +167,7 @@ if (empty($reshook)) setEventMessages($langs->trans('ResourceLinkedWithSuccess'), null, 'mesgs'); header("Location: ".$_SERVER['PHP_SELF'].'?element='.$element.'&element_id='.$objstat->id); exit; - } - elseif ($objstat) + } elseif ($objstat) { setEventMessages($objstat->error, $objstat->errors, 'errors'); } @@ -264,8 +262,7 @@ if (empty($reshook)) setEventMessages($langs->trans('RessourceLineSuccessfullyDeleted'), null, 'mesgs'); header("Location: ".$_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id); exit; - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -295,8 +292,7 @@ if ($ret == -1) { } if (!$ret) { print '
'.$langs->trans('NoResourceInDatabase').'
'; -} -else { +} else { // Confirmation suppression resource line if ($action == 'delete_resource') { @@ -408,8 +404,7 @@ else { } } $_SESSION['assignedtouser'] = json_encode($listofuserid); - } - else { + } else { if (!empty($_SESSION['assignedtouser'])) { $listofuserid = json_decode($_SESSION['assignedtouser'], true); @@ -596,8 +591,7 @@ else { if (file_exists(dol_buildpath($reldir.'/resource_'.$element_prop['element'].'_add.tpl.php'))) { $tpl = dol_buildpath($reldir.'/resource_'.$element_prop['element'].'_add.tpl.php'); - } - else { + } else { $tpl = DOL_DOCUMENT_ROOT.$reldir.'/resource_add.tpl.php'; } if (empty($conf->file->strict_mode)) { @@ -615,8 +609,7 @@ else { if (file_exists(dol_buildpath($reldir.'/resource_'.$element_prop['element'].'_view.tpl.php'))) { $tpl = dol_buildpath($reldir.'/resource_'.$element_prop['element'].'_view.tpl.php'); - } - else { + } else { $tpl = DOL_DOCUMENT_ROOT.$reldir.'/resource_view.tpl.php'; } if (empty($conf->file->strict_mode)) { diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index 4f94c6c3e17..4dca64b47a6 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -281,8 +281,7 @@ if ($ret) print '
'.$langs->trans("NoRecordFound").'
\n"; - } - else { + } else { $disabled = (!empty($conf->multicompany->enabled) && (is_object($mc) && !empty($mc->sharings['referent']) && $mc->sharings['referent'] != $conf->entity) ? true : false); print ''; - } - else { + } else { print ''; @@ -520,8 +501,7 @@ if ($resql) array_push($def, $array[0]); $i++; } -} -else { +} else { dol_print_error($db); } @@ -551,8 +531,7 @@ foreach ($dirsociete as $dirroot) try { dol_include_once($dirroot.'doc/'.$file); - } - catch (Exception $e) + } catch (Exception $e) { dol_syslog($e->getMessage(), LOG_ERR); } @@ -589,15 +568,13 @@ foreach ($dirsociete as $dirroot) // print img_picto($langs->trans("Enabled"),'on'); //} print ""; - } - else { + } else { if (versioncompare($module->phpmin, versionphparray()) > 0) { print ""; - } - else { + } else { print ""; @@ -623,8 +600,7 @@ foreach ($dirsociete as $dirroot) if ($module->type == 'pdf') { $linkspec = ''.img_object($langs->trans("Preview"), 'bill').''; - } - else { + } else { $linkspec = img_object($langs->trans("PreviewNotAvailable"), 'generic'); } print $linkspec; @@ -693,8 +669,7 @@ foreach ($profid as $key => $val) print ''; - } - else { + } else { print ''; @@ -705,8 +680,7 @@ foreach ($profid as $key => $val) print ''; - } - else { + } else { print ''; @@ -717,8 +691,7 @@ foreach ($profid as $key => $val) print ''; - } - else { + } else { print ''; @@ -759,8 +732,7 @@ if (!$conf->use_javascript_ajax) print '"; -} -else { +} else { print '"; -} -else { +} else { print ''; - } - elseif ($mysoc->localtax1_assuj == "1") + } elseif ($mysoc->localtax1_assuj == "1") { $this->tpl['localtax'] .= ''; - } - elseif ($mysoc->localtax2_assuj == "1") + } elseif ($mysoc->localtax2_assuj == "1") { $this->tpl['localtax'] .= ''; } } - } - else { + } else { $head = societe_prepare_head($this->object); $this->tpl['showhead'] = dol_get_fiche_head($head, 'card', '', 0, 'company'); @@ -306,8 +303,7 @@ abstract class ActionsCardCommon if ($nbofsalesrepresentative > 3) // We print only number { $this->tpl['sales_representatives'] .= $nbofsalesrepresentative; - } - elseif ($nbofsalesrepresentative > 0) + } elseif ($nbofsalesrepresentative > 0) { $userstatic = new User($this->db); $i = 0; @@ -320,8 +316,7 @@ abstract class ActionsCardCommon $i++; if ($i < $nbofsalesrepresentative) $this->tpl['sales_representatives'] .= ', '; } - } - else $this->tpl['sales_representatives'] .= $langs->trans("NoSalesRepresentativeAffected"); + } else $this->tpl['sales_representatives'] .= $langs->trans("NoSalesRepresentativeAffected"); // Linked member if (!empty($conf->adherent->enabled)) @@ -333,8 +328,7 @@ abstract class ActionsCardCommon { $adh->ref = $adh->getFullName($langs); $this->tpl['linked_member'] = $adh->getNomUrl(1); - } - else { + } else { $this->tpl['linked_member'] = $langs->trans("ThirdpartyNotLinkedToMember"); } } @@ -351,13 +345,11 @@ abstract class ActionsCardCommon $this->tpl['localtax'] .= ''; $this->tpl['localtax'] .= ''; $this->tpl['localtax'] .= ''; - } - elseif ($mysoc->localtax1_assuj == "1") + } elseif ($mysoc->localtax1_assuj == "1") { $this->tpl['localtax'] .= ''; $this->tpl['localtax'] .= ''; - } - elseif ($mysoc->localtax2_assuj == "1") + } elseif ($mysoc->localtax2_assuj == "1") { $this->tpl['localtax'] .= ''; $this->tpl['localtax'] .= ''; diff --git a/htdocs/societe/canvas/company/actions_card_company.class.php b/htdocs/societe/canvas/company/actions_card_company.class.php index 348163195d9..73453aff62e 100644 --- a/htdocs/societe/canvas/company/actions_card_company.class.php +++ b/htdocs/societe/canvas/company/actions_card_company.class.php @@ -134,16 +134,13 @@ class ActionsCardCompany extends ActionsCardCommon { $s .= ''.$langs->trans("VATIntraCheck").''; $this->tpl['tva_intra'] = $form->textwithpicto($s, $langs->trans("VATIntraCheckDesc", $langs->transnoentitiesnoconv("VATIntraCheck")), 1); - } - else { + } else { $this->tpl['tva_intra'] = $s.'object->country_id).'" target="_blank">'.img_picto($langs->trans("VATIntraCheckableOnEUSite"), 'help').''; } - } - else { + } else { $this->tpl['tva_intra'] = $s; } - } - else { + } else { // Confirm delete third party if ($action == 'delete') { @@ -170,16 +167,13 @@ class ActionsCardCompany extends ActionsCardCommon { $s .= ''.$langs->trans("VATIntraCheck").''; $this->tpl['tva_intra'] = $form->textwithpicto($s, $langs->trans("VATIntraCheckDesc", $langs->transnoentitiesnoconv("VATIntraCheck")), 1); - } - else { + } else { $this->tpl['tva_intra'] = $s.'object->country_id).'" target="_blank">'.img_picto($langs->trans("VATIntraCheckableOnEUSite"), 'help').''; } - } - else { + } else { $this->tpl['tva_intra'] = $s; } - } - else { + } else { $this->tpl['tva_intra'] = ' '; } @@ -190,8 +184,7 @@ class ActionsCardCompany extends ActionsCardCommon $socm->fetch($this->object->parent); $this->tpl['parent_company'] = $socm->getNomUrl(1).' '.($socm->code_client ? "(".$socm->code_client.")" : ""); $this->tpl['parent_company'] .= ($socm->town ? ' - '.$socm->town : ''); - } - else { + } else { $this->tpl['parent_company'] = $langs->trans("NoParentCompany"); } } diff --git a/htdocs/societe/canvas/individual/actions_card_individual.class.php b/htdocs/societe/canvas/individual/actions_card_individual.class.php index 6a93ac3e939..3abb9e9b6f7 100644 --- a/htdocs/societe/canvas/individual/actions_card_individual.class.php +++ b/htdocs/societe/canvas/individual/actions_card_individual.class.php @@ -110,8 +110,7 @@ class ActionsCardIndividual extends ActionsCardCommon if ($action == 'create' || $action == 'edit') { $this->tpl['select_civility'] = $formcompany->select_civility(GETPOST('civility_id')); - } - else { + } else { // Confirm delete third party if ($action == 'delete' || $conf->use_javascript_ajax) { diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 77299e3ee89..f468f4f63ce 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -136,8 +136,7 @@ if (empty($reshook)) { $langs->load('errors'); setEventMessages($langs->trans('ErrorThirdPartyIdIsMandatory', $langs->transnoentitiesnoconv('MergeOriginThirdparty')), null, 'errors'); - } - else { + } else { if (!$error && $soc_origin->fetch($soc_origin_id) < 1) { setEventMessages($langs->trans('ErrorRecordNotFound'), null, 'errors'); @@ -300,8 +299,7 @@ if (empty($reshook)) { setEventMessages($langs->trans('ThirdpartiesMergeSuccess'), null, 'mesgs'); $db->commit(); - } - else { + } else { $langs->load("errors"); setEventMessages($langs->trans('ErrorsThirdpartyMerge'), null, 'errors'); $db->rollback(); @@ -389,8 +387,7 @@ if (empty($reshook)) { $ret = $object->fetch($socid); $object->oldcopy = clone $object; - } - else $object->canvas = $canvas; + } else $object->canvas = $canvas; if (GETPOST("private", 'int') == 1) // Ask to create a contact { @@ -401,8 +398,7 @@ if (empty($reshook)) // Add non official properties $object->name_bis = GETPOST('name', 'alpha'); $object->firstname = GETPOST('firstname', 'alpha'); - } - else { + } else { $object->name = GETPOST('name', 'alpha'); } $object->entity = (GETPOSTISSET('entity') ?GETPOST('entity', 'int') : $conf->entity); @@ -605,15 +601,13 @@ if (empty($reshook)) if (!$result > 0) { $errors[] = "ErrorFailedToSaveFile"; - } - else { + } else { // Create thumbs $object->addThumbs($newfile); } } } - } - else { + } else { switch ($_FILES['photo']['error']) { case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini @@ -626,8 +620,7 @@ if (empty($reshook)) } } // Gestion du logo de la société - } - else { + } else { if ($db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') // TODO Sometime errors on duplicate on profid and not on code, so we must manage this case { $duplicate_code_error = true; @@ -649,8 +642,7 @@ if (empty($reshook)) if (preg_match('/\?/', $backtopage)) $backtopage .= '&socid='.$object->id; // Old method header("Location: ".$backtopage); exit; - } - else { + } else { $url = $_SERVER["PHP_SELF"]."?socid=".$object->id; // Old method if (($object->client == 1 || $object->client == 3) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $url = DOL_URL_ROOT."/comm/card.php?socid=".$object->id; elseif ($object->fournisseur == 1) $url = DOL_URL_ROOT."/fourn/card.php?socid=".$object->id; @@ -658,8 +650,7 @@ if (empty($reshook)) header("Location: ".$url); exit; } - } - else { + } else { $db->rollback(); $action = 'create'; } @@ -675,8 +666,7 @@ if (empty($reshook)) { header("Location: ".$backtopage); exit; - } - else { + } else { header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); exit; } @@ -750,8 +740,7 @@ if (empty($reshook)) if (!$result > 0) { $errors[] = "ErrorFailedToSaveFile"; - } - else { + } else { // Create thumbs $object->addThumbs($newfile); @@ -766,12 +755,10 @@ if (empty($reshook)) } } } - } - else { + } else { $errors[] = "ErrorBadImageFormat"; } - } - else { + } else { switch ($_FILES['photo']['error']) { case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini @@ -805,19 +792,16 @@ if (empty($reshook)) { header("Location: ".$backtopage); exit; - } - else { + } else { header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); exit; } - } - else { + } else { $object->id = $socid; $action = "edit"; } } - } - else { + } else { $action = ($action == 'add' ? 'create' : 'edit'); } } @@ -833,8 +817,7 @@ if (empty($reshook)) { header("Location: ".DOL_URL_ROOT."/societe/list.php?restore_lastsearch_values=1&delsoc=".urlencode($object->name)); exit; - } - else { + } else { $langs->load("errors"); setEventMessages($object->error, $object->errors, 'errors'); $error++; @@ -903,8 +886,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) // ----------------------------------------- $objcanvas->assign_values($action, $object->id, $object->ref); // Set value for templates $objcanvas->display_canvas($action); // Show template -} -else { +} else { // ----------------------------------------- // When used in standard mode // ----------------------------------------- @@ -972,8 +954,7 @@ else { $object->code_client = GETPOST('customer_code', 'alpha'); $object->fournisseur = GETPOST('fournisseur') ?GETPOST('fournisseur') : $object->fournisseur; $object->code_fournisseur = GETPOST('supplier_code', 'alpha'); - } - else { + } else { setEventMessages($langs->trans('NewCustomerSupplierCodeProposed'), '', 'warnings'); } @@ -1044,8 +1025,7 @@ else { if (!$result > 0) { $errors[] = "ErrorFailedToSaveFile"; - } - else { + } else { // Create thumbs $object->addThumbs($newfile); } @@ -1186,8 +1166,7 @@ else { if ($object->particulier || $private) { print ''.$langs->trans('ThirdPartyName').' / '.$langs->trans('LastName', 'name').''; - } - else { + } else { print ''.$form->editfieldkey('ThirdPartyName', 'name', '', $object, 0).''; } print 'global->SOCIETE_USEPREFIX) ? ' colspan="3"' : '').'>'; @@ -1322,8 +1301,7 @@ else { if (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && ($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 || $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 2)) { print ''; - } - elseif ($mysoc->localtax1_assuj == "1") + } elseif ($mysoc->localtax1_assuj == "1") { print ''; - } - elseif ($mysoc->localtax2_assuj == "1") + } elseif ($mysoc->localtax2_assuj == "1") { print ''; @@ -1556,16 +1530,14 @@ else { { print '     '; print ''; - } - else { + } else { print '     '; print ''; } print ''."\n"; print ''."\n"; - } - elseif ($action == 'edit') + } elseif ($action == 'edit') { //print load_fiche_titre($langs->trans("EditCompany")); @@ -1813,8 +1785,7 @@ else { { print ''; print $object->prefix_comm; - } - else { + } else { print ''; } print ''; @@ -1835,12 +1806,10 @@ else { if (empty($tmpcode) && !empty($object->oldcopy->code_client)) $tmpcode = $object->oldcopy->code_client; // When there is an error to update a thirdparty, the number for supplier and customer code is kept to old value. if (empty($tmpcode) && !empty($modCodeClient->code_auto)) $tmpcode = $modCodeClient->getNextValue($object, 0); print ''; - } - elseif ($object->codeclient_modifiable()) + } elseif ($object->codeclient_modifiable()) { print ''; - } - else { + } else { print $object->code_client; print ''; } @@ -1875,12 +1844,10 @@ else { if (empty($tmpcode) && !empty($object->oldcopy->code_fournisseur)) $tmpcode = $object->oldcopy->code_fournisseur; // When there is an error to update a thirdparty, the number for supplier and customer code is kept to old value. if (empty($tmpcode) && !empty($modCodeFournisseur->code_auto)) $tmpcode = $modCodeFournisseur->getNextValue($object, 1); print ''; - } - elseif ($object->codefournisseur_modifiable()) + } elseif ($object->codefournisseur_modifiable()) { print ''; - } - else { + } else { print $object->code_fournisseur; print ''; } @@ -1935,8 +1902,7 @@ else { if (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && ($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 || $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 2)) { print ''; - } - elseif ($mysoc->localtax1_assuj == "1" && $mysoc->localtax2_assuj != "1") + } elseif ($mysoc->localtax1_assuj == "1" && $mysoc->localtax2_assuj != "1") { print ''; - } - elseif ($mysoc->localtax2_assuj == "1" && $mysoc->localtax1_assuj != "1") + } elseif ($mysoc->localtax2_assuj == "1" && $mysoc->localtax1_assuj != "1") { print ''; - } - else { + } else { print ''; } print ''; @@ -2397,8 +2358,7 @@ else { } print ''; } - } - elseif ($mysoc->localtax1_assuj == "1" && $mysoc->localtax2_assuj != "1") + } elseif ($mysoc->localtax1_assuj == "1" && $mysoc->localtax2_assuj != "1") { print ''; } - } - elseif ($mysoc->localtax2_assuj == "1" && $mysoc->localtax1_assuj != "1") + } elseif ($mysoc->localtax2_assuj == "1" && $mysoc->localtax1_assuj != "1") { print ''; @@ -2553,8 +2510,7 @@ else { if ($action != 'editincoterm') { print $form->textwithpicto($object->display_incoterms(), $object->label_incoterms, 1); - } - else { + } else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms) ? $object->location_incoterms : ''), $_SERVER['PHP_SELF'].'?socid='.$object->id); } print ''; @@ -2587,8 +2543,7 @@ else { if ($action == 'editparentcompany') { $form->form_thirdparty($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->parent, 'editparentcompany', 's.rowid <> '.$object->id, 1); - } - else { + } else { $form->form_thirdparty($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->parent, 'none', 's.rowid <> '.$object->id, 1); } print ''; @@ -2610,8 +2565,7 @@ else { { $adh->ref = $adh->getFullName($langs); print $adh->getNomUrl(1); - } - else { + } else { print ''.$langs->trans("ThirdpartyNotLinkedToMember").''; } print ''; @@ -2660,8 +2614,7 @@ else { { $langs->load("mails"); print ''.$langs->trans('SendMail').''; - } - else { + } else { $langs->load("mails"); print ''.$langs->trans('SendMail').''; } @@ -2692,8 +2645,7 @@ else { if ($conf->use_javascript_ajax && empty($conf->dol_use_jmobile)) // We can't use preloaded confirm form with jmobile { print ''.$langs->trans('Delete').''."\n"; - } - else { + } else { print ''.$langs->trans('Delete').''."\n"; } } diff --git a/htdocs/societe/checkvat/checkVatPopup.php b/htdocs/societe/checkvat/checkVatPopup.php index 99e18f036aa..725cab96065 100644 --- a/htdocs/societe/checkvat/checkVatPopup.php +++ b/htdocs/societe/checkvat/checkVatPopup.php @@ -49,8 +49,7 @@ if (!$vatNumber) { print '
'; print ''.$langs->transnoentities("ErrorFieldRequired", $langs->trans("VATIntraShort")).'
'; -} -else { +} else { $vatNumber = preg_replace('/\^\w/', '', $vatNumber); $vatNumber = str_replace(array(' ', '.'), '', $vatNumber); $countryCode = substr($vatNumber, 0, 2); @@ -101,18 +100,15 @@ else { { print ''.$langs->trans("ErrorServiceUnavailableTryLater").'
'; $messagetoshow = $soapclient->response; - } - elseif (preg_match('/TIMEOUT/i', $result['faultstring'])) + } elseif (preg_match('/TIMEOUT/i', $result['faultstring'])) { print ''.$langs->trans("ErrorServiceUnavailableTryLater").'
'; $messagetoshow = $soapclient->response; - } - elseif (preg_match('/SERVER_BUSY/i', $result['faultstring'])) + } elseif (preg_match('/SERVER_BUSY/i', $result['faultstring'])) { print ''.$langs->trans("ErrorServiceUnavailableTryLater").'
'; $messagetoshow = $soapclient->response; - } - elseif ($result['faultstring']) + } elseif ($result['faultstring']) { print ''.$langs->trans("Error").'
'; $messagetoshow = $result['faultstring']; @@ -125,8 +121,7 @@ else { print $langs->trans("VATIntraSyntaxIsValid").': '.$langs->trans("No").' (Might be a non europeen VAT)
'; print $langs->trans("ValueIsValid").': '.$langs->trans("No").' (Might be a non europeen VAT)
'; //$messagetoshow=$soapclient->response; - } - else { + } else { // Syntaxe ok if ($result['requestDate']) print $langs->trans("Date").': '.$result['requestDate'].'
'; print $langs->trans("VATIntraSyntaxIsValid").': '.$langs->trans("Yes").'
'; @@ -134,16 +129,14 @@ else { if (preg_match('/MS_UNAVAILABLE/i', $result['faultstring'])) { print ''.$langs->trans("ErrorVATCheckMS_UNAVAILABLE", $countryCode).'
'; - } - else { + } else { if (!empty($result['valid']) && ($result['valid'] == 1 || $result['valid'] == 'true')) { print ''.$langs->trans("Yes").''; print '
'; print $langs->trans("Name").': '.$result['name'].'
'; print $langs->trans("Address").': '.$result['address'].'
'; - } - else { + } else { print ''.$langs->trans("No").''; print '
'."\n"; } diff --git a/htdocs/societe/class/api_contacts.class.php b/htdocs/societe/class/api_contacts.class.php index bfaed41f21b..37d9239265f 100644 --- a/htdocs/societe/class/api_contacts.class.php +++ b/htdocs/societe/class/api_contacts.class.php @@ -208,8 +208,7 @@ class Contacts extends DolibarrApi $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieve contacts : '.$sql); } if (!count($obj_ret)) diff --git a/htdocs/societe/class/api_thirdparties.class.php b/htdocs/societe/class/api_thirdparties.class.php index 3ec6243a2c7..ca3e4385837 100644 --- a/htdocs/societe/class/api_thirdparties.class.php +++ b/htdocs/societe/class/api_thirdparties.class.php @@ -143,9 +143,7 @@ class Thirdparties extends DolibarrApi // Select thirdparties of given category if ($category > 0) { - if (!empty($mode) && $mode != 4) { $sql .= " AND c.fk_categorie = ".$db->escape($category)." AND c.fk_soc = t.rowid"; } - elseif (!empty($mode) && $mode == 4) { $sql .= " AND cc.fk_categorie = ".$db->escape($category)." AND cc.fk_soc = t.rowid"; } - else { $sql .= " AND ((c.fk_categorie = ".$db->escape($category)." AND c.fk_soc = t.rowid) OR (cc.fk_categorie = ".$db->escape($category)." AND cc.fk_soc = t.rowid))"; } + if (!empty($mode) && $mode != 4) { $sql .= " AND c.fk_categorie = ".$db->escape($category)." AND c.fk_soc = t.rowid"; } elseif (!empty($mode) && $mode == 4) { $sql .= " AND cc.fk_categorie = ".$db->escape($category)." AND cc.fk_soc = t.rowid"; } else { $sql .= " AND ((c.fk_categorie = ".$db->escape($category)." AND c.fk_soc = t.rowid) OR (cc.fk_categorie = ".$db->escape($category)." AND cc.fk_soc = t.rowid))"; } } if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= " AND t.rowid = sc.fk_soc"; @@ -195,8 +193,7 @@ class Thirdparties extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieve thirdparties : '.$db->lasterror()); } if (!count($obj_ret)) { @@ -466,8 +463,7 @@ class Thirdparties extends DolibarrApi $db->rollback(); throw new RestException(500, 'Error failed to merged thirdparty '.$this->companytoremove->id.' into '.$id.'. Enable and read log file for more information.'); - } - else { + } else { $db->commit(); } @@ -1104,8 +1100,7 @@ class Thirdparties extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(404, 'Account not found'); } @@ -1311,8 +1306,7 @@ class Thirdparties extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(404, 'Bank account not found'); } @@ -1328,8 +1322,7 @@ class Thirdparties extends DolibarrApi if ($result > 0) { return array("success" => $result); - } - else { + } else { throw new RestException(500); } } diff --git a/htdocs/societe/class/client.class.php b/htdocs/societe/class/client.class.php index 803d0ddebe3..3b289547f8d 100644 --- a/htdocs/societe/class/client.class.php +++ b/htdocs/societe/class/client.class.php @@ -83,8 +83,7 @@ class Client extends Societe } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->lasterror(); return -1; diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php index 00737c04504..283c32573e0 100644 --- a/htdocs/societe/class/companybankaccount.class.php +++ b/htdocs/societe/class/companybankaccount.class.php @@ -111,17 +111,14 @@ class CompanyBankAccount extends Account if (!$error) { return 1; - } - else { + } else { return 0; } - } - else { + } else { return 1; } } - } - else { + } else { print $this->db->error(); return 0; } @@ -179,16 +176,13 @@ class CompanyBankAccount extends Account if (!$error) { return 1; - } - else { + } else { return -1; } - } - else { + } else { return 1; } - } - else { + } else { dol_print_error($this->db); return -1; } @@ -251,8 +245,7 @@ class CompanyBankAccount extends Account $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -299,8 +292,7 @@ class CompanyBankAccount extends Account { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1 * $error; } @@ -345,8 +337,7 @@ class CompanyBankAccount extends Account if ($this->db->num_rows($result1) == 0) { return 0; - } - else { + } else { $obj = $this->db->fetch_object($result1); $this->db->begin(); @@ -366,14 +357,12 @@ class CompanyBankAccount extends Account dol_print_error($this->db); $this->db->rollback(); return -1; - } - else { + } else { $this->db->commit(); return 1; } } - } - else { + } else { dol_print_error($this->db); return -1; } diff --git a/htdocs/societe/class/companypaymentmode.class.php b/htdocs/societe/class/companypaymentmode.class.php index ca75b904b11..93f0d13b498 100644 --- a/htdocs/societe/class/companypaymentmode.class.php +++ b/htdocs/societe/class/companypaymentmode.class.php @@ -404,8 +404,7 @@ class CompanyPaymentMode extends CommonObject } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; @@ -439,8 +438,7 @@ class CompanyPaymentMode extends CommonObject if ($this->db->num_rows($result1) == 0) { return 0; - } - else { + } else { $obj = $this->db->fetch_object($result1); $type = ''; @@ -465,14 +463,12 @@ class CompanyPaymentMode extends CommonObject dol_print_error($this->db); $this->db->rollback(); return -1; - } - else { + } else { $this->db->commit(); return 1; } } - } - else { + } else { dol_print_error($this->db); return -1; } @@ -562,8 +558,7 @@ class CompanyPaymentMode extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index e2b24577bf9..03290f1581d 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -818,36 +818,31 @@ class Societe extends CommonObject $result = $this->call_trigger('COMPANY_CREATE', $user); if ($result < 0) $error++; // End call triggers - } - else $error++; + } else $error++; if (!$error) { dol_syslog(get_class($this)."::Create success id=".$this->id); $this->db->commit(); return $this->id; - } - else { + } else { dol_syslog(get_class($this)."::Create echec update ".$this->error." ".join(',', $this->errors), LOG_ERR); $this->db->rollback(); return -4; } - } - else { + } else { if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $this->error = $langs->trans("ErrorCompanyNameAlreadyExists", $this->name); // duplicate on a field (code or profid or ...) $result = -1; - } - else { + } else { $this->error = $this->db->lasterror(); $result = -2; } $this->db->rollback(); return $result; } - } - else { + } else { $this->db->rollback(); dol_syslog(get_class($this)."::Create fails verify ".join(',', $this->errors), LOG_WARNING); return -3; @@ -925,16 +920,13 @@ class Societe extends CommonObject if ($rescode == -1) { $this->errors[] = 'ErrorBadCustomerCodeSyntax'; - } - elseif ($rescode == -2) + } elseif ($rescode == -2) { $this->errors[] = 'ErrorCustomerCodeRequired'; - } - elseif ($rescode == -3) + } elseif ($rescode == -3) { $this->errors[] = 'ErrorCustomerCodeAlreadyUsed'; - } - elseif ($rescode == -4) + } elseif ($rescode == -4) { $this->errors[] = 'ErrorPrefixRequired'; } @@ -950,16 +942,13 @@ class Societe extends CommonObject if ($rescode == -1) { $this->errors[] = 'ErrorBadSupplierCodeSyntax'; - } - elseif ($rescode == -2) + } elseif ($rescode == -2) { $this->errors[] = 'ErrorSupplierCodeRequired'; - } - elseif ($rescode == -3) + } elseif ($rescode == -3) { $this->errors[] = 'ErrorSupplierCodeAlreadyUsed'; - } - elseif ($rescode == -5) + } elseif ($rescode == -5) { $this->errors[] = 'ErrorPrefixRequired'; } @@ -1002,8 +991,7 @@ class Societe extends CommonObject $this->errors[] = $langs->transcountry('ProfId'.$i, $this->country_code)." ".$langs->trans("ErrorProdIdAlreadyExist", $vallabel).' ('.$langs->trans("ForbiddenBySetupRules").')'; } } - } - else { + } else { //var_dump($conf->global->SOCIETE_EMAIL_UNIQUE); //var_dump($conf->global->SOCIETE_EMAIL_MANDATORY); if ($key == 'EMAIL') @@ -1248,20 +1236,16 @@ class Societe extends CommonObject if ($this->localtax1_value != '') { $sql .= ",localtax1_value =".$this->localtax1_value; - } - else $sql .= ",localtax1_value =0.000"; - } - else $sql .= ",localtax1_value =0.000"; + } else $sql .= ",localtax1_value =0.000"; + } else $sql .= ",localtax1_value =0.000"; if ($this->localtax2_assuj == 1) { if ($this->localtax2_value != '') { $sql .= ",localtax2_value =".$this->localtax2_value; - } - else $sql .= ",localtax2_value =0.000"; - } - else $sql .= ",localtax2_value =0.000"; + } else $sql .= ",localtax2_value =0.000"; + } else $sql .= ",localtax2_value =0.000"; $sql .= ",capital = ".($this->capital == '' ? "null" : $this->capital); @@ -1331,8 +1315,7 @@ class Societe extends CommonObject unset($this->state_code); unset($this->state); } - } - else { + } else { unset($this->country_code); // We clean this, in the doubt, because it may have been changed after an update of country_id unset($this->country); unset($this->state_code); @@ -1375,8 +1358,7 @@ class Societe extends CommonObject dol_syslog(get_class($this)."::update ".$this->error, LOG_ERR); $error++; } - } - elseif ($result < 0) + } elseif ($result < 0) { $this->error = $lmember->error; $error++; @@ -1418,28 +1400,24 @@ class Societe extends CommonObject dol_syslog(get_class($this)."::Update success"); $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { // Doublon $this->error = $langs->trans("ErrorDuplicateField"); $result = -1; - } - else { + } else { $this->error = $this->db->lasterror(); $result = -2; } $this->db->rollback(); return $result; } - } - else { + } else { $this->db->rollback(); dol_syslog(get_class($this)."::Update fails verify ".join(',', $this->errors), LOG_WARNING); return -3; @@ -1531,8 +1509,7 @@ class Societe extends CommonObject $this->error = 'Fetch found several records. Rename one of thirdparties to avoid duplicate.'; dol_syslog($this->error, LOG_ERR); $result = -2; - } - elseif ($num) // $num = 1 + } elseif ($num) // $num = 1 { $obj = $this->db->fetch_object($resql); @@ -1664,14 +1641,12 @@ class Societe extends CommonObject // fetch optionals attributes and labels $this->fetch_optionals(); - } - else { + } else { $result = 0; } $this->db->free($resql); - } - else { + } else { $this->error = $this->db->lasterror(); $result = -3; } @@ -1809,14 +1784,12 @@ class Societe extends CommonObject } return 1; - } - else { + } else { dol_syslog($this->error, LOG_ERR); $this->db->rollback(); return -1; } - } - else dol_syslog("Can't remove thirdparty with id ".$id.". There is ".$objectisused." childs", LOG_WARNING); + } else dol_syslog("Can't remove thirdparty with id ".$id.". There is ".$objectisused." childs", LOG_WARNING); return 0; } @@ -1842,8 +1815,7 @@ class Societe extends CommonObject { $this->client = $newclient; return 1; - } - else return -1; + } else return -1; } return 0; } @@ -2037,13 +2009,11 @@ class Societe extends CommonObject if ($result > 0) { return $result; - } - else { + } else { $this->error = $discount->error; return -3; } - } - else return 0; + } else return 0; } /** @@ -2064,8 +2034,7 @@ class Societe extends CommonObject if ($result >= 0) { return $result; - } - else { + } else { $this->error = $discountstatic->error; return -1; } @@ -2092,8 +2061,7 @@ class Societe extends CommonObject $sql .= " WHERE ((ug.fk_user = sc.fk_user"; $sql .= " AND ug.entity = ".$conf->entity.")"; $sql .= " OR u.admin = 1)"; - } - else $sql .= " WHERE entity in (0, ".$conf->entity.")"; + } else $sql .= " WHERE entity in (0, ".$conf->entity.")"; $sql .= " AND u.rowid = sc.fk_user AND sc.fk_soc = ".$this->id; @@ -2119,15 +2087,13 @@ class Societe extends CommonObject $reparray[$i]['entity'] = $obj->entity; $reparray[$i]['login'] = $obj->login; $reparray[$i]['photo'] = $obj->photo; - } - else { + } else { $reparray[] = $obj->rowid; } $i++; } return $reparray; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -2231,8 +2197,7 @@ class Societe extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } @@ -2316,8 +2281,7 @@ class Societe extends CommonObject if ($conf->global->SOCIETE_ADD_REF_IN_LIST == 1) { $name = $code.' '.$name; - } - else { + } else { $name = $code; } } @@ -2332,8 +2296,7 @@ class Societe extends CommonObject $label .= '
'; $label .= Form::showphoto('societe', $this, 0, 40, 0, '', 'mini', 0); // Important, we must force height so image will have height tags and if image is inside a tooltip, the tooltip manager can calculate height and position correctly the tooltip. $label .= '
'; - } - elseif (!empty($this->logo_squarred) && class_exists('Form')) + } elseif (!empty($this->logo_squarred) && class_exists('Form')) { /*$label.= '
'; $label.= Form::showphoto('societe', $this, 0, 40, 0, 'photowithmargin', 'mini', 0); // Important, we must force height so image will have height tags and if image is inside a tooltip, the tooltip manager can calculate height and position correctly the tooltip. @@ -2346,38 +2309,31 @@ class Societe extends CommonObject { $label .= ''.$langs->trans("ShowCustomer").''; $linkstart = ''; $linkstart = ''; $linkstart = ''; $linkstart = ''; $linkstart = ''; $linkstart = ''; $linkstart = ''; $linkstart = 'poste : "").(($mode != 'poste' && $property) ? " ".$sepa.$property.$sepb : ''); - } - else { + } else { $contact_property[$obj->rowid] = trim(dolGetFirstLastname($obj->firstname, $obj->lastname)).(($mode != 'poste' && $property) ? " ".$sepa.$property.$sepb : ''); } } $i++; } } - } - else { + } else { dol_print_error($this->db); } return $contact_property; @@ -2651,8 +2605,7 @@ class Societe extends CommonObject $i++; } } - } - else { + } else { dol_print_error($this->db); } return $contacts; @@ -2687,8 +2640,7 @@ class Societe extends CommonObject $i++; } } - } - else { + } else { dol_print_error($this->db); } return $contacts; @@ -2726,8 +2678,7 @@ class Societe extends CommonObject elseif ($mode == 'mobile') $contact_property = $obj->phone_mobile; } return $contact_property; - } - else { + } else { dol_print_error($this->db); } } @@ -2751,8 +2702,7 @@ class Societe extends CommonObject if ($mode == 'label') { return $bac->getRibLabel(true); - } - elseif ($mode == 'rum') + } elseif ($mode == 'rum') { if (empty($bac->rum)) { @@ -2762,8 +2712,7 @@ class Societe extends CommonObject $bac->rum = $prelevement->buildRumNumber($bac->thirdparty->code_client, $bac->datec, $bac->id); } return $bac->rum; - } - elseif ($mode == 'format') + } elseif ($mode == 'format') { return $bac->frstrecur; } @@ -2893,8 +2842,7 @@ class Societe extends CommonObject if ($mod->code_modifiable_invalide && $this->check_codeclient() < 0) return 1; if ($mod->code_modifiable) return 1; // A mettre en dernier return 0; - } - else { + } else { return 0; } } @@ -2928,8 +2876,7 @@ class Societe extends CommonObject if ($mod->code_modifiable_invalide && $this->check_codefournisseur() < 0) return 1; if ($mod->code_modifiable) return 1; // A mettre en dernier return 0; - } - else { + } else { return 0; } } @@ -2965,8 +2912,7 @@ class Societe extends CommonObject dol_syslog(get_class($this)."::check_codeclient code_client=".$this->code_client." module=".$module); $result = $mod->verif($this->db, $this->code_client, $this, 0); return $result; - } - else { + } else { return 0; } } @@ -3001,8 +2947,7 @@ class Societe extends CommonObject dol_syslog(get_class($this)."::check_codefournisseur code_fournisseur=".$this->code_fournisseur." module=".$module); $result = $mod->verif($this->db, $this->code_fournisseur, $this, 1); return $result; - } - else { + } else { return 0; } } @@ -3043,13 +2988,11 @@ class Societe extends CommonObject elseif ($type == 'supplier') $this->code_compta_fournisseur = $mod->code; return $result; - } - else { + } else { $this->error = 'ErrorAccountancyCodeNotDefined'; return -1; } - } - else { + } else { if ($type == 'customer') $this->code_compta = ''; elseif ($type == 'supplier') $this->code_compta_fournisseur = ''; @@ -3078,12 +3021,10 @@ class Societe extends CommonObject { $this->parent = $id; return 1; - } - else { + } else { return -1; } - } - else return -1; + } else return -1; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps @@ -3173,8 +3114,7 @@ class Societe extends CommonObject { $obj = $this->db->fetch_object($resql); $count = $obj->idprof; - } - else { + } else { $count = 0; print $this->db->error(); } @@ -3324,8 +3264,7 @@ class Societe extends CommonObject //Check NIF if (preg_match('/(^[0-9]{9}$)/', $string)) { return 1; - } - else { + } else { return -1; } } @@ -3379,8 +3318,7 @@ class Societe extends CommonObject if ($url) { return ''.$langs->trans("Check").''; } - } - else { + } else { return $hookmanager->resPrint; } @@ -3402,8 +3340,7 @@ class Societe extends CommonObject { $obj = $this->db->fetch_object($resql); $count = $obj->numproj; - } - else { + } else { $count = 0; print $this->db->error(); } @@ -3452,8 +3389,7 @@ class Societe extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -3471,11 +3407,9 @@ class Societe extends CommonObject $isacompany = empty($conf->global->MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES) ? 0 : 1; // 0 by default if (!empty($this->tva_intra)) { $isacompany = 1; - } - elseif (!empty($this->idprof1) || !empty($this->idprof2) || !empty($this->idprof3) || !empty($this->idprof4) || !empty($this->idprof5) || !empty($this->idprof6)) { + } elseif (!empty($this->idprof1) || !empty($this->idprof2) || !empty($this->idprof3) || !empty($this->idprof4) || !empty($this->idprof5) || !empty($this->idprof6)) { $isacompany = 1; - } - elseif (!empty($this->typent_code) && $this->typent_code != 'TE_UNKNOWN') + } elseif (!empty($this->typent_code) && $this->typent_code != 'TE_UNKNOWN') { // TODO Add a field is_a_company into dictionary if (preg_match('/^TE_PRIVATE/', $this->typent_code)) $isacompany = 0; @@ -3518,8 +3452,7 @@ class Societe extends CommonObject $this->SupplierCategories[$obj->rowid] = $obj->label; } return 0; - } - else { + } else { return -1; } } @@ -3540,8 +3473,7 @@ class Societe extends CommonObject $sql .= " VALUES (".$categorie_id.", ".$this->id.")"; if ($resql = $this->db->query($sql)) return 0; - } - else { + } else { return 0; } return -1; @@ -3603,15 +3535,13 @@ class Societe extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; } - } - else { + } else { // $this->error deja positionne dol_syslog(get_class($this)."::create_from_member - 2 - ".$this->error." - ".join(',', $this->errors), LOG_ERR); @@ -3652,8 +3582,7 @@ class Societe extends CommonObject { $country_code = $tmp[1]; $country_label = $tmp[2]; - } - else // For backward compatibility + } else // For backward compatibility { dol_syslog("Your country setup use an old syntax. Reedit it using setup area.", LOG_WARNING); include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -3677,8 +3606,7 @@ class Societe extends CommonObject { $state_code = $tmp[1]; $state_label = $tmp[2]; - } - else // For backward compatibility + } else // For backward compatibility { dol_syslog("Your state setup use an old syntax. Reedit it using setup area.", LOG_ERR); include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -3816,8 +3744,7 @@ class Societe extends CommonObject if ($resql) { return ($this->db->num_rows($resql) > 0); - } - else return false; + } else return false; } /** @@ -3837,8 +3764,7 @@ class Societe extends CommonObject if ($resql) { return ($this->db->num_rows($resql) > 0); - } - else return false; + } else return false; } /** @@ -3860,8 +3786,7 @@ class Societe extends CommonObject { $obj = $this->db->fetch_object($resql); return (($obj->nb > 0) ?true:false); - } - else { + } else { $this->error = $this->db->lasterror(); return false; } @@ -4026,8 +3951,7 @@ class Societe extends CommonObject } } return array('opened'=>$outstandingOpened, 'total_ht'=>$outstandingTotal, 'total_ttc'=>$outstandingTotalIncTax); // 'opened' is 'incl taxes' - } - else return array(); + } else return array(); } /** @@ -4065,8 +3989,7 @@ class Societe extends CommonObject } } return array('opened'=>$outstandingOpened, 'total_ht'=>$outstandingTotal, 'total_ttc'=>$outstandingTotalIncTax); // 'opened' is 'incl taxes' - } - else return array(); + } else return array(); } /** @@ -4107,8 +4030,7 @@ class Societe extends CommonObject { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; $tmpobject = new FactureFournisseur($this->db); - } - else { + } else { require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; $tmpobject = new Facture($this->db); } @@ -4143,8 +4065,7 @@ class Societe extends CommonObject } } return array('opened'=>$outstandingOpened, 'total_ht'=>$outstandingTotal, 'total_ttc'=>$outstandingTotalIncTax); // 'opened' is 'incl taxes' - } - else { + } else { return array(); } } @@ -4203,16 +4124,14 @@ class Societe extends CommonObject $result = $companybankaccount->fetch($moreparams['use_companybankid']); if (!$result) dol_print_error($this->db, $companybankaccount->error, $companybankaccount->errors); $result = $companybankaccount->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams); - } - else { + } else { // Positionne le modele sur le nom du modele a utiliser if (!dol_strlen($modele)) { if (!empty($conf->global->COMPANY_ADDON_PDF)) { $modele = $conf->global->COMPANY_ADDON_PDF; - } - else { + } else { print $langs->trans("Error")." ".$langs->trans("Error_COMPANY_ADDON_PDF_NotDefined"); return 0; } diff --git a/htdocs/societe/class/societeaccount.class.php b/htdocs/societe/class/societeaccount.class.php index 1f99e9bae8a..ba32086cc4d 100644 --- a/htdocs/societe/class/societeaccount.class.php +++ b/htdocs/societe/class/societeaccount.class.php @@ -433,8 +433,7 @@ class SocieteAccount extends CommonObject } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } - else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); + } else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; @@ -477,33 +476,27 @@ class SocieteAccount extends CommonObject $prefix = ''; if ($status == 1) return $langs->trans('Enabled'); elseif ($status == 0) return $langs->trans('Disabled'); - } - elseif ($mode == 1) + } elseif ($mode == 1) { if ($status == 1) return $langs->trans('Enabled'); elseif ($status == 0) return $langs->trans('Disabled'); - } - elseif ($mode == 2) + } elseif ($mode == 2) { if ($status == 1) return img_picto($langs->trans('Enabled'), 'statut4').' '.$langs->trans('Enabled'); elseif ($status == 0) return img_picto($langs->trans('Disabled'), 'statut5').' '.$langs->trans('Disabled'); - } - elseif ($mode == 3) + } elseif ($mode == 3) { if ($status == 1) return img_picto($langs->trans('Enabled'), 'statut4'); elseif ($status == 0) return img_picto($langs->trans('Disabled'), 'statut5'); - } - elseif ($mode == 4) + } elseif ($mode == 4) { if ($status == 1) return img_picto($langs->trans('Enabled'), 'statut4').' '.$langs->trans('Enabled'); elseif ($status == 0) return img_picto($langs->trans('Disabled'), 'statut5').' '.$langs->trans('Disabled'); - } - elseif ($mode == 5) + } elseif ($mode == 5) { if ($status == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'), 'statut4'); elseif ($status == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'), 'statut5'); - } - elseif ($mode == 6) + } elseif ($mode == 6) { if ($status == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'), 'statut4'); elseif ($status == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'), 'statut5'); @@ -556,8 +549,7 @@ class SocieteAccount extends CommonObject } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php index 2660625bd1c..312835e1a80 100644 --- a/htdocs/societe/consumption.php +++ b/htdocs/societe/consumption.php @@ -427,8 +427,7 @@ if ($sql_select) if ($type_element == 'contract') { print $documentstaticline->getLibStatut(2); - } - else { + } else { print $documentstatic->getLibStatut(2); } print ''; @@ -470,8 +469,7 @@ if ($sql_select) } $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $objp->product_label; - } - else { + } else { $label = $objp->product_label; } @@ -505,27 +503,23 @@ if ($sql_select) $discount = new DiscountAbsolute($db); $discount->fetch($objp->fk_remise_except); echo ($txt ? ' - ' : '').$langs->transnoentities("DiscountFromExcessReceived", $discount->getNomUrl(0)); - } - elseif ($objp->description == '(EXCESS PAID)' && $objp->fk_remise_except > 0) + } elseif ($objp->description == '(EXCESS PAID)' && $objp->fk_remise_except > 0) { $discount = new DiscountAbsolute($db); $discount->fetch($objp->fk_remise_except); echo ($txt ? ' - ' : '').$langs->transnoentities("DiscountFromExcessPaid", $discount->getNomUrl(0)); - } - elseif ($objp->description == '(DEPOSIT)' && $objp->fk_remise_except > 0) + } elseif ($objp->description == '(DEPOSIT)' && $objp->fk_remise_except > 0) { $discount = new DiscountAbsolute($db); $discount->fetch($objp->fk_remise_except); echo ($txt ? ' - ' : '').$langs->transnoentities("DiscountFromDeposit", $discount->getNomUrl(0)); // Add date of deposit if (!empty($conf->global->INVOICE_ADD_DEPOSIT_DATE)) echo ' ('.dol_print_date($discount->datec).')'; - } - else { + } else { echo ($txt ? ' - ' : '').dol_htmlentitiesbr($objp->description); } } - } - else { + } else { if ($objp->fk_product > 0) { echo $form->textwithtooltip($text, $description, 3, '', '', $i, 0, ''); @@ -603,8 +597,7 @@ if ($sql_select) print_barre_liste('', $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num); } $db->free($resql); -} -elseif (empty($type_element) || $type_element == -1) +} elseif (empty($type_element) || $type_element == -1) { print_barre_liste($langs->trans('ProductsIntoElements').' '.$typeElementString.' '.$button, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, '', ''); @@ -621,8 +614,7 @@ elseif (empty($type_element) || $type_element == -1) print '
'; print "
'; -if ($mesg) { print $mesg; } -else { +if ($mesg) { print $mesg; } else { print $px1->show(); print "
\n"; print $px2->show(); diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index 307b903787e..21ee679292a 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -53,8 +53,7 @@ if ($action == 'setcodeclient') { header("Location: ".$_SERVER["PHP_SELF"]); exit; - } - else { + } else { dol_print_error($db); } } @@ -65,8 +64,7 @@ if ($action == 'setcodecompta') { header("Location: ".$_SERVER["PHP_SELF"]); exit; - } - else { + } else { dol_print_error($db); } } @@ -81,8 +79,7 @@ if ($action == 'updateoptions') if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -95,8 +92,7 @@ if ($action == 'updateoptions') if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -109,8 +105,7 @@ if ($action == 'updateoptions') if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -172,8 +167,7 @@ if ($action == 'setdoc') if ($result1 && $result2) { $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -186,8 +180,7 @@ if ($action == "setaddrefinlist") { if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -200,8 +193,7 @@ if ($action == "setaddadressinlist") { if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -214,8 +206,7 @@ if ($action == "setaskforshippingmet") { if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -228,8 +219,7 @@ if ($action == "setdisableprospectcustomer") { if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -244,8 +234,7 @@ if ($action == 'setprofid') { //header("Location: ".$_SERVER["PHP_SELF"]); //exit; - } - else { + } else { dol_print_error($db); } } @@ -260,8 +249,7 @@ if ($action == 'setprofidmandatory') { //header("Location: ".$_SERVER["PHP_SELF"]); //exit; - } - else { + } else { dol_print_error($db); } } @@ -276,8 +264,7 @@ if ($action == 'setprofidinvoicemandatory') { //header("Location: ".$_SERVER["PHP_SELF"]); //exit; - } - else { + } else { dol_print_error($db); } } @@ -291,8 +278,7 @@ if ($action == 'sethideinactivethirdparty') { header("Location: ".$_SERVER["PHP_SELF"]); exit; - } - else { + } else { dol_print_error($db); } } @@ -303,8 +289,7 @@ if ($action == 'setonsearchandlistgooncustomerorsuppliercard') { if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -363,8 +348,7 @@ foreach ($dirsociete as $dirroot) try { dol_include_once($dirroot.$file.'.php'); - } - catch (Exception $e) + } catch (Exception $e) { dol_syslog($e->getMessage(), LOG_ERR); } @@ -396,8 +380,7 @@ foreach ($arrayofmodules as $file => $modCodeTiers) print '
'."\n"; print img_picto($langs->trans("Activated"), 'switch_on'); print "'; if (!$disabled) print ''; @@ -450,8 +433,7 @@ foreach ($dirsociete as $dirroot) try { dol_include_once($dirroot.$file.'.php'); - } - catch (Exception $e) + } catch (Exception $e) { dol_syslog($e->getMessage(), LOG_ERR); } @@ -481,8 +463,7 @@ foreach ($arrayofmodules as $file => $modCodeCompta) print ''; print img_picto($langs->trans("Activated"), 'switch_on'); print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print '\n"; print img_picto(dol_escape_htmltag($langs->trans("ErrorModuleRequirePHPVersion", join('.', $module->phpmin))), 'switch_off'); print "\n"; print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'; print img_picto($langs->trans("Activated"), 'switch_on'); print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; print img_picto($langs->trans("Activated"), 'switch_on'); print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; print img_picto($langs->trans("Activated"), 'switch_on'); print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; print $langs->trans("NotAvailableWhenAjaxDisabled"); print "'; $arrval = array('0'=>$langs->trans("No"), '1'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch", 1).')', @@ -782,8 +754,7 @@ if (!$conf->use_javascript_ajax) print ''; print $langs->trans("NotAvailableWhenAjaxDisabled"); print "'; $arrval = array('0'=>$langs->trans("No"), '1'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch", 1).')', @@ -807,8 +778,7 @@ if (!empty($conf->global->SOCIETE_ADD_REF_IN_LIST)) { print ''; print img_picto($langs->trans("Activated"), 'switch_on'); -} -else { +} else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } @@ -823,8 +793,7 @@ if (!empty($conf->global->COMPANY_SHOW_ADDRESS_SELECTLIST)) { print ''; print img_picto($langs->trans("Activated"), 'switch_on'); -} -else { +} else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } @@ -841,8 +810,7 @@ if (!empty($conf->global->SOCIETE_ASK_FOR_SHIPPING_METHOD)) { print ''; print img_picto($langs->trans("Activated"), 'switch_on'); -} -else { +} else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } @@ -858,8 +826,7 @@ if (!empty($conf->global->SOCIETE_DISABLE_PROSPECTSCUSTOMERS)) { print ''; print img_picto($langs->trans("Activated"), 'switch_on'); -} -else { +} else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } diff --git a/htdocs/societe/agenda.php b/htdocs/societe/agenda.php index 4142231261d..61d473f5c43 100644 --- a/htdocs/societe/agenda.php +++ b/htdocs/societe/agenda.php @@ -38,8 +38,7 @@ if (GETPOST('actioncode', 'array')) { $actioncode = GETPOST('actioncode', 'array', 3); if (!count($actioncode)) $actioncode = '0'; -} -else { +} else { $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); } $search_agenda_label = GETPOST('search_agenda_label'); diff --git a/htdocs/societe/ajax/company.php b/htdocs/societe/ajax/company.php index 1622b81384d..dc2d60df5e6 100644 --- a/htdocs/societe/ajax/company.php +++ b/htdocs/societe/ajax/company.php @@ -67,8 +67,7 @@ if (!empty($action) && $action == 'fetch' && !empty($id)) } echo json_encode($outjson); -} -else { +} else { require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; $langs->load("companies"); diff --git a/htdocs/societe/ajaxcompanies.php b/htdocs/societe/ajaxcompanies.php index 0558d7d31c8..b98a5f75d5b 100644 --- a/htdocs/societe/ajaxcompanies.php +++ b/htdocs/societe/ajaxcompanies.php @@ -71,8 +71,7 @@ if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) $sql .= "nom LIKE '".$db->escape($socid)."%'"; $sql .= " OR code_client LIKE '".$db->escape($socid)."%'"; $sql .= " OR code_fournisseur LIKE '".$db->escape($socid)."%'"; - } - else { + } else { $sql .= "nom LIKE '%".$db->escape($socid)."%'"; $sql .= " OR code_client LIKE '%".$db->escape($socid)."%'"; $sql .= " OR code_fournisseur LIKE '%".$db->escape($socid)."%'"; @@ -99,11 +98,9 @@ if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) } echo json_encode($return_arr); - } - else { + } else { echo json_encode(array('nom'=>'Error', 'label'=>'Error', 'key'=>'Error', 'value'=>'Error')); } -} -else { +} else { echo json_encode(array('nom'=>'ErrorBadParameter', 'label'=>'ErrorBadParameter', 'key'=>'ErrorBadParameter', 'value'=>'ErrorBadParameter')); } diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index 0cd103a2855..fa650a4e1fd 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -244,22 +244,19 @@ abstract class ActionsCardCommon $this->tpl['localtax'] .= ''.$langs->trans("LocalTax2IsUsedES").''; $this->tpl['localtax'] .= $form->selectyesno('localtax2assuj_value', $this->object->localtax1_assuj, 1); $this->tpl['localtax'] .= '
'.$langs->trans("LocalTax1IsUsedES").''; $this->tpl['localtax'] .= $form->selectyesno('localtax1assuj_value', $this->object->localtax1_assuj, 1); $this->tpl['localtax'] .= '
'.$langs->trans("LocalTax2IsUsedES").''; $this->tpl['localtax'] .= $form->selectyesno('localtax2assuj_value', $this->object->localtax1_assuj, 1); $this->tpl['localtax'] .= '
'.yn($this->object->localtax1_assuj).''.$langs->trans("LocalTax2IsUsedES").''.yn($this->object->localtax2_assuj).'
'.$langs->trans("LocalTax1IsUsedES").''.yn($this->object->localtax1_assuj).'
'.$langs->trans("LocalTax2IsUsedES").''.yn($this->object->localtax2_assuj).'
'.$form->editfieldkey('Region-State', 'state_id', '', $object, 0).''; - } - else { + } else { print '
'.$form->editfieldkey('State', 'state_id', '', $object, 0).''; } @@ -1411,8 +1389,7 @@ else { print "\n"; $s .= ''.$langs->trans("VATIntraCheck").''; $s = $form->textwithpicto($s, $langs->trans("VATIntraCheckDesc", $langs->transnoentitiesnoconv("VATIntraCheck")), 1); - } - else { + } else { $s .= 'country_id).'" target="_blank">'.img_picto($langs->trans("VATIntraCheckableOnEUSite"), 'help').''; } } @@ -1431,14 +1408,12 @@ else { print ''.$langs->transcountry("LocalTax2IsUsed", $mysoc->country_code).''; print $form->selectyesno('localtax2assuj_value', (isset($conf->global->THIRDPARTY_DEFAULT_USELOCALTAX2) ? $conf->global->THIRDPARTY_DEFAULT_USELOCALTAX2 : 0), 1); print '
'.$langs->transcountry("LocalTax1IsUsed", $mysoc->country_code).''; print $form->selectyesno('localtax1assuj_value', (isset($conf->global->THIRDPARTY_DEFAULT_USELOCALTAX1) ? $conf->global->THIRDPARTY_DEFAULT_USELOCALTAX1 : 0), 1); print '
'.$langs->transcountry("LocalTax2IsUsed", $mysoc->country_code).''; print $form->selectyesno('localtax2assuj_value', (isset($conf->global->THIRDPARTY_DEFAULT_USELOCALTAX2) ? $conf->global->THIRDPARTY_DEFAULT_USELOCALTAX2 : 0), 1); @@ -1463,8 +1438,7 @@ else { if ($object->country_id) { print $formcompany->select_juridicalstatus($object->forme_juridique_code, $object->country_code, '', 'forme_juridique_code'); - } - else { + } else { print $countrynotdefined; } print '
'.$form->editfieldkey('Region-State', 'state_id', '', $object, 0).''; - } - else { + } else { print '
'.$form->editfieldkey('State', 'state_id', '', $object, 0).''; } @@ -2022,8 +1988,7 @@ else { print ''; } print '
'.$form->editfieldkey($langs->transcountry("LocalTax1IsUsed", $mysoc->country_code), 'localtax1assuj_value', '', $object, 0).''; print $form->selectyesno('localtax1assuj_value', $object->localtax1_assuj, 1); @@ -2034,8 +1999,7 @@ else { print ''; } print '
'.$form->editfieldkey($langs->transcountry("LocalTax2IsUsed", $mysoc->country_code), 'localtax2assuj_value', '', $object, 0).''; print $form->selectyesno('localtax2assuj_value', $object->localtax2_assuj, 1); @@ -2071,8 +2035,7 @@ else { print "\n"; $s .= ''.$langs->trans("VATIntraCheck").''; $s = $form->textwithpicto($s, $langs->trans("VATIntraCheckDesc", $langs->transnoentitiesnoconv("VATIntraCheck")), 1); - } - else { + } else { $s .= 'country_id).'" class="hideonsmartphone" target="_blank">'.img_picto($langs->trans("VATIntraCheckableOnEUSite"), 'help').''; } } @@ -2214,8 +2177,7 @@ else { print ''; } - } - else { + } else { /* * View */ @@ -2376,8 +2338,7 @@ else { print ''; $formcompany->select_localtax(1, $object->localtax1_value, "lt1"); print ''.$object->localtax1_value.'
'.$langs->transcountry("LocalTax1IsUsed", $mysoc->country_code).''; print yn($object->localtax1_assuj); @@ -2418,8 +2378,7 @@ else { } print '
'.$langs->transcountry("LocalTax2IsUsed", $mysoc->country_code).''; print yn($object->localtax2_assuj); @@ -2469,14 +2428,12 @@ else { print "\n"; $s .= ''.$langs->trans("VATIntraCheck").''; $s = $form->textwithpicto($s, $langs->trans("VATIntraCheckDesc", $langs->transnoentitiesnoconv("VATIntraCheck")), 1); - } - else { + } else { $s .= 'country_id).'" class="hideonsmartphone" target="_blank">'.img_picto($langs->trans("VATIntraCheckableOnEUSite"), 'help').''; } } print $s; - } - else { + } else { print ' '; } print '
'.$langs->trans("SelectElementAndClick", $langs->transnoentitiesnoconv("Search")).'
"; -} -else { +} else { print_barre_liste($langs->trans('ProductsIntoElements').' '.$typeElementString.' '.$button, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, '', ''); print ''."\n"; diff --git a/htdocs/societe/document.php b/htdocs/societe/document.php index 9f3751fd5b2..ba0241a90f7 100644 --- a/htdocs/societe/document.php +++ b/htdocs/societe/document.php @@ -166,8 +166,7 @@ if ($object->id) $permtoedit = $user->rights->societe->creer; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { accessforbidden('', 0, 0); } diff --git a/htdocs/societe/index.php b/htdocs/societe/index.php index c62ec602ecd..85c27a29b7e 100644 --- a/htdocs/societe/index.php +++ b/htdocs/societe/index.php @@ -95,8 +95,7 @@ if ($result) if (!empty($conf->societe->enabled) && $objp->client == 0 && $objp->fournisseur == 0) { $found = 1; $third['other']++; } if ($found) $total++; } -} -else dol_print_error($db); +} else dol_print_error($db); print '
'; print '
'."\n"; @@ -119,8 +118,7 @@ if (!empty($conf->use_javascript_ajax) && ((round($third['prospect']) ? 1 : 0) + $dolgraph->draw('idgraphthirdparties'); print $dolgraph->show(); print ''."\n"; -} -else { +} else { if (!empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS)) { $statstring = ""; @@ -184,8 +182,7 @@ if (!empty($conf->categorie->enabled) && !empty($conf->global->CATEGORY_GRAPHSTA if ($i < $nbmax) { $dataseries[] = array($obj->label, round($obj->nb)); - } - else { + } else { $rest += $obj->nb; } $total += $obj->nb; @@ -204,8 +201,7 @@ if (!empty($conf->categorie->enabled) && !empty($conf->global->CATEGORY_GRAPHSTA $dolgraph->setHeight('200'); $dolgraph->draw('idgraphcateg'); print $dolgraph->show(); - } - else { + } else { while ($i < $num) { $obj = $db->fetch_object($result); @@ -331,8 +327,7 @@ if ($result) print ''; print "\n"; } -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index cb94da91e2f..4ead540eb8b 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -386,8 +386,7 @@ if ($resql) if ($level == $obj->code) $level = $langs->trans($obj->label); $tab_level[$obj->code] = $level; } -} -else dol_print_error($db); +} else dol_print_error($db); $sql = "SELECT s.rowid, s.nom as name, s.name_alias, s.barcode, s.town, s.zip, s.datec, s.code_client, s.code_fournisseur, s.logo,"; $sql .= " s.entity,"; @@ -1049,8 +1048,7 @@ while ($i < min($num, $limit)) if ($contextpage == 'poslist') { print $obj->name; - } - else { + } else { print $companystatic->getNomUrl(1, '', 100, 0, 1); } print "\n"; diff --git a/htdocs/societe/note.php b/htdocs/societe/note.php index 48a31085eb4..866a0e0964f 100644 --- a/htdocs/societe/note.php +++ b/htdocs/societe/note.php @@ -122,8 +122,7 @@ if ($object->id > 0) include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; dol_fiche_end(); -} -else { +} else { $langs->load("errors"); print $langs->trans("ErrorRecordNotFound"); } diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index 0650261cefc..2a0d2603e5b 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -104,16 +104,14 @@ if (empty($reshook)) $error++; dol_print_error($db); } - } - else { + } else { dol_print_error($db); } if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -261,8 +259,7 @@ if ($result > 0) print ''; print ''; print ''; - } - else { + } else { print ''; @@ -290,8 +287,7 @@ if ($result > 0) if ($resql) { $num = $db->num_rows($resql); - } - else { + } else { dol_print_error($db); } @@ -329,8 +325,7 @@ if ($result > 0) if (isValidEmail($obj->email)) { print ' <'.$obj->email.'>'; - } - else { + } else { $langs->load("errors"); print '   '.img_warning().' '.$langs->trans("ErrorBadEMail", $obj->email); } @@ -438,8 +433,7 @@ if ($result > 0) if ($resql) { $num = $db->num_rows($resql); - } - else { + } else { dol_print_error($db); } @@ -487,8 +481,7 @@ if ($result > 0) $contactstatic->firstname = $obj->firstname; print $contactstatic->getNomUrl(1); print $obj->email ? ' <'.$obj->email.'>' : $langs->trans("NoMail"); - } - else { + } else { print $obj->email; } print ''; @@ -522,8 +515,7 @@ if ($result > 0) print '
'; print $langs->trans("YouMustCreateContactFirst"); print '
'; print ''; -} -else dol_print_error('', 'RecordNotFound'); +} else dol_print_error('', 'RecordNotFound'); // End of page llxFooter(); diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php index 2d5e0612959..fa01e2db095 100644 --- a/htdocs/societe/paymentmodes.php +++ b/htdocs/societe/paymentmodes.php @@ -175,8 +175,7 @@ if (empty($reshook)) if (!$result) { setEventMessages($companybankaccount->error, $companybankaccount->errors, 'errors'); - } - else { + } else { // If this account is the default bank account, we disable others if ($companybankaccount->default_rib) { @@ -229,8 +228,7 @@ if (empty($reshook)) if (!$result) { setEventMessages($companypaymentmode->error, $companypaymentmode->errors, 'errors'); - } - else { + } else { // If this account is the default bank account, we disable others if ($companypaymentmode->default_rib) { @@ -336,8 +334,7 @@ if (empty($reshook)) $url = $_SERVER["PHP_SELF"].'?socid='.$object->id; header('Location: '.$url); exit; - } - else { + } else { $db->rollback(); } } @@ -404,8 +401,7 @@ if (empty($reshook)) $url = $_SERVER["PHP_SELF"].'?socid='.$object->id; header('Location: '.$url); exit; - } - else { + } else { $db->rollback(); } } @@ -420,8 +416,7 @@ if (empty($reshook)) $url = DOL_URL_ROOT.'/societe/paymentmodes.php?socid='.$object->id; header('Location: '.$url); exit; - } - else { + } else { setEventMessages($db->lasterror, null, 'errors'); } } @@ -446,12 +441,10 @@ if (empty($reshook)) $url = $_SERVER['PHP_SELF']."?socid=".$object->id; header('Location: '.$url); exit; - } - else { + } else { setEventMessages($companypaymentmode->error, $companypaymentmode->errors, 'errors'); } - } - else { + } else { setEventMessages($companypaymentmode->error, $companypaymentmode->errors, 'errors'); } } @@ -466,12 +459,10 @@ if (empty($reshook)) $url = $_SERVER['PHP_SELF']."?socid=".$object->id; header('Location: '.$url); exit; - } - else { + } else { setEventMessages($companybankaccount->error, $companybankaccount->errors, 'errors'); } - } - else { + } else { setEventMessages($companybankaccount->error, $companybankaccount->errors, 'errors'); } } @@ -506,16 +497,14 @@ if (empty($reshook)) { $error++; setEventMessages('ThisThirdpartyIsNotACustomer', null, 'errors'); - } - else { + } else { // Creation of Stripe customer + update of societe_account $cu = $stripe->customerStripe($object, $stripeacc, $servicestatus, 1); if (!$cu) { $error++; setEventMessages($stripe->error, $stripe->errors, 'errors'); - } - else { + } else { $stripecu = $cu->id; } } @@ -529,8 +518,7 @@ if (empty($reshook)) { $error++; setEventMessages('ThisPaymentModeIsNotACard', null, 'errors'); - } - else { + } else { // Get the Stripe customer $cu = $stripe->customerStripe($object, $stripeacc, $servicestatus); if (!$cu) @@ -600,8 +588,7 @@ if (empty($reshook)) { $stripecu = $newcu; $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -656,8 +643,7 @@ if (empty($reshook)) { $stripesupplieracc = $newsup; $db->commit(); - } - else { + } else { $db->rollback(); } } @@ -670,22 +656,19 @@ if (empty($reshook)) $url = DOL_URL_ROOT.'/societe/paymentmodes.php?socid='.$object->id; header('Location: '.$url); exit; - } - catch (Exception $e) + } catch (Exception $e) { $error++; setEventMessages($e->getMessage(), null, 'errors'); } - } - elseif ($action == 'setassourcedefault') // Set as default when payment mode defined remotely only + } elseif ($action == 'setassourcedefault') // Set as default when payment mode defined remotely only { try { $cu = $stripe->customerStripe($object, $stripeacc, $servicestatus); if (preg_match('/pm_/', $source)) { $cu->invoice_settings->default_payment_method = (string) $source; // New - } - else { + } else { $cu->default_source = (string) $source; // Old } $result = $cu->save(); @@ -693,14 +676,12 @@ if (empty($reshook)) $url = DOL_URL_ROOT.'/societe/paymentmodes.php?socid='.$object->id; header('Location: '.$url); exit; - } - catch (Exception $e) + } catch (Exception $e) { $error++; setEventMessages($e->getMessage(), null, 'errors'); } - } - elseif ($action == 'deletecard' && $source) + } elseif ($action == 'deletecard' && $source) { try { if (preg_match('/pm_/', $source)) @@ -710,8 +691,7 @@ if (empty($reshook)) { $payment_method->detach(); } - } - else { + } else { $cu = $stripe->customerStripe($object, $stripeacc, $servicestatus); $card = $cu->sources->retrieve("$source"); if ($card) { @@ -727,8 +707,7 @@ if (empty($reshook)) $url = DOL_URL_ROOT.'/societe/paymentmodes.php?socid='.$object->id; header('Location: '.$url); exit; - } - catch (Exception $e) + } catch (Exception $e) { $error++; setEventMessages($e->getMessage(), null, 'errors'); @@ -766,8 +745,7 @@ if (!$id) { $companybankaccount->fetch(0, $object->id); $companypaymentmode->fetch(0, null, $object->id, 'card'); -} -else { +} else { $companybankaccount->fetch($id); $companypaymentmode->fetch($id); } @@ -958,8 +936,7 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' if (empty($conf->global->STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION)) { $listofsources = $customerstripe->sources->data; - } - else { + } else { $service = 'StripeTest'; $servicestatus = 0; if (!empty($conf->global->STRIPE_LIVE) && !GETPOST('forcesandbox', 'alpha')) @@ -980,16 +957,14 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' } $listofsources = $paymentmethodobjs->data; - } - catch (Exception $e) + } catch (Exception $e) { $error++; setEventMessages($e->getMessage(), null, 'errors'); } } } - } - catch (Exception $e) + } catch (Exception $e) { dol_syslog("Error when searching/loading Stripe customer for thirdparty id =".$object->id); } @@ -1086,8 +1061,7 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' $img = picto_from_langcode($companypaymentmodetemp->country_code); print $img ? $img.' ' : ''; print getCountry($companypaymentmodetemp->country_code, 1); - } - else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; + } else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; print ''; // Default print ''; @@ -1134,8 +1108,7 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' $i++; } } - } - else dol_print_error($db); + } else dol_print_error($db); } // Show remote sources (not already shown as local source) @@ -1175,20 +1148,16 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' if ($src->object == 'card') { print img_credit_card($src->brand); - } - elseif ($src->object == 'source' && $src->type == 'card') + } elseif ($src->object == 'source' && $src->type == 'card') { print img_credit_card($src->card->brand); - } - elseif ($src->object == 'source' && $src->type == 'sepa_debit') + } elseif ($src->object == 'source' && $src->type == 'sepa_debit') { print ''; - } - elseif ($src->object == 'payment_method' && $src->type == 'card') + } elseif ($src->object == 'payment_method' && $src->type == 'card') { print img_credit_card($src->card->brand); - } - elseif ($src->object == 'payment_method' && $src->type == 'sepa_debit') + } elseif ($src->object == 'payment_method' && $src->type == 'sepa_debit') { print ''; } @@ -1204,10 +1173,8 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' $img = picto_from_langcode($src->country); print $img ? $img.' ' : ''; print getCountry($src->country, 1); - } - else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; - } - elseif ($src->object == 'source' && $src->type == 'card') + } else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; + } elseif ($src->object == 'source' && $src->type == 'card') { print ''.$src->owner->name.'
....'.$src->card->last4.' - '.$src->card->exp_month.'/'.$src->card->exp_year.''; print ''; @@ -1217,10 +1184,8 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' $img = picto_from_langcode($src->card->country); print $img ? $img.' ' : ''; print getCountry($src->card->country, 1); - } - else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; - } - elseif ($src->object == 'source' && $src->type == 'sepa_debit') + } else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; + } elseif ($src->object == 'source' && $src->type == 'sepa_debit') { print 'SEPA debit'; print ''; @@ -1229,10 +1194,8 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' $img = picto_from_langcode($src->sepa_debit->country); print $img ? $img.' ' : ''; print getCountry($src->sepa_debit->country, 1); - } - else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; - } - elseif ($src->object == 'payment_method' && $src->type == 'card') + } else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; + } elseif ($src->object == 'payment_method' && $src->type == 'card') { print ''.$src->billing_details->name.'
....'.$src->card->last4.' - '.$src->card->exp_month.'/'.$src->card->exp_year.''; print ''; @@ -1242,10 +1205,8 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' $img = picto_from_langcode($src->card->country); print $img ? $img.' ' : ''; print getCountry($src->card->country, 1); - } - else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; - } - elseif ($src->object == 'payment_method' && $src->type == 'sepa_debit') + } else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; + } elseif ($src->object == 'payment_method' && $src->type == 'sepa_debit') { print 'SEPA debit'; print ''; @@ -1254,10 +1215,8 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' $img = picto_from_langcode($src->sepa_debit->country); print $img ? $img.' ' : ''; print getCountry($src->sepa_debit->country, 1); - } - else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; - } - else { + } else print img_warning().' '.$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CompanyCountry")).''; + } else { print ''; } print ''; diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php index 2f0595cf15d..278a85fa7f5 100644 --- a/htdocs/societe/price.php +++ b/htdocs/societe/price.php @@ -466,16 +466,14 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { print ''; } print ""; - } - else { + } else { print $langs->trans('None'); } print "\n".'

\n"; - } - else { + } else { // View mode /* ************************************************************************** */ @@ -588,8 +586,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { print "\n"; } - } - else { + } else { $colspan = 9; if ($user->rights->produit->supprimer || $user->rights->service->supprimer) $colspan += 1; print ''.$langs->trans('None').''; diff --git a/htdocs/societe/societecontact.php b/htdocs/societe/societecontact.php index e25b5c5e606..1369f29a185 100644 --- a/htdocs/societe/societecontact.php +++ b/htdocs/societe/societecontact.php @@ -78,14 +78,12 @@ if ($action == 'addcontact' && $user->rights->societe->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); $mesg = '
'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'
'; - } - else { + } else { $mesg = '
'.$object->error.'
'; } } @@ -97,8 +95,7 @@ elseif ($action == 'swapstatut' && $user->rights->societe->creer) if ($object->fetch($id)) { $result = $object->swapContactStatus(GETPOST('ligne')); - } - else { + } else { dol_print_error($db); } } @@ -113,8 +110,7 @@ elseif ($action == 'deletecontact' && $user->rights->societe->creer) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { dol_print_error($db); } } @@ -324,15 +320,13 @@ if ($id > 0 || !empty($ref)) print " ".img_warning($langs->trans("SubscriptionLate")); } print ''; - } - else { + } else { print ''; if ($objp->subscription == 'yes') { print $langs->trans("SubscriptionNotReceived"); if ($objp->statut > 0) print " ".img_warning(); - } - else { + } else { print ' '; } print ''; @@ -345,8 +339,7 @@ if ($id > 0 || !empty($ref)) } } } - } - else { + } else { // Contrat non trouve print "ErrorRecordNotFound"; } diff --git a/htdocs/societe/tpl/linesalesrepresentative.tpl.php b/htdocs/societe/tpl/linesalesrepresentative.tpl.php index 11b2d033b69..8ee338fba44 100644 --- a/htdocs/societe/tpl/linesalesrepresentative.tpl.php +++ b/htdocs/societe/tpl/linesalesrepresentative.tpl.php @@ -48,6 +48,5 @@ if ($nbofsalesrepresentative > 0) print $userstatic->getNomUrl(-1); print ' '; } -} -else print ''.$langs->trans("NoSalesRepresentativeAffected").''; +} else print ''.$langs->trans("NoSalesRepresentativeAffected").''; print ''; diff --git a/htdocs/stripe/admin/stripe.php b/htdocs/stripe/admin/stripe.php index f20ac732fd4..728c076d1c8 100644 --- a/htdocs/stripe/admin/stripe.php +++ b/htdocs/stripe/admin/stripe.php @@ -136,8 +136,7 @@ if ($action == "setlive") $res = dolibarr_set_const($db, "STRIPE_LIVE", $liveenable, 'yesno', 0, '', $conf->entity); if ($res > 0) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -236,14 +235,12 @@ if (empty($conf->stripeconnect->enabled)) { print ''; print img_picto($langs->trans("Activated"), 'switch_on'); - } - else { + } else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } //print $endpoint; - } - else { + } else { print img_picto($langs->trans("inactive"), 'statut5'); } } @@ -307,20 +304,17 @@ if (empty($conf->stripeconnect->enabled)) { print ''; print img_picto($langs->trans("Activated"), 'switch_on'); - } - else { + } else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); } //print $endpoint; - } - else { + } else { print img_picto($langs->trans("inactive"), 'statut5'); } } print ''; -} -else { +} else { print ''.$langs->trans("StripeConnect").''; print ''.$langs->trans("StripeConnect_Mode").''; } diff --git a/htdocs/stripe/charge.php b/htdocs/stripe/charge.php index 74fa1aafc43..5672176168a 100644 --- a/htdocs/stripe/charge.php +++ b/htdocs/stripe/charge.php @@ -65,8 +65,7 @@ if (!empty($conf->stripe->enabled) && (empty($conf->global->STRIPE_LIVE) || GETP $service = 'StripeTest'; $servicestatus = '0'; dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); -} -else { +} else { $service = 'StripeLive'; $servicestatus = '1'; } @@ -84,8 +83,7 @@ if (!$rowid) if ($stripeacc) { $list = \Stripe\Charge::all($option, array("stripe_account" => $stripeacc)); - } - else { + } else { $list = \Stripe\Charge::all($option); } @@ -177,19 +175,16 @@ if (!$rowid) if (!empty($tmparray['CUS']) && $tmparray['CUS'] > 0) { $societestatic->fetch($tmparray['CUS']); - } - elseif (!empty($charge->metadata->dol_thirdparty_id) && $charge->metadata->dol_thirdparty_id > 0) + } elseif (!empty($charge->metadata->dol_thirdparty_id) && $charge->metadata->dol_thirdparty_id > 0) { $societestatic->fetch($charge->metadata->dol_thirdparty_id); - } - else { + } else { $societestatic->id = 0; } if (!empty($tmparray['MEM']) && $tmparray['MEM'] > 0) { $memberstatic->fetch($tmparray['MEM']); - } - else { + } else { $memberstatic->id = 0; } @@ -227,8 +222,7 @@ if (!$rowid) if ($societestatic->id > 0) { print $societestatic->getNomUrl(1); - } - elseif ($memberstatic->id > 0) + } elseif ($memberstatic->id > 0) { print $memberstatic->getNomUrl(1); } diff --git a/htdocs/stripe/class/actions_stripe.class.php b/htdocs/stripe/class/actions_stripe.class.php index 4b68ad72b09..2fafe09a693 100644 --- a/htdocs/stripe/class/actions_stripe.class.php +++ b/htdocs/stripe/class/actions_stripe.class.php @@ -75,8 +75,7 @@ class ActionsStripeconnect { $service = 'StripeTest'; dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); - } - else { + } else { $service = 'StripeLive'; } @@ -103,13 +102,11 @@ class ActionsStripeconnect if ($stripe->getStripeAccount($service) && $object->client != 0) { $customer = $stripe->customerStripe($object, $stripe->getStripeAccount($service)); $this->resprints .= $customer->id; - } - else { + } else { $this->resprints .= $langs->trans("NoStripe"); } $this->resprints .= ''; - } - elseif (is_object($object) && $object->element == 'member') { + } elseif (is_object($object) && $object->element == 'member') { $this->resprints .= ''; $this->resprints .= ''; print "
'; $this->resprints .= $langs->trans('StripeCustomer'); @@ -207,24 +204,19 @@ class ActionsStripeconnect { $langs->load("withdrawals"); print ''.$langs->trans("StripeConnectPay").''; - } - else { + } else { print ''.$langs->trans("StripeConnectPay").''; } - } - elseif ($resteapayer == 0) + } elseif ($resteapayer == 0) { print ''.$langs->trans("StripeConnectPay").''; } - } - else { + } else { print ''.$langs->trans("StripeConnectPay").''; } - } - elseif (is_object($object) && $object->element == 'invoice_supplier') { + } elseif (is_object($object) && $object->element == 'invoice_supplier') { print ''.$langs->trans("StripeConnectPay").''; - } - elseif (is_object($object) && $object->element == 'member') { + } elseif (is_object($object) && $object->element == 'member') { print ''.$langs->trans("StripeAutoSubscription").''; } return 0; diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php index 4a56a2a1542..f3bb30d7efb 100644 --- a/htdocs/stripe/class/stripe.class.php +++ b/htdocs/stripe/class/stripe.class.php @@ -95,8 +95,7 @@ class Stripe extends CommonObject $sql .= " AND service = '".$mode."'"; if ($fk_soc > 0) { $sql .= " AND fk_soc = ".$fk_soc; - } - else { + } else { $sql .= " AND fk_soc IS NULL"; } $sql .= " AND fk_user IS NULL AND fk_adherent IS NULL"; @@ -113,8 +112,7 @@ class Stripe extends CommonObject } else { $tokenstring = ''; } - } - else { + } else { dol_print_error($this->db); } @@ -189,14 +187,12 @@ class Stripe extends CommonObject } else { $customer = \Stripe\Customer::retrieve("$tiers", array("stripe_account" => $key)); } - } - catch (Exception $e) + } catch (Exception $e) { // For exemple, we may have error: 'No such customer: cus_XXXXX; a similar object exists in live mode, but a test mode key was used to make this request.' $this->error = $e->getMessage(); } - } - elseif ($createifnotlinkedtostripe) + } elseif ($createifnotlinkedtostripe) { $ipaddress = getUserRemoteIP(); @@ -254,14 +250,12 @@ class Stripe extends CommonObject { $this->error = $this->db->lasterror(); } - } - catch (Exception $e) + } catch (Exception $e) { $this->error = $e->getMessage(); } } - } - else { + } else { dol_print_error($this->db); } @@ -289,8 +283,7 @@ class Stripe extends CommonObject } else { $stripepaymentmethod = \Stripe\PaymentMethod::retrieve(''.$paymentmethod->id.'', array("stripe_account" => $key)); } - } - catch (Exception $e) + } catch (Exception $e) { $this->error = $e->getMessage(); } @@ -480,8 +473,7 @@ class Stripe extends CommonObject $obj = $this->db->fetch_object($resql); if ($obj) $paymentintentalreadyexists++; } - } - else dol_print_error($this->db); + } else dol_print_error($this->db); // If not, we create it. if (!$paymentintentalreadyexists) @@ -497,19 +489,16 @@ class Stripe extends CommonObject dol_syslog(get_class($this)."::PaymentIntent failed to insert paymentintent with id=".$paymentintent->id." into database."); } } - } - else { + } else { $_SESSION["stripe_payment_intent"] = $paymentintent; } - } - catch (Stripe\Error\Card $e) + } catch (Stripe\Error\Card $e) { $error++; $this->error = $e->getMessage(); $this->code = $e->getStripeCode(); $this->declinecode = $e->getDeclineCode(); - } - catch (Exception $e) + } catch (Exception $e) { /*var_dump($dataforintent); var_dump($description); @@ -529,8 +518,7 @@ class Stripe extends CommonObject if (!$error) { return $paymentintent; - } - else { + } else { return null; } } @@ -654,8 +642,7 @@ class Stripe extends CommonObject { $_SESSION["stripe_setup_intent"] = $setupintent; }*/ - } - catch (Exception $e) + } catch (Exception $e) { /*var_dump($dataforintent); var_dump($description); @@ -671,8 +658,7 @@ class Stripe extends CommonObject { dol_syslog("getSetupIntent ".(is_object($setupintent) ? $setupintent->id : ''), LOG_INFO, -1); return $setupintent; - } - else { + } else { dol_syslog("getSetupIntent return error=".$error, LOG_INFO, -1); return null; } @@ -716,8 +702,7 @@ class Stripe extends CommonObject if (!preg_match('/^pm_/', $cardref)) { $card = $cu->sources->retrieve($cardref); - } - else { + } else { $card = \Stripe\PaymentMethod::retrieve($cardref); } } else { @@ -725,20 +710,17 @@ class Stripe extends CommonObject { //$card = $cu->sources->retrieve($cardref, array("stripe_account" => $stripeacc)); // this API fails when array stripe_account is provided $card = $cu->sources->retrieve($cardref); - } - else { + } else { //$card = \Stripe\PaymentMethod::retrieve($cardref, array("stripe_account" => $stripeacc)); // Don't know if this works $card = \Stripe\PaymentMethod::retrieve($cardref); } } - } - catch (Exception $e) + } catch (Exception $e) { $this->error = $e->getMessage(); dol_syslog($this->error, LOG_WARNING); } - } - elseif ($createifnotlinkedtostripe) + } elseif ($createifnotlinkedtostripe) { $exp_date_month = $obj->exp_date_month; $exp_date_year = $obj->exp_date_year; @@ -763,8 +745,7 @@ class Stripe extends CommonObject { $this->error = 'Creation of card on Stripe has failed'; } - } - else { + } else { $connect = ''; if (!empty($stripeacc)) $connect = $stripeacc.'/'; $url = 'https://dashboard.stripe.com/'.$connect.'test/customers/'.$cu->id; @@ -786,8 +767,7 @@ class Stripe extends CommonObject { $this->error = 'Creation of card on Stripe has failed'; } - } - else { + } else { $connect = ''; if (!empty($stripeacc)) $connect = $stripeacc.'/'; $url = 'https://dashboard.stripe.com/'.$connect.'test/customers/'.$cu->id; @@ -816,16 +796,14 @@ class Stripe extends CommonObject $this->error = $this->db->lasterror(); } } - } - catch (Exception $e) + } catch (Exception $e) { $this->error = $e->getMessage(); dol_syslog($this->error, LOG_WARNING); } } } - } - else { + } else { dol_print_error($this->db); } @@ -935,8 +913,7 @@ class Stripe extends CommonObject if ($paymentintent->status == 'succeeded') { $charge->status = 'ok'; - } - else { + } else { $charge->status = 'failed'; $charge->failure_code = $stripe->code; $charge->failure_message = $stripe->error; @@ -945,8 +922,7 @@ class Stripe extends CommonObject $stripefailuremessage = $stripe->error; $stripefailuredeclinecode = $stripe->declinecode; } - } - elseif (preg_match('/acct_/i', $source)) + } elseif (preg_match('/acct_/i', $source)) { $charge = \Stripe\Charge::create(array( "amount" => "$stripeamount", @@ -1029,15 +1005,13 @@ class Stripe extends CommonObject { $charge->status = 'ok'; $charge->id = $paymentintent->id; - } - else { + } else { $charge->status = 'failed'; $charge->failure_code = $stripe->code; $charge->failure_message = $stripe->error; $charge->failure_declinecode = $stripe->declinecode; } - } - else { + } else { $charge = \Stripe\Charge::create($paymentarray, array("idempotency_key" => "$description", "stripe_account" => "$account")); } } @@ -1049,8 +1023,7 @@ class Stripe extends CommonObject if (preg_match('/pm_/i', $source)) { $return->message = 'Payment retreived by card status = '.$charge->status; - } - else { + } else { if ($charge->source->type == 'card') { $return->message = $charge->source->card->brand." ....".$charge->source->card->last4; } elseif ($charge->source->type == 'three_d_secure') { diff --git a/htdocs/stripe/config.php b/htdocs/stripe/config.php index 1efe9a7f386..e6dc75c04ec 100644 --- a/htdocs/stripe/config.php +++ b/htdocs/stripe/config.php @@ -47,8 +47,7 @@ $stripearrayofkeys = array(); if (empty($conf->global->STRIPE_LIVE) || GETPOST('forcesandbox', 'alpha')) { $stripearrayofkeys = $stripearrayofkeysbyenv[0]; // Test -} -else { +} else { $stripearrayofkeys = $stripearrayofkeysbyenv[1]; // Live } diff --git a/htdocs/stripe/payout.php b/htdocs/stripe/payout.php index 741921ac63c..6823c32c0b7 100644 --- a/htdocs/stripe/payout.php +++ b/htdocs/stripe/payout.php @@ -64,8 +64,7 @@ if (!empty($conf->stripe->enabled) && (empty($conf->global->STRIPE_LIVE) || GETP $service = 'StripeTest'; $servicestatus = '0'; dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); -} -else { +} else { $service = 'StripeLive'; $servicestatus = '1'; } @@ -113,8 +112,7 @@ if (!$rowid) { if ($stripeacc) { $payout = \Stripe\Payout::all(array("limit" => $limit), array("stripe_account" => $stripeacc)); - } - else { + } else { $payout = \Stripe\Payout::all(array("limit" => $limit)); } diff --git a/htdocs/stripe/transaction.php b/htdocs/stripe/transaction.php index eb0ce7df09e..6f74d1a48c0 100644 --- a/htdocs/stripe/transaction.php +++ b/htdocs/stripe/transaction.php @@ -65,8 +65,7 @@ if (!empty($conf->stripe->enabled) && (empty($conf->global->STRIPE_LIVE) || GETP $service = 'StripeTest'; $servicestatus = '0'; dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); -} -else { +} else { $service = 'StripeLive'; $servicestatus = '1'; } @@ -112,8 +111,7 @@ if (!$rowid) { if ($stripeacc) { $txn = \Stripe\BalanceTransaction::all(array("limit" => $limit), array("stripe_account" => $stripeacc)); - } - else { + } else { $txn = \Stripe\BalanceTransaction::all(array("limit" => $limit)); } diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index d911e310d90..dc696dcea90 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -133,15 +133,13 @@ if (empty($reshook)) if (1 == 0 && !GETPOST('clone_content') && !GETPOST('clone_receivers')) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); - } - else { + } else { if ($object->id > 0) { $result = $object->createFromClone($user, $socid); if ($result > 0) { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result); exit(); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } @@ -219,9 +217,7 @@ if (empty($reshook)) if (count($object->errors) > 0) setEventMessages($object->error, $object->errors, 'errors'); else setEventMessages($langs->trans($object->error), null, 'errors'); } - } - - elseif ($action == 'setdate_livraison' && $user->rights->supplier_proposal->creer) + } elseif ($action == 'setdate_livraison' && $user->rights->supplier_proposal->creer) { $result = $object->set_date_livraison($user, dol_mktime(12, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year'])); if ($result < 0) @@ -439,13 +435,11 @@ if (empty($reshook)) header('Location: '.$_SERVER["PHP_SELF"].'?id='.$id); exit(); - } - else { + } else { $db->rollback(); $action = 'create'; } - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); $action = 'create'; @@ -515,9 +509,7 @@ if (empty($reshook)) $ret = $object->fetch($id); // Reload to get new records $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); } - } - - elseif ($action == "setabsolutediscount" && $user->rights->supplier_proposal->creer) { + } elseif ($action == "setabsolutediscount" && $user->rights->supplier_proposal->creer) { if ($_POST["remise_id"]) { if ($object->id > 0) { $result = $object->insert_discount($_POST["remise_id"]); @@ -546,8 +538,7 @@ if (empty($reshook)) $idprod = 0; $price_ht = GETPOST('price_ht'); $tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); - } - else { + } else { $idprod = GETPOST('idprod', 'int'); $price_ht = ''; $tva_tx = ''; @@ -615,13 +606,11 @@ if (empty($reshook)) { $productsupplier->ref_supplier = ''; } - } - else { + } else { $fksoctosearch = $object->thirdparty->id; $productsupplier->get_buyprice(0, -1, $idprod, 'none', $fksoctosearch); // We force qty to -1 to be sure to find if a supplier price exist } - } - elseif (GETPOST('idprodfournprice', 'alpha') > 0) + } elseif (GETPOST('idprodfournprice', 'alpha') > 0) { //$qtytosearch=$qty; // Just to see if a price exists for the quantity. Not used to found vat. $qtytosearch = -1; // We force qty to -1 to be sure to find if the supplier price that exists @@ -708,8 +697,7 @@ if (empty($reshook)) $langs->load("errors"); setEventMessages($langs->trans("ErrorQtyTooLowForThisSupplier"), null, 'errors'); } - } - elseif ((GETPOST('price_ht') !== '' || GETPOST('price_ttc') !== '' || GETPOST('multicurrency_price_ht') != '') && empty($error)) // Free product. // $price_ht is already set + } elseif ((GETPOST('price_ht') !== '' || GETPOST('price_ttc') !== '' || GETPOST('multicurrency_price_ht') != '') && empty($error)) // Free product. // $price_ht is already set { $pu_ht = price2num($price_ht, 'MU'); $pu_ttc = price2num(GETPOST('price_ttc'), 'MU'); @@ -730,8 +718,7 @@ if (empty($reshook)) if ($price_ht !== '') { $pu_ht = price2num($price_ht, 'MU'); // $pu_ht must be rounded according to settings - } - else { + } else { $pu_ttc = price2num(GETPOST('price_ttc'), 'MU'); $pu_ht = price2num($pu_ttc / (1 + ($tva_tx / 100)), 'MU'); // $pu_ht must be rounded according to settings } @@ -826,8 +813,7 @@ if (empty($reshook)) unset($_POST['date_endday']); unset($_POST['date_endmonth']); unset($_POST['date_endyear']); - } - else { + } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); @@ -1002,9 +988,7 @@ if (empty($reshook)) setEventMessages($object->error, $object->errors, 'errors'); } } - } - - elseif ($action == 'updateline' && $user->rights->supplier_proposal->creer && GETPOST('cancel', 'alpha') == $langs->trans('Cancel')) { + } elseif ($action == 'updateline' && $user->rights->supplier_proposal->creer && GETPOST('cancel', 'alpha') == $langs->trans('Cancel')) { header('Location: '.$_SERVER['PHP_SELF'].'?id='.$object->id); // Pour reaffichage de la fiche en cours d'edition exit(); } @@ -1022,13 +1006,9 @@ if (empty($reshook)) // Terms of payments elseif ($action == 'setconditions' && $user->rights->supplier_proposal->creer) { $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); - } - - elseif ($action == 'setremisepercent' && $user->rights->supplier_proposal->creer) { + } elseif ($action == 'setremisepercent' && $user->rights->supplier_proposal->creer) { $result = $object->set_remise_percent($user, $_POST['remise_percent']); - } - - elseif ($action == 'setremiseabsolue' && $user->rights->supplier_proposal->creer) { + } elseif ($action == 'setremiseabsolue' && $user->rights->supplier_proposal->creer) { $result = $object->set_remise_absolue($user, $_POST['remise_absolue']); } @@ -1045,9 +1025,7 @@ if (empty($reshook)) // Multicurrency rate elseif ($action == 'setmulticurrencyrate' && $user->rights->supplier_proposal->creer) { $result = $object->setMulticurrencyRate(price2num(GETPOST('multicurrency_tx'))); - } - - elseif ($action == 'update_extras') { + } elseif ($action == 'update_extras') { $object->oldcopy = dol_clone($object); // Fill array 'array_options' with data from update form @@ -1129,8 +1107,7 @@ if ($action == 'create') if (!empty($objectsrc->multicurrency_code)) $currency_code = $objectsrc->multicurrency_code; if (!empty($conf->global->MULTICURRENCY_USE_ORIGIN_TX) && !empty($objectsrc->multicurrency_tx)) $currency_tx = $objectsrc->multicurrency_tx; } - } - else { + } else { $cond_reglement_id = $soc->cond_reglement_supplier_id; $mode_reglement_id = $soc->mode_reglement_supplier_id; if (!empty($conf->multicurrency->enabled) && !empty($soc->multicurrency_code)) $currency_code = $soc->multicurrency_code; diff --git a/htdocs/supplier_proposal/class/api_supplier_proposals.class.php b/htdocs/supplier_proposal/class/api_supplier_proposals.class.php index 3fbe3afa021..3eea10bdf13 100644 --- a/htdocs/supplier_proposal/class/api_supplier_proposals.class.php +++ b/htdocs/supplier_proposal/class/api_supplier_proposals.class.php @@ -160,8 +160,7 @@ class Supplierproposals extends DolibarrApi } $i++; } - } - else { + } else { throw new RestException(503, 'Error when retrieving supplier proposal list : '.$db->lasterror()); } if (!count($obj_ret)) { diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 42c30c333d6..907a741c288 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -273,8 +273,7 @@ class SupplierProposal extends CommonObject if ($conf->global->PRODUIT_MULTIPRICES && $this->thirdparty->price_level) { $price = $prod->multiprices[$this->thirdparty->price_level]; - } - else { + } else { $price = $prod->price; } @@ -345,19 +344,16 @@ class SupplierProposal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $supplier_proposalligne->error; $this->db->rollback(); return -2; } - } - else { + } else { $this->db->rollback(); return -2; } @@ -426,8 +422,7 @@ class SupplierProposal extends CommonObject if ($price_base_type == 'HT') { $pu = $pu_ht; - } - else { + } else { $pu = $pu_ttc; } @@ -487,15 +482,13 @@ class SupplierProposal extends CommonObject dol_syslog(get_class($this)."::addline result=".$result." - ".$this->error, LOG_ERR); return -1; } - } - else { + } else { $this->error = $prod->error; $this->db->rollback(); return -1; } } - } - else { + } else { $product_type = $type; } @@ -615,20 +608,17 @@ class SupplierProposal extends CommonObject { $this->db->commit(); return $this->line->id; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->line->error; $this->db->rollback(); return -2; } - } - else { + } else { $this->error = 'BadStatusOfObjectToAddLine'; return -5; } @@ -798,14 +788,12 @@ class SupplierProposal extends CommonObject $this->db->commit(); return $result; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -1; } - } - else { + } else { dol_syslog(get_class($this)."::updateline Erreur -2 SupplierProposal en mode incompatible pour cette action"); return -2; } @@ -832,12 +820,10 @@ class SupplierProposal extends CommonObject $this->update_price(1); return 1; - } - else { + } else { return -1; } - } - else { + } else { return -2; } } @@ -1065,14 +1051,12 @@ class SupplierProposal extends CommonObject if ($result < 0) { $error++; } // End call triggers } - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } } - } - else { + } else { $this->error = $this->db->lasterror(); $error++; } @@ -1082,13 +1066,11 @@ class SupplierProposal extends CommonObject $this->db->commit(); dol_syslog(get_class($this)."::create done id=".$this->id); return $this->id; - } - else { + } else { $this->db->rollback(); return -2; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; @@ -1149,8 +1131,7 @@ class SupplierProposal extends CommonObject } // TODO Change product price if multi-prices - } - else { + } else { $objsoc->fetch($this->socid); } @@ -1198,8 +1179,7 @@ class SupplierProposal extends CommonObject { $this->db->commit(); return $this->id; - } - else { + } else { $this->db->rollback(); return -1; } @@ -1390,8 +1370,7 @@ class SupplierProposal extends CommonObject $i++; } $this->db->free($result); - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -1405,8 +1384,7 @@ class SupplierProposal extends CommonObject $this->error = "Record Not Found"; return 0; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -1441,8 +1419,7 @@ class SupplierProposal extends CommonObject if (!$error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life { $num = $this->getNextNumRef($soc); - } - else { + } else { $num = $this->ref; } $this->newref = dol_sanitizeFileName($num); @@ -1515,13 +1492,11 @@ class SupplierProposal extends CommonObject $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { dol_syslog("You don't have permission to validate supplier proposal", LOG_WARNING); return -2; } @@ -1548,8 +1523,7 @@ class SupplierProposal extends CommonObject { $this->date_livraison = $date_livraison; return 1; - } - else { + } else { $this->error = $this->db->error(); dol_syslog(get_class($this)."::set_date_livraison Erreur SQL"); return -1; @@ -1582,8 +1556,7 @@ class SupplierProposal extends CommonObject $this->remise_percent = $remise; $this->update_price(1); return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -1617,8 +1590,7 @@ class SupplierProposal extends CommonObject $this->remise_absolue = $remise; $this->update_price(1); return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -1680,8 +1652,7 @@ class SupplierProposal extends CommonObject } $this->db->rollback(); return -1 * $error; - } - else { + } else { $this->db->commit(); return 1; } @@ -1753,13 +1724,11 @@ class SupplierProposal extends CommonObject { $this->db->commit(); return 1; - } - else { + } else { $this->db->rollback(); return -1; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->errors[] = $this->db->lasterror(); $this->db->rollback(); @@ -1861,8 +1830,7 @@ class SupplierProposal extends CommonObject $values[] = $product->multicurrency_subprice; $values[] = $product->multicurrency_total_ht; $values[] = $multicurrency->rate->rate; - } - else { + } else { for ($i = 0; $i < 5; $i++) $values[] = 'NULL'; } } @@ -1926,8 +1894,7 @@ class SupplierProposal extends CommonObject $this->db->rollback(); return -1; } - } - else { + } else { return -1; } } @@ -1987,12 +1954,10 @@ class SupplierProposal extends CommonObject if ($shortlist == 1) { $ga[$obj->supplier_proposalid] = $obj->ref; - } - elseif ($shortlist == 2) + } elseif ($shortlist == 2) { $ga[$obj->supplier_proposalid] = $obj->ref.' ('.$obj->name.')'; - } - else { + } else { $ga[$i]['id'] = $obj->supplier_proposalid; $ga[$i]['ref'] = $obj->ref; $ga[$i]['name'] = $obj->name; @@ -2002,8 +1967,7 @@ class SupplierProposal extends CommonObject } } return $ga; - } - else { + } else { dol_print_error($this->db); return -1; } @@ -2099,26 +2063,22 @@ class SupplierProposal extends CommonObject dol_syslog(get_class($this)."::delete ".$this->id." by ".$user->id, LOG_DEBUG); $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return 0; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -3; } - } - else { + } else { $this->error = $this->db->lasterror(); $this->db->rollback(); return -2; } - } - else { + } else { $this->db->rollback(); return -1; } @@ -2171,8 +2131,7 @@ class SupplierProposal extends CommonObject } } $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -2301,8 +2260,7 @@ class SupplierProposal extends CommonObject // if ($mode == 'signed' && ! count($this->FactureListeArray($obj->rowid))) $this->nbtodolate++; } return $response; - } - else { + } else { $this->error = $this->db->lasterror(); return -1; } @@ -2369,8 +2327,7 @@ class SupplierProposal extends CommonObject $line->total_ttc = 59.8; $line->total_tva = 9.8; $line->remise_percent = 50; - } - else { + } else { $line->total_ht = 100; $line->total_ttc = 119.6; $line->total_tva = 19.6; @@ -2428,8 +2385,7 @@ class SupplierProposal extends CommonObject } $this->db->free($resql); return 1; - } - else { + } else { dol_print_error($this->db); $this->error = $this->db->lasterror(); return -1; @@ -2478,13 +2434,11 @@ class SupplierProposal extends CommonObject if ($numref != "") { return $numref; - } - else { + } else { $this->error = $obj->error; return ""; } - } - else { + } else { $langs->load("errors"); print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("SupplierProposal")); return ""; @@ -2654,8 +2608,7 @@ class SupplierProposal extends CommonObject $this->db->free($resql); return 1; - } - else { + } else { $this->error = $this->db->error(); return -1; } @@ -2949,8 +2902,7 @@ class SupplierProposalLine extends CommonObjectLine $this->fk_unit = $objp->fk_unit; $this->db->free($result); - } - else { + } else { dol_print_error($this->db); } } @@ -2995,8 +2947,7 @@ class SupplierProposalLine extends CommonObjectLine if (($result = $this->defineBuyPrice($this->subprice, $this->remise_percent, $this->fk_product)) < 0) { return $result; - } - else { + } else { $this->pa_ht = $result; } } @@ -3082,8 +3033,7 @@ class SupplierProposalLine extends CommonObjectLine $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; @@ -3129,8 +3079,7 @@ class SupplierProposalLine extends CommonObjectLine $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error()." sql=".$sql; $this->db->rollback(); return -1; @@ -3175,8 +3124,7 @@ class SupplierProposalLine extends CommonObjectLine if (($result = $this->defineBuyPrice($this->subprice, $this->remise_percent, $this->fk_product)) < 0) { return $result; - } - else { + } else { $this->pa_ht = $result; } } @@ -3250,8 +3198,7 @@ class SupplierProposalLine extends CommonObjectLine $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -2; @@ -3284,8 +3231,7 @@ class SupplierProposalLine extends CommonObjectLine { $this->db->commit(); return 1; - } - else { + } else { $this->error = $this->db->error(); $this->db->rollback(); return -2; diff --git a/htdocs/supplier_proposal/contact.php b/htdocs/supplier_proposal/contact.php index 8f606ad4f67..4bd027299fa 100644 --- a/htdocs/supplier_proposal/contact.php +++ b/htdocs/supplier_proposal/contact.php @@ -65,14 +65,12 @@ if ($action == 'addcontact' && $permissiontoedit) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); - } - else { + } else { setEventMessages($object->error, $object->errors, 'errors'); } } @@ -84,8 +82,7 @@ elseif ($action == 'swapstatut' && $permissiontoedit) if ($object->fetch($id)) { $result = $object->swapContactStatus(GETPOST('ligne')); - } - else { + } else { dol_print_error($db); } } @@ -100,8 +97,7 @@ elseif ($action == 'deletecontact' && $permissiontoedit) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; - } - else { + } else { dol_print_error($db); } } @@ -191,8 +187,7 @@ if ($id > 0 || !empty($ref)) // Contacts lines include DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php'; - } - else { + } else { // Contact not found print "ErrorRecordNotFound"; } diff --git a/htdocs/supplier_proposal/document.php b/htdocs/supplier_proposal/document.php index 3096e6fbbdb..5b58c7de461 100644 --- a/htdocs/supplier_proposal/document.php +++ b/htdocs/supplier_proposal/document.php @@ -166,8 +166,7 @@ if ($object->id > 0) $permtoedit = $user->rights->supplier_proposal->creer; $param = '&id='.$object->id; include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; -} -else { +} else { print $langs->trans("ErrorUnknown"); } diff --git a/htdocs/supplier_proposal/index.php b/htdocs/supplier_proposal/index.php index 7a575007be2..6ba425f323a 100644 --- a/htdocs/supplier_proposal/index.php +++ b/htdocs/supplier_proposal/index.php @@ -162,8 +162,7 @@ if ($resql) print '
'.$langs->trans("Total").''.$total.'

"; -} -else { +} else { dol_print_error($db); } @@ -293,8 +292,7 @@ if ($resql) } } print "

"; -} -else dol_print_error($db); +} else dol_print_error($db); /* @@ -375,15 +373,13 @@ if (!empty($conf->supplier_proposal->enabled) && $user->rights->supplier_proposa if ($num > $nbofloop) { print ''.$langs->trans("XMoreLines", ($num - $nbofloop)).""; - } - elseif ($total > 0) + } elseif ($total > 0) { print ''.$langs->trans("Total").''.price($total)." "; } print "
"; } - } - else { + } else { dol_print_error($db); } } diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index eba1db92a94..d0ea3a2b625 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -358,8 +358,7 @@ if ($resql) $soc = new Societe($db); $soc->fetch($socid); $title = $langs->trans('ListOfSupplierProposals').' - '.$soc->name; - } - else { + } else { $title = $langs->trans('ListOfSupplierProposals'); } @@ -949,8 +948,7 @@ if ($resql) $delallowed = $user->rights->supplier_proposal->creer; print $formfile->showdocuments('massfilesarea_supplier_proposal', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); -} -else { +} else { dol_print_error($db); } diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php index 3f09ac541d3..43077495238 100644 --- a/htdocs/support/inc.php +++ b/htdocs/support/inc.php @@ -110,12 +110,10 @@ if (!defined('DONOTLOADCONF') && file_exists($conffile) && filesize($conffile) > $includeconferror = 'ErrorBadValueForDolibarrMainDBType'; } } - } - else { + } else { $includeconferror = 'ErrorBadValueForDolibarrMainDocumentRoot'; } - } - else { + } else { $includeconferror = 'ErrorBadFormatForConfFile'; } } diff --git a/htdocs/takepos/admin/bar.php b/htdocs/takepos/admin/bar.php index a33f337cc96..81eaf319295 100644 --- a/htdocs/takepos/admin/bar.php +++ b/htdocs/takepos/admin/bar.php @@ -52,8 +52,7 @@ if (GETPOST('action', 'alpha') == 'set') { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } diff --git a/htdocs/takepos/admin/orderprinters.php b/htdocs/takepos/admin/orderprinters.php index f0410f812d9..a9a4b945d0d 100644 --- a/htdocs/takepos/admin/orderprinters.php +++ b/htdocs/takepos/admin/orderprinters.php @@ -72,15 +72,7 @@ if ($action == "SavePrinter2") { $categstatic = new Categorie($db); $form = new Form($db); -if ($type == Categorie::TYPE_PRODUCT) { $title = $langs->trans("ProductsCategoriesArea"); $typetext = 'product'; } -elseif ($type == Categorie::TYPE_SUPPLIER) { $title = $langs->trans("SuppliersCategoriesArea"); $typetext = 'supplier'; } -elseif ($type == Categorie::TYPE_CUSTOMER) { $title = $langs->trans("CustomersCategoriesArea"); $typetext = 'customer'; } -elseif ($type == Categorie::TYPE_MEMBER) { $title = $langs->trans("MembersCategoriesArea"); $typetext = 'member'; } -elseif ($type == Categorie::TYPE_CONTACT) { $title = $langs->trans("ContactsCategoriesArea"); $typetext = 'contact'; } -elseif ($type == Categorie::TYPE_ACCOUNT) { $title = $langs->trans("AccountsCategoriesArea"); $typetext = 'bank_account'; } -elseif ($type == Categorie::TYPE_PROJECT) { $title = $langs->trans("ProjectsCategoriesArea"); $typetext = 'project'; } -elseif ($type == Categorie::TYPE_USER) { $title = $langs->trans("UsersCategoriesArea"); $typetext = 'user'; } -else { $title = $langs->trans("CategoriesArea"); $typetext = 'unknown'; } +if ($type == Categorie::TYPE_PRODUCT) { $title = $langs->trans("ProductsCategoriesArea"); $typetext = 'product'; } elseif ($type == Categorie::TYPE_SUPPLIER) { $title = $langs->trans("SuppliersCategoriesArea"); $typetext = 'supplier'; } elseif ($type == Categorie::TYPE_CUSTOMER) { $title = $langs->trans("CustomersCategoriesArea"); $typetext = 'customer'; } elseif ($type == Categorie::TYPE_MEMBER) { $title = $langs->trans("MembersCategoriesArea"); $typetext = 'member'; } elseif ($type == Categorie::TYPE_CONTACT) { $title = $langs->trans("ContactsCategoriesArea"); $typetext = 'contact'; } elseif ($type == Categorie::TYPE_ACCOUNT) { $title = $langs->trans("AccountsCategoriesArea"); $typetext = 'bank_account'; } elseif ($type == Categorie::TYPE_PROJECT) { $title = $langs->trans("ProjectsCategoriesArea"); $typetext = 'project'; } elseif ($type == Categorie::TYPE_USER) { $title = $langs->trans("UsersCategoriesArea"); $typetext = 'user'; } else { $title = $langs->trans("CategoriesArea"); $typetext = 'unknown'; } $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'); @@ -146,8 +138,7 @@ if ($nbofentries > 0) if ($row["fk_menu"] == 0) print ''.$row["label"].'
'; } print ''; -} -else { +} else { print ''; print ''; print ''; -} -else { +} else { print ''; print '
'.img_picto_common('', 'treemenu/branchbottom.gif').''; @@ -175,8 +166,7 @@ if ($nbofentries > 0) if ($row["fk_menu"] == 0) print ''.$row["label"].'
'; } print '
'; print '\n"; @@ -119,8 +116,7 @@ if ($conf->receiptprinter->enabled) { if ($conf->global->TAKEPOS_PRINT_METHOD == "receiptprinter") { print img_picto($langs->trans("Activated"), 'switch_on'); - } - else { + } else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print "\n"; @@ -135,8 +131,7 @@ print '\n"; @@ -171,8 +166,7 @@ if ($conf->global->TAKEPOS_PRINT_METHOD == "browser" || $conf->global->TAKEPOS_P if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; - } - else { + } else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); @@ -186,8 +180,7 @@ if ($conf->global->TAKEPOS_PRINT_METHOD == "browser" || $conf->global->TAKEPOS_P if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print ''; - } - else { + } else { include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor($variablename, $conf->global->$variablename, '', 80, 'dolibarr_notes'); print $doleditor->Create(); diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index f4e86677a1b..b03ae939fad 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -96,8 +96,7 @@ if ($action == 'set') if (!$error) { $db->commit(); - } - else { + } else { $db->rollback(); } } elseif ($action == 'updateMask') { @@ -194,8 +193,7 @@ foreach ($dirmodels as $reldir) if ($conf->global->TAKEPOS_REF_ADDON == "$file") { print img_picto($langs->trans("Activated"), 'switch_on'); - } - else { + } else { print ''; print img_picto($langs->trans("Disabled"), 'switch_off'); print ''; diff --git a/htdocs/takepos/admin/terminal.php b/htdocs/takepos/admin/terminal.php index e2996ad763d..db85e96fa01 100644 --- a/htdocs/takepos/admin/terminal.php +++ b/htdocs/takepos/admin/terminal.php @@ -102,8 +102,7 @@ if (GETPOST('action', 'alpha') == 'set') { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } @@ -186,8 +185,7 @@ if (!empty($conf->stock->enabled)) print ''; diff --git a/htdocs/takepos/ajax/ajax.php b/htdocs/takepos/ajax/ajax.php index 75c40e6607e..7c4471b0ec8 100644 --- a/htdocs/takepos/ajax/ajax.php +++ b/htdocs/takepos/ajax/ajax.php @@ -64,12 +64,10 @@ if ($action == 'getProducts') { } } echo json_encode($prods); - } - else { + } else { echo 'Failed to load category with id='.$category; } -} -elseif ($action == 'search' && $term != '') { +} elseif ($action == 'search' && $term != '') { // Define $filteroncategids, the filter on category ID if there is a Root category defined. $filteroncategids = ''; if ($conf->global->TAKEPOS_ROOT_CATEGORY_ID > 0) { // A root category is defined, we must filter on products inside this category tree @@ -108,8 +106,7 @@ elseif ($action == 'search' && $term != '') { ); } echo json_encode($rows); - } - else { + } else { echo 'Failed to search product : '.$db->lasterror(); } } elseif ($action == "opendrawer" && $term != '') { diff --git a/htdocs/takepos/genimg/index.php b/htdocs/takepos/genimg/index.php index 8a752a5d3a5..f549c0ec7bd 100644 --- a/htdocs/takepos/genimg/index.php +++ b/htdocs/takepos/genimg/index.php @@ -55,8 +55,7 @@ if ($query == "cat") if ($obj['photo_vignette']) { $filename = $obj['photo_vignette']; - } - else { + } else { $filename = $obj['photo']; } $file = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=category&entity='.$object->entity.'&file='.urlencode($pdir.$filename); @@ -64,8 +63,7 @@ if ($query == "cat") exit; } header('Location: ../../public/theme/common/nophoto.png'); -} -elseif ($query == "pro") +} elseif ($query == "pro") { require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php"; @@ -77,8 +75,7 @@ elseif ($query == "pro") $file = array_pop($match); if ($file == "") header('Location: ../../public/theme/common/nophoto.png'); else header('Location: '.$file.'&cache=1&publictakepos=1&modulepart=product'); -} -else { +} else { // TODO We don't need this. Size of image must be defined on HTML page, image must NOT be resize when downloaded. // The file diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php index 94cc526434e..4091e5fff90 100644 --- a/htdocs/takepos/index.php +++ b/htdocs/takepos/index.php @@ -134,8 +134,7 @@ foreach ($categories as $key => $categorycursor) if ($categorycursor['level'] == $levelofmaincategories) { $maincategories[$key] = $categorycursor; - } - else { + } else { $subcategories[$key] = $categorycursor; } } @@ -856,8 +855,7 @@ $r = 0; if (empty($conf->global->TAKEPOS_BAR_RESTAURANT)) { $menus[$r++] = array('title'=>'
'.$langs->trans("New").'
', 'action'=>'New();'); -} -else { +} else { // BAR RESTAURANT specific menu $menus[$r++] = array('title'=>'
'.$langs->trans("Place").'
', 'action'=>'Floors();'); } @@ -951,8 +949,7 @@ if (!empty($conf->global->TAKEPOS_HIDE_HEAD_BAR)) { { echo ''; echo ''; - } - elseif ($i > 12) echo ''; + } elseif ($i > 12) echo ''; else echo ''; } @@ -981,12 +978,10 @@ if (!empty($conf->global->TAKEPOS_HIDE_HEAD_BAR)) { if ($count == ($MAXCATEG - 2)) { //echo ''; echo ''; - } - elseif ($count == ($MAXCATEG - 1)) { + } elseif ($count == ($MAXCATEG - 1)) { //echo ''; echo ''; - } - else { + } else { echo ''; } ?> @@ -1015,12 +1010,10 @@ if (!empty($conf->global->TAKEPOS_HIDE_HEAD_BAR)) { if ($count == ($MAXPRODUCT - 2)) { //echo ''; print ''; - } - elseif ($count == ($MAXPRODUCT - 1)) { + } elseif ($count == ($MAXPRODUCT - 1)) { //echo ''; print ''; - } - else { + } else { print '
'; print ''; } diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 274e47a1185..904f2ac7e4c 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -116,8 +116,7 @@ $invoice = new Facture($db); if ($invoiceid > 0) { $ret = $invoice->fetch($invoiceid); -} -else { +} else { $ret = $invoice->fetch('', '(PROV-POS'.$_SESSION["takeposterminal"].'-'.$place.')'); } if ($ret > 0) @@ -186,13 +185,11 @@ if ($action == 'valid' && $user->rights->facture->creer) dol_syslog("Sale already validated"); dol_htmloutput_errors($langs->trans("InvoiceIsAlreadyValidated", "TakePos"), null, 1); } - } - elseif (count($invoice->lines) == 0) + } elseif (count($invoice->lines) == 0) { dol_syslog("Sale without lines"); dol_htmloutput_errors($langs->trans("NoLinesToBill", "TakePos"), null, 1); - } - elseif (!empty($conf->stock->enabled) && $conf->global->$constantforkey != "1") + } elseif (!empty($conf->stock->enabled) && $conf->global->$constantforkey != "1") { $savconst = $conf->global->STOCK_CALCULATE_ON_BILL; $conf->global->STOCK_CALCULATE_ON_BILL = 1; @@ -207,8 +204,7 @@ if ($action == 'valid' && $user->rights->facture->creer) $res = $invoice->validate($user, '', $conf->global->$constantforkey, 0, $batch_rule); $conf->global->STOCK_CALCULATE_ON_BILL = $savconst; - } - else { + } else { $res = $invoice->validate($user); } @@ -270,8 +266,7 @@ if (($action == "addline" || $action == "freezone") && $placeid == 0) { $langs->load('errors'); dol_htmloutput_errors($langs->trans("ErrorModuleSetupNotComplete", "TakePos"), null, 1); - } - else { + } else { $placeid = $invoice->create($user); if ($placeid < 0) { @@ -375,8 +370,7 @@ if ($action == "deleteline") { if ($idline > 0 and $placeid > 0) { // If invoice exists and line selected. To avoid errors if deleted from another device or no line selected. $invoice->deleteline($idline); $invoice->fetch($placeid); - } - elseif ($placeid > 0) { // If invoice exists but no line selected, proceed to delete last line. + } elseif ($placeid > 0) { // If invoice exists but no line selected, proceed to delete last line. $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."facturedet where fk_facture='".$placeid."' order by rowid DESC"; $resql = $db->query($sql); $row = $db->fetch_array($resql); @@ -415,8 +409,7 @@ if ($action == "delete") { if ($resql1 && $resql2 && $resql3) { $db->commit(); - } - else { + } else { $db->rollback(); } @@ -456,8 +449,7 @@ if ($action == "updateprice") if ($usercanproductignorepricemin && (!empty($price_min) && (price2num($pu_ht) * (1 - price2num($line->remise_percent) / 100) < price2num($price_min)))) { echo $langs->trans("CantBeLessThanMinPrice"); - } - else $result = $invoice->updateline($line->id, $line->desc, $number, $line->qty, $line->remise_percent, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'TTC', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); + } else $result = $invoice->updateline($line->id, $line->desc, $number, $line->qty, $line->remise_percent, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'TTC', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); } } $invoice->fetch($placeid); @@ -481,8 +473,7 @@ if ($action == "updatereduction") if ($usercanproductignorepricemin && (!empty($price_min) && (price2num($line->multicurrency_subprice) * (1 - price2num($number) / 100) < price2num($price_min)))) { echo $langs->trans("CantBeLessThanMinPrice"); - } - else $result = $invoice->updateline($line->id, $line->desc, $line->multicurrency_subprice, $line->qty, $number, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); + } else $result = $invoice->updateline($line->id, $line->desc, $line->multicurrency_subprice, $line->qty, $number, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); } } $invoice->fetch($placeid); @@ -574,8 +565,7 @@ if ($action == "valid" || $action == "history") if ($remaintopay > 0) { $sectionwithinvoicelink .= $langs->trans('RemainToPay').': '.price($remaintopay, 1, $langs, 1, -1, -1, $conf->currency).''; - } - else { + } else { if ($invoice->paye) $sectionwithinvoicelink .= ''.$langs->trans("Paid").''; else $sectionwithinvoicelink .= $langs->trans('BillShortStatusValidated'); } @@ -806,13 +796,11 @@ $( document ).ready(function() { if ($adh->hasDelay()) { $s .= " ".img_warning($langs->trans("Late")); } - } - else { + } else { $s .= '
'.$langs->trans("SubscriptionNotReceived"); if ($adh->statut > 0) $s .= " ".img_warning($langs->trans("Late")); // displays delay Pictogram only if not a draft and not terminated } - } - else { + } else { $s .= '
'.$langs->trans("ThirdpartyNotLinkedToMember"); } $s .= ''; @@ -958,8 +946,7 @@ if ($placeid > 0) if ($firstline != $line->desc) { $htmlsupplements[$line->fk_parent_line] .= $form->textwithpicto(dolGetFirstLineOfText($line->desc), $line->desc); - } - else { + } else { $htmlsupplements[$line->fk_parent_line] .= $line->desc; } } @@ -1008,8 +995,7 @@ if ($placeid > 0) if ($firstline != $line->desc) { $htmlforlines .= $form->textwithpicto(dolGetFirstLineOfText($line->desc), $line->desc); - } - else { + } else { $htmlforlines .= $line->desc; } } @@ -1036,12 +1022,10 @@ if ($placeid > 0) print $htmlforlines; } - } - else { + } else { print ''; } -} -else { // No invoice generated yet +} else { // No invoice generated yet print ''; } diff --git a/htdocs/takepos/pay.php b/htdocs/takepos/pay.php index f370387d72e..95bb9118b48 100644 --- a/htdocs/takepos/pay.php +++ b/htdocs/takepos/pay.php @@ -51,8 +51,7 @@ $invoice = new Facture($db); if ($invoiceid > 0) { $invoice->fetch($invoiceid); -} -else { +} else { $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."facture where ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")'"; $resql = $db->query($sql); $obj = $db->fetch_object($resql); @@ -63,8 +62,7 @@ else { if (!$invoiceid) { $invoiceid = 0; // Invoice does not exist yet - } - else { + } else { $invoice->fetch($invoiceid); } } diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index 1cad9a9ede4..427f2e92ab1 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -41,8 +41,7 @@ if (defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { // Decode place if it is an order from customer phone $key = GETPOST('key'); $place = dol_decode($key); -} -else $place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Ba or Restaurant +} else $place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Ba or Restaurant $action = GETPOST('action', 'alpha'); $setterminal = GETPOST('setterminal', 'int'); $idproduct = GETPOST('idproduct', 'int'); @@ -82,8 +81,7 @@ if ($action == "productinfo") { print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; print '
'; print ''; -} -elseif ($action == "editline") { +} elseif ($action == "editline") { $placeid = GETPOST('placeid', 'int'); $selectedline = GETPOST('selectedline', 'int'); $invoice = new Facture($db); @@ -104,8 +102,7 @@ elseif ($action == "editline") { print ''; } } -} -else { +} else { ?> '; - } - } - } - - return $out; - } - - /** - * Fill array_options property of object by extrafields value (using for data sent by forms) - * - * @param array $extralabels Deprecated (old $array of extrafields, now set this to null) - * @param object $object Object - * @param string $onlykey Only the following key is filled. When we make update of only one extrafield ($action = 'update_extras'), calling page must set this to avoid to have other extrafields being reset. - * @return int 1 if array_options set, 0 if no value, -1 if error (field required missing for example) - */ - public function setOptionalsFromPost($extralabels, &$object, $onlykey = '') - { - global $_POST, $langs; - - $nofillrequired = 0; // For error when required field left blank - $error_field_required = array(); - - if (is_array($this->attributes[$object->table_element]['label'])) $extralabels = $this->attributes[$object->table_element]['label']; - - if (is_array($extralabels)) - { - // Get extra fields - foreach ($extralabels as $key => $value) - { - if (!empty($onlykey) && $key != $onlykey) continue; - - $key_type = $this->attributes[$object->table_element]['type'][$key]; - if ($key_type == 'separate') continue; - - $enabled = 1; - if (isset($this->attributes[$object->table_element]['list'][$key])) - { - $enabled = dol_eval($this->attributes[$object->table_element]['list'][$key], 1); - } - $perms = 1; - if (isset($this->attributes[$object->table_element]['perms'][$key])) - { - $perms = dol_eval($this->attributes[$object->table_element]['perms'][$key], 1); - } - if (empty($enabled)) continue; - if (empty($perms)) continue; - - if ($this->attributes[$object->table_element]['required'][$key]) // Value is required - { - // Check if empty without using GETPOST, value can be alpha, int, array, etc... - if ((!is_array($_POST["options_".$key]) && empty($_POST["options_".$key]) && $this->attributes[$object->table_element]['type'][$key] != 'select' && $_POST["options_".$key] != '0') - || (!is_array($_POST["options_".$key]) && empty($_POST["options_".$key]) && $this->attributes[$object->table_element]['type'][$key] == 'select') - || (is_array($_POST["options_".$key]) && empty($_POST["options_".$key]))) - { - //print 'ccc'.$value.'-'.$this->attributes[$object->table_element]['required'][$key]; - $nofillrequired++; - $error_field_required[] = $langs->transnoentitiesnoconv($value); - } - } - - if (in_array($key_type, array('date'))) - { - // Clean parameters - // TODO GMT date in memory must be GMT so we should add gm=true in parameters - $value_key = dol_mktime(0, 0, 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]); - } - elseif (in_array($key_type, array('datetime'))) - { - // Clean parameters - // TODO GMT date in memory must be GMT so we should add gm=true in parameters - $value_key = dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]); - } - elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) - { - $value_arr = GETPOST("options_".$key, 'array'); // check if an array - if (!empty($value_arr)) { - $value_key = implode($value_arr, ','); - } else { - $value_key = ''; - } - } - elseif (in_array($key_type, array('price', 'double'))) - { - $value_arr = GETPOST("options_".$key, 'alpha'); - $value_key = price2num($value_arr); - } - else - { - $value_key = GETPOST("options_".$key); - if (in_array($key_type, array('link')) && $value_key == '-1') $value_key = ''; - } - - $object->array_options["options_".$key] = $value_key; - } - - if ($nofillrequired) { - $langs->load('errors'); - setEventMessages($langs->trans('ErrorFieldsRequired').' : '.implode(', ', $error_field_required), null, 'errors'); - return -1; - } - else { - return 1; - } - } - else { - return 0; - } - } - - /** - * return array_options array of data of extrafields value of object sent by a search form - * - * @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 - */ - public function getOptionalsFromPost($extrafieldsobjectkey, $keyprefix = '', $keysuffix = '') - { - global $_POST; - - if (is_string($extrafieldsobjectkey) && is_array($this->attributes[$extrafieldsobjectkey]['label'])) - { - $extralabels = $this->attributes[$extrafieldsobjectkey]['label']; - } - else - { - $extralabels = $extrafieldsobjectkey; - } - - if (is_array($extralabels)) - { - $array_options = array(); - - // Get extra fields - foreach ($extralabels as $key => $value) - { - $key_type = ''; - if (is_string($extrafieldsobjectkey)) - { - $key_type = $this->attributes[$extrafieldsobjectkey]['type'][$key]; - } - - if (in_array($key_type, array('date', 'datetime'))) - { - if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix."year")) continue; // Value was not provided, we should not set it. - // Clean parameters - $value_key = dol_mktime(GETPOST($keysuffix."options_".$key.$keyprefix."hour", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."min", 'int'), 0, GETPOST($keysuffix."options_".$key.$keyprefix."month", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."day", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."year", 'int')); - } - elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) - { - if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. - $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix); - // Make sure we get an array even if there's only one checkbox - $value_arr = (array) $value_arr; - $value_key = implode(',', $value_arr); - } - elseif (in_array($key_type, array('price', 'double', 'int'))) - { - if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. - $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix); - $value_key = price2num($value_arr); - } - else - { - if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. - $value_key = GETPOST($keysuffix."options_".$key.$keyprefix); - } - - $array_options[$keysuffix."options_".$key] = $value_key; // No keyprefix here. keyprefix is used only for read. - } - - return $array_options; - } - - return 0; - } } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index b07e5220384..f2b11938ca2 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -368,6 +368,8 @@ class Form $s = picto_from_langcode($langcode, 'class="pictoforlang paddingright"'); $resultforextrlang .= $s; + + // TODO Use the showInputField() method of ExtraLanguages object if ($typeofdata == 'textarea') { $resultforextrlang .= ' - '; - print '
'; -} -elseif ($action == "publicpayment") { - $langs->loadLangs(array("orders")); - print '

'.$langs->trans('StatusOrderDelivered').'

'; - print ''; - print '
'; -} -elseif ($action == "checkplease") { - print ''; - print ''; - print '
'; -} -elseif ($action == "editline") { - $placeid = GETPOST('placeid', 'int'); - $selectedline = GETPOST('selectedline', 'int'); - $invoice = new Facture($db); - $invoice->fetch($placeid); - foreach ($invoice->lines as $line) - { - if ($line->id == $selectedline) - { - $prod = new Product($db); - $prod->fetch($line->fk_product); - print "".$prod->label."
"; - print ''; - print "
".$prod->description; - print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; - print '
'; - print ''; - print ''; - print ''; - } - } -} -else { - // Title - $title = 'TakePOS - Dolibarr '.DOL_VERSION; - if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $title = 'TakePOS - '.$conf->global->MAIN_APPLICATION_TITLE; - $head = ' - - -'; - $arrayofcss = array('/takepos/css/phone.css'); - top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); - ?> - - - - global->TAKEPOS_NUM_TERMINALS != "1" && $_SESSION["takeposterminal"] == "") print '
'.$langs->trans('TerminalSelect').'
'; - ?> -
-
- '.strtoupper(substr($langs->trans('Floors'), 0, 3)).''; - print ''; - print ''; - print ''; - } - else { - print ''; - print ''; - print ''; - } - ?> -
-
-
-
-
-
-
-
- - close(); + + * + * 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/takepos/phone.php + * \ingroup takepos + * \brief TakePOS Phone screen + */ + +//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled cause need to load personalized language +//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled cause need to load personalized language +//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); +//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); +if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); +if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); +if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); +if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); +if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); + +if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; + +if (defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { + // Decode place if it is an order from customer phone + if (GETPOSTISSET("key")) $place = dol_decode(GETPOST('key')); + else $place = GETPOST('place', 'aZ09'); +} +else $place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Ba or Restaurant +$action = GETPOST('action', 'alpha'); +$setterminal = GETPOST('setterminal', 'int'); +$idproduct = GETPOST('idproduct', 'int'); + +if ($setterminal > 0) +{ + $_SESSION["takeposterminal"] = $setterminal; +} + +$langs->loadLangs(array("bills", "orders", "commercial", "cashdesk", "receiptprinter")); + +if (empty($user->rights->takepos->run) && !defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { + accessforbidden(); +} + +/* + * View + */ + +if ($action == "productinfo") { + $prod = new Product($db); + $prod->fetch($idproduct); + print ''; + print "
".$prod->label."
"; + print ''; + print "
".$prod->description; + print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; + print '
'; +} +elseif ($action == "publicpreorder") { + print ''; + print "

"; + print '
+ +
'; + print '
'; +} +elseif ($action == "publicpayment") { + $langs->loadLangs(array("orders")); + print '

'.$langs->trans('StatusOrderDelivered').'

'; + print ''; + print '
'; +} +elseif ($action == "checkplease") { + if (GETPOSTISSET("payment")){ + print '

'.$langs->trans('StatusOrderDelivered').'

'; + require_once DOL_DOCUMENT_ROOT.'/core/class/dolreceiptprinter.class.php'; + require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; + $printer = new dolReceiptPrinter($db); + $printer->initPrinter($conf->global->{'TAKEPOS_PRINTER_TO_USE'.$_SESSION["takeposterminal"]}); + $printer->printer->feed(); + $printer->printer->feed(); + $printer->printer->text($langs->trans('IM')); + $printer->printer->feed(); + $printer->printer->text($langs->trans('Place').": ".$place); + $printer->printer->feed(); + $printer->printer->text($langs->trans('Payment').": ".$langs->trans(GETPOST('payment', 'alpha'))); + $printer->printer->feed(); + $printer->printer->feed(); + $printer->printer->feed(); + $printer->printer->feed(); + $printer->printer->feed(); + $printer->close(); + } + else{ + print ''; + print ''; + print '
'; + } +} +elseif ($action == "editline") { + $placeid = GETPOST('placeid', 'int'); + $selectedline = GETPOST('selectedline', 'int'); + $invoice = new Facture($db); + $invoice->fetch($placeid); + foreach ($invoice->lines as $line) + { + if ($line->id == $selectedline) + { + $prod = new Product($db); + $prod->fetch($line->fk_product); + print "".$prod->label."
"; + print ''; + print "
".$prod->description; + print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; + print '
'; + print ''; + print ''; + print ''; + } + } +} +else { +// Title +$title = 'TakePOS - Dolibarr '.DOL_VERSION; +if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $title = 'TakePOS - '.$conf->global->MAIN_APPLICATION_TITLE; +$head = ' + + +'; +$arrayofcss = array('/takepos/css/phone.css'); +top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); + ?> + + + + global->TAKEPOS_NUM_TERMINALS != "1" && $_SESSION["takeposterminal"] == "") print '
'.$langs->trans('TerminalSelect').'
'; + ?> +
+
+ '.strtoupper(substr($langs->trans('Floors'), 0, 3)).''; + print ''; + print ''; + print ''; + } + else { + print ''; + print ''; + print ''; + } + ?> +
+
+
+
+
+
+
+
+ + close(); From 3632111705de7d7ef64b36080a5e08e844e3f72d Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Sun, 24 May 2020 17:29:35 +0200 Subject: [PATCH 750/780] Fix travis --- htdocs/takepos/phone.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index 72d97e7a07a..059538d68cc 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -1,5 +1,5 @@ + /* 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 @@ -136,15 +136,15 @@ elseif ($action == "editline") { } } else { -// Title -$title = 'TakePOS - Dolibarr '.DOL_VERSION; -if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $title = 'TakePOS - '.$conf->global->MAIN_APPLICATION_TITLE; -$head = ' + // Title + $title = 'TakePOS - Dolibarr '.DOL_VERSION; + if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $title = 'TakePOS - '.$conf->global->MAIN_APPLICATION_TITLE; + $head = ' '; -$arrayofcss = array('/takepos/css/phone.css'); -top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); + $arrayofcss = array('/takepos/css/phone.css'); + top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); ?> - - - global->TAKEPOS_NUM_TERMINALS != "1" && $_SESSION["takeposterminal"] == "") print '
'.$langs->trans('TerminalSelect').'
'; - ?> -
-
- '.strtoupper(substr($langs->trans('Floors'), 0, 3)).''; - print ''; - print ''; - print ''; - } - else { - print ''; - print ''; - print ''; - } - ?> -
-
-
-
-
-
-
-
- - close(); + + * + * 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/takepos/phone.php + * \ingroup takepos + * \brief TakePOS Phone screen + */ + +//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled cause need to load personalized language +//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled cause need to load personalized language +//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); +//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); +if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); +if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); +if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); +if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); +if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); + +if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; + +if (defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { + // Decode place if it is an order from customer phone + if (GETPOSTISSET("key")) $place = dol_decode(GETPOST('key')); + else $place = GETPOST('place', 'aZ09'); +} +else $place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Ba or Restaurant +$action = GETPOST('action', 'alpha'); +$setterminal = GETPOST('setterminal', 'int'); +$idproduct = GETPOST('idproduct', 'int'); + +if ($setterminal > 0) +{ + $_SESSION["takeposterminal"] = $setterminal; +} + +$langs->loadLangs(array("bills", "orders", "commercial", "cashdesk", "receiptprinter")); + +if (empty($user->rights->takepos->run) && !defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { + accessforbidden(); +} + +/* + * View + */ + +if ($action == "productinfo") { + $prod = new Product($db); + $prod->fetch($idproduct); + print ''; + print "
".$prod->label."
"; + print ''; + print "
".$prod->description; + print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; + print '
'; +} +elseif ($action == "publicpreorder") { + print ''; + print "

"; + print '
+ +
'; + print '
'; +} +elseif ($action == "publicpayment") { + $langs->loadLangs(array("orders")); + print '

'.$langs->trans('StatusOrderDelivered').'

'; + print ''; + print '
'; +} +elseif ($action == "checkplease") { + if (GETPOSTISSET("payment")){ + print '

'.$langs->trans('StatusOrderDelivered').'

'; + require_once DOL_DOCUMENT_ROOT.'/core/class/dolreceiptprinter.class.php'; + require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; + $printer = new dolReceiptPrinter($db); + $printer->initPrinter($conf->global->{'TAKEPOS_PRINTER_TO_USE'.$_SESSION["takeposterminal"]}); + $printer->printer->feed(); + $printer->printer->feed(); + $printer->printer->text($langs->trans('IM')); + $printer->printer->feed(); + $printer->printer->text($langs->trans('Place').": ".$place); + $printer->printer->feed(); + $printer->printer->text($langs->trans('Payment').": ".$langs->trans(GETPOST('payment', 'alpha'))); + $printer->printer->feed(); + $printer->printer->feed(); + $printer->printer->feed(); + $printer->printer->feed(); + $printer->printer->feed(); + $printer->close(); + } + else{ + print ''; + print ''; + print '
'; + } +} +elseif ($action == "editline") { + $placeid = GETPOST('placeid', 'int'); + $selectedline = GETPOST('selectedline', 'int'); + $invoice = new Facture($db); + $invoice->fetch($placeid); + foreach ($invoice->lines as $line) + { + if ($line->id == $selectedline) + { + $prod = new Product($db); + $prod->fetch($line->fk_product); + print "".$prod->label."
"; + print ''; + print "
".$prod->description; + print "
".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).""; + print '
'; + print ''; + print ''; + print ''; + } + } +} +else { + // Title + $title = 'TakePOS - Dolibarr '.DOL_VERSION; + if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $title = 'TakePOS - '.$conf->global->MAIN_APPLICATION_TITLE; + $head = ' + + +'; + $arrayofcss = array('/takepos/css/phone.css'); + top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); + ?> + + + + global->TAKEPOS_NUM_TERMINALS != "1" && $_SESSION["takeposterminal"] == "") print '
'.$langs->trans('TerminalSelect').'
'; + ?> +
+
+ '.strtoupper(substr($langs->trans('Floors'), 0, 3)).''; + print ''; + print ''; + print ''; + } + else { + print ''; + print ''; + print ''; + } + ?> +
+
+
+
+
+
+
+
+ + close(); From aee6fce9f85d38cfe2a05af77eea7d30a62ea1b3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 24 May 2020 20:04:26 +0200 Subject: [PATCH 754/780] Fix remove bad use --- htdocs/core/class/conf.class.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 10d6fedf0e0..ad87949d4e9 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -1,9 +1,7 @@ * Copyright (C) 2003 Xavier Dutoit - * Copyright (C) 2004-2016 Laurent Destailleur + * Copyright (C) 2004-2020 Laurent Destailleur * Copyright (C) 2005-2017 Regis Houssin * Copyright (C) 2006 Jean Heimburger * From 6158e41822145b846baf1109adbc431046ed6698 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 24 May 2020 23:44:04 +0200 Subject: [PATCH 755/780] CSS --- htdocs/takepos/admin/other.php | 2 +- htdocs/takepos/admin/receipt.php | 2 +- htdocs/takepos/admin/setup.php | 2 +- htdocs/takepos/admin/terminal.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/takepos/admin/other.php b/htdocs/takepos/admin/other.php index cbb22c94f90..902bcfc81d4 100644 --- a/htdocs/takepos/admin/other.php +++ b/htdocs/takepos/admin/other.php @@ -111,7 +111,7 @@ llxHeader('', $langs->trans("CashDeskSetup")); $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("CashDeskSetup").' (TakePOS)', $linkback, 'title_setup'); $head = takepos_prepare_head(); -dol_fiche_head($head, 'other', 'TakePOS', -1); +dol_fiche_head($head, 'other', 'TakePOS', -1, 'cash-register'); print '
'; diff --git a/htdocs/takepos/admin/receipt.php b/htdocs/takepos/admin/receipt.php index 83b31569a7b..2f54d79d603 100644 --- a/htdocs/takepos/admin/receipt.php +++ b/htdocs/takepos/admin/receipt.php @@ -82,7 +82,7 @@ llxHeader('', $langs->trans("CashDeskSetup")); $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("CashDeskSetup").' (TakePOS)', $linkback, 'title_setup'); $head = takepos_prepare_head(); -dol_fiche_head($head, 'receipt', 'TakePOS', -1); +dol_fiche_head($head, 'receipt', 'TakePOS', -1, 'cash-register'); print '
'; print ''; diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index 85406c46faa..03607409ea7 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -133,7 +133,7 @@ llxHeader('', $langs->trans("CashDeskSetup")); $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("CashDeskSetup").' (TakePOS)', $linkback, 'title_setup'); $head = takepos_prepare_head(); -dol_fiche_head($head, 'setup', 'TakePOS', -1); +dol_fiche_head($head, 'setup', 'TakePOS', -1, 'cash-register'); // Numbering modules $now = dol_now(); diff --git a/htdocs/takepos/admin/terminal.php b/htdocs/takepos/admin/terminal.php index 46d168ddd24..ec3908361fc 100644 --- a/htdocs/takepos/admin/terminal.php +++ b/htdocs/takepos/admin/terminal.php @@ -123,7 +123,7 @@ llxHeader('', $langs->trans("CashDeskSetup")); $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("CashDeskSetup").' (TakePOS)', $linkback, 'title_setup'); $head = takepos_prepare_head(); -dol_fiche_head($head, 'terminal'.$terminal, 'TakePOS', -1); +dol_fiche_head($head, 'terminal'.$terminal, 'TakePOS', -1, 'cash-register'); print '
'; From 0041bca82f3dc0ea8c83eec91ef71fbf02fc87a8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 24 May 2020 23:49:33 +0200 Subject: [PATCH 756/780] Fix ambiguous param --- htdocs/install/mysql/migration/repair.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index b21429a4d1b..7546790b151 100644 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -495,8 +495,8 @@ UPDATE llx_accounting_bookkeeping set date_creation = tms where date_creation IS UPDATE llx_facturedet SET situation_percent = 100 WHERE situation_percent IS NULL AND fk_prev_id IS NULL; -- Test inconsistency of data into situation invoices: If it differs, it may be the total_ht that is wrong and situation_percent that is good. --- select f.rowid, f.type, qty, subprice, situation_percent, total_ht, total_ttc, total_tva, multicurrency_total_ht, multicurrency_total_tva, multicurrency_total_ttc, (situation_percent / 100 * subprice * qty * (1 - (fd.remise_percent / 100))) --- from llx_facturedet as fd, llx_facture as f where fd.fk_facture = f.rowid AND (total_ht - situation_percent / 100 * subprice * qty * (1 - (fd.remise_percent / 100))) > 0.01 and f.type = 5; +-- select f.rowid, f.type, qty, subprice, situation_percent, fd.total_ht, fd.total_ttc, fd.total_tva, fd.multicurrency_total_ht, fd.multicurrency_total_tva, fd.multicurrency_total_ttc, (situation_percent / 100 * subprice * qty * (1 - (fd.remise_percent / 100))) +-- from llx_facturedet as fd, llx_facture as f where fd.fk_facture = f.rowid AND (fd.total_ht - situation_percent / 100 * subprice * qty * (1 - (fd.remise_percent / 100))) > 0.01 and f.type = 5; -- Note to make all deposit as payed when there is already a discount generated from it. From 47465f4108a541a03f01cc1dc30019177b9968ef Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 00:20:00 +0200 Subject: [PATCH 757/780] Fix for situation invoice (exclude credit not when searching last invoice to use) --- htdocs/compta/facture/card.php | 4 ++-- htdocs/core/class/html.form.class.php | 30 +++++++++++++-------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index d7ac591755a..b7cfb8272d1 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -3146,10 +3146,10 @@ if ($action == 'create') print ''; // Next situation invoice - $opt = $form->selectSituationInvoices(GETPOST('originid'), $socid); + $opt = $form->selectSituationInvoices(GETPOST('originid', 'int'), $socid); print '
'; - $tmp = ''.$langs->trans('NoSituations').'') || (GETPOST('origin') && GETPOST('origin') != 'facture' && GETPOST('origin') != 'commande')) $tmp .= ' disabled'; $tmp .= '> '; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index d7e46922f56..622ffb1d127 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -3804,27 +3804,27 @@ class Form $sql .= ' FROM '.MAIN_DB_PREFIX.'facture'; $sql .= ' WHERE entity IN ('.getEntity('invoice').')'; $sql .= ' AND situation_counter>=1'; + $sql .= ' AND fk_soc = '.(int) $socid; + $sql .= ' AND type <> 2'; $sql .= ' ORDER by situation_cycle_ref, situation_counter desc'; $resql = $this->db->query($sql); + if ($resql && $this->db->num_rows($resql) > 0) { // Last seen cycle $ref = 0; while ($obj = $this->db->fetch_object($resql)) { - //Same company ? - if ($socid == $obj->fk_soc) { - //Same cycle ? - if ($obj->situation_cycle_ref != $ref) { - // Just seen this cycle - $ref = $obj->situation_cycle_ref; - //not final ? - if ($obj->situation_final != 1) { - //Not prov? - if (substr($obj->ref, 1, 4) != 'PROV') { - if ($selected == $obj->rowid) { - $opt .= ''; - } else { - $opt .= ''; - } + //Same cycle ? + if ($obj->situation_cycle_ref != $ref) { + // Just seen this cycle + $ref = $obj->situation_cycle_ref; + //not final ? + if ($obj->situation_final != 1) { + //Not prov? + if (substr($obj->ref, 1, 4) != 'PROV') { + if ($selected == $obj->rowid) { + $opt .= ''; + } else { + $opt .= ''; } } } From 61545703d14c119acdfb6446a8908ae3b16e4aad Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 10:58:18 +0200 Subject: [PATCH 758/780] CSS --- htdocs/compta/charges/index.php | 9 ++++++--- htdocs/theme/eldy/global.inc.php | 19 +++++++++++++------ htdocs/theme/eldy/theme_vars.inc.php | 3 ++- htdocs/theme/md/style.css.php | 6 ++++-- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index 93065219248..c64797b801c 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -89,6 +89,8 @@ if ($mode == 'sconly') $param = '&mode=sconly'; if ($sortfield) $param .= '&sortfield='.$sortfield; if ($sortorder) $param .= '&sortorder='.$sortorder; +$totalnboflines = 0; +$num = 0; print ''; if ($optioncss != '') print ''; @@ -99,14 +101,15 @@ print ''; print ''; print ''; +$nav = ''; if ($mode != 'sconly') { - $center = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 1); + $nav = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'object_payment', 0, $nav, '', $limit, 1); } else { - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 0); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'object_payment', 0, $nav, '', $limit, 0); } if ($year) $param .= '&year='.$year; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 79bf092c82f..6e0bfd53e68 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -20,6 +20,7 @@ --colorbacklinebreak: rgb(); --colorbackbody: rgb(); --colortexttitlenotab: rgb(); + --colortexttitlenotab2: rgb(); --colortexttitle: rgb(); --colortext: rgb(); --colortextlink: rgb(); @@ -31,7 +32,7 @@ --tooltipbgcolor: ; --tooltipfontcolor : ; --oddevencolor: #202020; - --colorboxstatsborder: #ddd; + --colorboxstatsborder: #e0e0e0; --dolgraphbg: rgba(255,255,255,0); --fieldrequiredcolor: #000055; --colortextbacktab: #; @@ -62,6 +63,7 @@ if (!empty($conf->global->MAIN_THEME_DARKMODEENABLED)) { --colorbackbody: #1d1e20; --tooltipbgcolor: #2b2d2f; --colortexttitlenotab: rgb(220,220,220); + --colortexttitlenotab2: rgb(220,220,220); --colortexttitle: rgb(220,220,220); --colortext: rgb(220,220,220); --colortextlink: #4390dc; @@ -2688,7 +2690,7 @@ div.tabBar.tabBarNoTop { /* tabBar used for creation/update/send forms */ div.tabBarWithBottom { padding-bottom: 18px; - border-bottom: 1px solid #aaa; + border-bottom: 1px solid #bbb; } div.tabBarWithBottom tr { background: unset !important; @@ -3588,7 +3590,7 @@ ul.noborder li:nth-child(even):not(.liste_titre) { background: var(--colorbackbody); border: 1px solid var(--colorboxstatsborder); border-left: 6px solid var(--colorboxstatsborder); - box-shadow: 1px 1px 8px var(--colorboxstatsborder); + /* box-shadow: 1px 1px 8px var(--colorboxstatsborder); */ border-radius: 0px; } .boxstats, .boxstats130, .boxstatscontent { @@ -3981,9 +3983,14 @@ div.titre { padding-top: 5px; padding-bottom: 5px; } -div.titre, .secondary { - font-family: ; - color: var(--colortexttitlenotab); +.secondary, div.titre { + color: var(--colortexttitlenotab); +} +.tertiary { + color: var(--colortexttitlenotab2); +} +table.table-fiche-title:first-of-type div { + color: var(--colortexttitlenotab); } table.table-fiche-title .col-title div.titre{ diff --git a/htdocs/theme/eldy/theme_vars.inc.php b/htdocs/theme/eldy/theme_vars.inc.php index f7ae5b3c320..79b58c5c3ad 100644 --- a/htdocs/theme/eldy/theme_vars.inc.php +++ b/htdocs/theme/eldy/theme_vars.inc.php @@ -67,7 +67,8 @@ $colorbacklinepairhover = '230,237,244'; // line hover $colorbacklinepairchecked = '230,237,244'; // line checked $colorbacklinebreak = '248,247,244'; // line break $colorbackbody = '255,255,255'; -$colortexttitlenotab = '0,113,120'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,113,120, violet: 0,50,120 +$colortexttitlenotab = '0,123,140'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,113,120, violet: 0,50,120 +$colortexttitlenotab2 = '100,0,100'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,113,120, violet: 0,50,120 $colortexttitle = '0,0,0'; $colortexttitlelink = '10, 20, 100'; $colortext = '0,0,0'; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index c43fa9cd7d9..f1e2c9257e6 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -3921,8 +3921,10 @@ div.titre { /* text-shadow: 1px 1px 2px #FFFFFF; */ dol_optimize_smallscreen) ? '' : 'margin-top: 4px;'); ?> } -div.titre, .secondary { - font-family: ; +.secondary, div.titre { + color: var(--colortexttitlenotab); +} +.tertiary { color: var(--colortexttitlenotab); } From a44f0d24ebfdc411dd6fbcd133413455c5a14c5d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 11:06:16 +0200 Subject: [PATCH 759/780] Fix Popup --- .../core/boxes/box_produits_alerte_stock.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/htdocs/core/boxes/box_produits_alerte_stock.php b/htdocs/core/boxes/box_produits_alerte_stock.php index f4a433c013d..dcd95445ddd 100644 --- a/htdocs/core/boxes/box_produits_alerte_stock.php +++ b/htdocs/core/boxes/box_produits_alerte_stock.php @@ -88,7 +88,9 @@ class box_produits_alerte_stock extends ModeleBoxes if (($user->rights->produit->lire || $user->rights->service->lire) && $user->rights->stock->lire) { - $sql = "SELECT p.rowid, p.label, p.price, p.ref, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, p.entity,"; + $sql = "SELECT p.rowid, p.label, p.price, p.ref, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.barcode, p.seuil_stock_alerte, p.entity,"; + $sql .= " p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export,"; + $sql .= " p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export,"; $sql .= " SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") as total_stock"; $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as s on p.rowid = s.fk_product"; @@ -103,8 +105,10 @@ class box_produits_alerte_stock extends ModeleBoxes $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; } - $sql .= " GROUP BY p.rowid, p.ref, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, p.entity"; - $sql .= " HAVING SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") < p.seuil_stock_alerte"; + $sql .= " GROUP BY p.rowid, p.ref, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.barcode, p.seuil_stock_alerte, p.entity,"; + $sql .= " p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export,"; + $sql .= " p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export"; + $sql .= " HAVING SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") < p.seuil_stock_alerte"; $sql .= $this->db->order('p.seuil_stock_alerte', 'DESC'); $sql .= $this->db->plimit($max, 0); @@ -142,6 +146,15 @@ class box_produits_alerte_stock extends ModeleBoxes $productstatic->type = $objp->fk_product_type; $productstatic->label = $objp->label; $productstatic->entity = $objp->entity; + $productstatic->barcode = $objp->barcode; + $productstatic->status = $objp->tosell; + $productstatic->status_buy = $objp->tobuy; + $productstatic->accountancy_code_sell = $objp->accountancy_code_sell; + $productstatic->accountancy_code_sell_intra = $objp->accountancy_code_sell_intra; + $productstatic->accountancy_code_sell_export = $objp->accountancy_code_sell_export; + $productstatic->accountancy_code_buy = $objp->accountancy_code_buy; + $productstatic->accountancy_code_buy_intra = $objp->accountancy_code_buy_intra; + $productstatic->accountancy_code_buy_export = $objp->accountancy_code_buy_export; $this->info_box_contents[$line][] = array( 'td' => '', From c67eeeaf6cee16bf972adbf1466e92e40b2ea7c0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 10:58:18 +0200 Subject: [PATCH 760/780] CSS --- htdocs/compta/charges/index.php | 9 ++++++--- htdocs/theme/eldy/global.inc.php | 19 +++++++++++++------ htdocs/theme/eldy/theme_vars.inc.php | 3 ++- htdocs/theme/md/style.css.php | 6 ++++-- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index 93065219248..c64797b801c 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -89,6 +89,8 @@ if ($mode == 'sconly') $param = '&mode=sconly'; if ($sortfield) $param .= '&sortfield='.$sortfield; if ($sortorder) $param .= '&sortorder='.$sortorder; +$totalnboflines = 0; +$num = 0; print ''; if ($optioncss != '') print ''; @@ -99,14 +101,15 @@ print ''; print ''; print ''; +$nav = ''; if ($mode != 'sconly') { - $center = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 1); + $nav = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'object_payment', 0, $nav, '', $limit, 1); } else { - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 0); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'object_payment', 0, $nav, '', $limit, 0); } if ($year) $param .= '&year='.$year; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index f907e057be5..569e84496b6 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -20,6 +20,7 @@ --colorbacklinebreak: rgb(); --colorbackbody: rgb(); --colortexttitlenotab: rgb(); + --colortexttitlenotab2: rgb(); --colortexttitle: rgb(); --colortext: rgb(); --colortextlink: rgb(); @@ -31,7 +32,7 @@ --tooltipbgcolor: ; --tooltipfontcolor : ; --oddevencolor: #202020; - --colorboxstatsborder: #ddd; + --colorboxstatsborder: #e0e0e0; --dolgraphbg: rgba(255,255,255,0); --fieldrequiredcolor: #000055; --colortextbacktab: #; @@ -62,6 +63,7 @@ if (!empty($conf->global->MAIN_THEME_DARKMODEENABLED)) { --colorbackbody: #1d1e20; --tooltipbgcolor: #2b2d2f; --colortexttitlenotab: rgb(220,220,220); + --colortexttitlenotab2: rgb(220,220,220); --colortexttitle: rgb(220,220,220); --colortext: rgb(220,220,220); --colortextlink: #4390dc; @@ -2688,7 +2690,7 @@ div.tabBar.tabBarNoTop { /* tabBar used for creation/update/send forms */ div.tabBarWithBottom { padding-bottom: 18px; - border-bottom: 1px solid #aaa; + border-bottom: 1px solid #bbb; } div.tabBarWithBottom tr { background: unset !important; @@ -3588,7 +3590,7 @@ ul.noborder li:nth-child(even):not(.liste_titre) { background: var(--colorbackbody); border: 1px solid var(--colorboxstatsborder); border-left: 6px solid var(--colorboxstatsborder); - box-shadow: 1px 1px 8px var(--colorboxstatsborder); + /* box-shadow: 1px 1px 8px var(--colorboxstatsborder); */ border-radius: 0px; } .boxstats, .boxstats130, .boxstatscontent { @@ -3981,9 +3983,14 @@ div.titre { padding-top: 5px; padding-bottom: 5px; } -div.titre, .secondary { - font-family: ; - color: var(--colortexttitlenotab); +.secondary, div.titre { + color: var(--colortexttitlenotab); +} +.tertiary { + color: var(--colortexttitlenotab2); +} +table.table-fiche-title:first-of-type div { + color: var(--colortexttitlenotab); } table.table-fiche-title .col-title div.titre{ diff --git a/htdocs/theme/eldy/theme_vars.inc.php b/htdocs/theme/eldy/theme_vars.inc.php index f7ae5b3c320..79b58c5c3ad 100644 --- a/htdocs/theme/eldy/theme_vars.inc.php +++ b/htdocs/theme/eldy/theme_vars.inc.php @@ -67,7 +67,8 @@ $colorbacklinepairhover = '230,237,244'; // line hover $colorbacklinepairchecked = '230,237,244'; // line checked $colorbacklinebreak = '248,247,244'; // line break $colorbackbody = '255,255,255'; -$colortexttitlenotab = '0,113,120'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,113,120, violet: 0,50,120 +$colortexttitlenotab = '0,123,140'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,113,120, violet: 0,50,120 +$colortexttitlenotab2 = '100,0,100'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,113,120, violet: 0,50,120 $colortexttitle = '0,0,0'; $colortexttitlelink = '10, 20, 100'; $colortext = '0,0,0'; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index c43fa9cd7d9..f1e2c9257e6 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -3921,8 +3921,10 @@ div.titre { /* text-shadow: 1px 1px 2px #FFFFFF; */ dol_optimize_smallscreen) ? '' : 'margin-top: 4px;'); ?> } -div.titre, .secondary { - font-family: ; +.secondary, div.titre { + color: var(--colortexttitlenotab); +} +.tertiary { color: var(--colortexttitlenotab); } From 384e1e31add21c8c03d3e528d6cd96fc5ed6afcb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 11:06:16 +0200 Subject: [PATCH 761/780] Fix Popup --- .../core/boxes/box_produits_alerte_stock.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/htdocs/core/boxes/box_produits_alerte_stock.php b/htdocs/core/boxes/box_produits_alerte_stock.php index f4a433c013d..dcd95445ddd 100644 --- a/htdocs/core/boxes/box_produits_alerte_stock.php +++ b/htdocs/core/boxes/box_produits_alerte_stock.php @@ -88,7 +88,9 @@ class box_produits_alerte_stock extends ModeleBoxes if (($user->rights->produit->lire || $user->rights->service->lire) && $user->rights->stock->lire) { - $sql = "SELECT p.rowid, p.label, p.price, p.ref, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, p.entity,"; + $sql = "SELECT p.rowid, p.label, p.price, p.ref, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.barcode, p.seuil_stock_alerte, p.entity,"; + $sql .= " p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export,"; + $sql .= " p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export,"; $sql .= " SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") as total_stock"; $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as s on p.rowid = s.fk_product"; @@ -103,8 +105,10 @@ class box_produits_alerte_stock extends ModeleBoxes $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; } - $sql .= " GROUP BY p.rowid, p.ref, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, p.entity"; - $sql .= " HAVING SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") < p.seuil_stock_alerte"; + $sql .= " GROUP BY p.rowid, p.ref, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.barcode, p.seuil_stock_alerte, p.entity,"; + $sql .= " p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export,"; + $sql .= " p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export"; + $sql .= " HAVING SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") < p.seuil_stock_alerte"; $sql .= $this->db->order('p.seuil_stock_alerte', 'DESC'); $sql .= $this->db->plimit($max, 0); @@ -142,6 +146,15 @@ class box_produits_alerte_stock extends ModeleBoxes $productstatic->type = $objp->fk_product_type; $productstatic->label = $objp->label; $productstatic->entity = $objp->entity; + $productstatic->barcode = $objp->barcode; + $productstatic->status = $objp->tosell; + $productstatic->status_buy = $objp->tobuy; + $productstatic->accountancy_code_sell = $objp->accountancy_code_sell; + $productstatic->accountancy_code_sell_intra = $objp->accountancy_code_sell_intra; + $productstatic->accountancy_code_sell_export = $objp->accountancy_code_sell_export; + $productstatic->accountancy_code_buy = $objp->accountancy_code_buy; + $productstatic->accountancy_code_buy_intra = $objp->accountancy_code_buy_intra; + $productstatic->accountancy_code_buy_export = $objp->accountancy_code_buy_export; $this->info_box_contents[$line][] = array( 'td' => '', From 962d795740026942063abd64345a04cc6d19d89b Mon Sep 17 00:00:00 2001 From: laurantines Date: Mon, 25 May 2020 12:26:05 +0200 Subject: [PATCH 762/780] Update list.php Search by d,phone, d.phone_perso, d.phone_mobile in SELECT QUERY --- htdocs/adherents/list.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 6cb34192845..bf8353da5c9 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -301,6 +301,9 @@ if ($search_email) $sql .= natural_search("d.email", $search_email); if ($search_town) $sql .= natural_search("d.town", $search_town); if ($search_zip) $sql .= natural_search("d.zip", $search_zip); if ($search_state) $sql .= natural_search("state.nom", $search_state); +if ($search_phone) $sql .= natural_search("d.phone", $search_phone); +if ($search_phone_perso) $sql .= natural_search("d.phone_perso", $search_phone_perso); +if ($search_phone_mobile) $sql .= natural_search("d.phone_mobile", $search_phone_mobile); if ($search_country) $sql .= " AND d.country IN (".$search_country.')'; if ($filter == 'uptodate') $sql .= " AND (datefin >= '".$db->idate($now)."' OR t.subscription = 0)"; if ($filter == 'outofdate') $sql .= " AND ((datefin IS NULL OR datefin < '".$db->idate($now)."') AND t.subscription = 1)"; From 9e77dc0a261aa06ec63b7427f3f9d990728fde6e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 12:50:29 +0200 Subject: [PATCH 763/780] CSS --- htdocs/admin/modules.php | 4 ++-- htdocs/core/lib/security2.lib.php | 2 +- htdocs/main.inc.php | 2 +- htdocs/theme/eldy/manifest.json.php | 2 +- htdocs/theme/eldy/theme_vars.inc.php | 4 ++-- htdocs/theme/md/manifest.json.php | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index c0f1991835b..ab2889368cd 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -1198,7 +1198,7 @@ if ($mode == 'develop') print '
'."\n"; print ''; print ''; @@ -1208,7 +1208,7 @@ if ($mode == 'develop') print ''."\n"; $url = 'https://partners.dolibarr.org'; print ''; print ''; print ''; diff --git a/htdocs/core/lib/security2.lib.php b/htdocs/core/lib/security2.lib.php index c7f5a7b7330..ce346c0d26e 100644 --- a/htdocs/core/lib/security2.lib.php +++ b/htdocs/core/lib/security2.lib.php @@ -279,7 +279,7 @@ if (!function_exists('dol_loginfunction')) // Set jquery theme $dol_loginmesg = (!empty($_SESSION["dol_loginmesg"]) ? $_SESSION["dol_loginmesg"] : ''); - $favicon = DOL_URL_ROOT.'/theme/dolibarr_logo_256x256.png'; + $favicon = DOL_URL_ROOT.'/theme/dolibarr_256x256_color.png'; if (!empty($mysoc->logo_squarred_mini)) $favicon = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_mini); if (!empty($conf->global->MAIN_FAVICON_URL)) $favicon = $conf->global->MAIN_FAVICON_URL; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 48c9c0bc96c..0bc25d0c096 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1209,7 +1209,7 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr print ''."\n"; // Favicon - $favicon = DOL_URL_ROOT.'/theme/dolibarr_logo_256x256.png'; + $favicon = DOL_URL_ROOT.'/theme/dolibarr_256x256_color.png'; if (!empty($mysoc->logo_squarred_mini)) $favicon = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_mini); if (!empty($conf->global->MAIN_FAVICON_URL)) $favicon = $conf->global->MAIN_FAVICON_URL; if (empty($conf->dol_use_jmobile)) print ''."\n"; // Not required into an Android webview diff --git a/htdocs/theme/eldy/manifest.json.php b/htdocs/theme/eldy/manifest.json.php index a4fc5c3618e..bc6262d1a92 100644 --- a/htdocs/theme/eldy/manifest.json.php +++ b/htdocs/theme/eldy/manifest.json.php @@ -46,7 +46,7 @@ if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $appli = $conf->global->MAIN_ "name": "", "icons": [ { - "src": "", + "src": "", "sizes": "256x256", "type": "image/png" } diff --git a/htdocs/theme/eldy/theme_vars.inc.php b/htdocs/theme/eldy/theme_vars.inc.php index 79b58c5c3ad..fdbd23f1a3a 100644 --- a/htdocs/theme/eldy/theme_vars.inc.php +++ b/htdocs/theme/eldy/theme_vars.inc.php @@ -53,7 +53,7 @@ $theme_bgcolor = array(hexdec('F4'), hexdec('F4'), hexdec('F4')); $theme_bgcoloronglet = array(hexdec('DE'), hexdec('E7'), hexdec('EC')); // Colors -$colorbackhmenu1 = '55,61,90'; // topmenu +$colorbackhmenu1 = '38,60,92'; // topmenu $colorbackvmenu1 = '250,250,250'; // vmenu $colortopbordertitle1 = '215,215,215'; // top border of title $colorbacktitle1 = '233,234,237'; // title of tables,list @@ -75,7 +75,7 @@ $colortext = '0,0,0'; $colortextlink = '10, 20, 100'; $fontsize = '0.86em'; $fontsizesmaller = '0.75em'; -$topMenuFontSize = '1.2em'; +$topMenuFontSize = '1.1em'; $toolTipBgColor = 'rgba(255, 255, 255, 0.96)'; $toolTipFontColor = '#333'; diff --git a/htdocs/theme/md/manifest.json.php b/htdocs/theme/md/manifest.json.php index f8d059752a6..e3423149e30 100644 --- a/htdocs/theme/md/manifest.json.php +++ b/htdocs/theme/md/manifest.json.php @@ -46,7 +46,7 @@ if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $appli=$conf->global->MAIN_AP "name": "", "icons": [ { - "src": "", + "src": "", "sizes": "256x256", "type": "image/png" } From 0dbb8224fb79e897f69b4944dcf7569bf20f22bc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 12:50:54 +0200 Subject: [PATCH 764/780] Fix logo --- htdocs/theme/dolibarr_256x256_color.png | Bin 0 -> 5078 bytes htdocs/theme/dolibarr_logo.jpg | Bin 0 -> 18776 bytes htdocs/theme/dolibarr_logo.png | Bin 14082 -> 14133 bytes htdocs/theme/dolibarr_logo.svg | 258 +----------------- htdocs/theme/dolibarr_logo_256x256.png | Bin 3525 -> 0 bytes htdocs/theme/dolibarr_logo_squarred.png | Bin 6959 -> 0 bytes htdocs/theme/dolibarr_logo_squarred_alpha.png | Bin 7844 -> 0 bytes htdocs/theme/dolibarr_preferred_partner.png | Bin 0 -> 12136 bytes .../theme/dolibarr_preferred_partner_int.png | Bin 6719 -> 0 bytes htdocs/theme/dolistore_logo.jpg | Bin 0 -> 14843 bytes htdocs/theme/dolistore_logo.png | Bin 10077 -> 13413 bytes htdocs/theme/dolistore_logo.svg | 146 ++++++++++ htdocs/theme/eldy/thumb.png | Bin 11825 -> 10818 bytes 13 files changed, 160 insertions(+), 244 deletions(-) create mode 100644 htdocs/theme/dolibarr_256x256_color.png create mode 100644 htdocs/theme/dolibarr_logo.jpg mode change 100644 => 100755 htdocs/theme/dolibarr_logo.png delete mode 100644 htdocs/theme/dolibarr_logo_256x256.png delete mode 100644 htdocs/theme/dolibarr_logo_squarred.png delete mode 100644 htdocs/theme/dolibarr_logo_squarred_alpha.png create mode 100755 htdocs/theme/dolibarr_preferred_partner.png delete mode 100644 htdocs/theme/dolibarr_preferred_partner_int.png create mode 100644 htdocs/theme/dolistore_logo.jpg create mode 100755 htdocs/theme/dolistore_logo.svg diff --git a/htdocs/theme/dolibarr_256x256_color.png b/htdocs/theme/dolibarr_256x256_color.png new file mode 100644 index 0000000000000000000000000000000000000000..417387d6a27ce85f3ba64399804845b63da235c8 GIT binary patch literal 5078 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 C&ZV0G literal 0 HcmV?d00001 diff --git a/htdocs/theme/dolibarr_logo.png b/htdocs/theme/dolibarr_logo.png old mode 100644 new mode 100755 index c15f03c821baf1e72192ebaee9c73477f5668810..9a0781ce2ea7820d09f3b00131a313120e804e8a GIT binary patch delta 13797 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 delta 13740 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 Je+b7BLQXmZ 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 Pfj(rVlq9RgO}_mPO+EXa diff --git a/htdocs/theme/dolibarr_logo.svg b/htdocs/theme/dolibarr_logo.svg index 44f6c07ece5..9c9259d0b33 100644 --- a/htdocs/theme/dolibarr_logo.svg +++ b/htdocs/theme/dolibarr_logo.svg @@ -23,94 +23,6 @@ id="title3072">Logo Dolibarr ERP-CRM - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Dolibarr - - - - - Dolibarr - - - - @@ -418,18 +188,18 @@ ERP/CRM ;8}Hega!f(!f^J2G%+Qn+O0104TvQY1V>i{ta{h z5CBku!2|$TAaDf&D-bBbU;=;=3?={w08G<>2>=2Bu0UV{fR|wK84j#KAOPSB1WGVi zfxs0AOaM@VK?w#c5C{MW062rfXH6;sSb;zQKmb4hc-gxL=t!0>4&Zkfdl@@x+xD|< z+qP}5&BwKEZ|uy(&LlG#_gByM)ca~u|KI7e=A6EL>sH^Y`o9BgjFlE0F}!;;c`b!q zisE#++2wM7{SAlH)oOQI?apt%G+P}ev#rTubGsD+^aA}l0Ir(co7y@>A+y!qXtp&r zTWgvu?5Z_cY8x%(buGpklgVNu;6^p#&UqxN(}$+scm5EP8w&sy28L==VR=J-c|$>Y zLqm&|JOs1^Vhi^7=^odfUG%;B=GGizU8bQnv!pi5P}^*=6CeQO5gz0>v|BX0z8yXp zYMKt`R2>5IDatLaBfxtA*+jPsx^Qgw+4s&^_|Tb`Pwd$#JdgkZAffn&Gv9?Cguj^$76Q5s1Gg*yH~;=o}t+^XdJs znAGcwy*bNwWY#uWkO4qCECaASu;TG^?>To!M6e%PA!JMdpwp<&8qsCypyZW1vleYR zCF2VR2Pj13p;o#V`VW^{{dFKH1BkQNj1@m{3 ztFE5f=bhW8v=8x@bQTB+0Qw|#n)~1xPt4tMD5o4nFhW2^p#i?H-!$>{mHR*2oh{=K z2tcD&-*^77JI)@gR;eTn001^S^x}2n^*Rk^fg}YZdc?kY)8zX;+GMsmkO5=_eUdx9 zd;7G|KwoT(B`>@%{@~7OH@&sCp}7?qKt>SPG4$NE!eD$x-2N-aOggM<;0j z0I=54S8kZ7(`rb3=mi2E`lWP!P}&fAVR!IDM*Odgn2TGKRh?NRgsNqYOkHPiYT zYD^mr<)a3W6g+g%h=fj|@&*84ZSiy0jAvh>2$mEib`HDeykXBR+=(I>Re+>U8=AT= z!?5*Ok)%T)fcq{O&N_u84FG_!AisOhAC75Ic?Uo+p?~70BL&+}6e9yj3hp|0sEBL9QW)4vU7M) zbo=0#4k6L)f>WX+x+ipCE6v+jr}XK=(iUw#i2#6Ka=VqXS`)htWR?C95-Cv;y%Ib2 zPm3JVEv9V*!?~loFWGWRzyrus18)3)M0M7PZVz8FibP_z+Q-~AoBk_oywpE6a#XMQ z3H_72eKWRO-(Jmv91CLp1~h2c9j<*DMs~fiV(++qiR?MrJE;?Sr)h&z4`h~N7U&;B z@xA_F-nFlMe);pO_GcQ&3ytlQ=;xzF0KmVJWvIFB?KQW&wK~UGOJ0TD{VWC$03HAb zvq~?2Vbw=p9dfzd{c}!N4w2dYzgTHpl>; z0U5>BSH8IFL_wvuyb$Q08YNgW91?(+Hz+l=*lv2`%jd3{IJR#B32#KtxV`BHWB~B+ zZ0Q3ZZ`gUVn1sh(?V$!h4Zx)&c=(fzAK!CkxA+buu-FbEtPiT*WI+b-FtFO4cfPl_ zrqL|^;oBGj0T=Aa`of|e!XLBO8Lbd#h2Ul9iQ;t!a;FYXB~kTa89>33NK^payt-`n z=-vtbzB*A47mHA-RJ=MvF$99f7VENYr$l}m5Y;{yvp^UFakOCLu?xob6gCN@M28!z z8<7EkmnO6Ii#?enDmDtjED-R;N?{Te|K=qelgf$WHDkt%qH05RV{C^|A$JZ9A_cQR zm<8f&l_hGLNZxwm<0mvBHINEyKGbIQnC}7HZl%s-K@kl6HzF5OO_Q0$00IDbAIKF?LaJ_P z!REN=2I4C?z;|emI8hgBnuyR0hn*358s9(p>z;cd6<0PW*c%iHfU6lpyOOAiD;hX{ zjHm&iM`EV|U7|@;MHThL4*~$LnLbeD_b4m_pa|v#W1ys{h;jXrNmRz_2D8CV{0FS1C9r7!kljhp@oAFBnB)%P6ek@)=?X zgyp~Q-g)NNyDkgN=5VGLR+48S06?u$y?DdauJIj6Y{&D;SqzW|p%nuEDt7ljcIEhS z{gX*}`!ful`~Z;wK%-GVcm33J$Mhm^a3HgUM54ud7_VLr6X2_V{)VZn?T5TUy~&bZ zSml`y5c>i__k@nG+&m+;V<>rv?Z*l{a55xn0Q{@88ujH<2Hbw`2=)!~9$Sy*|JzRw z834xjPhpe&ah<}*tF+o2`_lhK0e}ENkHd(b3D=!Iq+eS>Gap36#^wdpr3wp-=v8HQ%CfQ_topjo0Zp^4rUri5ibCgzx|KG z{jYGH*6f`e*(W8kUt08lv}m1HLv6wryV8F-|AQeAu-iSVeMmy*@WiNy#K?%`sEDMf zb{e&c+7_qFy?omV;s604(1}-fUpSh63%jB9TCGm2W{-1rv70_D*grhTkA2C07fE2_ z!5j|zpdbJQJM{Ci$^8j_%YqF@NK|S9;M@LLcCw&?M1pgIIWz4fKM3iC6}wIr5hLLc2;hD8_-7;x0Dz-8rL6rE0RWP&ns{O1R{D2vOsbeKf)x}2 zf1&f|R7PP1F|uUe+W`THked&(s#uj2^%K!k!a?6%(IYx|Z0RZ4| zx*nUko_}45HNip-g5Zs1I||Bbh(F;L#NhsiJtvFiu02Q!F>(!o0P0MZ2R>M>D8$GW z001txa{qf@etq~mf0zcv2uQ@C|DIFDBsvtq2mub(AIP5h)jsk(6v60+7G73K)k7bw z7XH7F8UQ#bt7*Fa#pSIw2a#j}0MOLZdfki5YWTN2AOJwbjXrODWo2P`9r1&WvB-Ni z#$rDx)!l#nOUsVt8cB4>0Knnyzu}eT2eS;s9cFi^PQ*05~YAtbg!>ua0CJi37|6;rTE0gMY!gL$58}CU$Q# zS|Jbt9Gu82dt&CgjG{`C3Wh+?&}?~i@wOFPk0}aC1aE?o0?e)U*{k=ni)~~}@<0Xv ztKGR|(~%E8-OV2VBo71tG?}f7)*qU;?qI#iLLgNDV19GahQrIY9Q#E}4`_uxAO@$T z{yR>Wd-I{3#T$?8OD~e8%taB5B3M!AXpZr#J?ZQAWq!R~A;>TU0+-9p?t9j~ymoJ9 zd2JJc3;_V8HH`-|O12-%+kK+YWVRBt`2fHvENqDuTb+0~tK?9YL8OIRXoWyC5Qp2{ zSlw7sQO{;_at+n2QJHiik(`s%!YlNSVj$Qt~`mewA(fj+d?|%KI zUdyPp8jW77`Su%bx7*=zJDo0eE887Tw)&*mVl|n+zStyvRYP-Cor!%}S!ZIG%dL>d z{jXg+FaaQjK>#R^`>*V;QOMm6l9(0&fG;2baE<^#v*jx20#+ap01yE19r|_PFA!LP zz!?-w08oNK2?i?=2mrVOff5W>AaDf&695DNIy(?100;oM0)YttUV^~{;Cc8A2TCwl zfj|ic695DNT!Fw92$W#Z0YCsi0H9kg0woxJji!|dA|wrv00000NkvXXu0mjfVjEkt diff --git a/htdocs/theme/dolibarr_logo_squarred.png b/htdocs/theme/dolibarr_logo_squarred.png deleted file mode 100644 index bbe16cbc6dbb4163a0df89c94f9b949ead0fa9b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6959 zcmaJ`c|4Tg_rK2=jIr-pY$-|Bk1P?!PDPaL%ZTiIvM*zcBHGCkWzCd*$v!Hy*h(Ul zEo7(cVt#k(^ZovQfBn2(^Kzf_oO{nX_n!B;=RD`Sp@9w~c0U#Xz^JFIc^&{19HIb* z@-Jk+#&ZDnuj^^583!Ws!w6%HA%kX1tnvQ*o|re6sLEvyEnZIk&DXz+Ca5@xB2sVj znL+Q?4l~IeEHeUt02}};0HFUJF0=6fdH@OpKq&y;^cc#+|KX90L?9jVXG8%KiZT~Y zY#*gCLt+D(<}VSBA-#t1Fa7VBvUCK32mpYgs80Z3lmiX803but;ByKIm;s5PT#Dxrd2M;f5(dsT1)mJ!7ASDyD zkvjJ3dLBJU{!90{p{lZ&Gw<#j?w5HR^Zg@UxCa3}SX3r0M{n7!?gSf_!wipC@7&lo zb*22#rKGLJ@ZolP#YY!BMnebz>-WV1SQO4w*bvamZHZNL2c=SPug#xZ4(9K2@rsI* zDgSm~4nsJ12H;!2DdTj?!$J;@bov$853LVWFFbS`s=ldO;xV+Is&`GV&EOxVdK=}P z#;0`o#O{p>*B2QVi4lz(C!P3FAoy}={o-=c?)H@*BjF`qE{+Tgi(*j-4iJn7%tHcy zEmEcXf12rTvj4{WNEg~Uc}3E`&C*cc&TuNR}WGS zK2`l$vg-I@cD8Y@deQb`qtmNui;{f0Y;^#1;~73@8GV(})GVQSC%;52{9@V^v{Y22 zyq$CrF@|T!mr~*68MPN5-%s=yu&H<0HP|&buPUg`y9f+WRHCI8;o5#IbUyAC4zIgyRgWC6o|*1P8|I<_%PbvF zpYpGy3$$Ur{qsBB`{l~c8Ppr_Bb=l>k3vug?i|WxM{G)}%Uw6l5vxOM8nm-a1wDY- zHY@PJ5Hjv^1N?cdpw4gI++N#`E>-GE@i=-6q3_Z$gXCIA$E zPjmnn#ChnN5AHfKhmqI!aqBPM=HNX;)T`WgCG z@`{5rp8ErufC>`~du+ykc6U3#t;xpX>+ISMMI1E{kWu-aA4K)-h0pB0y&!`){d*{g z&`^h-`@JD^(o$t!Nu92o7h5FKL@>Cssncl>!v2te-Zm~TPb zquj+0bNP8$T1f`8RBz5=`t9*E+nEtt-eutdWw@sht#y;HRYUq>(x;g*YcDiqA-)|u zZZ6*5YSX{q$V556CmbjM)KOFtnS;L`9&f)AW7Y})VL10qv#s2Ent53Cu)$V0Ne}Og z+6>WgK0lJNr}dV(VQWaztr~N$2!j8g*J0!@uNF^*#edt+)&~(QRVlV`f9~jpE}o){O3`m+}fuj5n$ z)^f``6#htf{D{ylc~Car=>d#t*`wvl`oCx%$(0*(XaazDetmMH-dd%xW{-PP3X1}c z3}P7HlS@HsDJCVR*~ZjR!Aqp)1x)2b&z|gudwMNEznMHghA^d57E4o!)l0Tk80;_R zcI3Jx40={h%h>bRdw)6-vGrS5qk@11g!8Lz4t$OHdrBlh0ccLXg0hJ%vv)Zk4gf>L z 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 i^H+JuK*ce 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 diff --git a/htdocs/theme/dolibarr_preferred_partner.png b/htdocs/theme/dolibarr_preferred_partner.png new file mode 100755 index 0000000000000000000000000000000000000000..06e26cab9a292910cc002cbd780e783a3e3bcfc6 GIT binary patch literal 12136 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 diff --git a/htdocs/theme/dolistore_logo.jpg b/htdocs/theme/dolistore_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b79280d819f5144fa0e3c2283bf1d839640de377 GIT binary patch literal 14843 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 literal 0 HcmV?d00001 diff --git a/htdocs/theme/dolistore_logo.png b/htdocs/theme/dolistore_logo.png index adcb01473954857e53eed709447724935e53ddcd..747863108ce41416e1671339a0fbd4d936076668 100644 GIT binary patch literal 13413 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 KfLAJ*hyM>mL72Y) literal 10077 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 diff --git a/htdocs/theme/dolistore_logo.svg b/htdocs/theme/dolistore_logo.svg new file mode 100755 index 00000000000..844010e19b5 --- /dev/null +++ b/htdocs/theme/dolistore_logo.svg @@ -0,0 +1,146 @@ + + + + + Logo Dolibarr ERP-CRM + + + + + + + + + + + image/svg+xml + + Logo Dolibarr ERP-CRM + + + + Laurent Destailleur + + + + + Laurent Destailleur + + + + + + + + + + + + + + + Store + + + + + + + diff --git a/htdocs/theme/eldy/thumb.png b/htdocs/theme/eldy/thumb.png index 47ddbfe36d1e7ab7b13cf3b3bf158dd0754c0bbd..6d385ae4c03a9b3d90b196bbdaa688ea401d2c5a 100644 GIT binary patch literal 10818 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 M07*qoM6N<$g7~u-?f?J) literal 11825 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 From 056206098b874118e4f23c0cde341cc172fb269e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 12:50:29 +0200 Subject: [PATCH 765/780] CSS --- htdocs/admin/modules.php | 4 ++-- htdocs/core/lib/security2.lib.php | 2 +- htdocs/main.inc.php | 2 +- htdocs/theme/eldy/manifest.json.php | 2 +- htdocs/theme/eldy/theme_vars.inc.php | 4 ++-- htdocs/theme/md/manifest.json.php | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index c0f1991835b..ab2889368cd 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -1198,7 +1198,7 @@ if ($mode == 'develop') print '

'."\n"; print ''; print ''; @@ -1208,7 +1208,7 @@ if ($mode == 'develop') print ''."\n"; $url = 'https://partners.dolibarr.org'; print ''; print ''; print ''; diff --git a/htdocs/core/lib/security2.lib.php b/htdocs/core/lib/security2.lib.php index c7f5a7b7330..ce346c0d26e 100644 --- a/htdocs/core/lib/security2.lib.php +++ b/htdocs/core/lib/security2.lib.php @@ -279,7 +279,7 @@ if (!function_exists('dol_loginfunction')) // Set jquery theme $dol_loginmesg = (!empty($_SESSION["dol_loginmesg"]) ? $_SESSION["dol_loginmesg"] : ''); - $favicon = DOL_URL_ROOT.'/theme/dolibarr_logo_256x256.png'; + $favicon = DOL_URL_ROOT.'/theme/dolibarr_256x256_color.png'; if (!empty($mysoc->logo_squarred_mini)) $favicon = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_mini); if (!empty($conf->global->MAIN_FAVICON_URL)) $favicon = $conf->global->MAIN_FAVICON_URL; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 49c48e34ec1..98d00a98404 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1209,7 +1209,7 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr print ''."\n"; // Favicon - $favicon = DOL_URL_ROOT.'/theme/dolibarr_logo_256x256.png'; + $favicon = DOL_URL_ROOT.'/theme/dolibarr_256x256_color.png'; if (!empty($mysoc->logo_squarred_mini)) $favicon = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_mini); if (!empty($conf->global->MAIN_FAVICON_URL)) $favicon = $conf->global->MAIN_FAVICON_URL; if (empty($conf->dol_use_jmobile)) print ''."\n"; // Not required into an Android webview diff --git a/htdocs/theme/eldy/manifest.json.php b/htdocs/theme/eldy/manifest.json.php index a4fc5c3618e..bc6262d1a92 100644 --- a/htdocs/theme/eldy/manifest.json.php +++ b/htdocs/theme/eldy/manifest.json.php @@ -46,7 +46,7 @@ if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $appli = $conf->global->MAIN_ "name": "", "icons": [ { - "src": "", + "src": "", "sizes": "256x256", "type": "image/png" } diff --git a/htdocs/theme/eldy/theme_vars.inc.php b/htdocs/theme/eldy/theme_vars.inc.php index 79b58c5c3ad..fdbd23f1a3a 100644 --- a/htdocs/theme/eldy/theme_vars.inc.php +++ b/htdocs/theme/eldy/theme_vars.inc.php @@ -53,7 +53,7 @@ $theme_bgcolor = array(hexdec('F4'), hexdec('F4'), hexdec('F4')); $theme_bgcoloronglet = array(hexdec('DE'), hexdec('E7'), hexdec('EC')); // Colors -$colorbackhmenu1 = '55,61,90'; // topmenu +$colorbackhmenu1 = '38,60,92'; // topmenu $colorbackvmenu1 = '250,250,250'; // vmenu $colortopbordertitle1 = '215,215,215'; // top border of title $colorbacktitle1 = '233,234,237'; // title of tables,list @@ -75,7 +75,7 @@ $colortext = '0,0,0'; $colortextlink = '10, 20, 100'; $fontsize = '0.86em'; $fontsizesmaller = '0.75em'; -$topMenuFontSize = '1.2em'; +$topMenuFontSize = '1.1em'; $toolTipBgColor = 'rgba(255, 255, 255, 0.96)'; $toolTipFontColor = '#333'; diff --git a/htdocs/theme/md/manifest.json.php b/htdocs/theme/md/manifest.json.php index f8d059752a6..e3423149e30 100644 --- a/htdocs/theme/md/manifest.json.php +++ b/htdocs/theme/md/manifest.json.php @@ -46,7 +46,7 @@ if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $appli=$conf->global->MAIN_AP "name": "", "icons": [ { - "src": "", + "src": "", "sizes": "256x256", "type": "image/png" } From 0409ec00d7ccd65db2a5fe631c9e30fbd9bfcabd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 13:01:32 +0200 Subject: [PATCH 766/780] CSS --- htdocs/install/check.php | 4 ++-- htdocs/install/default.css | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/htdocs/install/check.php b/htdocs/install/check.php index 95e3082cb56..1b7ac620057 100644 --- a/htdocs/install/check.php +++ b/htdocs/install/check.php @@ -430,7 +430,7 @@ else { $choice .= '
'; //print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE); - $choice .= '
'.$langs->trans("InstallChoiceSuggested").'
'; + $choice .= '
'.$langs->trans("InstallChoiceSuggested").'
'; // Ok '; } @@ -534,7 +534,7 @@ else $choice .= '
'; //print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE); $choice .= '
'; - $choice .= '
'.$langs->trans("InstallChoiceSuggested").'
'; + $choice .= '
'.$langs->trans("InstallChoiceSuggested").'
'; if ($count < count($migarray)) // There are other choices after { print $langs->trans("MigrateIsDoneStepByStep", DOL_VERSION); diff --git a/htdocs/install/default.css b/htdocs/install/default.css index f363789c129..e469a3bbb80 100644 --- a/htdocs/install/default.css +++ b/htdocs/install/default.css @@ -361,7 +361,7 @@ a.button:link,a.button:visited,a.button:active { background: #ddd; color: #fff; /* border: 1px solid #e0e0e0; */ - padding: 0.3em 0.7em; + padding: 0.5em 0.7em; margin: 0 0.5em; -moz-border-radius: 3px; -webkit-border-radius: 3px; @@ -374,6 +374,13 @@ a.button:hover { text-decoration:none; } +.suggestedchoice { + color: rgba(70, 3, 62, 0.6) !important; + /* background-color: rgba(70, 3, 62, 0.3); */ + padding: 2px 4px; + border-radius: 4px; + white-space: nowrap; +} .choiceselected { background-color: #f4f6f4; background-repeat: repeat-x; From 160ac14eb30c04818edb876fb4a087b002339e13 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 13:32:57 +0200 Subject: [PATCH 767/780] Update logo --- htdocs/theme/dolibarr.png | Bin 794 -> 1711 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/htdocs/theme/dolibarr.png b/htdocs/theme/dolibarr.png index 1ef6b77d4ca2cf880ef5158128f0b1b8917dca2c..3f7c35b6cf82059973602c2bf0cdbbf68e84b76d 100644 GIT binary patch literal 1711 zcmV;g22lBlP)Ih|R#B@6 z5D0`2NGYP}7|=>#l)@MgLLe-Ow5_!T*4ogrC5P+SE2a&VVtziLcx#r)=^|mMuq}yY zS=g3^Wm$+1ya%H-AlP*8PBJ^1aZ(B9XKpc7xW?p#K`h7SLki^to}DZ4>Nj4Zy>07? z4Qvc(qftr|1R-M+lUyDgp|3E=$uk#t@8Te#Qh2V51iZR5ZIA9JvttW(!bM1lR+`59 zI+*OgO5yM^&?+)?JPR8`b5oAimd3Kh)b4v)dH4Z^9|ZV*$jJC4UEQbn)!{A%hR0}o z>;SpW`~uKoC`sGGtxL1{z7B*CTzLH`GNRYT_D!S9+iM6Ra2y-Qv8hQxeYTeN{8nCi z`g8o`#A%KfXa4OP|KTdqvB|c#($JabM&CfBn6AhyZQB-JDuK$T2`%|Qmb7_deo9|$hUYmXRZb*AwhOg}H_{c~?OT7RXJmpz zGO>2GbR3x}&N4DKi64fyQ;L)V*L6szlH}?$NV&X|Wj&Y2@~yYCx3y@^#%CYpXjc!$ z7(^vl_c5v^meB|uCB%K}GIq=ZO z>FVyqb)CBpJax0k>2sI3Hav#>Ko&K|EL_@nQ_DJAw|*=XHi+X$87)Y*Q{UmW1t@F-vZ^0PEI=Av2Kve?s+C)bc+em;oQ zZmw~bHp^B&OSN>U6uN1iZZX<0Gbl9ZAl2S~H-vW^T@pTxrR5^3upNv%1wz7A3KC+G<1PqT%V95>E4{NP)U57)Tyq~?DJ0t6r zNqK( zmWFKYieF^^l_8GxoW`;3$^bSjd~IxP+03U8>?7g1aN> zuYK!#yxV&|(zNrgWa)BlZ(sf9cRBjbiB%oBSSR4s1@raM30{8XHG0qVuYRf$?_u=1 z!5U)-mEw)J{>rz%|8vG~Os&|BS7%|d!aGIO^ZkIilFvWS7x=+Xf6d=coOBr0>E<72`$33RoERzt zuw&c2-F=e2!r=1%b!>XiTqFoW2Cj|p#*yQsk{-r@!4L!?)5TfFZ`@>Pc$B`vRr;?C z5d6v}EK_ z&AM3F7(-1e5&I@fr*tYos)tLfz*XQXa22=;Tm`;+@-O&YauD64PEh~=002ovPDHLk FV1ilTO6ULp literal 794 zcmV+#1LgdQP)z97{|9-ZAf(cg#EH9djnJmAP?lE1~ zwXvC{*`;+Hs0w#S8@RRz^%~u?sp8p-i;vSUhGi(9z2wH3XKijerdKn#9=;imWpe{s=vW zb`nD)3{^#Wt^DBiIPyDM3cSYmZ2<}ihKG}#z{feWxJC<(L9*J%Av&W3uHbL(h>oc5 zmO}50qH1ka1&z3WZ|dxWRQP<}$WBONf!F@4F>L88phkPN2p0Oekv{{UVrL%FT3i=7rQuI0t z8Z%52I{yVtv89d$J}!9W)JR!W6>Y@61f#50P5?GIhLRZGwFx4)S_188Au)}(c;dwq z`{?N*qjY*f6|}>EW28%hdEC;;ecCqkCm4~b1xR9@7p};+cWXhf)&e~}eHvcg-H6E| z0AqDLvTNhst%c+xo-VewmKH=6ZbW86Ba9}twlEV1co22jeK8zQOjyIN3t`9@uI0Ys z3q&nSs_J)L3@13u^~cBww_xWL Date: Mon, 25 May 2020 13:36:56 +0200 Subject: [PATCH 768/780] Restore missing png file --- htdocs/core/menus/standard/auguria.lib.php | 2 +- htdocs/core/menus/standard/eldy.lib.php | 2 +- htdocs/theme/dolibarr_512x512_white.png | Bin 0 -> 8921 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 htdocs/theme/dolibarr_512x512_white.png diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index 4b4a4c54151..e55da6f93ac 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -147,7 +147,7 @@ function print_auguria_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout }*/ else { - $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo_squarred_alpha.png'; + $urllogo = DOL_URL_ROOT.'/theme/dolibarr_512x512_white.png'; $logoContainerAdditionalClass = ''; } diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 3f539260856..be455d5431a 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -514,7 +514,7 @@ function print_eldy_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout = }*/ else { - $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo_squarred_alpha.png'; + $urllogo = DOL_URL_ROOT.'/theme/dolibarr_512x512_white.png'; $logoContainerAdditionalClass = ''; } $title = $langs->trans("GoIntoSetupToChangeLogo"); diff --git a/htdocs/theme/dolibarr_512x512_white.png b/htdocs/theme/dolibarr_512x512_white.png new file mode 100644 index 0000000000000000000000000000000000000000..06e69ad8b7b66c0fb6b464644290dd3bcc66064e GIT binary patch literal 8921 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 L`rV>CkKg Date: Mon, 25 May 2020 14:08:36 +0200 Subject: [PATCH 769/780] Look and feel v12 --- htdocs/bom/class/bom.class.php | 2 +- htdocs/core/class/commonobject.class.php | 9 +++++---- htdocs/core/class/html.formticket.class.php | 4 ++-- htdocs/ecm/dir_add_card.php | 2 +- htdocs/modulebuilder/template/class/myobject.class.php | 1 + htdocs/theme/eldy/global.inc.php | 2 +- htdocs/theme/eldy/theme_vars.inc.php | 4 ++-- htdocs/ticket/class/ticket.class.php | 2 +- 8 files changed, 14 insertions(+), 12 deletions(-) diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index 86e0b84b655..790487b4032 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -91,7 +91,7 @@ class BOM extends CommonObject 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=> 1, 'default'=>1, 'index'=>1, 'position'=>5), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'noteditable'=>1, 'visible'=>4, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of BOM", 'showoncombobox'=>'1',), - 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'1',), + 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'autofocusoncreate'=>1), 'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-1, 'position'=>60, 'notnull'=>-1,), 'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:(finished IS NULL or finished <> 0)', 'label'=>'Product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp'), 'qty' => array('type'=>'real', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'default'=>1, 'position'=>55, 'notnull'=>1, 'isameasure'=>'1', 'css'=>'maxwidth75imp'), diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index f3f1b9eaee3..4fcac1979b7 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -6046,6 +6046,7 @@ abstract class CommonObject $computed = $this->fields[$key]['computed']; $unique = $this->fields[$key]['unique']; $required = $this->fields[$key]['required']; + $autofocusoncreate = $this->fields[$key]['autofocusoncreate']; $langfile = $this->fields[$key]['langfile']; $list = $this->fields[$key]['list']; @@ -6122,19 +6123,19 @@ abstract class CommonObject { $tmp = explode(',', $size); $newsize = $tmp[0]; - $out = ''; + $out = ''; } elseif (in_array($type, array('real'))) { - $out = ''; + $out = ''; } elseif (preg_match('/varchar/', $type)) { - $out = ''; + $out = ''; } elseif (in_array($type, array('mail', 'phone', 'url'))) { - $out = ''; + $out = ''; } elseif ($type == 'text') { diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index da41a02491b..a8654f6bfc5 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -175,7 +175,7 @@ class FormTicket print '
'; } - // Si origin du ticket + // If ticket created from another object if (isset($this->param['origin']) && $this->param['originid'] > 0) { // Parse element/subelement (ex: project_task) $element = $subelement = $this->param['origin']; @@ -225,7 +225,7 @@ class FormTicket if ($this->withthreadid > 0) { $subject = $langs->trans('SubjectAnswerToTicket').' '.$this->withthreadid.' : '.$this->topic_title.''; } - print ''; + print ''; print ''; } } diff --git a/htdocs/ecm/dir_add_card.php b/htdocs/ecm/dir_add_card.php index 4d6f2bdce5a..a826c6382ce 100644 --- a/htdocs/ecm/dir_add_card.php +++ b/htdocs/ecm/dir_add_card.php @@ -241,7 +241,7 @@ if ($action == 'create') print '
'.img_picto_common('', 'treemenu/branchbottom.gif').''; diff --git a/htdocs/takepos/admin/receipt.php b/htdocs/takepos/admin/receipt.php index 7ed4f2786b2..44fdf5c89f7 100644 --- a/htdocs/takepos/admin/receipt.php +++ b/htdocs/takepos/admin/receipt.php @@ -57,13 +57,11 @@ if (GETPOST('action', 'alpha') == 'set') { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else { + } else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } -} -elseif (GETPOST('action', 'alpha') == 'setmethod') +} elseif (GETPOST('action', 'alpha') == 'setmethod') { dolibarr_set_const($db, "TAKEPOS_PRINT_METHOD", GETPOST('value', 'alpha'), 'chaine', 0, '', $conf->entity); } @@ -103,8 +101,7 @@ print ''; if ($conf->global->TAKEPOS_PRINT_METHOD == "browser") { print img_picto($langs->trans("Activated"), 'switch_on'); -} -else { +} else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print "
'; if ($conf->global->TAKEPOS_PRINT_METHOD == "takeposconnector") { print img_picto($langs->trans("Activated"), 'switch_on'); -} -else { +} else { print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print "
'; if (empty($conf->productbatch->enabled) || !empty($conf->global->CASHDESK_FORCE_DECREASE_STOCK)) { print $form->selectyesno('CASHDESK_NO_DECREASE_STOCK'.$terminal, $conf->global->{'CASHDESK_NO_DECREASE_STOCK'.$terminal}, 1); - } - else { + } else { if (!$conf->global->{'CASHDESK_NO_DECREASE_STOCK'.$terminal}) { $res = dolibarr_set_const($db, "CASHDESK_NO_DECREASE_STOCK".$terminal, 1, 'chaine', 0, '', $conf->entity); } @@ -205,8 +203,7 @@ if (!empty($conf->stock->enabled)) { print $formproduct->selectWarehouses($conf->global->{'CASHDESK_ID_WAREHOUSE'.$terminal}, 'CASHDESK_ID_WAREHOUSE'.$terminal, '', 1, $disabled); print ' '; - } - else { + } else { print ''.$langs->trans("StockDecreaseForPointOfSaleDisabled").''; } print '
'.$langs->trans("Empty").'
'.$langs->trans("Empty").'
'; //span class="fa fa-bug"> - //print ''; + //print ''; print '
'; print '
'.$langs->trans("TryToUseTheModuleBuilder", $langs->transnoentitiesnoconv("ModuleBuilder")).'
'; - print''; + print''; print ''.$langs->trans("DoliPartnersDesc").''.$url.'
'; //span class="fa fa-bug"> - //print ''; + //print ''; print '
'; print '
'.$langs->trans("TryToUseTheModuleBuilder", $langs->transnoentitiesnoconv("ModuleBuilder")).'
'; - print''; + print''; print ''.$langs->trans("DoliPartnersDesc").''.$url.'
'; // Label - print ''."\n"; + print ''."\n"; print '\n"; @@ -730,7 +736,7 @@ class FormMail extends Form if (!empty($this->withtocc) || is_array($this->withtocc)) { $out .= '\n"; diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index aa568bedce3..bef3d9fd0dc 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -2288,7 +2288,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks $total_plannedworkload += $plannedworkload; if (!in_array('plannedworkload', $hiddenfields)) { - print ''; + print ''; } if (!in_array('declaredprogress', $hiddenfields)) { diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 9806748a1c0..7b3bfd3852a 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -117,7 +117,6 @@ NbOfEMailingsSend=Mass emailings sent IdRecord=ID record DeliveryReceipt=Delivery Ack. YouCanUseCommaSeparatorForSeveralRecipients=You can use the comma separator to specify several recipients. -YouCanUseFreeEmailsForRecipients=You can enter free emails to specify several recipients. TagCheckMail=Track mail opening TagUnsubscribe=Unsubscribe link TagSignature=Signature of sending user From faf7a379ba090e6d6d6e663c576c7a55a4d1e1e9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 23:01:20 +0200 Subject: [PATCH 777/780] Revert "clean" This reverts commit 8f9ee3250dba03aea88cfd5188253383c866e2fd. --- htdocs/core/class/html.formmail.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 8881b93349f..6007dd1dbaa 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -669,7 +669,6 @@ class FormMail extends Form } else { - // The select combo if (!empty($this->withto) && is_array($this->withto)) { // multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time From a80270ebb5a1c68f042af8b9ebb974a3fb452f0d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 23:01:25 +0200 Subject: [PATCH 778/780] Revert "clean" This reverts commit 7e7a10f8d2140ff2ca0eae2a3818bb2da35435b5. --- htdocs/core/class/html.formmail.class.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 6007dd1dbaa..45c40a8bc72 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -669,8 +669,15 @@ class FormMail extends Form } else { + // The free input of email + // if (!empty($this->withtofree)) + // { + // $out .= 'withto) : "")).'" />'; + // } + // The select combo if (!empty($this->withto) && is_array($this->withto)) { + //if (!empty($this->withtofree)) $out .= " ".$langs->trans("and")."/".$langs->trans("or")." "; // multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time $tmparray = $this->withto; foreach ($tmparray as $key => $val) @@ -737,8 +744,10 @@ class FormMail extends Form } else { + //$out .= 'withtocc) && !is_numeric($this->withtocc)) ? $this->withtocc : '')).'" />'; if (!empty($this->withtocc) && is_array($this->withtocc)) { + //$out .= " ".$langs->trans("and")."/".$langs->trans("or")." "; // multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time $tmparray = $this->withtocc; foreach ($tmparray as $key => $val) From 80ace3b52ca3eb5443f9b90a8bf2f9bdcb1e36aa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 23:05:29 +0200 Subject: [PATCH 779/780] Revert due to regressions --- htdocs/core/actions_sendmails.inc.php | 8 +--- htdocs/core/class/html.form.class.php | 52 +++-------------------- htdocs/core/class/html.formmail.class.php | 22 +++++----- htdocs/langs/en_US/mails.lang | 1 - 4 files changed, 19 insertions(+), 64 deletions(-) diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index d6c4c0a6313..e23d2ce01a9 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -190,12 +190,10 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST { $tmparray[] = dol_string_nospecial($contact->getFullName($langs), ' ', array(",")).' <'.$contact->email.'>'; } - elseif ((int) $val > 0) // $val is the Id of a contact + elseif ($val) // $val is the Id of a contact { $tmparray[] = $thirdparty->contact_get_property((int) $val, 'email'); $sendtoid[] = $val; - } else { - $tmparray[] = $val; } } } @@ -242,12 +240,10 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST { $tmparray[] = dol_string_nospecial($contact->name, ' ', array(",")).' <'.$contact->email.'>'; } - elseif ((int) $val > 0) // $val is the Id of a contact + elseif ($val) // $val is the Id of a contact { $tmparray[] = $thirdparty->contact_get_property((int) $val, 'email'); //$sendtoid[] = $val; TODO Add also id of contact in CC ? - } else { - $tmparray[] = $val; } } } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 6d1ce33b0be..bc89fb3403d 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6621,11 +6621,10 @@ class Form * @param string $elemtype Type of element we show ('category', ...). Will execute a formating function on it. To use in readonly mode if js component support HTML formatting. * @param string $placeholder String to use as placeholder * @param int $addjscombo Add js combo - * @param int $enablefreetag 0 no free tag, 1 enable free tag for elemtype * @return string HTML multiselect string * @see selectarray(), selectArrayAjax(), selectArrayFilter() */ - public 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, $enablefreetag = 0) + public 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; @@ -6639,11 +6638,11 @@ class Form // Add code for jquery to use multiselect if (!empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')) { + $out .= "\n".' +
'.$langs->trans("Label").'
'.$langs->trans("Label").'
'.$langs->trans("AddIn").''; print $formecm->selectAllSections((GETPOST("catParent", 'alpha') ? GETPOST("catParent", 'alpha') : $ecmdir->fk_parent), 'catParent', $module); diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 2070bedf568..12400ecb087 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -83,6 +83,7 @@ class MyObject extends CommonObject * 'showoncombobox' if value of the field must be visible into the label of the combobox that list record * 'disabled' is 1 if we want to have the field locked by a 'disabled' attribute. In most cases, this is never set into the definition of $fields into class, but is set dynamically by some part of code. * 'arraykeyval' to set list of value if type is a list of predefined values. For example: array("0"=>"Draft","1"=>"Active","-1"=>"Cancel") + * 'autofocusoncreate' to have field having the focus on a create form. Only 1 field should have this property set to 1. * 'comment' is not used. You can store here any text of your choice. It is not used by application. * * Note: To have value dynamic, you can set value to 0 in definition and edit the value on the fly into the constructor. diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 569e84496b6..4eaa193e682 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3843,7 +3843,7 @@ div.info { padding-bottom: 8px; margin: 1em 0em 1em 0em; background: #eff8fc; - color: #668; + color: #558; } /* Warning message */ diff --git a/htdocs/theme/eldy/theme_vars.inc.php b/htdocs/theme/eldy/theme_vars.inc.php index fdbd23f1a3a..0677c8e4918 100644 --- a/htdocs/theme/eldy/theme_vars.inc.php +++ b/htdocs/theme/eldy/theme_vars.inc.php @@ -82,7 +82,7 @@ $toolTipFontColor = '#333'; // text color $textSuccess = '#28a745'; $colorblind_deuteranopes_textSuccess = '#37de5d'; -$textWarning = '#a37c0d'; // See $badgeWarning +$textWarning = '#bc9526'; // See $badgeWarning $textDanger = '#9f4705'; // See $badgeDanger $colorblind_deuteranopes_textWarning = $textWarning; // currently not tested with a color blind people so use default color @@ -91,7 +91,7 @@ $colorblind_deuteranopes_textWarning = $textWarning; // currently not tested wit $badgePrimary = '#007bff'; $badgeSecondary = '#cccccc'; $badgeSuccess = '#55a580'; -$badgeWarning = '#a37c0d'; // See $textDanger bc9526 +$badgeWarning = '#bc9526'; // See $textWarning bc9526 $badgeDanger = '#9f4705'; // See $textDanger $badgeInfo = '#aaaabb'; $badgeDark = '#343a40'; diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 4db98cfe7ad..4545497be62 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -184,7 +184,7 @@ class Ticket extends CommonObject 'track_id' => array('type'=>'varchar(255)', 'label'=>'TicketTrackId', 'visible'=>-2, 'enabled'=>1, 'position'=>11, 'notnull'=>-1, 'searchall'=>1, 'help'=>"Help text"), 'fk_user_create' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Author', 'visible'=>1, 'enabled'=>1, 'position'=>15, 'notnull'=>1, 'css'=>'tdoverflowmax150 maxwidth150onsmartphone'), 'origin_email' => array('type'=>'mail', 'label'=>'OriginEmail', 'visible'=>-2, 'enabled'=>1, 'position'=>16, 'notnull'=>1, 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of object", 'css'=>'tdoverflowmax150'), - 'subject' => array('type'=>'varchar(255)', 'label'=>'Subject', 'visible'=>1, 'enabled'=>1, 'position'=>18, 'notnull'=>-1, 'searchall'=>1, 'help'=>"", 'css'=>'maxwidth75'), + 'subject' => array('type'=>'varchar(255)', 'label'=>'Subject', 'visible'=>1, 'enabled'=>1, 'position'=>18, 'notnull'=>-1, 'searchall'=>1, 'help'=>"", 'css'=>'maxwidth75', 'autofocusoncreate'=>1), 'type_code' => array('type'=>'varchar(32)', 'label'=>'Type', 'visible'=>1, 'enabled'=>1, 'position'=>20, 'notnull'=>-1, 'searchall'=>1, 'help'=>"", 'css'=>'maxwidth100'), 'category_code' => array('type'=>'varchar(32)', 'label'=>'TicketGroup', 'visible'=>-1, 'enabled'=>1, 'position'=>21, 'notnull'=>-1, 'help'=>"", 'css'=>'maxwidth100'), 'severity_code' => array('type'=>'varchar(32)', 'label'=>'Severity', 'visible'=>1, 'enabled'=>1, 'position'=>22, 'notnull'=>-1, 'help'=>"", 'css'=>'maxwidth100'), From 02b9ce59013d473546604837b03fa5814f206042 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 18:16:36 +0200 Subject: [PATCH 770/780] Fix length of title --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 2 ++ htdocs/install/mysql/tables/llx_facture_rec.sql | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 96506120263..5e673d97611 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -64,6 +64,8 @@ create table llx_facturedet_rec_extrafields ALTER TABLE llx_facturedet_rec_extrafields ADD INDEX idx_facturedet_rec_extrafields (fk_object); +ALTER TABLE llx_facture_rec MODIFY COLUMN titre varchar(200) NOT NULL; + -- This var is per entity now, so we remove const if global if exists delete from llx_const where name = 'PROJECT_HIDE_TASKS' and entity = 0; diff --git a/htdocs/install/mysql/tables/llx_facture_rec.sql b/htdocs/install/mysql/tables/llx_facture_rec.sql index d0e4486262a..220c1fa608a 100644 --- a/htdocs/install/mysql/tables/llx_facture_rec.sql +++ b/htdocs/install/mysql/tables/llx_facture_rec.sql @@ -22,7 +22,7 @@ create table llx_facture_rec ( rowid integer AUTO_INCREMENT PRIMARY KEY, - titre varchar(100) NOT NULL, + titre varchar(200) NOT NULL, entity integer DEFAULT 1 NOT NULL, -- multi company id fk_soc integer NOT NULL, datec datetime, -- date de creation From 19bcdb6418eba5700d2b045ed2f7baad8bbd3fb9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 22:19:28 +0200 Subject: [PATCH 771/780] Fix structured data --- htdocs/core/lib/website.lib.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 1864ca27bea..977397c2ca4 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -559,7 +559,7 @@ function getStructuredData($type, $data = array()) if ($type == 'software') { - $ret = ''."\n"; + $ret = ''."\n"; $ret .= ''."\n"; @@ -684,7 +685,7 @@ function getStructuredData($type, $data = array()) } elseif ($type == 'product') { - $ret = ''."\n"; + $ret = ''."\n"; $ret .= ''."\n"; } elseif ($type == 'blogpost') From 2fe8e03ed6f3bda4325e1fa436c28d9216a33e03 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 22:23:22 +0200 Subject: [PATCH 773/780] Fix missing quote --- htdocs/core/lib/website.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 804509b4154..f3a4f738927 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -600,7 +600,7 @@ function getStructuredData($type, $data = array()) }'."\n"; if (is_array($mysoc->socialnetworks) && count($mysoc->socialnetworks) > 0) { $ret .= ",\n"; - $ret .= 'sameAs": ['; + $ret .= '"sameAs": ['; $i = 0; foreach($mysoc->socialnetworks as $key => $value) { if ($key == 'linkedin') { From 5fe4520385a89b8651218909d6f2c34bb0f53116 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Mon, 25 May 2020 20:43:35 +0000 Subject: [PATCH 774/780] Fixing style errors. --- htdocs/takepos/phone.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/phone.php b/htdocs/takepos/phone.php index 0bc483b3fe1..2fd2beec15d 100644 --- a/htdocs/takepos/phone.php +++ b/htdocs/takepos/phone.php @@ -41,7 +41,7 @@ if (defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { // Decode place if it is an order from customer phone $place = GETPOSTISSET("key") ? dol_decode(GETPOST('key')) : GETPOST('place', 'aZ09'); } else { - $place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Ba or Restaurant + $place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0); // $place is id of table for Ba or Restaurant } $action = GETPOST('action', 'alpha'); $setterminal = GETPOST('setterminal', 'int'); From 49c4ed5a085dc32a143220d80b21017018cc71ab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 22:50:00 +0200 Subject: [PATCH 775/780] Update list.php --- htdocs/product/list.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 97d08477946..064ac2dce4f 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -1255,6 +1255,8 @@ if ($resql) print ''; if ($obj->tosell) { + // TODO Make 1 request for all price levels (without filter on price_level) and saved result into an cache array + // then reuse the cache array if we need prices for other price levels $resultp = "SELECT p.rowid, p.fk_product, p.price, p.price_ttc, p.price_level, p.date_price"; $resultp .= " FROM ".MAIN_DB_PREFIX."product_price as p"; $resultp .= " WHERE fk_product = ".$obj->rowid; From d169162ef12d370fa8994414cbdcc6aaa635d331 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 25 May 2020 22:56:29 +0200 Subject: [PATCH 776/780] Revert "NEW enable free emails input with select2" --- htdocs/core/actions_sendmails.inc.php | 8 +--- htdocs/core/class/html.form.class.php | 46 ++--------------------- htdocs/core/class/html.formmail.class.php | 16 ++++++-- htdocs/core/lib/project.lib.php | 2 +- htdocs/langs/en_US/mails.lang | 1 - 5 files changed, 19 insertions(+), 54 deletions(-) diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index d6c4c0a6313..e23d2ce01a9 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -190,12 +190,10 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST { $tmparray[] = dol_string_nospecial($contact->getFullName($langs), ' ', array(",")).' <'.$contact->email.'>'; } - elseif ((int) $val > 0) // $val is the Id of a contact + elseif ($val) // $val is the Id of a contact { $tmparray[] = $thirdparty->contact_get_property((int) $val, 'email'); $sendtoid[] = $val; - } else { - $tmparray[] = $val; } } } @@ -242,12 +240,10 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST { $tmparray[] = dol_string_nospecial($contact->name, ' ', array(",")).' <'.$contact->email.'>'; } - elseif ((int) $val > 0) // $val is the Id of a contact + elseif ($val) // $val is the Id of a contact { $tmparray[] = $thirdparty->contact_get_property((int) $val, 'email'); //$sendtoid[] = $val; TODO Add also id of contact in CC ? - } else { - $tmparray[] = $val; } } } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 6d1ce33b0be..622ffb1d127 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6621,11 +6621,10 @@ class Form * @param string $elemtype Type of element we show ('category', ...). Will execute a formating function on it. To use in readonly mode if js component support HTML formatting. * @param string $placeholder String to use as placeholder * @param int $addjscombo Add js combo - * @param int $enablefreetag 0 no free tag, 1 enable free tag for elemtype * @return string HTML multiselect string * @see selectarray(), selectArrayAjax(), selectArrayFilter() */ - public 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, $enablefreetag = 0) + public 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; @@ -6667,50 +6666,13 @@ class Form $out .= '$(document).ready(function () { $(\'#'.$htmlname.'\').'.$tmpplugin.'({ dir: \'ltr\', - tags: '.($enablefreetag?'true':'false').', // Specify format function for dropdown item formatResult: formatResult, - /* For 4.0 */ - templateResult: formatResult, + templateResult: formatResult, /* For 4.0 */ // Specify format function for selected item formatSelection: formatSelection, - /* For 4.0 */ - templateSelection: formatSelection'; - if ($enablefreetag && $elemtype == 'email') { - $out .= ', - createTag: function (params) { - var REGEX_EMAIL = "([a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@" + - "(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)"; - // Dont offset to create a tag if there is no @ symbol - if (params.term.indexOf("@") === -1) { - // Return null to disable tag creation - return null; - } - var match = params.term.match(new RegExp("^([^<]*)\<" + REGEX_EMAIL + "\>$", "i")); - // console.log(match); - if (match !== null) { - return { - id: $.trim(match[1]) + " <" + match[2] + ">", - text: $.trim(match[1]) + " <" + match[2] + ">" - } - } - if (params.term.indexOf("<") >= 0) { - // Return null to disable tag creation - return null; - } - var match = params.term.match(new RegExp("^" + REGEX_EMAIL + "$", "i")); - // console.log(match); - if (match !== null) { - var pos = params.term.indexOf("@"); - return { - id: $.trim(match[1].substring(0, pos)) + " <" + match[1] + ">", - text: $.trim(match[1].substring(0, pos)) + " <" + match[1] + ">" - } - } - return null; - }'; - } - $out .= ' }); + templateSelection: formatSelection /* For 4.0 */ + }); });'."\n"; } elseif ($addjscombo == 2) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 8881b93349f..d961cd20536 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -630,7 +630,7 @@ class FormMail extends Form if (!empty($this->withto) || is_array($this->withto)) { $out .= '
'; - if ($this->withtofree) $out .= $form->textwithpicto($langs->trans("MailTo"), $langs->trans("YouCanUseFreeEmailsForRecipients")); + if ($this->withtofree) $out .= $form->textwithpicto($langs->trans("MailTo"), $langs->trans("YouCanUseCommaSeparatorForSeveralRecipients")); else $out .= $langs->trans("MailTo"); $out .= ''; if ($this->withtoreadonly) @@ -669,9 +669,15 @@ class FormMail extends Form } else { + // The free input of email + if (!empty($this->withtofree)) + { + $out .= 'withto) : "")).'" />'; + } // The select combo if (!empty($this->withto) && is_array($this->withto)) { + if (!empty($this->withtofree)) $out .= " ".$langs->trans("and")."/".$langs->trans("or")." "; // multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time $tmparray = $this->withto; foreach ($tmparray as $key => $val) @@ -683,7 +689,7 @@ class FormMail extends Form { $withtoselected = array_keys($tmparray); } - $out .= $form->multiselectarray("receiver", $tmparray, $withtoselected, null, null, 'inline-block minwidth500', 0, '', '', 'email', '', -1, !empty($this->withtofree)?1:0); + $out .= $form->multiselectarray("receiver", $tmparray, $withtoselected, null, null, 'inline-block minwidth500', null, ""); } } $out .= "
'; - $out .= $form->textwithpicto($langs->trans("MailCC"), $langs->trans("YouCanUseFreeEmailsForRecipients")); + $out .= $form->textwithpicto($langs->trans("MailCC"), $langs->trans("YouCanUseCommaSeparatorForSeveralRecipients")); $out .= ''; if ($this->withtoccreadonly) { @@ -738,8 +744,10 @@ class FormMail extends Form } else { + $out .= 'withtocc) && !is_numeric($this->withtocc)) ? $this->withtocc : '')).'" />'; if (!empty($this->withtocc) && is_array($this->withtocc)) { + $out .= " ".$langs->trans("and")."/".$langs->trans("or")." "; // multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time $tmparray = $this->withtocc; foreach ($tmparray as $key => $val) @@ -747,7 +755,7 @@ class FormMail extends Form $tmparray[$key] = dol_htmlentities($tmparray[$key], null, 'UTF-8', true); } $withtoccselected = GETPOST("receivercc"); // Array of selected value - $out .= $form->multiselectarray("receivercc", $tmparray, $withtoccselected, null, null, 'inline-block minwidth500', 0, '', '', 'email', '', -1, !empty($this->withtofree)?1:0); + $out .= $form->multiselectarray("receivercc", $tmparray, $withtoccselected, null, null, 'inline-block minwidth500', null, ""); } } $out .= "
'.($plannedworkload ? convertSecondToTime($plannedworkload) : '').''.($plannedworkload ?convertSecondToTime($plannedworkload) : '').'