diff --git a/.travis.yml b/.travis.yml index 548a8c53380..69f43183cfc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -92,8 +92,8 @@ script: - php upgrade2.php 3.4.0 3.5.0 > upgrade2.log - php upgrade.php 3.5.0 3.6.0 >> upgrade.log - php upgrade2.php 3.5.0 3.6.0 >> upgrade2.log - - php upgrade.php 3.6.0 3.7.0 >> upgrade.log -# - cat upgrade.log + - php upgrade.php 3.6.0 3.7.0 >> upgrade360370.log + - cat upgrade360370.log - php upgrade2.php 3.6.0 3.7.0 >> upgrade2.log # - cat upgrade2.log - cd ../.. diff --git a/ChangeLog b/ChangeLog index c5aeb5874b3..9f1ae0857a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -99,6 +99,7 @@ For users: - Fix: [ bug #1506, #1507 ] ECM trigger error problem - Fix: [ bug #1469 ] Triggers CONTACT_MODIFY and CONTACT_DELETE duplicates error message - Fix: [ bug #1537 ] Difference between societe.nom and adherent.societe. +- Fix: [ bug #1535 ] Supplier invoice Extrafields are not shown For users, new experimental module (need to set feature level of instance to experimental to see them): - New: Module Accounting Expert to manage accountancy @@ -163,18 +164,20 @@ Dolibarr better: ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** -- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice -- Fix: bug 1588 : relative discount +- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. +- Fix: bug 1588 : relative discount. - Fix: label of input method not tranlated. - Fix: box of customer and propsects were not correctly disabled. -- Fix: right and error management #1961 -- Fix: Fix Error when trying to clone an Order #1943 - Fix: [ bug #1618 ] PHP Error thrown when saving a barcode +- Fix: Civility & birthdate wasn't save into adherent module. +- Fix: webservice Thirdparty parameter lastname for invidual creation is now lastname and not ref +- Fix: Chars - is no more allowed into value for code for extra fields. +( Fix: [ bug #1622 ] Requesting holiday than spans across two years cause high CPU usage by Apache ***** ChangeLog for 3.6.1 compared to 3.6.* ***** For users: - Fix: Can upload files on services. -- Fix: sql errors on updat fichinter. +- Fix: sql errors on update fichinter. - Fix: debian script syntax error. - Fix: error "menu param is not inside list" into pos module. - Fix: Salary payments are not reflected on the reporting sheets. @@ -310,6 +313,9 @@ removed. You must now use the 6 parameters way. See file modMyModule.class.php f - Remove add_photo_web() that is ot used anymore by core code. +***** ChangeLog for 3.5.6 compared to 3.5.5 ***** +Fix: Avoid missing class error for fetch_thirdparty method #1973 + ***** ChangeLog for 3.5.5 compared to 3.5.4 ***** Fix: Holiday module was broken. Initializaion of amount of holidays failed. Fix: [ bug #1523 ] suite bug #1334 : filtre et ordre de tri conjoints ne s'appliquent pas. diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 60ff4b125c3..36739254d06 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -37,6 +37,11 @@ $mesg = ''; $action = GETPOST('action'); $id = GETPOST('id', 'int'); $rowid = GETPOST('rowid', 'int'); +$search_account = GETPOST("search_account"); +$search_label = GETPOST("search_label"); +$search_accountparent = GETPOST("search_accountparent"); +$search_pcgtype = GETPOST("search_pcgtype"); +$search_pcgsubtype = GETPOST("search_pcgsubtype"); // Security check if (!$user->admin) @@ -83,6 +88,15 @@ if ($action == 'disable') { } } +if (GETPOST("button_removefilter")) +{ + $search_account=""; + $search_label=""; + $search_accountparent=""; + $search_pcgtype=""; + $search_pcgsubtype=""; +} + /* * View * @@ -96,20 +110,20 @@ $sql .= " FROM " . MAIN_DB_PREFIX . "accountingaccount as aa, " . MAIN_DB_PREFIX $sql .= " WHERE aa.fk_pcg_version = asy.pcg_version"; $sql .= " AND asy.rowid = " . $pcgver; -if (strlen(trim($_GET["search_account"]))) { - $sql .= " AND aa.account_number like '%" . $_GET["search_account"] . "%'"; +if (strlen(trim($search_account))) { + $sql .= " AND aa.account_number like '%" . $search_account . "%'"; } -if (strlen(trim($_GET["search_label"]))) { - $sql .= " AND aa.label like '%" . $_GET["search_label"] . "%'"; +if (strlen(trim($search_label))) { + $sql .= " AND aa.label like '%" . $search_label . "%'"; } -if (strlen(trim($_GET["search_accountparent"]))) { - $sql .= " AND aa.account_parent like '%" . $_GET["search_accountparent"] . "%'"; +if (strlen(trim($search_accountparent))) { + $sql .= " AND aa.account_parent like '%" . $search_accountparent . "%'"; } -if (strlen(trim($_GET["search_pcgtype"]))) { - $sql .= " AND aa.pcg_type like '%" . $_GET["search_pcgtype"] . "%'"; +if (strlen(trim($search_pcgtype))) { + $sql .= " AND aa.pcg_type like '%" . $search_pcgtype . "%'"; } -if (strlen(trim($_GET["search_pcgsubtype"]))) { - $sql .= " AND aa.pcg_subtype like '%" . $_GET["search_pcgsubtype"] . "%'"; +if (strlen(trim($search_pcgsubtype))) { + $sql .= " AND aa.pcg_subtype like '%" . $search_pcgsubtype . "%'"; } $sql .= $db->order($sortfield, $sortorder); @@ -141,18 +155,20 @@ if ($result) { print_liste_field_titre($langs->trans("Pcgtype"), $_SERVER["PHP_SELF"], "aa.pcg_type", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Pcgsubtype"), $_SERVER["PHP_SELF"], "aa.pcg_subtype", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Active"), $_SERVER["PHP_SELF"], "aa.active", "", $param, "", $sortfield, $sortorder); - print_liste_field_titre(" "); + print_liste_field_titre($langs->trans("Action"),$_SERVER["PHP_SELF"],"",$param,"",'width="60" align="center"',$sortfield,$sortorder); print ''; print ''; - print ''; - print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; + print ''; + print ''; print ' '; - print ''; - print ''; + print ''; + print ''; + print ' '; + print ''; print ''; print ''; @@ -180,11 +196,13 @@ if ($result) { } print ''; - print ''; + // Action + print ''; if ($user->admin) { print ''; print img_edit(); - print ' '; + print ''; + print ' '; print ''; print img_delete(); print ''; diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php index 9ebdea5fefc..ad6ca01b6ca 100644 --- a/htdocs/accountancy/admin/card.php +++ b/htdocs/accountancy/admin/card.php @@ -181,11 +181,6 @@ else if ($id) if ($action == 'update') { - // WYSIWYG Editor - $htmlacc = new FormVentilation($db); - - require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; - $soc = new Societe($db); if ($object->socid) { $soc->fetch($object->socid); diff --git a/htdocs/accountancy/bookkeeping/card.php b/htdocs/accountancy/bookkeeping/card.php index 9e109c7feeb..608c62cf1d0 100644 --- a/htdocs/accountancy/bookkeeping/card.php +++ b/htdocs/accountancy/bookkeeping/card.php @@ -35,8 +35,6 @@ $langs->load("accounting"); $id = GETPOST('id', 'int'); if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); $action = GETPOST('action'); $piece_num = GETPOST("piece_num"); @@ -238,7 +236,9 @@ if ($action == 'create') { print ''; print ''; -} else { +} +else +{ $book = new BookKeeping($db); $result = $book->fetch_per_mvt($piece_num); if ($result < 0) { @@ -309,14 +309,12 @@ if ($action == 'create') { print ''; print '' . $line->montant . ''; print '' . $line->sens . ''; - print ''; - if ($user->rights->accounting->access) { - print ''; - } + print ''; print ''; print ''; - } else { + } + else { print '' . $line->numero_compte . ''; print '' . $line->code_tiers . ''; print '' . $line->label_compte . ''; @@ -324,16 +322,15 @@ if ($action == 'create') { print '' . $line->credit . ''; print '' . $line->montant . ''; print '' . $line->sens . ''; - + print ''; - if ($user->rights->accouting->access) { - print ''; - print img_edit(); - print ' '; - print ''; - print img_delete(); - print ''; - } + print ''; + print img_edit(); + print ' '; + print ''; + print img_delete(); + print ''; + print ''; } print "\n"; @@ -342,7 +339,7 @@ if ($action == 'create') { if ($action == "" || $action == 'add') { $var = ! $var; print ""; - + print '
'; print '' . "\n"; print '' . "\n"; @@ -359,14 +356,13 @@ if ($action == 'create') { print ''; print ''; print ''; - print ''; } - print ""; } } - } else { + } + else { print_fiche_titre($langs->trans("NoRecords")); } } diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index b0e5096699b..21da5bacbb9 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -36,6 +36,11 @@ $page = GETPOST("page"); $sortorder = GETPOST("sortorder"); $sortfield = GETPOST("sortfield"); $action = GETPOST('action', 'alpha'); +$search_doc_type = GETPOST("search_doc_type"); +$search_doc_ref = GETPOST("search_doc_ref"); +$search_account = GETPOST("search_account"); +$search_thirdparty = GETPOST("search_thirdparty"); +$search_journal = GETPOST("search_journal"); if ($sortorder == "") $sortorder = "ASC"; @@ -46,6 +51,15 @@ $offset = $conf->liste_limit * $page; $formventilation = new FormVentilation($db); +if (GETPOST("button_removefilter")) +{ + $search_doc_type=""; + $search_doc_ref=""; + $search_account=""; + $search_thirdparty=""; + $search_journal=""; +} + /* * Action */ @@ -100,25 +114,25 @@ else { $sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, bk.code_tiers, bk.numero_compte , bk.label_compte, bk.debit , bk.credit, bk.montant , bk.sens , bk.code_journal , bk.piece_num "; $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk"; - if (dol_strlen(trim(GETPOST("search_doc_type")))) { + if (dol_strlen(trim($search_doc_type))) { - $sql .= " WHERE bk.doc_type LIKE '%" . GETPOST("search_doc_type") . "%'"; + $sql .= " WHERE bk.doc_type LIKE '%" . $search_doc_type . "%'"; - if (dol_strlen(trim(GETPOST("search_doc_ref")))) { - $sql .= " AND bk.doc_ref LIKE '%" . GETPOST("search_doc_ref") . "%'"; + if (dol_strlen(trim($search_doc_ref))) { + $sql .= " AND bk.doc_ref LIKE '%" . $search_doc_ref . "%'"; } } - if (dol_strlen(trim(GETPOST("search_doc_ref")))) { - $sql .= " WHERE bk.doc_ref LIKE '%" . GETPOST("search_doc_ref") . "%'"; + if (dol_strlen(trim($search_doc_ref))) { + $sql .= " WHERE bk.doc_ref LIKE '%" . $search_doc_ref . "%'"; } - if (dol_strlen(trim(GETPOST("search_compte")))) { - $sql .= " WHERE bk.numero_compte LIKE '%" . GETPOST("search_compte") . "%'"; + if (dol_strlen(trim($search_account))) { + $sql .= " WHERE bk.numero_compte LIKE '%" . $search_account . "%'"; } - if (dol_strlen(trim(GETPOST("search_tiers")))) { - $sql .= " WHERE bk.code_tiers LIKE '%" . GETPOST("search_tiers") . "%'"; + if (dol_strlen(trim($search_thirdparty))) { + $sql .= " WHERE bk.code_tiers LIKE '%" . $search_thirdparty . "%'"; } - if (dol_strlen(trim(GETPOST("search_journal")))) { - $sql .= " WHERE bk.code_journal LIKE '%" . GETPOST("search_journal") . "%'"; + if (dol_strlen(trim($search_journal))) { + $sql .= " WHERE bk.code_journal LIKE '%" . $search_journal . "%'"; } $sql .= " ORDER BY $sortfield $sortorder " . $db->plimit($conf->liste_limit + 1, $offset); @@ -149,7 +163,7 @@ else { print ''; print '
'; - print ""; + print '
'; print ''; print_liste_field_titre($langs->trans("Doctype"), $_SERVER['PHP_SELF'], "bk.doc_type", "", "", "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Docdate"), $_SERVER['PHP_SELF'], "bk.doc_date", "", "", "", $sortfield, $sortorder); @@ -157,29 +171,31 @@ else { print_liste_field_titre($langs->trans("Numerocompte"), $_SERVER['PHP_SELF'], "bk.numero_compte", "", "", "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Code_tiers"), $_SERVER['PHP_SELF'], "bk.code_tiers", "", "", "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Labelcompte"), $_SERVER['PHP_SELF'], "bk_label_compte", "", "", "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Debit"), $_SERVER['PHP_SELF'], "bk.debit", "", "", "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Credit"), $_SERVER['PHP_SELF'], "bk.credit", "", "", "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Amount"), $_SERVER['PHP_SELF'], "bk.montant", "", "", "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Sens"), $_SERVER['PHP_SELF'], "bk.sens", "", "", "", $sortfield, $sortorder); + print_liste_field_titre($langs->trans("Debit"), $_SERVER['PHP_SELF'], "bk.debit", "", "", 'align="center"', $sortfield, $sortorder); + print_liste_field_titre($langs->trans("Credit"), $_SERVER['PHP_SELF'], "bk.credit", "", "", 'align="center"', $sortfield, $sortorder); + print_liste_field_titre($langs->trans("Amount"), $_SERVER['PHP_SELF'], "bk.montant", "", "", 'align="center"', $sortfield, $sortorder); + print_liste_field_titre($langs->trans("Sens"), $_SERVER['PHP_SELF'], "bk.sens", "", "", 'align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Codejournal"), $_SERVER['PHP_SELF'], "bk.code_journal", "", "", "", $sortfield, $sortorder); - print_liste_field_titre(" "); + print_liste_field_titre($langs->trans("Action"),$_SERVER["PHP_SELF"],"",$param,"",'width="60" align="center"',$sortfield,$sortorder); print "\n"; print ''; print ''; - print ''; + print ''; print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; print ''; print ''; print ''; print ''; print ''; - print ''; - print ''; + print ''; print ''; print ''; @@ -201,9 +217,9 @@ else { print ''; print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print "\n"; $i ++; } diff --git a/htdocs/accountancy/customer/card.php b/htdocs/accountancy/customer/card.php index 91a0eb5df8b..28d3d0c1f79 100644 --- a/htdocs/accountancy/customer/card.php +++ b/htdocs/accountancy/customer/card.php @@ -40,14 +40,12 @@ $id = GETPOST('id'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); /* * Actions */ -if ($action == 'ventil' && $user->rights->accounting->access) +if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) { if (! GETPOST('cancel', 'alpha')) { @@ -109,7 +107,7 @@ if (! empty($id)) { print ''; $linkback=''.$langs->trans("Back").''; - print_fiche_titre($langs->trans('AccountingVentilationCustomer'),$linkback,'setup'); + print_fiche_titre($langs->trans('CustomersVentilation'),$linkback,'setup'); print '
      '; - print ''; + print ''; + print ''; + print ' '; + print ''; print '
' . price($obj->debit) . '' . price($obj->credit) . '' . price($obj->montant) . '' . $obj->sens . '' . $obj->sens . '' . $obj->code_journal . '' . img_edit() . '' . img_edit() . '
'; diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index 9ae070c25e0..cb40b7b361b 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -93,8 +93,8 @@ if ($action == 'validatehistory') { */ llxHeader('', $langs->trans("CustomersVentilation")); -$textprevyear = "" . img_previous() . ""; -$textnextyear = " " . img_next() . ""; +$textprevyear = '' . img_previous() . ''; +$textnextyear = ' ' . img_next() . ''; print_fiche_titre($langs->trans("CustomersVentilation") . " " . $textprevyear . " " . $langs->trans("Year") . " " . $year_start . " " . $textnextyear); @@ -197,7 +197,7 @@ print "
\n"; print "
\n"; print ''; -print ''; +print ''; print ''; print ''; print ''; @@ -212,7 +212,7 @@ print ''; print ''; print ''; -$sql = "SELECT '" . $langs->trans("Vide") . "' AS 'Total',"; +$sql = "SELECT '" . $langs->trans("TotalVente") . "' AS 'Total',"; $sql .= " ROUND(SUM(IF(MONTH(f.datef)=1,fd.total_ht,0)),2) AS 'Janvier',"; $sql .= " ROUND(SUM(IF(MONTH(f.datef)=2,fd.total_ht,0)),2) AS 'Fevrier',"; $sql .= " ROUND(SUM(IF(MONTH(f.datef)=3,fd.total_ht,0)),2) AS 'Mars',"; diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index dcd8fca4d41..1f9b0549121 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -68,8 +68,6 @@ $action = GETPOST('action'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); /* * View diff --git a/htdocs/accountancy/journal/cashjournal.php b/htdocs/accountancy/journal/cashjournal.php index 8af84a9ed58..fb5a15a513c 100644 --- a/htdocs/accountancy/journal/cashjournal.php +++ b/htdocs/accountancy/journal/cashjournal.php @@ -62,8 +62,6 @@ $date_endyear = GETPOST('date_endyear'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); $action = GETPOST('action'); diff --git a/htdocs/accountancy/journal/index.php b/htdocs/accountancy/journal/index.php index 272d76fa20f..36286ce265e 100644 --- a/htdocs/accountancy/journal/index.php +++ b/htdocs/accountancy/journal/index.php @@ -36,8 +36,6 @@ $langs->load("accountancy"); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); llxHeader('', 'Journaux', ''); diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index 789aa1111af..97d52124c01 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -55,8 +55,6 @@ $date_endyear = GETPOST('date_endyear'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); $action = GETPOST('action'); diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index a7c0266998f..5bb1f989a92 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -56,8 +56,6 @@ $date_endyear = GETPOST('date_endyear'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); $action = GETPOST('action'); diff --git a/htdocs/accountancy/supplier/card.php b/htdocs/accountancy/supplier/card.php index b0078839b55..45c8de9b165 100644 --- a/htdocs/accountancy/supplier/card.php +++ b/htdocs/accountancy/supplier/card.php @@ -46,10 +46,9 @@ $codeventil = GETPOST('codeventil'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->ventilation->dispatch) - accessforbidden(); -if ($action == 'ventil' && $user->rights->accounting->access) { +if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) +{ $sql = " UPDATE " . MAIN_DB_PREFIX . "facture_fourn_det"; $sql .= " SET fk_code_ventilation = " . $codeventil; $sql .= " WHERE rowid = " . $id; @@ -103,7 +102,7 @@ if ($_GET["id"]) { print ''; print ''; - print_fiche_titre($langs->trans("Ventilation")); + print_fiche_titre($langs->trans("SuppliersVentilation")); print '
' . $langs->trans("TotalVente") . '
' . $langs->trans("Total") . '' . $langs->trans("JanuaryMin") . '' . $langs->trans("FebruaryMin") . '' . $langs->trans("MarchMin") . '' . $langs->trans("NovemberMin") . '' . $langs->trans("DecemberMin") . '' . $langs->trans("Total") . '
'; diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php index 7d633c575f1..edebcfd9d46 100644 --- a/htdocs/accountancy/supplier/index.php +++ b/htdocs/accountancy/supplier/index.php @@ -92,10 +92,10 @@ if ($action == 'validatehistory') { llxHeader('', $langs->trans("SuppliersVentilation")); -$textprevyear = "" . img_previous() . ""; -$textnextyear = " " . img_next() . ""; +$textprevyear = '' . img_previous() . ''; +$textnextyear = ' ' . img_next() . ''; -print_fiche_titre($langs->trans("AccountingVentilationSupplier") . " " . $textprevyear . " " . $langs->trans("Year") . " " . $year_start . " " . $textnextyear); +print_fiche_titre($langs->trans("SuppliersVentilation") . " " . $textprevyear . " " . $langs->trans("Year") . " " . $year_start . " " . $textnextyear); print '' . $langs->trans("DescVentilSupplier") . ''; print '
' . $langs->trans("ValidateHistory") . '
'; diff --git a/htdocs/adherents/admin/adherent_type_extrafields.php b/htdocs/adherents/admin/adherent_type_extrafields.php index b2f839e3c3c..627d96acf17 100644 --- a/htdocs/adherents/admin/adherent_type_extrafields.php +++ b/htdocs/adherents/admin/adherent_type_extrafields.php @@ -7,7 +7,7 @@ * * 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 2 of the License, or + * 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, @@ -17,6 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . + * or see http://www.gnu.org/ */ /** diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index ca7706989e0..102f45496c6 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -723,7 +723,7 @@ else { /* ************************************************************************** */ /* */ - /* Fiche creation */ + /* Creation card */ /* */ /* ************************************************************************** */ $object->canvas=$canvas; diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index a057e7cba93..cdbfabf4576 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -5,6 +5,7 @@ * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2009-2012 Regis Houssin + * Copyright (C) 2014 Alexandre Spangaro * * 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 @@ -124,7 +125,7 @@ class Adherent extends CommonObject /** - * Fonction envoyant un email a l'adherent avec le texte fourni en parametre. + * Function sending an email has the adherent with the text supplied in parameter. * * @param string $text Content of message (not html entities encoded) * @param string $subject Subject of message @@ -247,9 +248,9 @@ class Adherent extends CommonObject /** - * Renvoie le libelle traduit de la nature d'un adherent (physique ou morale) + * Return translated label by the nature of a adherent (physical or moral) * - * @param string $morphy Nature physique ou morale de l'adherent + * @param string $morphy Nature of the adherent (physical or moral) * @return string Label */ function getmorphylib($morphy='') diff --git a/htdocs/compta/prelevement/bon.php b/htdocs/compta/prelevement/bon.php deleted file mode 100644 index 20d60c3a55b..00000000000 --- a/htdocs/compta/prelevement/bon.php +++ /dev/null @@ -1,103 +0,0 @@ - - * Copyright (C) 2005 Laurent Destailleur - * Copyright (C) 2010-2012 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/compta/prelevement/bon.php - * \ingroup prelevement - * \brief Fiche apercu du bon de prelevement - */ - -require('../../main.inc.php'); -require_once DOL_DOCUMENT_ROOT.'/core/lib/prelevement.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; - -$langs->load("banks"); -$langs->load("categories"); -$langs->load("bills"); -$langs->load("categories"); - -// Security check -$socid=0; -$id = GETPOST('id','int'); -$ref = GETPOST('ref','alpha'); -if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'prelevement', $id); - - -llxHeader('','Bon de prelevement'); - -$form = new Form($db); - -if ($id > 0 || ! empty($ref)) -{ - $object = new BonPrelevement($db,""); - - if ($object->fetch($id) == 0) - { - $head = prelevement_prepare_head($object); - dol_fiche_head($head, 'preview', 'Prelevement : '. $object->ref); - - print '
'; - - print ''; - print ''; - print ''; - print '
'.$langs->trans("Ref").''.$object->ref.'
'.$langs->trans("Amount").''.price($object->amount).'
'.$langs->trans("File").''; - - $relativepath = 'bon/'.$object->ref; - - print ''.$object->ref.''; - - print '

'; - - $fileimage = $conf->prelevement->dir_output.'/receipts/'.$object->ref.'.ps.png.0'; - $fileps = $conf->prelevement->dir_output.'/receipts/'.$object->ref.'.ps'; - - // Conversion du PDF en image png si fichier png non existant - if (!file_exists($fileimage)) - { - if (class_exists("Imagick")) - { - $ret = dol_convert_file($file,'png',$fileimage); - if ($ret < 0) $error++; - } - else - { - $langs->load("errors"); - print ''.$langs->trans("ErrorNoImagickReadimage").''; - } - } - - if (file_exists($fileimage)) - { - print ''; - - } - - dol_fiche_end(); - } - else - { - dol_print_error($db); - } -} - -llxFooter(); diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 87bab387344..66a1c81e8e9 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -821,7 +821,9 @@ class BonPrelevement extends CommonObject { $bac = new CompanyBankAccount($this->db); $bac->fetch(0,$soc->id); + if ($bac->verif() >= 1) + //if (true) { $factures_prev[$i] = $fac; /* second tableau necessaire pour BonPrelevement */ @@ -1226,26 +1228,24 @@ class BonPrelevement extends CommonObject * @return int 0 if OK, <0 if KO */ //TODO: Optimize code to read lines in a single function - function Generate() + function generate() { global $conf,$langs,$mysoc; $result = 0; - dol_syslog(get_class($this)."::Generate build file ".$this->filename); + dol_syslog(get_class($this)."::generate build file ".$this->filename); $this->file = fopen($this->filename,"w"); $found=0; // Build file for European countries - if (! $mysoc->isInEEC()) + if ($mysoc->isInEEC()) { $found++; /** - * SECTION CREATION FICHIER SEPA - * SECTION CREATION FICHIER SEPA * SECTION CREATION FICHIER SEPA */ // SEPA Initialisation @@ -1308,8 +1308,6 @@ class BonPrelevement extends CommonObject } /** - * SECTION CREATION FICHIER SEPA - * SECTION CREATION FICHIER SEPA * SECTION CREATION FICHIER SEPA */ // SEPA File Header @@ -1401,11 +1399,14 @@ class BonPrelevement extends CommonObject } } else - { + { $result = -2; } + $langs->load('withdrawals'); - fputs($this->file, $langs->trans('WithdrawalFileNotCapable')); + + // TODO Add here code to generate a generic file + fputs($this->file, $langs->trans('WithdrawalFileNotCapable', $mysoc->country_code)); } fclose($this->file); diff --git a/htdocs/compta/prelevement/class/rejetprelevement.class.php b/htdocs/compta/prelevement/class/rejetprelevement.class.php index 27ae87ca3b4..d0b467f294b 100644 --- a/htdocs/compta/prelevement/class/rejetprelevement.class.php +++ b/htdocs/compta/prelevement/class/rejetprelevement.class.php @@ -173,7 +173,8 @@ class RejetPrelevement } //Tag invoice as unpaid dol_syslog("RejetPrelevement::Create set_unpaid fac ".$fac->ref); - $fac->set_unpaid($fac->id, $user); + + $fac->set_unpaid($user); //TODO: Must be managed by notifications module // Send email to sender of the standing order request @@ -194,7 +195,7 @@ class RejetPrelevement } /** - * Envoi mail + * Send email to all users that has asked the withdraw request * * @param Facture $fac Invoice object * @return void diff --git a/htdocs/compta/prelevement/demandes.php b/htdocs/compta/prelevement/demandes.php index c99744f7430..364e073676b 100644 --- a/htdocs/compta/prelevement/demandes.php +++ b/htdocs/compta/prelevement/demandes.php @@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->load("banks"); $langs->load("categories"); -$langs->load("widthdrawals"); +$langs->load("withdrawals"); $langs->load("companies"); // Security check diff --git a/htdocs/compta/prelevement/factures.php b/htdocs/compta/prelevement/factures.php index bf3e428cd0e..d11fefbb6cb 100644 --- a/htdocs/compta/prelevement/factures.php +++ b/htdocs/compta/prelevement/factures.php @@ -213,6 +213,7 @@ else dol_print_error($db); } -$db->close(); llxFooter(); + +$db->close(); diff --git a/htdocs/compta/prelevement/ligne.php b/htdocs/compta/prelevement/ligne.php index b3f9acb3570..f1617979645 100644 --- a/htdocs/compta/prelevement/ligne.php +++ b/htdocs/compta/prelevement/ligne.php @@ -105,10 +105,13 @@ if ($action == 'confirm_rejet') } } + /* * View */ +$invoicestatic=new Facture($db); + llxHeader('',$langs->trans("StandingOrder")); $h = 0; @@ -134,9 +137,7 @@ if ($id) print ''.$lipre->bon_ref.''; print ''.$langs->trans("Date").''.dol_print_date($bon->datec,'day').''; print ''.$langs->trans("Amount").''.price($lipre->amount).''; - print ''.$langs->trans("Status").''; - - print $lipre->LibStatut($lipre->statut,1).''; + print ''.$langs->trans("Status").''.$lipre->LibStatut($lipre->statut,1).''; if ($lipre->statut == 3) { @@ -215,7 +216,7 @@ if ($id) print '
'; //Confirm Button - print '
'; + print '
'; print ''; } @@ -229,13 +230,20 @@ if ($id) if ($action == '') { - if ($bon->statut == 2 && $lipre->statut == 2 && $user->rights->prelevement->bons->credit) + if ($bon->statut == 2 && $lipre->statut == 2) { - print "id\">".$langs->trans("StandingOrderReject").""; + if ($user->rights->prelevement->bons->credit) + { + print "id\">".$langs->trans("StandingOrderReject").""; + } + else + { + print "trans("NotAllowed")."\">".$langs->trans("StandingOrderReject").""; + } } else { - print "".$langs->trans("StandingOrderReject").""; + print "trans("NotPossibleForThisStatusOfWithdrawReceiptORLine")."\">".$langs->trans("StandingOrderReject").""; } } @@ -256,7 +264,7 @@ if ($id) * Liste des factures */ $sql = "SELECT pf.rowid"; - $sql.= " ,f.rowid as facid, f.facnumber as ref, f.total_ttc"; + $sql.= " ,f.rowid as facid, f.facnumber as ref, f.total_ttc, f.paye, f.fk_statut"; $sql.= " , s.rowid as socid, s.nom as name"; $sql.= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; $sql.= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl"; @@ -287,7 +295,7 @@ if ($id) print"\n\n"; print ''; print ''; - print ''; + print ''; print ''; $var=True; @@ -312,6 +320,11 @@ if ($id) print '\n"; + print '\n"; + print "\n"; $i++; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index ad9149d48b0..a9c39fa790f 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -609,6 +609,8 @@ abstract class CommonObject if (empty($this->socid) && empty($this->fk_soc) && empty($this->fk_thirdparty)) return 0; + require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; + $thirdparty = new Societe($this->db); $result=$thirdparty->fetch(isset($this->socid)?$this->socid:(isset($this->fk_soc)?$this->fk_soc:$this->fk_thirdparty)); $this->client = $thirdparty; // deprecated diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index db24d257aee..94898ec5452 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -157,7 +157,7 @@ class ExtraFields { $table=$elementtype.'_extrafields'; - if (! empty($attrname) && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname) && ! is_numeric($attrname)) + if (! empty($attrname) && preg_match("/^\w[a-zA-Z0-9_]*$/",$attrname) && ! is_numeric($attrname)) { if ($type=='boolean') { $typedb='int'; @@ -752,15 +752,17 @@ class ExtraFields if (strpos($InfoFieldList[4], 'extra')!==false) { $sql.= ' as main, '.MAIN_DB_PREFIX .$InfoFieldList[0].'_extrafields as extra'; - $sqlwhere.= ' AND extra.fk_object=main.'.$InfoFieldList[2]. ' AND '.$InfoFieldList[4]; + $sqlwhere.= ' WHERE extra.fk_object=main.'.$InfoFieldList[2]. ' AND '.$InfoFieldList[4]; } else { - $sqlwhere.= ' AND '.$InfoFieldList[4]; + $sqlwhere.= ' WHERE '.$InfoFieldList[4]; } + }else { + $sqlwhere.= ' WHERE 1'; } if (in_array($InfoFieldList[0],array('tablewithentity'))) $sqlwhere.= ' AND entity = '.$conf->entity; // Some tables may have field, some other not. For the moment we disable it. - $sql.=preg_replace('/^ AND /','',$sqlwhere); + //$sql.=preg_replace('/^ AND /','',$sqlwhere); //print $sql; dol_syslog(get_class($this).'::showInputField type=sellist', LOG_DEBUG); @@ -988,7 +990,10 @@ class ExtraFields { foreach ($fields_label as $field_toshow) { - $translabel=$langs->trans($obj->$field_toshow); + $translabel=''; + if (!empty($obj->$field_toshow)) { + $translabel=$langs->trans($obj->$field_toshow); + } if ($translabel!=$field_toshow) { $value.=dol_trunc($translabel,18).' '; }else { @@ -998,7 +1003,10 @@ class ExtraFields } else { - $translabel=$langs->trans($obj->$InfoFieldList[1]); + $translabel=''; + if (!empty($obj->$InfoFieldList[1])) { + $translabel=$langs->trans($obj->$InfoFieldList[1]); + } if ($translabel!=$obj->$InfoFieldList[1]) { $value=dol_trunc($translabel,18); }else { diff --git a/htdocs/core/class/html.formcron.class.php b/htdocs/core/class/html.formcron.class.php index bce8d9f041e..4de88a7bfc9 100644 --- a/htdocs/core/class/html.formcron.class.php +++ b/htdocs/core/class/html.formcron.class.php @@ -4,7 +4,7 @@ * * 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 2 of the License, or + * 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, @@ -14,6 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . + * or see http://www.gnu.org/ */ /** diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index 26506360e66..db88671f7ff 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -1,6 +1,7 @@ * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2014 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 @@ -173,7 +174,7 @@ class Notify // Check notification per third party $sql = "SELECT s.nom, c.email, c.rowid as cid, c.lastname, c.firstname, c.default_lang,"; - $sql.= " a.rowid as adid, a.label, a.code, n.rowid"; + $sql.= " a.rowid as adid, a.label, a.code, n.rowid, n.type"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as c,"; $sql.= " ".MAIN_DB_PREFIX."c_action_trigger as a,"; $sql.= " ".MAIN_DB_PREFIX."notify_def as n,"; @@ -292,8 +293,8 @@ class Notify if ($mailfile->sendfile()) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, objet_type, objet_id, email)"; - $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", ".$obj->cid.", '".$object_type."', ".$object->id.", '".$this->db->escape($obj->email)."')"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, type, objet_type, objet_id, email)"; + $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", ".$obj->cid.", '".$obj->type."', '".$object_type."', ".$object->id.", '".$this->db->escape($obj->email)."')"; if (! $this->db->query($sql)) { dol_print_error($this->db); @@ -421,8 +422,8 @@ class Notify if ($mailfile->sendfile()) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, objet_type, objet_id, email)"; - $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", null, '".$object_type."', ".$object->id.", '".$this->db->escape($conf->global->$param)."')"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, type, objet_type, objet_id, email)"; + $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", null, '".$obj->type."', '".$object_type."', ".$object->id.", '".$this->db->escape($conf->global->$param)."')"; if (! $this->db->query($sql)) { dol_print_error($this->db); diff --git a/htdocs/core/lib/invoice2.lib.php b/htdocs/core/lib/invoice2.lib.php index ccc115b5b1d..866cf004ca6 100644 --- a/htdocs/core/lib/invoice2.lib.php +++ b/htdocs/core/lib/invoice2.lib.php @@ -2,19 +2,20 @@ /* * Copyright (C) 2009-2013 Laurent Destailleur * -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 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 . -*/ + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see http://www.gnu.org/ + */ /** * \file htdocs/core/lib/invoice2.lib.php diff --git a/htdocs/core/lib/prelevement.lib.php b/htdocs/core/lib/prelevement.lib.php index 257f13558ee..53f54d66f70 100644 --- a/htdocs/core/lib/prelevement.lib.php +++ b/htdocs/core/lib/prelevement.lib.php @@ -44,14 +44,6 @@ function prelevement_prepare_head($object) $head[$h][2] = 'prelevement'; $h++; - if (! empty($conf->global->MAIN_USE_PREVIEW_TABS)) - { - $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/bon.php?id='.$object->id; - $head[$h][1] = $langs->trans("Preview"); - $head[$h][2] = 'preview'; - $h++; - } - $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/lignes.php?id='.$object->id; $head[$h][1] = $langs->trans("Lines"); $head[$h][2] = 'lines'; diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 6d9842a46a6..984bc809a75 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -961,7 +961,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->accounting->enabled)) { $newmenu->add("/accountancy/admin/fiscalyear.php?mainmenu=accountancy", $langs->trans("Fiscalyear"),0,$user->rights->accounting->fiscalyear, '', $mainmenu, 'fiscalyear'); - $newmenu->add("/accountancy/admin/account.php?mainmenu=home", $langs->trans("Chartofaccounts"),0,$user->rights->accounting->fiscalyear, '', $mainmenu, 'fiscalyear'); + $newmenu->add("/accountancy/admin/account.php?mainmenu=accountancy", $langs->trans("Chartofaccounts"),0,$user->rights->accounting->chartofaccount, '', $mainmenu, 'chartofaccount'); } } diff --git a/htdocs/core/modules/action/rapport.pdf.php b/htdocs/core/modules/action/rapport.pdf.php index 38996c7e6f0..464a01120ec 100644 --- a/htdocs/core/modules/action/rapport.pdf.php +++ b/htdocs/core/modules/action/rapport.pdf.php @@ -210,6 +210,7 @@ class CommActionRapport $sql.= " WHERE c.id=a.fk_action AND a.fk_user_author = u.rowid"; $sql.= " AND a.datep BETWEEN '".$this->db->idate(dol_get_first_day($this->year,$this->month,false))."'"; $sql.= " AND '".$this->db->idate(dol_get_last_day($this->year,$this->month,false))."'"; + $sql.= " AND a.entity = ".$conf->entity; $sql.= " ORDER BY a.datep DESC"; $eventstatic=new ActionComm($this->db); diff --git a/htdocs/core/modules/modAccounting.class.php b/htdocs/core/modules/modAccounting.class.php index 9a544b1ece0..e074bfe82f1 100644 --- a/htdocs/core/modules/modAccounting.class.php +++ b/htdocs/core/modules/modAccounting.class.php @@ -229,6 +229,14 @@ class modAccounting extends DolibarrModules $this->rights[$r][4] = 'fiscalyear'; $this->rights[$r][5] = ''; $r++; + + $this->rights[$r][0] = 50440; + $this->rights[$r][1] = 'Manage chart of accounts'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 1; + $this->rights[$r][4] = 'chartofaccount'; + $this->rights[$r][5] = ''; + $r++; // Main menu entries $this->menus = array(); diff --git a/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php b/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php index aedc870560f..7440a357ea8 100644 --- a/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php +++ b/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php @@ -90,11 +90,12 @@ class modGeneratePassPerso extends ModeleGenPassword $this->NbRepeat = $tabConf[4]; $this->WithoutAmbi = $tabConf[5]; - if($this->WithoutAmbi){ - $this->Maj = str_replace($this->Ambi,"",$this->Maj ); - $this->Min = str_replace($this->Ambi,"",$this->Min ); - $this->Nb = str_replace($this->Ambi,"",$this->Nb ); - $this->Spe = str_replace($this->Ambi,"",$this->Spe ); + if ($this->WithoutAmbi) + { + $this->Maj = str_replace($this->Ambi,"",$this->Maj); + $this->Min = str_replace($this->Ambi,"",$this->Min); + $this->Nb = str_replace($this->Ambi,"",$this->Nb); + $this->Spe = str_replace($this->Ambi,"",$this->Spe); } $this->All = str_shuffle($this->Maj. $this->Min. $this->Nb. $this->Spe); @@ -148,11 +149,13 @@ class modGeneratePassPerso extends ModeleGenPassword $pass .= $this->All[rand(0,strlen($this->All) -1)]; } - $pass = str_shuffle($pass) ; + $pass = str_shuffle($pass); - if($this->validatePassword($pass)) { + if ($this->validatePassword($pass)) + { return $pass; } + return $this->getNewGeneratedPassword(); } diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php index d344ef5eb82..ee2a8695f3a 100644 --- a/htdocs/core/tpl/extrafields_view.tpl.php +++ b/htdocs/core/tpl/extrafields_view.tpl.php @@ -1,5 +1,6 @@ + * Copyright (C) 2014 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 @@ -48,7 +49,9 @@ if (empty($reshook) && ! empty($extrafields->attribute_label)) print '
'.$langs->trans("Invoice").''.$langs->trans("ThirdParty").''.$langs->trans("Amount").''.$langs->trans("Invoice").''.$langs->trans("ThirdParty").''.$langs->trans("Amount").''.$langs->trans("Status").'
'.price($obj->total_ttc)."'; + $invoicestatic->fetch($obj->facid); + print $invoicestatic->getLibStatut(5); + print "
attribute_required [$key])) print ' class="fieldrequired"'; print '>' . $label . ''; - if (($object->statut == 0 || $extrafields->attribute_alwayseditable[$key]) && $user->rights->{$object->element}->creer && ($action != 'edit_extras' || GETPOST('attribute') != $key)) + + //TODO Improve element and rights detection + if (($object->statut == 0 || $extrafields->attribute_alwayseditable[$key]) && ($object->element=='order_supplier'?$user->rights->fournisseur>commande:($object->element=='invoice_supplier'?$user->rights->fournisseur>facture:$user->rights->{$object->element}->creer)) && ($action != 'edit_extras' || GETPOST('attribute') != $key)) print ''; print '
' . img_edit().'
'; @@ -58,8 +61,9 @@ if (empty($reshook) && ! empty($extrafields->attribute_label)) if (in_array($extrafields->attribute_type [$key], array('date','datetime'))) { $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"]) : $db->jdate($object->array_options ['options_' . $key]); } - - if ($action == 'edit_extras' && $user->rights->{$object->element}->creer && GETPOST('attribute') == $key) + + //TODO Improve element and rights detection + if ($action == 'edit_extras' && ($object->element=='order_supplier'?$user->rights->fournisseur>commande:($object->element=='invoice_supplier'?$user->rights->fournisseur>facture:$user->rights->{$object->element}->creer)) && GETPOST('attribute') == $key) { print '
'; print ''; diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index bd786cfdf4c..0d6bebada72 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -255,6 +255,23 @@ class FactureFournisseur extends CommonInvoice $result=$this->update_price(); if ($result > 0) { + // Actions on extra fields (by external module or standard code) + // FIXME le hook fait double emploi avec le trigger !! + $hookmanager->initHooks(array('supplierinvoicedao')); + $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)) + { + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + } + else if ($reshook < 0) $error++; // Call trigger $result=$this->call_trigger('BILL_SUPPLIER_CREATE',$user); if ($result < 0) $error++; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index b88fd582400..38a0f79a6ea 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -300,10 +300,16 @@ elseif ($action == 'add' && $user->rights->fournisseur->facture->creer) $_GET['socid']=$_POST['socid']; $error++; } - + + // Fill array 'array_options' with data from add form + if (! $error) { $db->begin(); + + $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); + $ret = $extrafields->setOptionalsFromPost($extralabels, $object); + if ($ret < 0) $error ++; $tmpproject = GETPOST('projectid', 'int'); @@ -1077,7 +1083,7 @@ elseif ($action == 'update_extras') { // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! - $hookmanager->initHooks(array('supplierorderdao')); + $hookmanager->initHooks(array('supplierinvoicedao')); $parameters=array('id'=>$object->id); $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks @@ -1179,6 +1185,9 @@ llxHeader('','',''); // Mode creation if ($action == 'create') { + $facturestatic = new FactureFournisseur($db); + $extralabels = $extrafields->fetch_name_optionals_label($facturestatic->table_element); + print_fiche_titre($langs->trans('NewBill')); dol_htmloutput_events(); @@ -1419,6 +1428,11 @@ if ($action == 'create') print ''; // print ''; print ''; + + if (empty($reshook) && ! empty($extrafields->attribute_label)) + { + print $object->showOptionals($extrafields, 'edit'); + } if (is_object($objectsrc)) { @@ -1530,6 +1544,9 @@ else $societe = new Fournisseur($db); $result=$societe->fetch($object->socid); if ($result < 0) dol_print_error($db); + + // fetch optionals attributes and labels + $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); /* * View card diff --git a/htdocs/install/mssql/functions/functions.sql b/htdocs/install/mssql/functions/functions.sql index 93766a22406..1c2c76996dc 100644 Binary files a/htdocs/install/mssql/functions/functions.sql and b/htdocs/install/mssql/functions/functions.sql differ diff --git a/htdocs/install/mysql/migration/3.5.0-3.6.0.sql b/htdocs/install/mysql/migration/3.5.0-3.6.0.sql old mode 100644 new mode 100755 diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql old mode 100644 new mode 100755 index e16d6886a59..06b77e2daa2 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -28,6 +28,7 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLASSIFY_BILLED','Customer proposal set billed','Executed when a customer proposal is set to billed','propal',2); ALTER TABLE llx_notify ADD COLUMN fk_soc integer NULL after fk_action; +ALTER TABLE llx_notify ADD COLUMN type varchar(16) DEFAULT 'email' after fk_soc; ALTER TABLE llx_bank_account ADD COLUMN fk_user_author integer; diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql old mode 100644 new mode 100755 index 8c334f9966d..4083ba2f7b9 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -189,9 +189,12 @@ UPDATE llx_projet_task_time set task_datehour = task_date where task_datehour IS -- update llx_facture set tva = total_ttc - total where tva = 0; -- To insert elements into a category --- Search idcategory: select rowid from llx_categorie where type=0 and label like '%xxx%' --- Select all products to include: select * from llx_product where label like '%xxx%' --- If ok, insert: insert into llx_categorie_product(fk_categorie, fk_product) select idcategory, rowid from llx_product where label like '%xxx%' +-- Search idcategory: select rowid from llx_categorie where type=0 and ref like '%xxx%' +-- Select all products to include: select * from llx_product where ref like '%xxx%' +-- If ok, insert: insert into llx_categorie_product(fk_categorie, fk_product) select idcategory, rowid from llx_product where ref like '%xxx%' +-- List of product with a category xxx: select distinct cp.fk_product from llx_categorie_product as cp, llx_categorie as c where cp.fk_categorie = c.rowid and c.label like 'xxx-%' order by fk_product; +-- List of product into 2 categories xxx: select cp.fk_product, count(cp.fk_product) as nb from llx_categorie_product as cp, llx_categorie as c where cp.fk_categorie = c.rowid and c.label like 'xxx-%' group by fk_product having nb > 1; +-- List of product with no category xxx yet: select rowid, ref from llx_product where rowid not in (select distinct cp.fk_product from llx_categorie_product as cp, llx_categorie as c where cp.fk_categorie = c.rowid and c.label like 'xxx-%' order by fk_product); -- Replace xxx with your IP Address -- bind-address = xxx.xxx.xxx.xxx diff --git a/htdocs/install/mysql/tables/llx_notify.sql b/htdocs/install/mysql/tables/llx_notify.sql index 21a7b833dec..1dcfe6af8e6 100644 --- a/htdocs/install/mysql/tables/llx_notify.sql +++ b/htdocs/install/mysql/tables/llx_notify.sql @@ -1,6 +1,7 @@ -- =================================================================== -- Copyright (C) 2003 Rodolphe Quiedeville -- Copyright (C) 2009 Laurent Destailleur +-- Copyright (C) 2014 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 @@ -26,6 +27,7 @@ create table llx_notify fk_soc integer NULL, fk_contact integer NULL, fk_user integer NULL, + type varchar(16) DEFAULT 'email', objet_type varchar(24) NOT NULL, objet_id integer NOT NULL, email varchar(255) diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php old mode 100644 new mode 100755 index d89596e25e6..396c9f96b01 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -50,6 +50,7 @@ error_reporting(0); @set_time_limit(120); error_reporting($err); + $setuplang=GETPOST("selectlang",'',3)?GETPOST("selectlang",'',3):'auto'; $langs->setDefaultLang($setuplang); $versionfrom=GETPOST("versionfrom",'',3)?GETPOST("versionfrom",'',3):(empty($argv[1])?'':$argv[1]); @@ -74,6 +75,22 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial * View */ +if (! $versionfrom && ! $versionto) +{ + print 'Error: Parameter versionfrom or versionto missing.'."\n"; + print 'Upgrade must be ran from cmmand line with parameters or called from page install/index.php (like a first install) instead of page install/upgrade.php'."\n"; + // Test if batch mode + $sapi_type = php_sapi_name(); + $script_file = basename(__FILE__); + $path=dirname(__FILE__).'/'; + if (substr($sapi_type, 0, 3) == 'cli') + { + print 'Syntax from command line: '.$script_file." x.y.z a.b.c\n"; + } + exit; +} + + pHeader('',"upgrade2",GETPOST('action'),'versionfrom='.$versionfrom.'&versionto='.$versionto); $actiondone=0; @@ -85,12 +102,6 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action'))) print '

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

'; - if (! $versionfrom && ! $versionto) - { - print '
Parameter versionfrom or versionto missing. Upgrade is launched from page install/index.php (like a first install) instead of install/upgrade.php
'; - exit; - } - print ''; $error=0; diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php old mode 100644 new mode 100755 index 0bf76c7d729..3a02a78f9e8 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -83,6 +83,21 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial * View */ +if (! $versionfrom && ! $versionto) +{ + print 'Error: Parameter versionfrom or versionto missing.'."\n"; + print 'Upgrade must be ran from cmmand line with parameters or called from page install/index.php (like a first install) instead of page install/upgrade.php'."\n"; + // Test if batch mode + $sapi_type = php_sapi_name(); + $script_file = basename(__FILE__); + $path=dirname(__FILE__).'/'; + if (substr($sapi_type, 0, 3) == 'cli') + { + print 'Syntax from command line: '.$script_file." x.y.z a.b.c\n"; + } + exit; +} + pHeader('','etape5',GETPOST("action")?GETPOST("action"):'upgrade','versionfrom='.$versionfrom.'&versionto='.$versionto); diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index a18522be5f8..cbc4deb40d7 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -367,6 +367,7 @@ ActionsOnCompany=Events about this third party ActionsOnMember=Events about this member NActions=%s events NActionsLate=%s late +RequestAlreadyDone=Request already recorded Filter=Filter RemoveFilter=Remove filter ChartGenerated=Chart generated diff --git a/htdocs/langs/en_US/resource.lang b/htdocs/langs/en_US/resource.lang index fbc55081185..e0a767cc58a 100755 --- a/htdocs/langs/en_US/resource.lang +++ b/htdocs/langs/en_US/resource.lang @@ -32,4 +32,6 @@ ResourceLinkedWithSuccess=Resource linked with success TitleResourceCard=Resource card ConfirmDeleteResource=Confirm to delete this resource RessourceSuccessfullyDeleted=Resource successfully deleted -DictionaryResourceType=Type of resources \ No newline at end of file +DictionaryResourceType=Type of resources + +SelectResource=Select resource diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang index dccee9d0c8e..35cfa23d9e2 100644 --- a/htdocs/langs/en_US/withdrawals.lang +++ b/htdocs/langs/en_US/withdrawals.lang @@ -16,6 +16,7 @@ WithdrawedBills=Withdrawn invoices WithdrawalsLines=Withdrawal lines RequestStandingOrderToTreat=Request for standing orders to process RequestStandingOrderTreated=Request for standing orders processed +NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines. CustomersStandingOrders=Customer standing orders CustomerStandingOrder=Customer standing order NbOfInvoiceToWithdraw=Nb. of invoice with withdraw request @@ -76,7 +77,7 @@ WithBankUsingRIB=For bank accounts using RIB WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT BankToReceiveWithdraw=Bank account to receive withdraws CreditDate=Credit on -WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country +WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported) ShowWithdraw=Show Withdraw IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one withdrawal payment not yet processed, it won't be set as paid to allow prior withdrawal management. DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once it is complete, you can type the payment to close the invoice. diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 8dfcbfc080f..79935d143ca 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -484,7 +484,7 @@ Module500Desc=Gestión de los gastos especiales como impuestos, gastos sociales, Module510Name=Salarios Module510Desc=Gestión de salarios y pagos Module600Name=Notificaciones -Module600Desc=Envío de notificaciones (por correo electrónico) sobre los eventos de trabajo Dolibarr +Module600Desc=Envío de notificaciones por e-mail en algunos eventos de negocio de Dolibarr a contactos de terceros (configurado en cada tercero) Module700Name=Donaciones Module700Desc=Gestión de donaciones Module1200Name=Mantis @@ -514,16 +514,16 @@ Module5000Name=Multi-empresa Module5000Desc=Permite gestionar varias empresas Module6000Name=Flujo de trabajo Module6000Desc=Gestión del flujo de trabajo -Module20000Name=Días libres -Module20000Desc=Gestión de los días libres de los empleados +Module20000Name=Gestión de días libres retribuidos +Module20000Desc=Gestión de los días libres retribuidos de los empleados Module39000Name=Lotes de productos Module39000Desc=Gestión de lotes y fechas de caducidad y venta de los productos Module50000Name=PayBox Module50000Desc=Módulo para proporcionar un pago en línea con tarjeta de crédito mediante Paybox Module50100Name=TPV Module50100Desc=Terminal Punto de Venta para la venta en mostrador -Module50200Name= Paypal -Module50200Desc= Módulo para proporcionar un pago en línea con tarjeta de crédito mediante Paypal +Module50200Name=Paypal +Module50200Desc=Módulo para proporcionar un pago en línea con tarjeta de crédito mediante Paypal Module50400Name=Contabilidad (avanzada) Module50400Desc=Gestión contable (doble partida) Module54000Name=PrintIPP @@ -611,10 +611,11 @@ Permission162=Crear/modificar contratos de servicio Permission163=Activar los servicios de un contrato Permission164=Desactivar los servicios de un contrato Permission165=Eliminar contratos -Permission171=Leer los desplazamientos -Permission172=Crear/modificar los desplazamientos -Permission173=Eliminar desplazamientos -Permission178=Exportar desplazamientos +Permission171=Leer honorarios (propios y de sus subordinados) +Permission172=Crear/modificar honorarios +Permission173=Eliminar honorarios +Permission174=Leer todos los honorarios +Permission178=Exportar honorarios Permission180=Consultar proveedores Permission181=Consultar pedidos a proveedores Permission182=Crear/modificar pedidos a proveedores @@ -1074,7 +1075,7 @@ ModuleCompanyCodeAquarium=Devuelve un código contable compuesto de
%s seguid ModuleCompanyCodePanicum=Devuelve un código contable vacío. ModuleCompanyCodeDigitaria=Devuelve un código contable compuesto siguiendo el código de tercero. El código está formado por carácter ' C ' en primera posición seguido de los 5 primeros caracteres del código tercero. UseNotifications=Usar notificaciones -NotificationsDesc=La función de las notificaciones permite enviar automáticamente un correo electrónico para un determinado evento Dolibarr en las empresas configuradas para ello +NotificationsDesc=La función de las notificaciones permite enviar automáticamente un e-mail para algunos eventos de Dolibarr. Los destinatarios de las notificaciones pueden definirse:
* por contactos de terceros (clientes o proveedores), un tercero a la vez.
* o configurando un destinatario global en la configuración del módulo. ModelModules=Modelos de documentos DocumentModelOdt=Generación desde los documentos OpenDocument (Archivo .ODT OpenOffice, KOffice, TextEdit,...) WatermarkOnDraft=Marca de agua en los documentos borrador @@ -1146,6 +1147,7 @@ HideTreadedOrders=Ocultar del listado los pedidos tratados o cancelados ValidOrderAfterPropalClosed=Validar el pedido después del cierre del presupuesto, permite no pasar por el pedido provisional FreeLegalTextOnOrders=Texto libre en pedidos WatermarkOnDraftOrders=Marca de agua en pedidos borrador (en caso de estar vacío) +ShippableOrderIconInList=Añadir un icono en el listado de pedidos que indica si el pedido es enviable ##### Clicktodial ##### ClickToDialSetup=Configuración del módulo Click To Dial ClickToDialUrlDesc=URL de llamada haciendo click en el icono teléfono.
La URL completa de llamada será: URL?login=...&password=...&caller=...&called=telellamada @@ -1384,7 +1386,8 @@ MailingEMailError=E-Mail de respuesta (Errors-to) para las respuestas acerca de ##### Notification ##### NotificationSetup=Configuración del módulo notificaciones NotificationEMailFrom=E-Mail emisor (From) de los correos enviados a través de notificaciones -ListOfAvailableNotifications=Listado de notificaciones disponibles (depende de los módulos activados) +ListOfAvailableNotifications=Listado de eventos que se pueden configurar para notificar para cada tercero (entrar a la ficha del tercero para configurar) o configurando un e-mail fijo (El listado depende de los módulos activados) +FixedEmailTarget=Destinatario fijo ##### Sendings ##### SendingsSetup=Configuración del módulo Expediciones SendingsReceiptModel=Modelo de notas de entrega @@ -1437,7 +1440,7 @@ DetailEnabled=Condición de mostrar o no DetailRight=Condición de visualización completa o restringida DetailLangs=Archivo .lang para la traducción del título DetailUser=Interno / Externo / Todos -Target=Objetivo +Target=Destinatario DetailTarget=Comportamiento del enlace (_blank para abrir una nueva ventana) DetailLevel=Nivel (-1:menú superior, 0:principal, >0 menú y submenú) ModifMenu=Modificación del menú @@ -1535,6 +1538,7 @@ DeleteFiscalYear=Eliminar año fiscal ConfirmDeleteFiscalYear=¿Está seguro de querer eliminar este año fiscal? Opened=Abierto Closed=Cerrado +AlwaysEditable=Puede editarse siempre Format=Formatear TypePaymentDesc=0:Pago cliente,1:Pago proveedor,2:Tanto pago de cliente como de proveedor diff --git a/htdocs/langs/es_ES/agenda.lang b/htdocs/langs/es_ES/agenda.lang index 839bbbdceba..c357756f95a 100644 --- a/htdocs/langs/es_ES/agenda.lang +++ b/htdocs/langs/es_ES/agenda.lang @@ -7,10 +7,10 @@ Agendas=Agendas Calendar=Calendario Calendars=Calendarios LocalAgenda=Calendario interno -ActionsOwnedBy=Evento asignado a +ActionsOwnedBy=Acontecimiento asignado a AffectedTo=Asignada a DoneBy=Realizado por -Event=Evento +Event=Acontecimiento Events=Eventos EventsNb=Número de eventos MyEvents=Mis eventos @@ -23,12 +23,12 @@ MenuToDoActions=Eventos incompletos MenuDoneActions=Eventos terminados MenuToDoMyActions=Mis eventos incompletos MenuDoneMyActions=Mis eventos terminados -ListOfEvents=Listado de eventos (calendario interno) +ListOfEvents=lista de acontecimientos (calendario interno) ActionsAskedBy=Eventos registrados por ActionsToDoBy=Eventos asignados a ActionsDoneBy=Eventos realizados por -ActionsForUser=Eventos del usuario -ActionsForUsersGroup=Eventos de todos los usuarios del grupo +ActionsForUser=Acontecimientos del usuario +ActionsForUsersGroup=Acontecimientos de todos los usuarios del grupo AllMyActions= Todos mis eventos/tareas AllActions= Todos los eventos/tareas ViewList=Vista listado @@ -72,7 +72,7 @@ AgendaUrlOptions1=Puede también añadir estos parámetros al filtro de salida: AgendaUrlOptions2=login=%s para restringir inserciones a acciones creadas , que afecten o realizadas por el usuario %s. AgendaUrlOptions3=logina=%s para restringir inserciones a acciones creadas por el usuario %s. AgendaUrlOptions4=logint=%s para restringir inserciones a acciones que afecten al usuario %s. -AgendaUrlOptions5=logind=%s para restringir inserciones a acciones realizadas por el usuario %s. +AgendaUrlOptionsProject=project=PROJECT_ID para restringir inserciones a acciones asociadas al proyecto PROJECT_ID. AgendaShowBirthdayEvents=Mostrar cumpleaños de los contactos AgendaHideBirthdayEvents=Ocultar cumpleaños de los contactos Busy=Ocupado @@ -89,5 +89,5 @@ ExtSiteUrlAgenda=Url de acceso al archivo .ical ExtSiteNoLabel=Sin descripción WorkingTimeRange=Rango temporal WorkingDaysRange=Rango diario -AddEvent=Añadir evento +AddEvent=Crear evento MyAvailability=Mi disponibilidad diff --git a/htdocs/langs/es_ES/bills.lang b/htdocs/langs/es_ES/bills.lang index f9d7f316b04..e5f939a753f 100644 --- a/htdocs/langs/es_ES/bills.lang +++ b/htdocs/langs/es_ES/bills.lang @@ -28,8 +28,8 @@ InvoiceAvoir=Abono InvoiceAvoirAsk=Abono para corregir la factura InvoiceAvoirDesc=El abono es una factura negativa destinada a compensar un importe de factura que difiere del importe realmente pagado (por haber pagado de más o por devolución de productos, por ejemplo). invoiceAvoirWithLines=Crear abono con las líneas de la factura original -invoiceAvoirWithPaymentRestAmount=Crear abono con el importe pendiente de la factura origen -invoiceAvoirLineWithPaymentRestAmount=Abono del importe pendiente de la factura +invoiceAvoirWithPaymentRestAmount=Crear abono con el resto a cobrar de la factura origen +invoiceAvoirLineWithPaymentRestAmount=Abono del resto por cobrar ReplaceInvoice=Rectificar la factura %s ReplacementInvoice=Rectificación factura ReplacedByInvoice=Rectificada por la factura %s @@ -156,9 +156,9 @@ ConfirmCancelBill=¿Está seguro de querer anular la factura %s ? ConfirmCancelBillQuestion=¿Por qué razón quiere abandonar la factura? ConfirmClassifyPaidPartially=¿Está seguro de querer clasificar la factura %s como pagada? ConfirmClassifyPaidPartiallyQuestion=Esta factura no ha sido totalmente pagada. ¿Por qué quiere clasificarla como pagada? -ConfirmClassifyPaidPartiallyReasonAvoir=El resto a pagar (%s %s) se ha regularizado (ya que artículo se ha devuelto, olvidado entregar, descuento no definido...) mediante un abono -ConfirmClassifyPaidPartiallyReasonDiscountNoVat=El resto a pagar (%s %s) es un descuento acordado después de la factura. Acepto perder el IVA de este descuento -ConfirmClassifyPaidPartiallyReasonDiscountVat=El resto a pagar(%s %s) es un descuento +ConfirmClassifyPaidPartiallyReasonAvoir=El resto a pagar (%s %s) es un descuento otorgado por pronto pago. Regularizaré el IVA con un abono. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=El resto a pagar (%s %s) es un descuento otorgado por pronto pago. Acepto perder el IVA en este descuento. +ConfirmClassifyPaidPartiallyReasonDiscountVat=El resto a pagar (%s %s) es un descuento otorgado por pronto pago. Recuperaré el IVA sin usar un abono. ConfirmClassifyPaidPartiallyReasonBadCustomer=Cliente moroso ConfirmClassifyPaidPartiallyReasonProductReturned=Productos devueltos en parte ConfirmClassifyPaidPartiallyReasonOther=Por otra razón @@ -191,9 +191,9 @@ AlreadyPaid=Ya pagado AlreadyPaidBack=Ya reembolsado AlreadyPaidNoCreditNotesNoDeposits=Ya pagado (excluidos los abonos y anticipos) Abandoned=Abandonada -RemainderToPay=Queda por pagar -RemainderToTake=Queda por cobrar -RemainderToPayBack=Queda por reembolsar +RemainderToPay=Resta por pagar +RemainderToTake=Resta por cobrar +RemainderToPayBack=Resta por reembolsar Rest=Pendiente AmountExpected=Importe reclamado ExcessReceived=Recibido en exceso @@ -225,13 +225,13 @@ NonPercuRecuperable=No percibido recuperable SetConditions=Definir condiciones de pago SetMode=Definir modo de pago Billed=Facturado -RepeatableInvoice=Factura recurrente -RepeatableInvoices=Facturas recurrentes -Repeatable=Recurrente -Repeatables=Recurrentes -ChangeIntoRepeatableInvoice=Convertir en recurrente -CreateRepeatableInvoice=Crear factura recurrente -CreateFromRepeatableInvoice=Crear desde factura recurrente +RepeatableInvoice=Plantilla de factura +RepeatableInvoices=Plantilla de facturas +Repeatable=Plantilla +Repeatables=Plantillas +ChangeIntoRepeatableInvoice=Convertir en plantilla +CreateRepeatableInvoice=Crear plantilla de factura +CreateFromRepeatableInvoice=Crear desde plantilla de factura CustomersInvoicesAndInvoiceLines=Facturas a clientes y líneas de facturas CustomersInvoicesAndPayments=Facturas a clientes y pagos ExportDataset_invoice_1=Facturas a clientes y líneas de factura diff --git a/htdocs/langs/es_ES/boxes.lang b/htdocs/langs/es_ES/boxes.lang index 5038f138113..56353b2006e 100644 --- a/htdocs/langs/es_ES/boxes.lang +++ b/htdocs/langs/es_ES/boxes.lang @@ -12,6 +12,7 @@ BoxLastProspects=Últimos clientes potenciales modificados BoxLastCustomers=Últimos clientes modificados BoxLastSuppliers=Últimos proveedores modificados BoxLastCustomerOrders=Últimos pedidos +BoxLastValidatedCustomerOrders=Últimos pedidos de clientes validados BoxLastBooks=Últimos books BoxLastActions=Últimos eventos BoxLastContracts=Últimos contratos @@ -27,26 +28,29 @@ BoxTitleNbOfCustomers=Número de clientes BoxTitleLastRssInfos=Las %s últimas infos de %s BoxTitleLastProducts=Los %s últimos productos/servicios registrados BoxTitleProductsAlertStock=Productos en alerta de stock -BoxTitleLastCustomerOrders=Los %s últimos pedidos de clientes modificados +BoxTitleLastCustomerOrders=Últimos %s pedidos de clientes +BoxTitleLastModifiedCustomerOrders=Últimos %s pedidos de clientes modificados BoxTitleLastSuppliers=Los %s últimos proveedores registrados BoxTitleLastCustomers=Los %s últimos clientes registrados BoxTitleLastModifiedSuppliers=Los %s últimos proveedores modificados BoxTitleLastModifiedCustomers=Los %s últimos clientes modificados -BoxTitleLastCustomersOrProspects=Los %s últimos clientes o clientes potenciales registrados -BoxTitleLastPropals=Los %s últimos presupuestos registrados +BoxTitleLastCustomersOrProspects=Últimos %s clientes o clientes potenciales +BoxTitleLastPropals=Últimos %s presupuestos +BoxTitleLastModifiedPropals=Últimos %s presupuestos modificados BoxTitleLastCustomerBills=Las %s últimas facturas a clientes modificadas +BoxTitleLastModifiedCustomerBills=Últimas %s facturas a clientes modificadas BoxTitleLastSupplierBills=Las %s últimas facturas de proveedores modificadas -BoxTitleLastProspects=Los %s últimos clientes potenciales registrados +BoxTitleLastModifiedSupplierBills=Últimas %s facturas de proveedores modificadas BoxTitleLastModifiedProspects=Los %s últimos clientes potenciales modificados BoxTitleLastProductsInContract=Los %s últimos productos/servicios contratados -BoxTitleLastModifiedMembers=Los %s últimos miembros modificados +BoxTitleLastModifiedMembers=Últimos %s miembros BoxTitleLastFicheInter=Las %s últimas intervenciones modificadas -BoxTitleOldestUnpaidCustomerBills=Las %s facturas más antiguas a clientes pendientes de cobro -BoxTitleOldestUnpaidSupplierBills=Las %s facturas más antiguas de proveedores pendientes de pago +BoxTitleOldestUnpaidCustomerBills=%s facturas a clientes más antiguras pendientes de cobro +BoxTitleOldestUnpaidSupplierBills=%s facturas de proveedores más antiguas pendientes de pago BoxTitleCurrentAccounts=Balances de cuentas abiertas BoxTitleSalesTurnover=Volumen de ventas realizado -BoxTitleTotalUnpaidCustomerBills=Pendiente de clientes -BoxTitleTotalUnpaidSuppliersBills=Pendiente a proveedores +BoxTitleTotalUnpaidCustomerBills=Facturas a clientes pendientes de cobro +BoxTitleTotalUnpaidSuppliersBills=Facturas de proveedores pendientes de pago BoxTitleLastModifiedContacts=Los %s últimos contactos/direcciones modificadas BoxMyLastBookmarks=Mis %s últimos marcadores BoxOldestExpiredServices=Servicios antiguos expirados @@ -76,7 +80,8 @@ NoContractedProducts=Sin productos/servicios contratados NoRecordedContracts=Sin contratos registrados NoRecordedInterventions=Sin intervenciones guardadas BoxLatestSupplierOrders=Últimos pedidos a proveedores -BoxTitleLatestSupplierOrders=Los %s últimos pedidos a proveedores +BoxTitleLatestSupplierOrders=Últimos %s pedidos a proveedores +BoxTitleLatestModifiedSupplierOrders=Últimos %s pedidos a proveedores modificados NoSupplierOrder=Sin pedidos a proveedores BoxCustomersInvoicesPerMonth=Facturas a clientes por mes BoxSuppliersInvoicesPerMonth=Facturas de proveedores por mes diff --git a/htdocs/langs/es_ES/companies.lang b/htdocs/langs/es_ES/companies.lang index 9fa3e27be18..f86ea312ac3 100644 --- a/htdocs/langs/es_ES/companies.lang +++ b/htdocs/langs/es_ES/companies.lang @@ -379,7 +379,7 @@ DeliveryAddressLabel=Etiqueta de envío DeleteDeliveryAddress=Eliminar una dirección de envío ConfirmDeleteDeliveryAddress=¿Está seguro de querer eliminar esta dirección de envío? NewDeliveryAddress=Nueva dirección de envío -AddDeliveryAddress=Añadir la dirección +AddDeliveryAddress=Crear dirección AddAddress=Crear dirección NoOtherDeliveryAddress=No hay direcciones alternativas definidas SupplierCategory=Categoría de proveedor diff --git a/htdocs/langs/es_ES/deliveries.lang b/htdocs/langs/es_ES/deliveries.lang index 4cfe6c90065..6dbcd26544c 100644 --- a/htdocs/langs/es_ES/deliveries.lang +++ b/htdocs/langs/es_ES/deliveries.lang @@ -24,3 +24,5 @@ Deliverer=Destinatario : Sender=Origen Recipient=Destinatario ErrorStockIsNotEnough=No hay suficiente stock +Shippable=Enviable +NonShippable=No enviable diff --git a/htdocs/langs/es_ES/donations.lang b/htdocs/langs/es_ES/donations.lang index 31c89f77209..064e6587789 100644 --- a/htdocs/langs/es_ES/donations.lang +++ b/htdocs/langs/es_ES/donations.lang @@ -4,7 +4,7 @@ Donations=Donaciones DonationRef=Ref. donación Donor=Donante Donors=Donantes -AddDonation=Añadir donación +AddDonation=Crear una donación NewDonation=Nueva donación ShowDonation=Mostrar donación DonationPromise=Promesa de donación diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index bccee64bcfc..7ac24f97c46 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -37,7 +37,7 @@ ErrorSupplierCodeRequired=Código proveedor obligatorio ErrorSupplierCodeAlreadyUsed=Código de proveedor ya utilizado ErrorBadParameters=Parámetros incorrectos ErrorBadValueForParameter=Valor '%s' incorrecto para el parámetro '%s' -ErrorBadImageFormat=La imagen no tiene un formato reconocido +ErrorBadImageFormat=El archivo de imagen es de un formato no soportado (Su PHP no soporta las funciones de conversión de este formato de imagen) ErrorBadDateFormat=El valor '%s' tiene un formato de fecha no reconocido ErrorWrongDate=¡La fecha no es correcta! ErrorFailedToWriteInDir=Imposible escribir en el directorio %s @@ -114,6 +114,7 @@ ErrorLoginDoesNotExists=La cuenta de usuario de %s no se ha encontrado. ErrorLoginHasNoEmail=Este usuario no tiene e-mail. Imposible continuar. ErrorBadValueForCode=Valor incorrecto para el código. Vuelva a intentar con un nuevo valor... ErrorBothFieldCantBeNegative=Los campos %s y %s no pueden ser negativos +ErrorQtyForCustomerInvoiceCantBeNegative=Las cantidades en las líneas de facturas a clientes no pueden ser negativas ErrorWebServerUserHasNotPermission=La cuenta de ejecución del servidor web %s no dispone de los permisos para esto ErrorNoActivatedBarcode=No hay activado ningún tipo de código de barras ErrUnzipFails=No se ha podido descomprimir el archivo %s con ZipArchive diff --git a/htdocs/langs/es_ES/holiday.lang b/htdocs/langs/es_ES/holiday.lang index 60e8fc0327f..99c55188b5a 100644 --- a/htdocs/langs/es_ES/holiday.lang +++ b/htdocs/langs/es_ES/holiday.lang @@ -1,13 +1,13 @@ # Dolibarr language file - Source file is en_US - holiday HRM=RRHH -Holidays=Vacaciones -CPTitreMenu=Vacaciones +Holidays=Días libres +CPTitreMenu=Días libres MenuReportMonth=Estado mensual -MenuAddCP=Realizar una petición de vacaciones -NotActiveModCP=Debe activar el módulo Vacaciones para ver esta página -NotConfigModCP=Debe configurar el módulo Vacaciones para ver esta página. Para configurarlo, haga clic aquí. -NoCPforUser=No tiene peticiones de vacaciones. -AddCP=Realizar una petición de vacaciones +MenuAddCP=Realizar una petición de días libres +NotActiveModCP=Debe activar el módulo Días libres retribuidos para ver esta página +NotConfigModCP=Debe configurar el módulo Días libres retribuidos para ver esta página. Para configurarlo, haga clic aquí. +NoCPforUser=No tiene peticiones de días libres. +AddCP=Realizar una petición de días libres Employe=Empleado DateDebCP=Fecha inicio DateFinCP=Fecha fin @@ -18,24 +18,24 @@ ApprovedCP=Aprobada CancelCP=Anulada RefuseCP=Rechazada ValidatorCP=Validador -ListeCP=Listado de vacaciones +ListeCP=Listado de días libres ReviewedByCP=Será revisada por DescCP=Descripción -SendRequestCP=Enviar la petición de vacaciones -DelayToRequestCP=Las peticiones de vacaciones deben realizarse al menos %s días antes. -MenuConfCP=Definir las vacaciones -UpdateAllCP=Actualizar las vacaciones -SoldeCPUser=Su saldo de vacaciones es de %s días. +SendRequestCP=Enviar la petición de días libres +DelayToRequestCP=Las peticiones de días libres deben realizarse al menos %s días antes. +MenuConfCP=Definir los días libres +UpdateAllCP=Actualizar los días libres +SoldeCPUser=Su saldo de días libres es de %s días. ErrorEndDateCP=Debe indicar una fecha de fin superior a la fecha de inicio. ErrorSQLCreateCP=Se ha producido un error de SQL durante la creación : -ErrorIDFicheCP=Se produjo un error, esta solicitud de vacaciones no existe. +ErrorIDFicheCP=Se produjo un error, esta solicitud de días libres no existe. ReturnCP=Volver a la página anterior -ErrorUserViewCP=No está autorizado a leer esta petición de vacaciones. -InfosCP=Información de la petición de vacaciones +ErrorUserViewCP=No está autorizado a leer esta petición de días libres. +InfosCP=Información de la petición de días libres InfosWorkflowCP=Información del workflow RequestByCP=Pedido por -TitreRequestCP=Ficha vacaciones -NbUseDaysCP=Número de días de vacaciones consumidos +TitreRequestCP=Ficha días libres +NbUseDaysCP=Número de días libres consumidos EditCP=Modificar DeleteCP=Eliminar ActionValidCP=Validar @@ -43,26 +43,26 @@ ActionRefuseCP=Rechazar ActionCancelCP=Anular StatutCP=Estado SendToValidationCP=Enviar validación -TitleDeleteCP=Eliminar la petición de vacaciones -ConfirmDeleteCP=¿Está seguro de querer eliminar esta petición de vacaciones? -ErrorCantDeleteCP=Error, no tiene permisos para eliminar esta petición de vacaciones. -CantCreateCP=No tiene permisos para realizar peticiones de vacaciones. -InvalidValidatorCP=Debe indicar un validador para su petición de vacaciones. +TitleDeleteCP=Eliminar la petición de días libres +ConfirmDeleteCP=¿Está seguro de querer eliminar esta petición de días libres? +ErrorCantDeleteCP=Error, no tiene permisos para eliminar esta petición de días libres. +CantCreateCP=No tiene permisos para realizar peticiones de días libres. +InvalidValidatorCP=Debe indicar un validador para su petición de días libres. UpdateButtonCP=Actualizar -CantUpdate=No puede actualizar esta petición de vacaciones. +CantUpdate=No puede actualizar esta petición de días libres. NoDateDebut=Debe indicar una fecha de inicio. NoDateFin=Debe indicar una fecha de fin. -ErrorDureeCP=Su petición de vacaciones no contiene ningún día hábil. -TitleValidCP=Validar la petición de vacaciones -ConfirmValidCP=¿Está seguro de querer validar esta petición de vacaciones? +ErrorDureeCP=Su petición de días libres no contiene ningún día hábil. +TitleValidCP=Aprobar la petición de días libres +ConfirmValidCP=¿Está seguro de querer validar esta petición de días libres? DateValidCP=Fecha de validación -TitleToValidCP=Enviar la petición de vacaciones -ConfirmToValidCP=¿Está seguro de querer enviar la petición de vacaciones? -TitleRefuseCP=Rechazar la petición de vacaciones -ConfirmRefuseCP=¿Está seguro de querer rechazar la petición de vacaciones? +TitleToValidCP=Enviar la petición de días libres +ConfirmToValidCP=¿Está seguro de querer enviar la petición de días libres? +TitleRefuseCP=Rechazar la petición de días libres +ConfirmRefuseCP=¿Está seguro de querer rechazar la petición de días libres? NoMotifRefuseCP=Debe seleccionar un motivo para rechazar esta petición. -TitleCancelCP=Anular la petición de vacaciones -ConfirmCancelCP=¿Está seguro de querer anular la petición de vacaciones? +TitleCancelCP=Cancelar la petición de días libres +ConfirmCancelCP=¿Está seguro de querer anular la petición de días libres? DetailRefusCP=Motivo del rechazo DateRefusCP=Fecha del rechazo DateCancelCP=Fecha de la anulación @@ -72,42 +72,42 @@ MotifCP=Motivo UserCP=Usuario ErrorAddEventToUserCP=Se ha producido un error en la asignación del permiso excepcional. AddEventToUserOkCP=Se ha añadido el permiso excepcional. -MenuLogCP=Ver los logs de vacaciones -LogCP=Logs de actualizaciones de vacaciones +MenuLogCP=Ver el historial de días libres +LogCP=Historial de actualizaciones de días libres ActionByCP=Realizado por UserUpdateCP=Para el usuario PrevSoldeCP=Saldo anterior NewSoldeCP=Nuevo saldo -alreadyCPexist=Ya se ha efectuado una petición de vacaciones para este periodo. +alreadyCPexist=Ya se ha efectuado una petición de días libres para este periodo. UserName=Nombre Apellidos Employee=Empleado FirstDayOfHoliday=Primer día libre LastDayOfHoliday=Último día libre HolidaysMonthlyUpdate=Actualización mensual ManualUpdate=Actualización manual -HolidaysCancelation=Anulación vacaciones +HolidaysCancelation=Anulación días libres ## Configuration du Module ## -ConfCP=Configuración del módulo Vacaciones +ConfCP=Configuración del módulo de días libres retribuidos DescOptionCP=Descripción de la opción ValueOptionCP=Valor -GroupToValidateCP=Grupo con posibilidad de aprobar las vacaciones +GroupToValidateCP=Grupo con posibilidad de aprobar los días libres ConfirmConfigCP=Validar la configuración -LastUpdateCP=Última actualización automática de vacaciones +LastUpdateCP=Última actualización automática de días libres UpdateConfCPOK=Actualización efectuada correctamente. ErrorUpdateConfCP=Se ha producido un error durante la actualización, vuélvalo a intentar. -AddCPforUsers=Añada los saldos de vacaciones de los usuarios haciendo clic aquí. -DelayForSubmitCP=Antelación mínima para solicitar vacaciones +AddCPforUsers=Añada los saldos de días libres de los usuarios haciendo clic aquí. +DelayForSubmitCP=Fecha límite para realizar peticiones de días libres AlertapprobatortorDelayCP=Advertir al validador si la petición no corresponde a la fecha límite AlertValidatorDelayCP=Advertir al usuario validador si la petición no respeta el límite previsto -AlertValidorSoldeCP=Advertir al usuario validador si el usuario pide vacaciones superiores a su saldo -nbUserCP=Número de usuarios tomados en cuenta en el módulo vacaciones -nbHolidayDeductedCP=Número de días retribuídos a deducir por día de vacaciones -nbHolidayEveryMonthCP=Número de días de vacaciones añadidos por mes -Module27130Name= Gestion de las vacaciones +AlertValidorSoldeCP=Advertir al usuario validador si el usuario pide días libres superiores a su saldo +nbUserCP=Número de usuarios tomados en cuenta en el módulo días libres retribuidos +nbHolidayDeductedCP=Número de días retribuídos a deducir por día líbre +nbHolidayEveryMonthCP=Número de días libres añadidos por mes +Module27130Name= Gestión de los días libres Module27130Desc= Gestión de días libres -TitleOptionMainCP=Ajustes principales de vacaciones -TitleOptionEventCP=Ajustes de vacaciones enlazados a eventos +TitleOptionMainCP=Ajustes principales de días libres +TitleOptionEventCP=Ajustes de días libres enlazados a eventos ValidEventCP=Validar UpdateEventCP=Actualizar los eventos CreateEventCP=Crear @@ -125,25 +125,25 @@ TitleUpdateEventCP=Modificar o eliminar un permiso excepcional DeleteEventOptionCP=Eliminar UpdateEventOptionCP=Actualizar ErrorMailNotSend=Se ha producido un error en el envío del e-mail : -NoCPforMonth=Sin vacaciones este mes. +NoCPforMonth=Sin días libres este mes. nbJours=Número de días -TitleAdminCP=Configuración de las vacaciones +TitleAdminCP=Configuración de los días libres retribuidos #Messages Hello=Hola -HolidaysToValidate=Días retribuidos a validar -HolidaysToValidateBody=A continuación encontrará una solicitud de días retribuidos para validar -HolidaysToValidateDelay=Esta solicitud de días retribuidos tendrá lugar en un plazo de menos de %s días. -HolidaysToValidateAlertSolde=El usuario que ha realizado la solicitud de días retribuidos no dispone de suficientes días disponibles. -HolidaysValidated=Días retribuidos validados -HolidaysValidatedBody=Su solicitud de días retribuidos desde el %s al %s ha sido validada. -HolidaysRefused=Días retribuidos denegados -HolidaysRefusedBody=Su solicitud de días retribuidos desde el %s al %s ha sido denegada por el siguiente motivo : -HolidaysCanceled=Días retribuidos cancelados -HolidaysCanceledBody=Su solicitud de días retribuidos desde el %s al %s ha sido cancelada. -Permission20000=Leer sus propios días retribuidos -Permission20001=Crear/modificar sus días retribuidos -Permission20002=Crear/modificar días retribuidos para todos -Permission20003=Eliminar peticiones de días retribuidos -Permission20004=Configurar días retribuidos de usuarios -Permission20005=Consultar el historial de modificaciones de permisos retribuídos -Permission20006=Leer informe mensual de días retribuidos +HolidaysToValidate=Días libres retribuidos a validar +HolidaysToValidateBody=A continuación encontrará una solicitud de días libres retribuidos para validar +HolidaysToValidateDelay=Esta solicitud de días libres retribuidos tendrá lugar en un plazo de menos de %s días. +HolidaysToValidateAlertSolde=El usuario que ha realizado la solicitud de días libres retribuidos no dispone de suficientes días disponibles. +HolidaysValidated=Días libres retribuidos validados +HolidaysValidatedBody=Su solicitud de días libres retribuidos desde el %s al %s ha sido validada. +HolidaysRefused=Días libres retribuidos denegados +HolidaysRefusedBody=Su solicitud de días libres retribuidos desde el %s al %s ha sido denegada por el siguiente motivo : +HolidaysCanceled=Días libres retribuidos cancelados +HolidaysCanceledBody=Su solicitud de días libres retribuidos desde el %s al %s ha sido cancelada. +Permission20000=Leer sus propios días libres retribuidos +Permission20001=Crear/modificar sus días libres retribuidos +Permission20002=Crear/modificar días libres retribuidos para todos +Permission20003=Eliminar peticiones de días libres retribuidos +Permission20004=Configurar días libres retribuidos de usuarios +Permission20005=Consultar el historial de modificaciones de días libres retribuídos +Permission20006=Leer informe mensual de días libres retribuidos diff --git a/htdocs/langs/es_ES/interventions.lang b/htdocs/langs/es_ES/interventions.lang index 4f838816de2..f973ac56e78 100644 --- a/htdocs/langs/es_ES/interventions.lang +++ b/htdocs/langs/es_ES/interventions.lang @@ -30,6 +30,7 @@ StatusInterInvoiced=Facturado RelatedInterventions=Intervenciones adjuntas ShowIntervention=Mostrar intervención SendInterventionRef=Envío de la intervención %s +SendInterventionByMail=Enviar intervención por e-mail ##### Types de contacts ##### TypeContact_fichinter_internal_INTERREPFOLL=Responsable seguimiento de la intervención TypeContact_fichinter_internal_INTERVENING=Interventor diff --git a/htdocs/langs/es_ES/mails.lang b/htdocs/langs/es_ES/mails.lang index 9c2dd9f8d4e..531f4ce42d5 100644 --- a/htdocs/langs/es_ES/mails.lang +++ b/htdocs/langs/es_ES/mails.lang @@ -133,6 +133,6 @@ Notifications=Notificaciones NoNotificationsWillBeSent=Ninguna notificación por e-mail está prevista para este evento y empresa ANotificationsWillBeSent=1 notificación va a ser enviada por e-mail SomeNotificationsWillBeSent=%s notificaciones van a ser enviadas por e-mail -AddNewNotification=Activar una nueva solicitud de notificación -ListOfActiveNotifications=Lista de las solicitudes de notificaciones activas -ListOfNotificationsDone=Lista de notificaciones de e-mails enviadas +AddNewNotification=Activar un nuevo destinatario de notificaciones +ListOfActiveNotifications=Listado de todos los destinatarios de notificaciones +ListOfNotificationsDone=Listado de notificaciones enviadas diff --git a/htdocs/langs/es_ES/main.lang b/htdocs/langs/es_ES/main.lang index a9f20e07d72..862ed1a9495 100644 --- a/htdocs/langs/es_ES/main.lang +++ b/htdocs/langs/es_ES/main.lang @@ -58,12 +58,12 @@ ErrorCantLoadUserFromDolibarrDatabase=Imposible encontrar el usuario %s e ErrorNoVATRateDefinedForSellerCountry=Error, ningún tipo de IVA definido para el país '%s'. ErrorNoSocialContributionForSellerCountry=Error, ningún tipo de carga social definida para el país '%s'. ErrorFailedToSaveFile=Error, el registro del archivo falló. -ErrorOnlyPngJpgSupported=Error, solamente se soportan los formatos de imagen jpg y png. -ErrorImageFormatNotSupported=Su PHP no soporta las funciones de conversión de este formato de imagen. SetDate=Fijar fecha SelectDate=Seleccione una fecha SeeAlso=Ver también %s BackgroundColorByDefault=Color de fondo +FileNotUploaded=No se ha subido el archivo +FileUploaded=El archivo se ha subido correctamente FileWasNotUploaded=Un archivo ha sido seleccionado para adjuntarlo, pero aún no se ha subido. Haga clic en "Adjuntar este archivo" para ello. NbOfEntries=Nº de entradas GoToWikiHelpPage=Consultar la ayuda (puede requerir acceso a Internet) @@ -341,6 +341,7 @@ FullList=Listado completo Statistics=Estadísticas OtherStatistics=Otras estadísticas Status=Estado +Favorite=Favorito ShortInfo=Info. Ref=Ref. RefSupplier=Ref. proveedor diff --git a/htdocs/langs/es_ES/margins.lang b/htdocs/langs/es_ES/margins.lang index 23b8e9acd90..f1c356ab871 100644 --- a/htdocs/langs/es_ES/margins.lang +++ b/htdocs/langs/es_ES/margins.lang @@ -38,4 +38,6 @@ BuyingCost=Costos UnitCharges=Carga unitaria Charges=Cargas AgentContactType=Tipo de contacto comisionado -AgentContactTypeDetails=Indica el tipo de contacto enlazado a las facturas que serán asociados a los agentes comerciales +AgentContactTypeDetails=Indique qué tipo de contacto (enlazado a las facturas) será el utilizado para el informe de márgenes de agentes comerciales +rateMustBeNumeric=El margen debe ser un valor numérico +markRateShouldBeLesserThan100=El margen tiene que ser menor que 100 diff --git a/htdocs/langs/es_ES/members.lang b/htdocs/langs/es_ES/members.lang index ebccec6be14..dd1989dbb48 100644 --- a/htdocs/langs/es_ES/members.lang +++ b/htdocs/langs/es_ES/members.lang @@ -85,7 +85,7 @@ SubscriptionLateShort=En retraso SubscriptionNotReceivedShort=No recibida ListOfSubscriptions=Listado de afiliaciones SendCardByMail=Enviar ficha por e-mail -AddMember=Añadir miembro +AddMember=Crear miembro NoTypeDefinedGoToSetup=Ningún tipo de miembro definido. Vaya a Configuración -> Tipos de miembros NewMemberType=Nuevo tipo de miembro WelcomeEMail=E-mail @@ -125,7 +125,7 @@ Date=Fecha DateAndTime=Fecha y hora PublicMemberCard=Ficha pública miembro MemberNotOrNoMoreExpectedToSubscribe=No sometida a cotización -AddSubscription=Añadir afiliación +AddSubscription=Crear afiliación ShowSubscription=Mostrar afiliación MemberModifiedInDolibarr=Miembro modificado en Dolibarr SendAnEMailToMember=Enviar e-mail de información al miembro (E-mail: %s) diff --git a/htdocs/langs/es_ES/other.lang b/htdocs/langs/es_ES/other.lang index 107c47e0cf8..9de70d01f95 100644 --- a/htdocs/langs/es_ES/other.lang +++ b/htdocs/langs/es_ES/other.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - other SecurityCode=Código seguridad Calendar=Calendario -AddTrip=Crear honorario Tools=Utilidades ToolsDesc=Esta área está dedicada al reagrupamiento de diversas utilidades no disponibles en las otras entradas de menú.

La lista de estas utilidades es accesible mediante el menú de al lado. Birthday=Aniversario @@ -48,6 +47,7 @@ Notify_PROJECT_CREATE=Creación de proyecto Notify_TASK_CREATE=Tarea creada Notify_TASK_MODIFY=Tarea modificada Notify_TASK_DELETE=Tarea eliminada +SeeModuleSetup=Consulte la configuración del módulo NbOfAttachedFiles=Número archivos/documentos adjuntos TotalSizeOfAttachedFiles=Tamaño total de los archivos/documentos adjuntos MaxSize=Tamaño máximo diff --git a/htdocs/langs/es_ES/products.lang b/htdocs/langs/es_ES/products.lang index c07cb7c7485..1a4726afcc2 100644 --- a/htdocs/langs/es_ES/products.lang +++ b/htdocs/langs/es_ES/products.lang @@ -117,12 +117,12 @@ ServiceLimitedDuration=Si el servicio es de duración limitada : MultiPricesAbility=Varios niveles de precio por producto/servicio MultiPricesNumPrices=Nº de precios MultiPriceLevelsName=Categoría de precios -AssociatedProductsAbility=Activar productos compuestos -AssociatedProducts=Productos compuestos +AssociatedProductsAbility=Activar la funcionalidad de productos compuestos +AssociatedProducts=Producto compuesto AssociatedProductsNumber=Nº de productos que componen este producto ParentProductsNumber=Nº de productos que este producto compone -IfZeroItIsNotAVirtualProduct=Si 0, este producto no es un producto virtual -IfZeroItIsNotUsedByVirtualProduct=Si 0, este producto no está siendo utilizado por ningún producto virtual +IfZeroItIsNotAVirtualProduct=Si 0, este producto no es un producto compuesto +IfZeroItIsNotUsedByVirtualProduct=Si 0, este producto no puede ser usado por ningún producto compuesto EditAssociate=Componer Translation=Traducción KeywordFilter=Filtro por clave @@ -179,7 +179,7 @@ CloneProduct=Clonar producto/servicio ConfirmCloneProduct=¿Está seguro de querer clonar el producto o servicio %s? CloneContentProduct=Clonar solamente la información general del producto/servicio ClonePricesProduct=Clonar la información general y los precios -CloneCompositionProduct=Clonar producto/servicio virtual +CloneCompositionProduct=Clonar productos/servicios compuestos ProductIsUsed=Este producto es utilizado NewRefForClone=Ref. del nuevo producto/servicio CustomerPrices=Precios clientes diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index 6a1cf66ddd0..da5a65ceb96 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -45,7 +45,7 @@ TaskDateStart=Fecha inicio TaskDateEnd=Fecha finalización TaskDescription=Descripción tarea NewTask=Nueva tarea -AddTask=Añadir tarea +AddTask=Crear tarea AddDuration=Indicar duración Activity=Actividad Activities=Tareas/actividades diff --git a/htdocs/langs/es_ES/propal.lang b/htdocs/langs/es_ES/propal.lang index b90258f5049..2dc18972359 100644 --- a/htdocs/langs/es_ES/propal.lang +++ b/htdocs/langs/es_ES/propal.lang @@ -55,8 +55,6 @@ NoOpenedPropals=Sin presupuestos abiertos NoOtherOpenedPropals=Ningún otro presupuesto abierto RefProposal=Ref. presupuesto SendPropalByMail=Enviar presupuesto por e-mail -FileNotUploaded=No se ha subido el archivo -FileUploaded=El archivo se ha subido correctamente AssociatedDocuments=Documentos asociados al presupuesto: ErrorCantOpenDir=Imposible abrir el directorio DatePropal=Fecha presupuesto @@ -83,7 +81,7 @@ ProposalsAndProposalsLines=Presupuestos a clientes y líneas de presupuestos ProposalLine=Línea de presupuesto AvailabilityPeriod=Tiempo de entrega SetAvailability=Definir el tiempo de entrega -AfterOrder=despues del pedido +AfterOrder=desde la firma ##### Availability ##### AvailabilityTypeAV_NOW=Inmediata AvailabilityTypeAV_1W=1 semana diff --git a/htdocs/langs/es_ES/suppliers.lang b/htdocs/langs/es_ES/suppliers.lang index 1998f61ac0c..06079f22874 100644 --- a/htdocs/langs/es_ES/suppliers.lang +++ b/htdocs/langs/es_ES/suppliers.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Proveedores Supplier=Proveedor -AddSupplier=Añadir proveedor +AddSupplier=Crear un proveedor SupplierRemoved=Proveedor eliminado SuppliersInvoice=Factura proveedor NewSupplier=Nuevo proveedor diff --git a/htdocs/langs/es_ES/users.lang b/htdocs/langs/es_ES/users.lang index 65b6d8ed0a0..e27f8b111e5 100644 --- a/htdocs/langs/es_ES/users.lang +++ b/htdocs/langs/es_ES/users.lang @@ -120,3 +120,4 @@ UseTypeFieldToChange=Modificar el campo Tipo para cambiar OpenIDURL=Dirección OpenID LoginUsingOpenID=Usar OpenID para iniciar sesión WeeklyHours=Horas semanales +ColorUser=Color para el usuario diff --git a/htdocs/langs/es_ES/withdrawals.lang b/htdocs/langs/es_ES/withdrawals.lang index 6e12cbccf47..5c241d76553 100644 --- a/htdocs/langs/es_ES/withdrawals.lang +++ b/htdocs/langs/es_ES/withdrawals.lang @@ -14,8 +14,8 @@ WithdrawalReceiptShort=Orden LastWithdrawalReceipts=Las %s últimas órdenes de domiciliación WithdrawedBills=Facturas domiciliadas WithdrawalsLines=Lineas de domiciliación -RequestStandingOrderToTreat=Pedidos de domiciliaciones a tratar -RequestStandingOrderTreated=Pedidos de domiciliaciones procesados +RequestStandingOrderToTreat=Peticiones de domiciliaciones a procesar +RequestStandingOrderTreated=Peticiones de domiciliaciones procesadas CustomersStandingOrders=Domiciliaciones de clientes CustomerStandingOrder=Domiciliación cliente NbOfInvoiceToWithdraw=Nº de facturas pendientes de domiciliación diff --git a/htdocs/langs/fr_FR/resource.lang b/htdocs/langs/fr_FR/resource.lang index e4c8a6ade87..5059d628092 100755 --- a/htdocs/langs/fr_FR/resource.lang +++ b/htdocs/langs/fr_FR/resource.lang @@ -32,4 +32,6 @@ ResourceLinkedWithSuccess=Ressource liée avec succès TitleResourceCard=Fiche ressource ConfirmDeleteResource=Confirmer la suppression de cette ressource? RessourceSuccessfullyDeleted=Ressource effacée avec succès -DictionaryResourceType=Type de ressources \ No newline at end of file +DictionaryResourceType=Type de ressources + +SelectResource=Sélectionner la ressource diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 7730abb77cc..e3e6373962b 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -770,7 +770,7 @@ class Task extends CommonObject if ($this->db->query($sql) ) { $tasktime_id = $this->db->last_insert_id(MAIN_DB_PREFIX."projet_task_time"); - $ret = $tasktme_id; + $ret = $tasktime_id; if (! $notrigger) { @@ -801,10 +801,7 @@ class Task extends CommonObject $this->db->rollback(); $ret = -2; } - } - - if ($ret >= 0) - { + $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task_time"; $sql.= " SET thm = (SELECT thm FROM ".MAIN_DB_PREFIX."user WHERE rowid = ".$this->timespent_fk_user.")"; $sql.= " WHERE rowid = ".$tasktime_id; diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php index 241d440cc0f..ca01963e30b 100644 --- a/htdocs/resource/class/html.formresource.class.php +++ b/htdocs/resource/class/html.formresource.class.php @@ -1,19 +1,20 @@ -* -* 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 2 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 . -*/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see http://www.gnu.org/ + */ /** * \file place/class/html.place.class.php diff --git a/htdocs/resource/class/resource.class.php b/htdocs/resource/class/resource.class.php index e947b4e7ed9..19768f569e3 100644 --- a/htdocs/resource/class/resource.class.php +++ b/htdocs/resource/class/resource.class.php @@ -23,8 +23,8 @@ */ // Put here all includes required by your class file -require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php"); - +require_once DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php"; +require_once DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"; /** * DAO Resource object @@ -329,7 +329,7 @@ class Resource extends CommonObject function delete($rowid, $notrigger=0) { global $user,$langs,$conf; - + $error=0; if (! $notrigger) @@ -339,10 +339,10 @@ class Resource extends CommonObject if ($result < 0) return -1; // End call triggers } - + $sql = "DELETE FROM ".MAIN_DB_PREFIX."resource"; $sql.= " WHERE rowid =".$rowid; - + dol_syslog(get_class($this)."::delete", LOG_DEBUG); if ($this->db->query($sql)) { @@ -364,7 +364,7 @@ class Resource extends CommonObject return -1; } } - + /** * Load resource objects into $this->lines * @@ -500,9 +500,9 @@ class Resource extends CommonObject $line->fk_user_create = $obj->fk_user_create; if($obj->resource_id && $obj->resource_type) - $line->objresource = $this->fetchObjectByElement($obj->resource_id,$obj->resource_type); + $line->objresource = fetchObjectByElement($obj->resource_id,$obj->resource_type); if($obj->element_id && $obj->element_type) - $line->objelement = $this->fetchObjectByElement($obj->element_id,$obj->element_type); + $line->objelement = fetchObjectByElement($obj->element_id,$obj->element_type); $this->lines[$i] = $line; $i++; @@ -584,7 +584,7 @@ class Resource extends CommonObject $line->mandatory = $obj->mandatory; $line->fk_user_create = $obj->fk_user_create; - $this->lines[$i] = $this->fetchObjectByElement($obj->resource_id,$obj->resource_type); + $this->lines[$i] = fetchObjectByElement($obj->resource_id,$obj->resource_type); $i++; } @@ -732,7 +732,7 @@ class Resource extends CommonObject { // Call trigger $result=$this->call_trigger('RESOURCE_MODIFY',$user); - if ($result < 0) $error++; + if ($result < 0) $error++; // End call triggers } } @@ -802,7 +802,7 @@ class Resource extends CommonObject $i=0; foreach($resources as $nb => $resource) { - $this->lines[$i] = $this->fetchObjectByElement($resource['resource_id'],$resource['resource_type']); + $this->lines[$i] = fetchObjectByElement($resource['resource_id'],$resource['resource_type']); $i++; } return $i; diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index 542a2066e93..1845669dcfc 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -1,7 +1,7 @@ * Copyright (C) 2004-2014 Laurent Destailleur - * Copyright (C) 2010-2012 Juanjo Menent + * Copyright (C) 2010-2014 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 @@ -376,7 +376,7 @@ if ($result > 0) print ''; // List - $sql = "SELECT n.rowid, n.daten, n.email, n.objet_type, n.objet_id as object_id, n.type,"; + $sql = "SELECT n.rowid, n.daten, n.email, n.objet_type as object_type, n.objet_id as object_id, n.type,"; $sql.= " c.rowid as id, c.lastname, c.firstname, c.email as contactemail,"; $sql.= " a.code, a.label"; $sql.= " FROM ".MAIN_DB_PREFIX."c_action_trigger as a,"; diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 4760f73f855..9c2290cc629 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -36,7 +36,8 @@ require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; -if (! empty($conf->agenda->enabled))require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +//if (! empty($conf->agenda->enabled))require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; if (! empty($conf->ldap->enabled)) require_once DOL_DOCUMENT_ROOT.'/core/class/ldap.class.php'; if (! empty($conf->adherent->enabled)) require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; if (! empty($conf->multicompany->enabled)) dol_include_once('/multicompany/class/actions_multicompany.class.php'); diff --git a/htdocs/webservices/server_thirdparty.php b/htdocs/webservices/server_thirdparty.php index 2d104eb96a1..696723f7247 100644 --- a/htdocs/webservices/server_thirdparty.php +++ b/htdocs/webservices/server_thirdparty.php @@ -460,7 +460,7 @@ function createThirdParty($authentication,$thirdparty) $result=$newobject->create($fuser); if ($newobject->particulier && $result > 0) { $newobject->firstname = $thirdparty['firstname']; - $newobject->name_bis = $thirdparty['ref']; + $newobject->name_bis = $thirdparty['lastname']; $result = $newobject->create_individual($fuser); } if ($result <= 0)